From 29ec62c50a84e811f944cb64b83fa9100db38e04 Mon Sep 17 00:00:00 2001 From: nau Date: Mon, 29 Aug 2016 16:31:44 +0200 Subject: [PATCH] server and app commited in different repositories --- .bowerrc | 3 + .editorconfig | 14 + .gitignore | 6 + .io-config.json | 1 + bower.json | 7 + comandesUtils.txt | 12 + config.xml | 43 + gulpfile.js | 51 + hooks/README.md | 83 + hooks/after_prepare/010_add_platform_class.js | 94 + ionic.config.json | 4 + ionic.project | 4 + package.json | 26 + resources/android/icon/drawable-hdpi-icon.png | Bin 0 -> 2875 bytes resources/android/icon/drawable-ldpi-icon.png | Bin 0 -> 1155 bytes resources/android/icon/drawable-mdpi-icon.png | Bin 0 -> 1802 bytes .../android/icon/drawable-xhdpi-icon.png | Bin 0 -> 4317 bytes .../android/icon/drawable-xxhdpi-icon.png | Bin 0 -> 7793 bytes .../android/icon/drawable-xxxhdpi-icon.png | Bin 0 -> 11783 bytes .../splash/drawable-land-hdpi-screen.png | Bin 0 -> 13657 bytes .../splash/drawable-land-ldpi-screen.png | Bin 0 -> 3740 bytes .../splash/drawable-land-mdpi-screen.png | Bin 0 -> 7116 bytes .../splash/drawable-land-xhdpi-screen.png | Bin 0 -> 39781 bytes .../splash/drawable-land-xxhdpi-screen.png | Bin 0 -> 58987 bytes .../splash/drawable-land-xxxhdpi-screen.png | Bin 0 -> 89363 bytes .../splash/drawable-port-hdpi-screen.png | Bin 0 -> 13298 bytes .../splash/drawable-port-ldpi-screen.png | Bin 0 -> 3628 bytes .../splash/drawable-port-mdpi-screen.png | Bin 0 -> 7214 bytes .../splash/drawable-port-xhdpi-screen.png | Bin 0 -> 38625 bytes .../splash/drawable-port-xxhdpi-screen.png | Bin 0 -> 55504 bytes .../splash/drawable-port-xxxhdpi-screen.png | Bin 0 -> 81831 bytes resources/icon.png | Bin 0 -> 60857 bytes resources/ios/icon/icon-40.png | Bin 0 -> 1248 bytes resources/ios/icon/icon-40@2x.png | Bin 0 -> 3564 bytes resources/ios/icon/icon-50.png | Bin 0 -> 1902 bytes resources/ios/icon/icon-50@2x.png | Bin 0 -> 4691 bytes resources/ios/icon/icon-60.png | Bin 0 -> 2452 bytes resources/ios/icon/icon-60@2x.png | Bin 0 -> 6042 bytes resources/ios/icon/icon-60@3x.png | Bin 0 -> 10875 bytes resources/ios/icon/icon-72.png | Bin 0 -> 2866 bytes resources/ios/icon/icon-72@2x.png | Bin 0 -> 7793 bytes resources/ios/icon/icon-76.png | Bin 0 -> 3319 bytes resources/ios/icon/icon-76@2x.png | Bin 0 -> 8305 bytes resources/ios/icon/icon-small.png | Bin 0 -> 818 bytes resources/ios/icon/icon-small@2x.png | Bin 0 -> 2287 bytes resources/ios/icon/icon-small@3x.png | Bin 0 -> 3856 bytes resources/ios/icon/icon.png | Bin 0 -> 2112 bytes resources/ios/icon/icon@2x.png | Bin 0 -> 5718 bytes .../ios/splash/Default-568h@2x~iphone.png | Bin 0 -> 31992 bytes resources/ios/splash/Default-667h.png | Bin 0 -> 40444 bytes resources/ios/splash/Default-736h.png | Bin 0 -> 45098 bytes .../ios/splash/Default-Landscape-736h.png | Bin 0 -> 44906 bytes .../ios/splash/Default-Landscape@2x~ipad.png | Bin 0 -> 102289 bytes .../ios/splash/Default-Landscape~ipad.png | Bin 0 -> 22655 bytes .../ios/splash/Default-Portrait@2x~ipad.png | Bin 0 -> 99461 bytes .../ios/splash/Default-Portrait~ipad.png | Bin 0 -> 22692 bytes resources/ios/splash/Default@2x~iphone.png | Bin 0 -> 18852 bytes resources/ios/splash/Default~iphone.png | Bin 0 -> 7214 bytes resources/splash.png | Bin 0 -> 62210 bytes scss/ionic.app.scss | 23 + www/css/style.css | 22 + www/img/asking.png | Bin 0 -> 15393 bytes www/img/avatars/anteater.png | Bin 0 -> 8310 bytes www/img/avatars/bat.png | Bin 0 -> 10699 bytes www/img/avatars/beetle.png | Bin 0 -> 16003 bytes www/img/avatars/bulldog.png | Bin 0 -> 17427 bytes www/img/avatars/butterfly.png | Bin 0 -> 10902 bytes www/img/avatars/camel.png | Bin 0 -> 13264 bytes www/img/avatars/cat.png | Bin 0 -> 17717 bytes www/img/avatars/chameleon.png | Bin 0 -> 14981 bytes www/img/avatars/clown-fish.png | Bin 0 -> 21350 bytes www/img/avatars/cobra.png | Bin 0 -> 17410 bytes www/img/avatars/cow.png | Bin 0 -> 21376 bytes www/img/avatars/crab.png | Bin 0 -> 16991 bytes www/img/avatars/crocodile.png | Bin 0 -> 8885 bytes www/img/avatars/duck.png | Bin 0 -> 9866 bytes www/img/avatars/elephant.png | Bin 0 -> 11650 bytes www/img/avatars/frog.png | Bin 0 -> 15772 bytes www/img/avatars/giraffe.png | Bin 0 -> 17449 bytes www/img/avatars/hen.png | Bin 0 -> 12211 bytes www/img/avatars/hippopotamus.png | Bin 0 -> 10816 bytes www/img/avatars/kangaroo.png | Bin 0 -> 11455 bytes www/img/avatars/lion.png | Bin 0 -> 16996 bytes www/img/avatars/llama.png | Bin 0 -> 8601 bytes www/img/avatars/macaw.png | Bin 0 -> 13943 bytes www/img/avatars/monkey.png | Bin 0 -> 16073 bytes www/img/avatars/moose.png | Bin 0 -> 11453 bytes www/img/avatars/mouse.png | Bin 0 -> 10495 bytes www/img/avatars/octopus.png | Bin 0 -> 21172 bytes www/img/avatars/ostrich.png | Bin 0 -> 12373 bytes www/img/avatars/owl.png | Bin 0 -> 15224 bytes www/img/avatars/panda.png | Bin 0 -> 12716 bytes www/img/avatars/pelican.png | Bin 0 -> 11651 bytes www/img/avatars/penguin.png | Bin 0 -> 14255 bytes www/img/avatars/pig.png | Bin 0 -> 12970 bytes www/img/avatars/rabbit.png | Bin 0 -> 12459 bytes www/img/avatars/racoon.png | Bin 0 -> 13133 bytes www/img/avatars/ray.png | Bin 0 -> 12365 bytes www/img/avatars/rhinoceros.png | Bin 0 -> 10292 bytes www/img/avatars/sea-cow.png | Bin 0 -> 7696 bytes www/img/avatars/shark.png | Bin 0 -> 9692 bytes www/img/avatars/sheep.png | Bin 0 -> 10609 bytes www/img/avatars/siberian-husky.png | Bin 0 -> 19272 bytes www/img/avatars/sloth.png | Bin 0 -> 14905 bytes www/img/avatars/snake.png | Bin 0 -> 11368 bytes www/img/avatars/spider.png | Bin 0 -> 20064 bytes www/img/avatars/squirrel.png | Bin 0 -> 14305 bytes www/img/avatars/swan.png | Bin 0 -> 12477 bytes www/img/avatars/tiger.png | Bin 0 -> 22444 bytes www/img/avatars/toucan.png | Bin 0 -> 11365 bytes www/img/avatars/turtle.png | Bin 0 -> 20324 bytes www/img/avatars/whale.png | Bin 0 -> 9451 bytes www/img/carimg/aerial-tramway.png | Bin 0 -> 4247 bytes www/img/carimg/aeroplane.png | Bin 0 -> 13091 bytes www/img/carimg/airplane.png | Bin 0 -> 6880 bytes www/img/carimg/auto-ricksaw.png | Bin 0 -> 11888 bytes www/img/carimg/beetle.png | Bin 0 -> 13278 bytes www/img/carimg/bike.png | Bin 0 -> 7945 bytes www/img/carimg/boat-1.png | Bin 0 -> 14793 bytes www/img/carimg/boat-2.png | Bin 0 -> 13772 bytes www/img/carimg/boat.png | Bin 0 -> 12519 bytes www/img/carimg/bus.png | Bin 0 -> 5759 bytes www/img/carimg/car.png | Bin 0 -> 8479 bytes www/img/carimg/catamaran.png | Bin 0 -> 11066 bytes www/img/carimg/chairlift.png | Bin 0 -> 8409 bytes www/img/carimg/classic-car.png | Bin 0 -> 9734 bytes www/img/carimg/double-decker-bus.png | Bin 0 -> 6219 bytes www/img/carimg/helicopter.png | Bin 0 -> 10790 bytes www/img/carimg/hot-air-balloon.png | Bin 0 -> 12310 bytes www/img/carimg/house-boat.png | Bin 0 -> 9701 bytes www/img/carimg/jeep.png | Bin 0 -> 11329 bytes www/img/carimg/jet-boating.png | Bin 0 -> 13481 bytes www/img/carimg/locomotive.png | Bin 0 -> 12344 bytes www/img/carimg/lorry.png | Bin 0 -> 5248 bytes www/img/carimg/minibus.png | Bin 0 -> 5625 bytes www/img/carimg/minivan-taxi.png | Bin 0 -> 9517 bytes www/img/carimg/minivan.png | Bin 0 -> 9930 bytes www/img/carimg/monorail.png | Bin 0 -> 8348 bytes www/img/carimg/motorbike.png | Bin 0 -> 10760 bytes www/img/carimg/quad.png | Bin 0 -> 13266 bytes www/img/carimg/sailboat.png | Bin 0 -> 9980 bytes www/img/carimg/sailing-ship.png | Bin 0 -> 9919 bytes www/img/carimg/school-bus.png | Bin 0 -> 8916 bytes www/img/carimg/sidecar.png | Bin 0 -> 12857 bytes www/img/carimg/spaceship.png | Bin 0 -> 6114 bytes www/img/carimg/sport-car.png | Bin 0 -> 8863 bytes www/img/carimg/station-wagon.png | Bin 0 -> 10002 bytes www/img/carimg/submarine.png | Bin 0 -> 15338 bytes www/img/carimg/taxi.png | Bin 0 -> 9072 bytes www/img/carimg/tractor.png | Bin 0 -> 9819 bytes www/img/carimg/train-1.png | Bin 0 -> 8723 bytes www/img/carimg/train-2.png | Bin 0 -> 12986 bytes www/img/carimg/train.png | Bin 0 -> 5561 bytes www/img/carimg/tram.png | Bin 0 -> 7219 bytes www/img/carimg/tricycle.png | Bin 0 -> 9723 bytes www/img/carimg/trolleybus.png | Bin 0 -> 6105 bytes www/img/carimg/truck.png | Bin 0 -> 3747 bytes www/img/carimg/ufo.png | Bin 0 -> 5433 bytes www/img/carimg/underground.png | Bin 0 -> 10526 bytes www/img/carimg/van.png | Bin 0 -> 8144 bytes www/img/carimg/volskwagen-van.png | Bin 0 -> 12794 bytes www/img/collectivized.png | Bin 0 -> 1776 bytes www/img/community.png | Bin 0 -> 1058 bytes www/img/from-to.png | Bin 0 -> 1231 bytes www/img/ionic.png | Bin 0 -> 4757 bytes www/img/localization.png | Bin 0 -> 891 bytes www/img/offering.png | Bin 0 -> 10002 bytes www/img/package.png | Bin 0 -> 555 bytes www/img/road.png | Bin 0 -> 1118 bytes www/img/rss-symbol.png | Bin 0 -> 1194 bytes www/img/settings.png | Bin 0 -> 1375 bytes www/img/smartphone.png | Bin 0 -> 893 bytes www/img/telegram.png | Bin 0 -> 1013 bytes www/img/users.png | Bin 0 -> 922 bytes www/index.html | 29 + www/js/app.js | 83 + www/js/controllers.js | 363 + www/lib/ionic/css/ionic.css | 9813 +++ www/lib/ionic/css/ionic.min.css | 23 + www/lib/ionic/fonts/ionicons.eot | Bin 0 -> 120724 bytes www/lib/ionic/fonts/ionicons.svg | 2230 + www/lib/ionic/fonts/ionicons.ttf | Bin 0 -> 188508 bytes www/lib/ionic/fonts/ionicons.woff | Bin 0 -> 67904 bytes .../ionic/js/angular-ui/angular-ui-router.js | 4232 + .../js/angular-ui/angular-ui-router.min.js | 7 + www/lib/ionic/js/angular/angular-animate.js | 4115 + .../ionic/js/angular/angular-animate.min.js | 56 + www/lib/ionic/js/angular/angular-resource.js | 768 + .../ionic/js/angular/angular-resource.min.js | 15 + www/lib/ionic/js/angular/angular-sanitize.js | 717 + .../ionic/js/angular/angular-sanitize.min.js | 15 + www/lib/ionic/js/angular/angular.js | 30714 +++++++ www/lib/ionic/js/angular/angular.min.js | 311 + www/lib/ionic/js/ionic-angular.js | 14391 ++++ www/lib/ionic/js/ionic-angular.min.js | 18 + www/lib/ionic/js/ionic.bundle.js | 67569 ++++++++++++++++ www/lib/ionic/js/ionic.bundle.min.js | 472 + www/lib/ionic/js/ionic.js | 13356 +++ www/lib/ionic/js/ionic.min.js | 20 + www/lib/ionic/scss/_action-sheet.scss | 170 + www/lib/ionic/scss/_animations.scss | 48 + www/lib/ionic/scss/_backdrop.scss | 24 + www/lib/ionic/scss/_badge.scss | 62 + www/lib/ionic/scss/_bar.scss | 417 + www/lib/ionic/scss/_button-bar.scss | 92 + www/lib/ionic/scss/_button.scss | 252 + www/lib/ionic/scss/_checkbox.scss | 180 + www/lib/ionic/scss/_form.scss | 327 + www/lib/ionic/scss/_grid.scss | 159 + www/lib/ionic/scss/_items.scss | 825 + www/lib/ionic/scss/_list.scss | 125 + www/lib/ionic/scss/_loading.scss | 51 + www/lib/ionic/scss/_menu.scss | 70 + www/lib/ionic/scss/_mixins.scss | 642 + www/lib/ionic/scss/_modal.scss | 102 + www/lib/ionic/scss/_platform.scss | 77 + www/lib/ionic/scss/_popover.scss | 168 + www/lib/ionic/scss/_popup.scss | 110 + www/lib/ionic/scss/_progress.scss | 11 + www/lib/ionic/scss/_radio.scss | 47 + www/lib/ionic/scss/_range.scss | 160 + www/lib/ionic/scss/_refresher.scss | 113 + www/lib/ionic/scss/_reset.scss | 365 + www/lib/ionic/scss/_scaffolding.scss | 291 + www/lib/ionic/scss/_select.scss | 142 + www/lib/ionic/scss/_slide-box.scss | 71 + www/lib/ionic/scss/_slides.scss | 529 + www/lib/ionic/scss/_spinner.scss | 100 + www/lib/ionic/scss/_tabs.scss | 542 + www/lib/ionic/scss/_toggle.scss | 198 + www/lib/ionic/scss/_transitions.scss | 188 + www/lib/ionic/scss/_type.scss | 166 + www/lib/ionic/scss/_util.scss | 296 + www/lib/ionic/scss/_variables.scss | 764 + www/lib/ionic/scss/ionic.scss | 54 + .../ionic/scss/ionicons/_ionicons-font.scss | 28 + .../ionic/scss/ionicons/_ionicons-icons.scss | 1473 + .../scss/ionicons/_ionicons-variables.scss | 741 + www/lib/ionic/scss/ionicons/ionicons.scss | 16 + www/lib/ionic/version.json | 6 + www/templates/browse.html | 5 + www/templates/login.html | 25 + www/templates/menu.html | 45 + www/templates/newaskingpackage.html | 54 + www/templates/newaskingtravel.html | 63 + www/templates/newofferingtravel.html | 66 + www/templates/playlists.html | 16 + www/templates/search.html | 5 + www/templates/signup.html | 42 + www/templates/travel.html | 47 + www/templates/travels.html | 30 + www/templates/user.html | 38 + www/templates/users.html | 17 + 253 files changed, 160365 insertions(+) create mode 100644 .bowerrc create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 .io-config.json create mode 100644 bower.json create mode 100644 comandesUtils.txt create mode 100644 config.xml create mode 100644 gulpfile.js create mode 100644 hooks/README.md create mode 100755 hooks/after_prepare/010_add_platform_class.js create mode 100644 ionic.config.json create mode 100644 ionic.project create mode 100644 package.json create mode 100644 resources/android/icon/drawable-hdpi-icon.png create mode 100644 resources/android/icon/drawable-ldpi-icon.png create mode 100644 resources/android/icon/drawable-mdpi-icon.png create mode 100644 resources/android/icon/drawable-xhdpi-icon.png create mode 100644 resources/android/icon/drawable-xxhdpi-icon.png create mode 100644 resources/android/icon/drawable-xxxhdpi-icon.png create mode 100644 resources/android/splash/drawable-land-hdpi-screen.png create mode 100644 resources/android/splash/drawable-land-ldpi-screen.png create mode 100644 resources/android/splash/drawable-land-mdpi-screen.png create mode 100644 resources/android/splash/drawable-land-xhdpi-screen.png create mode 100644 resources/android/splash/drawable-land-xxhdpi-screen.png create mode 100644 resources/android/splash/drawable-land-xxxhdpi-screen.png create mode 100644 resources/android/splash/drawable-port-hdpi-screen.png create mode 100644 resources/android/splash/drawable-port-ldpi-screen.png create mode 100644 resources/android/splash/drawable-port-mdpi-screen.png create mode 100644 resources/android/splash/drawable-port-xhdpi-screen.png create mode 100644 resources/android/splash/drawable-port-xxhdpi-screen.png create mode 100644 resources/android/splash/drawable-port-xxxhdpi-screen.png create mode 100644 resources/icon.png create mode 100644 resources/ios/icon/icon-40.png create mode 100644 resources/ios/icon/icon-40@2x.png create mode 100644 resources/ios/icon/icon-50.png create mode 100644 resources/ios/icon/icon-50@2x.png create mode 100644 resources/ios/icon/icon-60.png create mode 100644 resources/ios/icon/icon-60@2x.png create mode 100644 resources/ios/icon/icon-60@3x.png create mode 100644 resources/ios/icon/icon-72.png create mode 100644 resources/ios/icon/icon-72@2x.png create mode 100644 resources/ios/icon/icon-76.png create mode 100644 resources/ios/icon/icon-76@2x.png create mode 100644 resources/ios/icon/icon-small.png create mode 100644 resources/ios/icon/icon-small@2x.png create mode 100644 resources/ios/icon/icon-small@3x.png create mode 100644 resources/ios/icon/icon.png create mode 100644 resources/ios/icon/icon@2x.png create mode 100644 resources/ios/splash/Default-568h@2x~iphone.png create mode 100644 resources/ios/splash/Default-667h.png create mode 100644 resources/ios/splash/Default-736h.png create mode 100644 resources/ios/splash/Default-Landscape-736h.png create mode 100644 resources/ios/splash/Default-Landscape@2x~ipad.png create mode 100644 resources/ios/splash/Default-Landscape~ipad.png create mode 100644 resources/ios/splash/Default-Portrait@2x~ipad.png create mode 100644 resources/ios/splash/Default-Portrait~ipad.png create mode 100644 resources/ios/splash/Default@2x~iphone.png create mode 100644 resources/ios/splash/Default~iphone.png create mode 100644 resources/splash.png create mode 100644 scss/ionic.app.scss create mode 100644 www/css/style.css create mode 100644 www/img/asking.png create mode 100644 www/img/avatars/anteater.png create mode 100644 www/img/avatars/bat.png create mode 100644 www/img/avatars/beetle.png create mode 100644 www/img/avatars/bulldog.png create mode 100644 www/img/avatars/butterfly.png create mode 100644 www/img/avatars/camel.png create mode 100644 www/img/avatars/cat.png create mode 100644 www/img/avatars/chameleon.png create mode 100644 www/img/avatars/clown-fish.png create mode 100644 www/img/avatars/cobra.png create mode 100644 www/img/avatars/cow.png create mode 100644 www/img/avatars/crab.png create mode 100644 www/img/avatars/crocodile.png create mode 100644 www/img/avatars/duck.png create mode 100644 www/img/avatars/elephant.png create mode 100644 www/img/avatars/frog.png create mode 100644 www/img/avatars/giraffe.png create mode 100644 www/img/avatars/hen.png create mode 100644 www/img/avatars/hippopotamus.png create mode 100644 www/img/avatars/kangaroo.png create mode 100644 www/img/avatars/lion.png create mode 100644 www/img/avatars/llama.png create mode 100644 www/img/avatars/macaw.png create mode 100644 www/img/avatars/monkey.png create mode 100644 www/img/avatars/moose.png create mode 100644 www/img/avatars/mouse.png create mode 100644 www/img/avatars/octopus.png create mode 100644 www/img/avatars/ostrich.png create mode 100644 www/img/avatars/owl.png create mode 100644 www/img/avatars/panda.png create mode 100644 www/img/avatars/pelican.png create mode 100644 www/img/avatars/penguin.png create mode 100644 www/img/avatars/pig.png create mode 100644 www/img/avatars/rabbit.png create mode 100644 www/img/avatars/racoon.png create mode 100644 www/img/avatars/ray.png create mode 100644 www/img/avatars/rhinoceros.png create mode 100644 www/img/avatars/sea-cow.png create mode 100644 www/img/avatars/shark.png create mode 100644 www/img/avatars/sheep.png create mode 100644 www/img/avatars/siberian-husky.png create mode 100644 www/img/avatars/sloth.png create mode 100644 www/img/avatars/snake.png create mode 100644 www/img/avatars/spider.png create mode 100644 www/img/avatars/squirrel.png create mode 100644 www/img/avatars/swan.png create mode 100644 www/img/avatars/tiger.png create mode 100644 www/img/avatars/toucan.png create mode 100644 www/img/avatars/turtle.png create mode 100644 www/img/avatars/whale.png create mode 100644 www/img/carimg/aerial-tramway.png create mode 100644 www/img/carimg/aeroplane.png create mode 100644 www/img/carimg/airplane.png create mode 100644 www/img/carimg/auto-ricksaw.png create mode 100644 www/img/carimg/beetle.png create mode 100644 www/img/carimg/bike.png create mode 100644 www/img/carimg/boat-1.png create mode 100644 www/img/carimg/boat-2.png create mode 100644 www/img/carimg/boat.png create mode 100644 www/img/carimg/bus.png create mode 100644 www/img/carimg/car.png create mode 100644 www/img/carimg/catamaran.png create mode 100644 www/img/carimg/chairlift.png create mode 100644 www/img/carimg/classic-car.png create mode 100644 www/img/carimg/double-decker-bus.png create mode 100644 www/img/carimg/helicopter.png create mode 100644 www/img/carimg/hot-air-balloon.png create mode 100644 www/img/carimg/house-boat.png create mode 100644 www/img/carimg/jeep.png create mode 100644 www/img/carimg/jet-boating.png create mode 100644 www/img/carimg/locomotive.png create mode 100644 www/img/carimg/lorry.png create mode 100644 www/img/carimg/minibus.png create mode 100644 www/img/carimg/minivan-taxi.png create mode 100644 www/img/carimg/minivan.png create mode 100644 www/img/carimg/monorail.png create mode 100644 www/img/carimg/motorbike.png create mode 100644 www/img/carimg/quad.png create mode 100644 www/img/carimg/sailboat.png create mode 100644 www/img/carimg/sailing-ship.png create mode 100644 www/img/carimg/school-bus.png create mode 100644 www/img/carimg/sidecar.png create mode 100644 www/img/carimg/spaceship.png create mode 100644 www/img/carimg/sport-car.png create mode 100644 www/img/carimg/station-wagon.png create mode 100644 www/img/carimg/submarine.png create mode 100644 www/img/carimg/taxi.png create mode 100644 www/img/carimg/tractor.png create mode 100644 www/img/carimg/train-1.png create mode 100644 www/img/carimg/train-2.png create mode 100644 www/img/carimg/train.png create mode 100644 www/img/carimg/tram.png create mode 100644 www/img/carimg/tricycle.png create mode 100644 www/img/carimg/trolleybus.png create mode 100644 www/img/carimg/truck.png create mode 100644 www/img/carimg/ufo.png create mode 100644 www/img/carimg/underground.png create mode 100644 www/img/carimg/van.png create mode 100644 www/img/carimg/volskwagen-van.png create mode 100644 www/img/collectivized.png create mode 100644 www/img/community.png create mode 100644 www/img/from-to.png create mode 100644 www/img/ionic.png create mode 100644 www/img/localization.png create mode 100644 www/img/offering.png create mode 100644 www/img/package.png create mode 100644 www/img/road.png create mode 100644 www/img/rss-symbol.png create mode 100644 www/img/settings.png create mode 100644 www/img/smartphone.png create mode 100644 www/img/telegram.png create mode 100644 www/img/users.png create mode 100644 www/index.html create mode 100644 www/js/app.js create mode 100644 www/js/controllers.js create mode 100644 www/lib/ionic/css/ionic.css create mode 100644 www/lib/ionic/css/ionic.min.css create mode 100644 www/lib/ionic/fonts/ionicons.eot create mode 100644 www/lib/ionic/fonts/ionicons.svg create mode 100644 www/lib/ionic/fonts/ionicons.ttf create mode 100644 www/lib/ionic/fonts/ionicons.woff create mode 100644 www/lib/ionic/js/angular-ui/angular-ui-router.js create mode 100644 www/lib/ionic/js/angular-ui/angular-ui-router.min.js create mode 100644 www/lib/ionic/js/angular/angular-animate.js create mode 100644 www/lib/ionic/js/angular/angular-animate.min.js create mode 100644 www/lib/ionic/js/angular/angular-resource.js create mode 100644 www/lib/ionic/js/angular/angular-resource.min.js create mode 100644 www/lib/ionic/js/angular/angular-sanitize.js create mode 100644 www/lib/ionic/js/angular/angular-sanitize.min.js create mode 100644 www/lib/ionic/js/angular/angular.js create mode 100644 www/lib/ionic/js/angular/angular.min.js create mode 100644 www/lib/ionic/js/ionic-angular.js create mode 100644 www/lib/ionic/js/ionic-angular.min.js create mode 100644 www/lib/ionic/js/ionic.bundle.js create mode 100644 www/lib/ionic/js/ionic.bundle.min.js create mode 100644 www/lib/ionic/js/ionic.js create mode 100644 www/lib/ionic/js/ionic.min.js create mode 100644 www/lib/ionic/scss/_action-sheet.scss create mode 100644 www/lib/ionic/scss/_animations.scss create mode 100644 www/lib/ionic/scss/_backdrop.scss create mode 100644 www/lib/ionic/scss/_badge.scss create mode 100644 www/lib/ionic/scss/_bar.scss create mode 100644 www/lib/ionic/scss/_button-bar.scss create mode 100644 www/lib/ionic/scss/_button.scss create mode 100644 www/lib/ionic/scss/_checkbox.scss create mode 100644 www/lib/ionic/scss/_form.scss create mode 100644 www/lib/ionic/scss/_grid.scss create mode 100644 www/lib/ionic/scss/_items.scss create mode 100644 www/lib/ionic/scss/_list.scss create mode 100644 www/lib/ionic/scss/_loading.scss create mode 100644 www/lib/ionic/scss/_menu.scss create mode 100644 www/lib/ionic/scss/_mixins.scss create mode 100644 www/lib/ionic/scss/_modal.scss create mode 100644 www/lib/ionic/scss/_platform.scss create mode 100644 www/lib/ionic/scss/_popover.scss create mode 100644 www/lib/ionic/scss/_popup.scss create mode 100644 www/lib/ionic/scss/_progress.scss create mode 100644 www/lib/ionic/scss/_radio.scss create mode 100644 www/lib/ionic/scss/_range.scss create mode 100644 www/lib/ionic/scss/_refresher.scss create mode 100644 www/lib/ionic/scss/_reset.scss create mode 100644 www/lib/ionic/scss/_scaffolding.scss create mode 100644 www/lib/ionic/scss/_select.scss create mode 100644 www/lib/ionic/scss/_slide-box.scss create mode 100644 www/lib/ionic/scss/_slides.scss create mode 100644 www/lib/ionic/scss/_spinner.scss create mode 100644 www/lib/ionic/scss/_tabs.scss create mode 100644 www/lib/ionic/scss/_toggle.scss create mode 100644 www/lib/ionic/scss/_transitions.scss create mode 100644 www/lib/ionic/scss/_type.scss create mode 100644 www/lib/ionic/scss/_util.scss create mode 100644 www/lib/ionic/scss/_variables.scss create mode 100644 www/lib/ionic/scss/ionic.scss create mode 100644 www/lib/ionic/scss/ionicons/_ionicons-font.scss create mode 100644 www/lib/ionic/scss/ionicons/_ionicons-icons.scss create mode 100644 www/lib/ionic/scss/ionicons/_ionicons-variables.scss create mode 100644 www/lib/ionic/scss/ionicons/ionicons.scss create mode 100644 www/lib/ionic/version.json create mode 100644 www/templates/browse.html create mode 100644 www/templates/login.html create mode 100644 www/templates/menu.html create mode 100644 www/templates/newaskingpackage.html create mode 100644 www/templates/newaskingtravel.html create mode 100644 www/templates/newofferingtravel.html create mode 100644 www/templates/playlists.html create mode 100644 www/templates/search.html create mode 100644 www/templates/signup.html create mode 100644 www/templates/travel.html create mode 100644 www/templates/travels.html create mode 100644 www/templates/user.html create mode 100644 www/templates/users.html diff --git a/.bowerrc b/.bowerrc new file mode 100644 index 0000000..e28246d --- /dev/null +++ b/.bowerrc @@ -0,0 +1,3 @@ +{ + "directory": "www/lib" +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..aca2523 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +# http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8f7ddd3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +# Specifies intentionally untracked files to ignore when using Git +# http://git-scm.com/docs/gitignore + +node_modules/ +platforms/ +plugins/ diff --git a/.io-config.json b/.io-config.json new file mode 100644 index 0000000..4626f88 --- /dev/null +++ b/.io-config.json @@ -0,0 +1 @@ +{"app_id":"0f46f512"} \ No newline at end of file diff --git a/bower.json b/bower.json new file mode 100644 index 0000000..2721960 --- /dev/null +++ b/bower.json @@ -0,0 +1,7 @@ +{ + "name": "HelloIonic", + "private": "true", + "devDependencies": { + "ionic": "driftyco/ionic-bower#1.3.1" + } +} diff --git a/comandesUtils.txt b/comandesUtils.txt new file mode 100644 index 0000000..428ea6e --- /dev/null +++ b/comandesUtils.txt @@ -0,0 +1,12 @@ + +export ANDROID_HOME=~/Android/Sdk/ +PATH=$PATH:$ANDROID_HOME/tools +PATH=$PATH:$ANDROID_HOME/platform-tools + + +cd /home/nau/Android/Sdk/tools +./android + + +ionic serve +ionic build android diff --git a/config.xml b/config.xml new file mode 100644 index 0000000..b85343f --- /dev/null +++ b/config.xml @@ -0,0 +1,43 @@ + + + app + + An Ionic Framework and Cordova project. + + + Your Name Here + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 0000000..5c283be --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,51 @@ +var gulp = require('gulp'); +var gutil = require('gulp-util'); +var bower = require('bower'); +var concat = require('gulp-concat'); +var sass = require('gulp-sass'); +var minifyCss = require('gulp-minify-css'); +var rename = require('gulp-rename'); +var sh = require('shelljs'); + +var paths = { + sass: ['./scss/**/*.scss'] +}; + +gulp.task('default', ['sass']); + +gulp.task('sass', function(done) { + gulp.src('./scss/ionic.app.scss') + .pipe(sass()) + .on('error', sass.logError) + .pipe(gulp.dest('./www/css/')) + .pipe(minifyCss({ + keepSpecialComments: 0 + })) + .pipe(rename({ extname: '.min.css' })) + .pipe(gulp.dest('./www/css/')) + .on('end', done); +}); + +gulp.task('watch', function() { + gulp.watch(paths.sass, ['sass']); +}); + +gulp.task('install', ['git-check'], function() { + return bower.commands.install() + .on('log', function(data) { + gutil.log('bower', gutil.colors.cyan(data.id), data.message); + }); +}); + +gulp.task('git-check', function(done) { + if (!sh.which('git')) { + console.log( + ' ' + gutil.colors.red('Git is not installed.'), + '\n Git, the version control system, is required to download Ionic.', + '\n Download git here:', gutil.colors.cyan('http://git-scm.com/downloads') + '.', + '\n Once git is installed, run \'' + gutil.colors.cyan('gulp install') + '\' again.' + ); + process.exit(1); + } + done(); +}); diff --git a/hooks/README.md b/hooks/README.md new file mode 100644 index 0000000..d2563ea --- /dev/null +++ b/hooks/README.md @@ -0,0 +1,83 @@ + +# Cordova Hooks + +This directory may contain scripts used to customize cordova commands. This +directory used to exist at `.cordova/hooks`, but has now been moved to the +project root. Any scripts you add to these directories will be executed before +and after the commands corresponding to the directory name. Useful for +integrating your own build systems or integrating with version control systems. + +__Remember__: Make your scripts executable. + +## Hook Directories +The following subdirectories will be used for hooks: + + after_build/ + after_compile/ + after_docs/ + after_emulate/ + after_platform_add/ + after_platform_rm/ + after_platform_ls/ + after_plugin_add/ + after_plugin_ls/ + after_plugin_rm/ + after_plugin_search/ + after_prepare/ + after_run/ + after_serve/ + before_build/ + before_compile/ + before_docs/ + before_emulate/ + before_platform_add/ + before_platform_rm/ + before_platform_ls/ + before_plugin_add/ + before_plugin_ls/ + before_plugin_rm/ + before_plugin_search/ + before_prepare/ + before_run/ + before_serve/ + pre_package/ <-- Windows 8 and Windows Phone only. + +## Script Interface + +All scripts are run from the project's root directory and have the root directory passes as the first argument. All other options are passed to the script using environment variables: + +* CORDOVA_VERSION - The version of the Cordova-CLI. +* CORDOVA_PLATFORMS - Comma separated list of platforms that the command applies to (e.g.: android, ios). +* CORDOVA_PLUGINS - Comma separated list of plugin IDs that the command applies to (e.g.: org.apache.cordova.file, org.apache.cordova.file-transfer) +* CORDOVA_HOOK - Path to the hook that is being executed. +* CORDOVA_CMDLINE - The exact command-line arguments passed to cordova (e.g.: cordova run ios --emulate) + +If a script returns a non-zero exit code, then the parent cordova command will be aborted. + + +## Writing hooks + +We highly recommend writting your hooks using Node.js so that they are +cross-platform. Some good examples are shown here: + +[http://devgirl.org/2013/11/12/three-hooks-your-cordovaphonegap-project-needs/](http://devgirl.org/2013/11/12/three-hooks-your-cordovaphonegap-project-needs/) + diff --git a/hooks/after_prepare/010_add_platform_class.js b/hooks/after_prepare/010_add_platform_class.js new file mode 100755 index 0000000..bda3e41 --- /dev/null +++ b/hooks/after_prepare/010_add_platform_class.js @@ -0,0 +1,94 @@ +#!/usr/bin/env node + +// Add Platform Class +// v1.0 +// Automatically adds the platform class to the body tag +// after the `prepare` command. By placing the platform CSS classes +// directly in the HTML built for the platform, it speeds up +// rendering the correct layout/style for the specific platform +// instead of waiting for the JS to figure out the correct classes. + +var fs = require('fs'); +var path = require('path'); + +var rootdir = process.argv[2]; + +function addPlatformBodyTag(indexPath, platform) { + // add the platform class to the body tag + try { + var platformClass = 'platform-' + platform; + var cordovaClass = 'platform-cordova platform-webview'; + + var html = fs.readFileSync(indexPath, 'utf8'); + + var bodyTag = findBodyTag(html); + if(!bodyTag) return; // no opening body tag, something's wrong + + if(bodyTag.indexOf(platformClass) > -1) return; // already added + + var newBodyTag = bodyTag; + + var classAttr = findClassAttr(bodyTag); + if(classAttr) { + // body tag has existing class attribute, add the classname + var endingQuote = classAttr.substring(classAttr.length-1); + var newClassAttr = classAttr.substring(0, classAttr.length-1); + newClassAttr += ' ' + platformClass + ' ' + cordovaClass + endingQuote; + newBodyTag = bodyTag.replace(classAttr, newClassAttr); + + } else { + // add class attribute to the body tag + newBodyTag = bodyTag.replace('>', ' class="' + platformClass + ' ' + cordovaClass + '">'); + } + + html = html.replace(bodyTag, newBodyTag); + + fs.writeFileSync(indexPath, html, 'utf8'); + + process.stdout.write('add to body class: ' + platformClass + '\n'); + } catch(e) { + process.stdout.write(e); + } +} + +function findBodyTag(html) { + // get the body tag + try{ + return html.match(/])(.*?)>/gi)[0]; + }catch(e){} +} + +function findClassAttr(bodyTag) { + // get the body tag's class attribute + try{ + return bodyTag.match(/ class=["|'](.*?)["|']/gi)[0]; + }catch(e){} +} + +if (rootdir) { + + // go through each of the platform directories that have been prepared + var platforms = (process.env.CORDOVA_PLATFORMS ? process.env.CORDOVA_PLATFORMS.split(',') : []); + + for(var x=0; xdr(>2EQ`~4(IT+i!If6$A*rOm?hC~a0B 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 literal 0 HcmV?d00001 diff --git a/resources/android/icon/drawable-ldpi-icon.png b/resources/android/icon/drawable-ldpi-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..16cd5dba33faeda3f256eaba98fab310ba722778 GIT binary patch literal 1155 zcmV-}1bq96P)+IR_U)hrQpZkgDu!*Y1Zm{gYI7jmFJso)@ zrJhpSIcJQCT^2&nO&3ng=8}n@yMP6}E;Gi0N2tfYeOclG^^c7fYhA5WjIel$wtlbT zqOcSks?rVs7~oD4r4$m*`<}Iy%6h#qjahSVIu-A=Qq^p2K91GdP`$s_A8-A|jiumF zrI9WGzyQlA87_o4kRyRmk1&zfSl2vE)}cQ%zkUw$B3jomjl@P50APS=316)O+=NI~ z#JovLb*=an#ZrZzfA^pMa=XerTpl`E0!nzikiY;lq}0JWhQ~|@d0R}Js#cIpH{tEj zZL5e+$Sq#hhSGWhV7Nscf4p?BFWs9fcQIBHXQ!AjhS5~LA30%nUa}GE7Rv^VXmR@2 z{`1oBOO0Nsq^nCz7U>Knr%_Gv-yz16;d~goUq&^0gvg3^L?(>8I=me)gq9|iL$WkK zF+USlRW$`CvtYo|YKO8`AI6@=LyU!Qx;n+qMt-#qIgymsB9J68W7DHLXDK+=c^c`E zEO5>@Ly%0i+y@9BiOJ4o-foxS;>MvuXbiwW5J6d1vSD*N6qTdk$w|`WArG{WA0kV2 z-yiB$SO!Z;!NM?I1aY_ZlZ7H6#3(pa(W47Me^^66aI97rOawL*ia9mDY8SEcIv8iAwk1Z)q;*k!`I-!xu zcv_67JMn3x3ji>{-Zujw5FQAjg&YZlo-J13NI6ApDPrF_jp3vlA1fGxc4Q`sR@Omxt6xk5Fbg^|vYY>sIQ!?$kfBsd<33sR!TQ)P-#7>FJwV zj;q_Rjw^!0(s9L^bmX|w-NzNQ`M5giAXXd1>u>m1(*zk1S$w$>V*fe z3}HAVP*FYdDtA3mXU}?-11uyAha~AfB^JKCqz<0*lFASUG8`W&2u1A0UcXfkB(xBA zh@JFd;ZORoh);Z2!ZC~hPkdbsDfuBEf?f>wZ`!BPG Vw>q6-My3D&002ovPDHLkV1m}399{qb literal 0 HcmV?d00001 diff --git a/resources/android/icon/drawable-mdpi-icon.png b/resources/android/icon/drawable-mdpi-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..64a6cbc52de2a6cad2d8a0f23c19ede85d62b7a5 GIT binary patch literal 1802 zcmV+l2le=gP)JE*h*^4PMX*bY*~&inY1Kw$-T_7A30)8&}?j= zT?~lb*)wyFW^Wp0c^+eQb@SC%oAcf}*Y(6$NvvX3mDXc)7~(Tqh@iP7*qJV@9s8yOy#CnXC{h=rHU>u z+(lxKFT?wbI6iS09fmlW0sss!A-QID0}VQ+j4=qH&tSwS1j&s_lGHa1Z?Ay?pTh1_UzVSd_Rlp@}4CF01Pl81h#qlO(a69%c7o*AYByHa1rPrh1&K6IXw#sGBxNQHIu3QH1?M( zraUP14;>TVb1IAw0tqL{;kg8%a&j_{K_bfpou1!rh5Bbfg-es~x+z zLD~qh?bNFe;oFyP`-o!uM{f*Nz4JRPh!&&RvUvQC4XdTnv!=6L;4_D@5yG-#qutlj;Bl>Ws*I5-C_^~Dq8y@J@1 z*jEH;Kh5O3S2>!f(>Ghrh3Y{S`twwN`w&!|?s1XW+j_JhQr{FsNn2+bMyDQH8$uo4 zJ1!xx4NRH~b=o@<_7lhDUj^CrElcyrafqGs*&a^9Hk;aqz_kuH9@WaW#TszLiK^z_ z54x#uFBHyHr#%{b=o-;O$6hl&+m~t5xiDHya1f)de}4{Li~!2^#^Xx}TDun*4I=3D z_uN*9OjMZXCb;74Iy~L8hLX80M07kaKvU$Z9OrIw%it9bG3_+9nYQAU}u6|jcye)p%E}rk# z?-xdgAx@?MG)eq?z90}ajCwgCf(}xs5uo?=X2~SD#mYZz3K-+y{bt!V&9?;d$8r2| zC;W90m!>kdy2%_yhapa;0009FanS_c&8b9?LM@@QhZ?_ob7c3Yaqwk8J6l+PCGekj z@~ugLp66+?ii>r1kvNPFL!3;#n0R1-2_caE-f*W?;C8UdELki z?DwMx*>YW6E#-P0u_UW5Q-{%MJQY*i#aj~(m=NolQ)Y&D(+<(i4=dBTlB!1Pm}C1QK1>ID|n8sPm!~qzlP5+?v?I^=i($ zR@*-w7i8Uf9)6?8Zg9d_(9pdhFbun|-?7u5K3{ij&3 zMCWde)#8z|uEucnaoKRZIZ#@XFYWi!G(DQ8T_*+%Fd+mIPLetm8GR>z!wxk9=pg2Q z5QKd?`@1>wX=xaY!T9(8Jc1r~^{59u?IsLSaHr9iw_EU+r3nD1YOC3in*YuFgMK1Uj3n`n#~=r|0aW24Z4OYMFkbkN7amd)$& zaeILdjO3vs1+HZPuE1FeT#Ydv&)`~X9$fSEqfVk9O-DaUNz;!MK{E;g&w_2$nk8sv z1AfMfxJVMTJcVsxqL}8}<|%9`D)jK8naWVuB*~Yi$Jn`*gkWVlSg5N=O!DI~Nbce> zNPG<9M#rF{{6=Ij2JxsrOg9F#KgS>u4@iPBC_5+y8U=rLBA~%=P~jvehOX-B#uBB33L?(9OFhX zh^~V1e$})Y!3r&5b-@Z#7&PI*3MC9ENIm{vL(;>Pe;(^9vFJ%OR}eih;sygSwyaFyXQWMT?wNODEVw$;H*j-i&yP2y6l8FFp s0c6XUQvQ1RLIhkQ@{iV2q%XmI13E<~2UyF)asU7T07*qoM6N<$g3Y%^s{jB1 literal 0 HcmV?d00001 diff --git a/resources/android/icon/drawable-xhdpi-icon.png b/resources/android/icon/drawable-xhdpi-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1605f695fa85116686adfcc5bb760879c6b40dd8 GIT binary patch literal 4317 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 LNkvXXu0mjfw_ymi literal 0 HcmV?d00001 diff --git a/resources/android/icon/drawable-xxhdpi-icon.png b/resources/android/icon/drawable-xxhdpi-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..56fb29e64e62d8afc5488de5f4ab6119becc6901 GIT binary patch literal 7793 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 literal 0 HcmV?d00001 diff --git a/resources/android/icon/drawable-xxxhdpi-icon.png b/resources/android/icon/drawable-xxxhdpi-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e4a915254b11c257a9803d2e543b9f8358911e1e GIT binary patch literal 11783 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 W@l9$|DDsyn;FzhUNgmNX`u_mu$}1uO literal 0 HcmV?d00001 diff --git a/resources/android/splash/drawable-land-ldpi-screen.png b/resources/android/splash/drawable-land-ldpi-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..7dceec7b7839e6dff6dca211af6e54d696ca7762 GIT binary patch literal 3740 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 literal 0 HcmV?d00001 diff --git a/resources/android/splash/drawable-land-xhdpi-screen.png b/resources/android/splash/drawable-land-xhdpi-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..39ae00c33dd22b801a78f305bcdb99f9ec7a5a44 GIT binary patch literal 39781 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

3=x{ezq7jw-I=cPA2mnpHJi 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

E5ul9^Wrhn(Tb;k%?qM^33CN7 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 literal 0 HcmV?d00001 diff --git a/resources/android/splash/drawable-port-hdpi-screen.png b/resources/android/splash/drawable-port-hdpi-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..e0dbb62f2ba12fc0fcc462b9f48207af683efbcb GIT binary patch literal 13298 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 MIv;&~1ibTq0AsO%?EnA( literal 0 HcmV?d00001 diff --git a/resources/android/splash/drawable-port-ldpi-screen.png b/resources/android/splash/drawable-port-ldpi-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..8e93c2d642ef802e83195f67ee3132a59e27dcd5 GIT binary patch literal 3628 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 literal 0 HcmV?d00001 diff --git a/resources/android/splash/drawable-port-xhdpi-screen.png b/resources/android/splash/drawable-port-xhdpi-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..64c27f8a66ec53a569741e5726f19cf2bdd35bf2 GIT binary patch literal 38625 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 literal 0 HcmV?d00001 diff --git a/resources/android/splash/drawable-port-xxhdpi-screen.png b/resources/android/splash/drawable-port-xxhdpi-screen.png new file mode 100644 index 0000000000000000000000000000000000000000..f605e6a3d58fdd63e472b4820d079450ff3ad2a9 GIT binary patch literal 55504 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%0A`&-DP)mPOt~ z-ujb@RucEi#`gxCuYr9Xs@VtSm#Gd7C88c9Ceo`0z_u!T$+Z9AhuNrJ0STR=Qgt>e zNOcc{YMQs*b_~^>(3II#=n^U` z;}F@-UBigujBMxZ?an^i?{%N=@9(?!dcB{|=j-`=JRZ;Io4qZ$s51rA#sV*~1Umfc zAPaA7(Y#tipXau0%Zjj$B!oIeg#|Xh>JMzdUtH^Dq7};+O9diu?a9JMXlk8?<|2ND z3ldQk+ci{fQ;?*((X(Y|WS^u5+1=l})-lf$c}we@ay|LxB%SG7+56PM2d!97j4F5f zEsJ<&$W_^%^1ROm>GpSb9^yWpPX~We=pGYGDdHih>U)xjT9@|ODyx3vILr(?-j4T9 zg?{Q_hKQ`ZHI=;#?ddwjS2Gj3KZA3ONFme{fl{p@nQdf7)1X>i-84daL4V+y{9{jV z`$0kZooI_m(5GRpBY(MZp>)P^aBFut&HzFrk^@}U_AfI95toZ>q~su4X_5G9fe`7o zg*@9y3)!#!PCzo`CuP!7@Y2W4Ikspnw9aUo?M`%xjb~WwG8xYbZ4+W2h4qW z>OK^1Q9j$tuK&gu5;ifAh5AZAUCmA5yqycej=$H9&5~9*ZSXZt= z%eA1AT}NAFK$74(;+iYjxFPFj7dCEsc8@vz$FaXqD9l%w5p!R0jysO5)={dreKLFC z+))g{5%1P;wd+Vr^hmys##r2m%^&e})qg_HLkf^-<%7Tq7}L`0>9WGa$O_G)x6ISh zk{W9pc!B)VHP~hyF~b5Hf7jGr8MU} zLz^{5Z87Wq;jLA&JaZEgT7UFPxzy4+$jve;*FHR$rU2|XbQde;7bIy99*rQ(Vn zH+C&hl|kUBBvt6xN2Z|ReGAuJZV@k)&YO76uR+#HlRFIcEYab%;kp=%Mf|}yAH+hc zUN5UPh0x1I(1Zq5Zebu-ntU=bKz&i!0cHRYij}<` zHE4$(VSPk}tM&el=qa#G&#wIVU^^cMAJOsBV7@c&yTGcvl{oA?al!RfML5$F$vuE( zHD1BaYi!*F>BmUi&A{BU%8KD$Ol0`Kt=fEshZVf{<{TQ&UX<-h_ZoAwI8(PKD z1vu=y8vachXqxg@1JA8g993(_A~S3=7&Z+f9Ia&3=w&?!_7Nf<`l3yAOFYxs^%%qX z#iFho6>ij5UEtlhjJP%p*r;Q3sxIcf-^+G{WCbONEys{?=d=Y<%$oNb@erXta&Omm z@56Oo1Vh6N!)5`fN8&4$qmP|Sfi=DE7ybybW z?wSkjw4rPbN=J+pW`pzzFB(xX^Qm6wfY~7Em4mJB{&J&u`2No1E?;AW$oC^V*yD3aTN!lqGfn-sZH_io%w4Qt#LJ~B@s_dY~O)>OHUUVc= z&?8t%U^|{KLJ}$|U-60#h{_D?JYFr`Q+9pb=M0coz?0()7=GQhLy#A`65_ejN??S% z)oGQ;#YXX5q{>~y-G2FqwVFcD10M=);SXr91h%TOhr%y6-JC{^fR^rF9-gauQzCRX z`o?18IOQg#3B{C2*$CSXOO5o*#cU<*fI~)BvaQ2QXuU)@J2ea+-~{#zA61kFYq|K) z{-V7eIc7od>ULbz*nVl8K^_2fvW_rRB)&eli&;IiF4{a#t&GnwazUAe#ZUg?z&7to z!bZk2?Ls~I))OA5jhe+B`+ev0U-IOPWwQWB2MMy>mcszWK4nx zg*S4sX4x0yFM1n?KCkDMiQ#rH?m5V`0P-H>xd2jADPEL@!#r{8!>-|wf3lq$G;k^M zCL(8&1ZgOLfu~=f`rgFf#eygSnx*Lt8Ko4DkM>D(wjH-U?ZG*ZY}ZH>ivl0~?7NIm z_WPDsi^&5t8IXJp2VJ7rhQnCo;R6F=(*y{-cu})KP@9v$x8=Q?UjliV(mIY7xlk zNqR3qIdXl2ZRA{WYhgZ~W$Eaa^1f_rID#!I3WG{dOXAJ?-z5N{CjNm%K3Q+CL=vJi zvf|CTD+_URq1_km=Vw@mcWlc7-6IJ^O@>A&mDEzwWRW;l)|s3f$Ytgv|#VGvPP z7W=KfSc4-PO8@K<5SushB9# zO3vbzj}~Q!jbJHVZ&5$QJxhT|%zB;j0_VOytcJafVIxxw|T>bx{M9-wtO1_ShxW@#7iS@ z#}J=fzXM*R7q(RJ(5B5fNL`y?M%iUpi?wWC2}hnyf81jy$kq97SM+}TuoZ4|vZ3oY z6PUH}(h!u>m9|(tJy#VuF(CH&_$e^bqtEE{prDd`fAc!P9vNrY%MWZJ zsM>hGzfOUH=^7J)*mYuZmVv+P0+3b~FS{T7&{&PK>ph1!0**fJSmmg=$8ckCBuia> zo7qg8>&Om}IY(6Ok;w6z_gWd@R5+n9H8KXXF&u1+QvruH5r=CAT2$)%ty)Ujxp5o} z+bfarccD5MoseLmNP_Ej7J>dMvi*_59BP1E@iG{rU^BYDmxx*9NX1SYZP0CW?xDons!uIR0YN!*iKeUDjStjW=oF$XT+!3F*5ix7a%1JtE5 zIQ%3tc)n09u*LFQ>b_>ZfD2<-+7(V&s2%$-8?d1bvDb!DZKG~rBOtUEFGoFVPm{Er zw_|5mh9!nluP=4mnFHt+M#}qwbjvc6qh@g25N3s?t?g0;7^pQFa2Af~@eUhjD#=S@ z8#`_eA2^i~8A+FBt`$cnR7d%((<^F+9?W^$_qtkNQHjqGb`GVhK$Rv^6c6$(Up9G_ zJjCYj&*)H1_P16LwNpd5s=+nLN`URq^F)dsj|#g9$nxv zq9ZX8-+FeYZa-(M_v}_1KHKtOU7AwOvgXQDK-ov&xhs?L79B0xxb3|aMDoEIQHqLM z`lwG?Qjaa|hc7d$(@5!>7|tMgY6S#elIqe!`}8J4P2{p<@@M2$LQD8QEHrwSn7e^+ z4@-4_ReJ}szd3%x;gvJ)`K0)MYyITG?oDEm((+lsgQx}eO1km(-Uz)317rlM={jJ2 z`~vtG$RF>$dv7CO8J=eupO3wzCG0%GlSE1P=;5x>HLfDsgrod|^}ECaXizhw;K5~& zt$n}siUZ#Y4UO=Y?|&5==+jy2!m!IQ=yLB@&`Ptj4B&$24y|cHENq;F3icz~MXPes zzN+HX7jn=HIuL)04E+l`fiUn1|Eul&w`b^9x7;;)%?IQO9n@mnm+czc#)C`aVWDOX!vK!$NN*p)Q@UyDE~r6hV*)d0v$|3zICN ze>Ua;CsgSGjch*p+qkbFe;t_p^Q+PBHY+J|8cuA_Pr=NWQ^cq|OJ_;ZeF-KJCaN}T zTdk4aa;u{^mP~;#%>S0i^Foa0eCy5J306*m3e(5*>0!z10~Q_JarBnmM)QD|Rl#q! zvi$8{`)OyVv~(>xPG?Prucbki4mjoS2kpz@!O(<&m96G-wYSxUp7W{arxGK<&QO+w zZZRX<`#f`SS5g=rOMgT^782NYRZDsNEN@H{NqfT5QI4n};vDtS;px&#ZI|NZ8R^6^ z%&-j&^ke($0dIDqp=$y*F%IsbiNx3smLa4DOd2L>41Vwpdo1)rUNv3>BUYrVHLuyo z3B&z+iP;i-N_#}Bc#HBacwe%ZGXunT|2gO#!1?HA$$5RkZ#i&Cu;8C6>gz_YwY+dZ zfAQESw#|5KvsRtlqv-epgz!Yc0JAUCAm7Sr|p_M!_|lSHrD=V z?CuH$$C3>}=oIc*jgOik4G79x29v#^t0;8Kz0s|4L1^H)(blLa{JssjrmCvu(Ynn{ zXyMbrfKs#CG9QuW4DaV~b)k)tqDSrm!0CH{Z$oLV%%0>? zf5^ILLe_dLy3>U$OZtPJrJN8P(G%|V7Ro5L0}6xo}88yl;q3< zD{GB4b2fZ*UVV`gTVrAplczs%TnLA_n+h8>R>us19P2w~L;BR0mg@4=qOD8sDU47> z{7nJ`HGe47;)x`=N-DO-s^wAUFv{^*4zu@8;9*bOm1tc{|UP zN?LO3R}p!>?+tDzD(E4qut2U>?TMu6)F(wGcB-#E4>LS|TNM5)#Y|sI7`+Ow=u@Gd z8TEwjt&ktVH}+HF+QEyy8votrRl4zL+^$DooNju6E=iHQS9|ECb<} zxP$%zv;9)m2n5e7N3I*Na(n?h*U~+l0ZkFFe*&yMi{Mrpxi}g5h03!n_u)`}O`Ivz zf4>{}>yGuK=|{gBGI&RBtrp=+=n4TwHyN>+JHX~FG;0AHlteaMyDm!@4odml1jF3pRdll$TFH*!H|tDnn|Tuk6{wcCSHN#BchTM z6SIypZol=ylQgAUpv|G0ua>*MBUw;{PqRA3QOuHAEuHeR^aPkqQxUg&6zpJEb~Rqg z824}4velpm($v29olFvj%2M~}dMPdgjHjPDN?e3GH#~RaL7r^N`)vArGlfS2n-4O+&x> zvx+=-==F*#BM^Yb7&16IZ7MxZ$!Nz4*l4M+@P|3a)amGk{{HF}`h*W~BgPu@e8JJ( z3$!}-tuqXv?9o!ILPQTU3+o6ik}7?-llGmVwdg$GB!aeGi@Vfi7J6(%`djnH=^sJp zob`#RtkAamtjc01R8JqdUNM}DW&tA(A{6yK?RAZ?wTdE#0eH4v{Tfkt*Aa0ZBUx{IThEq~r3DDnW(QO0@17U|gz5!`@S;LWFTpK0 zyX;;b0&!?g-r=@hdXL{Kj7wCmFX;K$aO+fsUI81*9XJly*wX3EF3h-gT}p5-LZ6a# z@^;1k=PZ_4Zaqw_|kogUK<20$c+%Oih`wf`HSV5!c z<^B@kT#)pHH3(w*2U`3y%xd5N5kzLx z%zYa2jGC{=?&w9~e>kV-RWhblTmrBR@&_cB% z+DAch96S*4#8Gh{2g?KLTbUw!Esp3CK$LX4|F(u6HN0IbXy+l7K>v`lDwJ*WpVDmF zjKIRgBp4N?s6QzqQiB#F363jq!Af0osr5G}3z_oNY{~GyTLHuXc{l2cp&?!YhDaYQ z6ficThJL8f&9m};gG@aeXvrz}jobQKe4z#Alu zk~{Jq$)>=>4xg5-aS&_Q;3kXZ@_WX1Ab$)u2-b7+B1hbaUP$XcKn)p8On(0J><1&{ zXr2i_>4xKI9HSop0C|>})1jC79?JV#m1O3j(I9dKdV9XQJo~G$eNxt2ROG?EXl+f| zLFn@L!o^)_CGku~_kKdH#7*6hHN}@hLJ@})+9j3VQpJJrtA_gLlrvGPr^(b)YGHd@ z_VeY>Jwwgk+muQ*0xWR7NW7QENB7@cybUY}wwn==#8@%-W5+{6LBkwcfNyb|pMB{tC@A*P zRwkAD-ahQOA)Bpg62^6E_VFApL6KUxim^NtRg*lnT+k8*=0_4_f|lYSUt3Cs?y|=d zyPiz;-b~J!jO8sOG-CQyS$tC>A0wl&m|%lh1fMCBZtd}alniE2RTIJQAON8SiK!F!MbVAOCoII;p3)>z7UoCEITcEP)CZ0SAd4? zGw3KaET3uf>McE=T@+M-i%Pn$H0H;c9k3gl7rcz!#BwtVJZU9Z zCyB_aeT}^^Yw8h|C1JTF^Kp|^o8T@=PJyei3?7etgj+ngvNlPY@GtzW(t3(#~0ew7z}XNei5L5kRs5Pf*7sjdnpjVFt^> zr$@ug3jdTZ7S5&C2!w3duWvo9ky}sDP788kam=a&rsH4)-v_iOy>6#%+Gx98ehU^8 z2d*b_bdnU7q|Lp=zC(_CthzCD&%(a#V!A5=B6DLPUMIh~TF7}JXq<02x`qn%uPqM% zS=yQyCgb=$@jdo`)xXJxt9`3d&`@Eu#IX`yh(}m_GQ0=*sr+j$&YK~zXa$I>~oiD!-Brlv$N#9`_VvXl~ zNdT_=ijPm|?HVzFnq$ z`7SI4g%6gJvaMB^{8*`VGTme(4Tywb{XvhNhFGb5=n@1-reed9>GDHQGXRq0C9j=B zQEXW7nY_C&8Zl8!w!VNF{}hR&0eQ&2thGBI&9Y9>BooGpqv@xydqFHn8vD$Lso(J|eMN@y>s+1L2>q4Ieh(|yX?C-VRdYTt0^W*=| z3RDj{37G0`3`=GNRi$t!Ky2q0HYBtqE%e;p*b^hEivwypBYR*E=nFa3Np53RxyD|H zl7Fnb1~gb++c-~adSHU*uBH}DSNAc2a@+ScoBw@1j}GO^(XUv`C5a#~74HCP-wi!ePl zeFK4Xh{Yp%)t3tUyf4}x0S--F?RlI5l09tJN@$36m>aAEl~Uztx-<*?ycOKue0+0DwPYd($D7C) zx|pXYAP?dU64zqnACN*(GshU!QKF(l$d<7LB>b?FU)Z2eW>jCNZ=3gp)lsg96F~z?u$q z$FoYS+Un`S>jX=s0ND8POJH<>S!}raIK`e|f{?WDq`h&)bO~1h#h|^1b<#)G+k>){ zbYBhTy0`rl9VZZ#H!pf=gZX4kbv9V-zPRIjIb8rwcw{0B`PSp+I$>qvsk`qv-ho+w zIHmm0N!jbJ((HA=;Rg3IB95gfLjy{|1dwdWl&UtFYvWf=?@9k;Eu~z+9yjA zPw-`JTD!SIBUDnbmU-LL;wIF(!noM)Iu~5i0_Xl+dj^R$`Ljro@X{VQ-$@(z_-&Vx z9u5?#_À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 JR-)k;{y(#CKb8Oh literal 0 HcmV?d00001 diff --git a/resources/icon.png b/resources/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bee77667f603fb18bded673bb3820e7af33cbe37 GIT binary patch literal 60857 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

wN)_?i#aZHj68_|*P2;( z2>UUPVQ}t8hklo9+%f4{KXlOaC}?Vno30B2!FL#yR^JTRoXnIKVDJVNSeQN-6!EPe zhX7bhBO^&Xk%*(HBR=kR(1t+C@^Q!D=Tr9SzsLUVa@PQn7}0Bv!C7p5F*`U{mGg@? z->{Uv#VV}Y6z|qOicZTwQHA@$cLa9)5fu+_Nt}<4O>N<0Emg>(Y8`^Mw7h-K&5a{# zpR@Iy2Sf_G@)m^E^>h!IHR*Bo4YBs#A(URKo_yNG-Uz^7UuVs(@6#8{w%IYkrr`79 z;bhDQ02giFq*Q>Y;j308G@%pFBKVUB^ z?qOJ6myL?)0{2nh3_q~NC>~PX6qTA!Ch#hqXacMNRc{Fo?+-@`Sqq?FZGRlfspeHW z)*S=&`KOE`Fgxj)-tFB&NHxT9mMjR`w1set}36 z_P=fb?yHeO(V^vZ#^))?7D?SG)MF8}&GuUASl-+UY((uD3w!d5*6rPlN)e~rF1rH3 zSAKa9Qt}HS2I){U`CR(KY}yRdo4jw{5a4mVr%sQ7D8D-1x{(SN92b|=es%0Dx+V3J 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�i)q-T~26C+f>2i&`Nw#o+ulrLx{L>Yx z${V|>A(uLS{@ivls);RrGk$w!mSc1M2hRU7{9vuei;-sbt!$dXI=A^J4KIl^Xg0l2 z0o}_5Di`tv&J-(sx@Cd{SdpVUXU;T;N7F9tfSsd`AFR`M(hN%42^n<>lwFE%G+nJk zvwQoSLTDL~&04(%Lwd)!(nowHx*X&pVi_d%<2?dZXa^t}S7aT7mnbm6irBAo*TNs@HK zp-QGh#Wy4xIP+$Mll}ZGHZ4{@`WOaE4rPyLz6&?{EQov|5lJCK(@RUU4rf78riX|7 z=ci)!v@QI<`~CVD`tru5n#r!Ub4&bwcgIsc_rDpz33n!Z{2XU9eW;OHr>LlO2Ru+N z2Q35L6E+PP@WCz=#|JGvqkO$!T6Nd0t!?93f8`WTnGF0Dx|DCtai0;+}7Jtc0r!yleFPi*&!x^d>vb6%bes6+t10KA1}*#aG?DP z(ZBBN7A-a(#yqWSH|?u7E&1m*=0vfJYR6YQ-_70H;lVoQ@;$U#8NJI; z-D>}{NjhxN>sX`ap)*3Soc4Vsws&@T=@%3ZPlF$C1j`E0e7U=|Udt`=d1D~k~os2907iC4hO;T0hiWh4<*op z@X+wkh}P-r_-Knld*7^15)?Mee@< zdR6woNx~3k5Sxfipy)P{64+Bn%{}Ko9(#@Tb(TR`!^%G&eM=r82S9ZK{(;q;!n|t& z&eEdEVO}sV)PE&`cfcth&7z}92&4eOvqnY>@b3bYjhX)hUC|@@h;QWDe_#!#u(dzl z*3&W9r0)Qv^5CO|e(vL0FM;@Rwnn zvS^}5l86ldKao*PX`_JG-fyCuyGxCPcVL7BQ@fLH^^gv}N6b1&7v(*aLP*NcV>B_* z#Q_wgWx%w&CxU_v3mnWGR{l=73_V8^^JBPy=uZ^K090BXR_HWeh|v5obao2-8`r5^ zNck;JSnfa04spQMhZvLJY8i{pkhEj}k8Vofgr)xDJIEikY>Hz#)egn<b^olqgA*=7=S zLYX!Msyp Yy*En5WV5637yw^tN;egY6)Xe)2W3c4djJ3c literal 0 HcmV?d00001 diff --git a/resources/ios/icon/icon-40.png b/resources/ios/icon/icon-40.png new file mode 100644 index 0000000000000000000000000000000000000000..76cc53c34ba6dcdce46005ff17d9b9b1ee26be80 GIT binary patch literal 1248 zcmV<61Rwi}P)N>_~t!*A}=HJznnwZ)v&EL0dQo)Zkh@gXXz)#&a(}S*!jVa|OoTq1# zzySA{f(SB52i7_U)7gzNhQGswAMIG7o4QER-Y)ELWDZX1H$%IB8s7{Z9f2W}EZr_G zFu>rt{RNm zXlMuPp@&?#QJ~G1X>S+~PR*juLoLMFBrw3JpvX{lVoYKjXCDybJ=c3~qqp;qi@0|j z3e$LJlO|CYv3Mpf0!9VyqpLW+O~0MR>qYX;z^z0rah8g38`E;{9Y-`ZxiGqo$G{Z) z`Y3$+F8nnK-~3u#FJil@L^-io4DpBe)%i3^z;$&SVgZZR+tWCiw;_ZZzr|W7v1Aib ziWjrkMB@YFU5Lfb$5FrmxbgdPmU53X^t(^-@G>HV5H-(@QDWwUZJR60ijKg*hrm*n zF3y^dqj>OVB<6>sD2{a}*W|9vVU4inIi|(M8k}?73rslg=?Dy+b1X>!0HcB;*`$g6 z(=cFMiE`o}kHWlM%Oc@6(kzrIJsN6Opa%w?4y#sE+Pq2_e?W{usZD1SyMJPuWUG3; z+&HXUjVDD}wgocUqOu?Urg*v6hiyk-$RtYu%Cfu~f0o*$MG%9S#W)lYNl_a}U{kO^ zpM;wttrsi}Mp2YiZCE*-r0+lY-_OGNG>vASj=+#fmH+_b#uJ~-3W#wiAc|=%)U$D8g1FU@ojr;9XOHj}xhBQRu=CAfhB#t4dBGh!$plHouc=g&&kt@C;xB%c?B z{qDWLD;o;XXj(&aQ#6xXPe))VlK_ALMg_mK)T2QGk=)#s$9qS%vK^(s`G7$Ba3cxn zbeV*PcYuT%fuV!}05HH({*1{jLIKgrW0`t;BKe=E)%`4JcQH#iL||_Uu5moGuukR< z0d6K)0ssuKyaYFiF$R&y0|J6yJQX4MtdXC@D@D&^Ljt!<^jn8Okk78}=*-Aa1Ym$s zK@s)LAQTWmN85pTB?vL{Zp6EVIuT*wjQ6{Tx<9#mmRyS$ORoOMsjVLCkJB`NoZRk@ z(~|`xB`qMKyMQdyb$0p}x4ZSL! zPXngZfj(klOCoW7&Jjjr)Om2#U?;KO7~Ky)_t1tS>bghPLe`mF!upcORE#Kh_c2wD z%<-iU<{M{&wS&2}PQMU5_fy28_frH!wGz4i{^Lt6G5_B_H~j;`zbli6oUyI|0000< KMNUMnLSTZ8+*A($ literal 0 HcmV?d00001 diff --git a/resources/ios/icon/icon-40@2x.png b/resources/ios/icon/icon-40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..64b490691b6a2977516667744a5da5dd3da7387a GIT binary patch literal 3564 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 literal 0 HcmV?d00001 diff --git a/resources/ios/icon/icon-50@2x.png b/resources/ios/icon/icon-50@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2676f8f6942516888cfd8cca5eaa0b80b18f0cc0 GIT binary patch literal 4691 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 Sk$NTo0000r6m>5mq+@A>1*G}m z^FF`#ymQW-nSbWqnKN_de(xtqUss(F4~U0`hDNBVq4M%^4Ekrd7>|8BPFWlp8ue>U z6-A>U^uyx)yr;wd1AimO^JI&?bPtL!(NSKyMNcCKIPfG%64P1jB}w4;^R^_pEKm4~ zuoOv{u&BtCFv_f4tBN1nx5>$h?oag`{o_`Y6U);zvu(ZgTQ$0eB_$&u>7I!(ra6ZJDOobMuouU|Gvoc?~r{EZ&|)gk4a z-F}>aF_X>A(lX}!>!>$CG<(|d-dA>`h#V0`jWErmkvfXPS@j>)R?2@iSn3S2w!rY= zlc>+GAaGGp(NPL)Q{RkAZ+yDbqXY+I+UABgj4`wlf7IRACL|cmbr&URP#K0v5bf(; zrxY*RfjryI-Dz5&K@stm?8#q<;|H(m@wGvYY}*9LjS9ULDfQ9Y_lVQx%bW=xcVTU| zfd&%#myTC8GJe{;jR@M}(qnR|RaVZH-|ju<8BDbq2cJ@LaieH(Th_2uh)AYvdUGL8 zR@Wl8?egN6?t#w`$o|emuCUe82XT4v!iF)FiROH%nYrgry3NJC#@6xG2iCRU9;ojl zUq#-E2J|5A*Y1~NLlah3vX;ALy50u*JS?B}Sz)pO!Zz7#ywURxgW4wee}6w@W2w#H zOUlBgz0x5?6DpVLVIROSMil0t7v|bu(=|*qx=*%|oWsm0HDY2p;AlDiAOA`(*)(7aqb3g0A1QC& z)$FQxk}Fgk-%7g{T=x;|Y;3(3g$rhF-EW%s-+b}zWQ*+P4L;Bh*~vPvTY{Jw)yFPs zzN^%D@1R-4_q|4eO`U+0TORl6IB6%0z>gms7u`MQU}P7 zGA!g_tnaQA>NS~WHT8e+NO~%n^rZ@Ip_GlPNf0NK-5bWl3S%{dsi6&dZCI`=m$5rb z;#e`%Ob>JN&f_8);S84^?WnivS;z9F2bXWIr=k2DsX<|zu*-l}I$y!uymSY3hyw^M zv03+{%V@smtGJke$>EmvU-MS3pVWy9x=VH+zAZWh|4f=@a}!GiG%ym4q$nW%U2v>M z3?1_ZcWgbI3u(Ei`wE`t`R^?C39BiN8@)|bTdpr6vO8Z+xs(-y3FiwFSqyW@gScAW zn7bc=`$&pKBFAg0hqnT3t`9j z#OTgQ@!`@Zq~S2kQRB(mgl3|lKRL|n%xvW>&lsyp;L-v}u`Li5edDh_&-uUB7tZ|} z%hH9RXOl|-v0AF1NhqU9Eha;U?kIjBJ9Q>`N9pj*_s=U^RSI-h?w0P)68d!)!#i|I zJq6)=q$;*U_n)>p0x9eBTJ^eq{!lNRnz0ihZ*{t?!AMatX{}R`> z$KURG8@a++XS;waD#1qE;7$DN!urM~Mt*Pt1{k8;}O~LT`g&e~@hGHNObX8#%}OieGai2V#`0041;w+!|_gD<5h5cE(jg ziuuYj5Z*7HA?H8qkZ)mqS0Fsp%sl6=gLg<`RJdA)a1s2`7zpdO(UJUWZLbV%TLiYs zrd2nYj<3Q~-S|;gRbr$6Jo~dAk}QPXue&MYZ?Q(&LKO~RZm2hUaBEG*kdcFMi8tbT z)QhwsAi~eqh7vPGS4X}hi%8U{;tc`K=3Q3tU|d_DKg~Wad~zfbsd$rq>+22n-`&m~ zXOwHha6bdm#q@I6iGpvZ0O45`TJV>)A^MT`em4?Yh zt1$Yg%5+;CFatCH&OytsYLT8GUWaMewUxn!p*X)|7SyWjf|~BjbxT?|ahJy8O{|{9 zF>lh2f)w%cT1k>A_AKmY*ycKV2^J8^JDH`Ct2X_58~AGTdU8~&puh(#x3#|WfkWY> zx8#ki%jav=2|Lk(I!fA_Uq2LOkP2T9WO||sx2_sq#dG;LtxzXmjHmbuV6{S^)dERJ z(jm#j@9@QVsf~nnw5k))3GeLVTM$0D>qmP$MFW&_+JX((IKQYtVt_7`ho0%Tv3L!8ZeJe3XeV#_<))q7t7*H<+H} zaY35`i^7=IL&(r7z0i`2P7_@m^RmhY%yK)T%Iu_r+Ndv_(WB3@5AG}L+c(=msZwuC~$|eUvM$`zVZR|RC zykE=qNf4GUQ}Eul?Svt)CE=j7^+1!I^+DJvcQ^Dk+cYaueTs4 zr>y%}Cagc`^_bpj1L_+*;B`L>kBeN7f!F&Y)*t%KKzCbw-VKey|t{ z^h>5`RVG>e(SpqFY_(dp%I$t)`oQaTij|g$O>_r0p9s%#qo=<2WJL(ukitaD>!#RBh z)OAlOsl8~aeeorHWRl)fD9X5S+9M~r#!yUYei=Bp!RP=LdwB^zG|uHAKPZ9P__ zXVA)6&Jm9}p}QNKdFLk~WNBZZz})fii{oISs^icj;Gh$0gty1;Gyl|6KJic$qRa1^ zed`zk8+M*+YMy_exJ{YEAa*JQz-(EEll$fYbW*UEQG9Madya{o)5F=K5f9?SfD#6U zSrNa1$wAv&6lHZ_t?8dDht!)uXP-JCQve{1G*FG3*3AVf36T;IyhwcdCnGCt7~4{u zK1CO&8z-R2gf0T$Q=nOL$pZrz#ztvle?ZLo9IJ=j7_j$6iUh z&+E9dy}^4dbao1$Rc;dOFC`?)`ykeLTivk7YX8S%PmTpJjJmh;+zcRN<|aGKq&6w1 zEHIwzUd+YMyad>oDdf1Sw~#2RiPLbV2C}Gy)5PfeXe_1w(J&sL=gMdk&a!f+|kyQOp>s zApafkx-1V?`t(^W1%8wr9xM~go{6iOvC7)iQZ&F6H8uhIv})?Mm;OC~0X#5_zT^2> zEv01(^CnYo+wSmdCn#e-Evs8z>dWt=bemn8tdx0dLs=IVO>e@AOXB{SwXTc#7eIS2 zVJ32WIW$$pAuI7&wIAYkLO*^|r7PQ=&gJ6leTg;%tM)PW=gOakh|^Re1;l{7QqT>> zl#y)=Ss@K^&0tG{N2PUMLo4_5I~6W?09zF97!7u1fO#GKVLYe+*e}qPbMF^=W0>Qm zrZ6~Vf5PX&pV++RtN2cZ$N-mFo`tN@&?%`oa6-jg%osJ;X@6XxQNtCSVHW6jf(b3L zjLt$h1-V%@NjDrW5nd-Hkk`*T9E2dC=6bCLc4(V5AR3W>def{M)0H7uSZ^_ktG)J6C$L{Zmea z3wgk*wB4>Kd>1gjm9qw<)XMEqY35*OZ%M|Q0_l?F*;^mN)8bjxFhx~$%$t-I^~w(V z*<}cD%~;XwcF;{}rki;%&CQeZF@ZZ8k$$bbN}GDX#=f%ymLiU+_4-97eyI z%a;`zzVLZ(?G9(oPI6EQIHMZ@qLV0(eYGSu#M)x8L&p|HXrMH!(Okk~9SzQ>(p70) zW~Ii2@93TlT&$`3{!QTyXc=HJY7*Na8NG-7jAnJmQXr^)ZI;lLBJ@K6lb(BC0S*mt zcJ+6Ki?X#1VHA8?pN>_=iR$ssrK$M^^kZ^-Tl+8MhMGWftx%OBCZXRNm|hS+=y>eZ zDre10Bedd@;MyK1jdsT2;|o{6C~IE$TK1NmF#BVmRR8r6W?!Ueu2!H$6pl1mA<+UL z#C;H7%mky=GOcw%LHi}aj7V6Iw2=yisV@Y#Abl-c&K;%}wc%XAlF8uc!AtoBKqw0L zCYcj?y41mGb;Q6jOKot%qE`v4zFqq;KD*@1EhAN97 z1aiC0STgpWcPWVi_G=2?|^6I3FHt}8ucF=zRXaW*y)^;ptDggqvH==qkV^p z2;70EA8`23%UZPtm6<-#-nH=g(+dV_>Rd^^b;wcc=Kao0iA5f+qey6o{Fbg{CXqEI z$X_;#I={bt$+&|Q;Qwr{qh9scZ=;RBF{Q;w3`t)|mnP}$TiE%v z82`y&A&kzNmL<$M=QZ|3w=68UI&|(a`tVZJr)CHeue>mD(iq-T|8a1}ZKI2H{`It+ zM^wbp>owE!=?xh^v!C?2mjazYp&h-0N(SQNn0jx5C2SLWy=E&fIW6)P>?SY$r0Au9 z18^n;3do7s#=`*Q;6`Lat`*sz>s-6dKC2B1Q76c98#RpAY_tAGm<4eif5yFo<|6TC zwe-ZrD}neHpkG2DZPcV%QB8E4BFObnPjlI1%QMz+75d|nxO5b+462yWl3NS4H>`%4 z9x^kWHdgL}Pu$YNYN}y%MMcAeQei&g?_oIflja=GBSw0YRCLrX~i2M$ z$bR;F$@^cK)ZQ#EX8lIJi=H`YJASP$B1RU3tg~T)ESgO<_#+paNyk=p*pstN?PrM8L#`H^VPh+4FRbsk zllKR36PfkBzEaSUb>AL3te$r4QTxqkRgr#)WN>I3G-$(@K4&maje8laKR#grmvT(< zDcI7u*~H;D$Q?=P8Z&`AO79#wX=m%bFfR|=yC!oaO4iPP;P6Ni#)f2p&<51|@wvC2gC|5+2jxh1q6@lhPgxre=o>u$}wM392Pu#XsdYjtl3$Cfjpg=WSfNI zu@CsU=FlHbeKc_c_Nvo;UFtcYFrm?^OX`ZD{=I}%?i>2F_sR>*qQ_i^+dX>;0Yoo| z%$QTqhUMzG-rm+n)I|mx4-u(TlmMR`s+IACKjCW%!Qy&ew_GN20^P8&Hon`RD-V#& z{L4$}JYn^8$FAAc-WC*|vs!c%O+(1E;0&EGK{Ar^}wUt@eRerGJ*@OIuBM3KX7SFu>6Jxw2kv(U> z6MXH4!{ATiFQ9sVjfG+3y6VywQj}75fZrN~~n()pMPiXuo4p@bnEdgxEQ7a?5!k;3fxP+_Yat_c29x{ALlixFTk z_j%MiMd@VC*J4`}i+`Mu7C}`XbVKLOT9zbwrkO>agkH(EK3}YrBb5lm=ZyIrnaR$) z62o8QXPhm=fg*c+()#hBb~I6D`l-g#!HQpjZ&5Es&IYx-xn?IjeDHXVksF&-Q5S8c zx8vO_^IsPaTt_M1t?P58{j@&&8H>p7ccfF-QslzGK3P<&kqy;wgk~Gf*(2`y8n?9nCHm0yxbZ!IPS?noha4{xs^7Ev*Z$a>v zdK6=0>i@-0TzC-WTLxoA@Ewu5ceZgXmdK2ov~#yIRld_@*h}m+`p-;FBRRkjBu$dN zfGYf+tvM)M=>30?T?T!Arr2Y?FO(N1Z&5eytey!s-1Pektf|+PjGB zAjFi23i=OJORal8Q7&5W|C!ot+(vxrE%xI{AFGRybe=S2xtv?Ky6^O9kPhTIr02iD zkCot4!OaB?;!s#Pcr{z@r0TAGn@Xlp#xKeHu|)hIp6D&q;l(o}v%Xn&i zgxk1{)oRcqY|RRg)G|mi2um!)?r=9~nqk_ZF4amcz+QPDCGZ#Emd?{W{rHiT9O5bF zooZ3x@BhXA^-5lrNx>i7Ofz|GU~DT_@of|SH%O`-MWEfovGr+1vLb|i+UGYqKQ;v- z#U1MGpvsyp@hVLQ+^gr+yF6ez0UoOrq7!%o*d=21@zJ-D?_l{j*IlK1kIWrSQ&m@` JQOP#u{{fjJsFMHy literal 0 HcmV?d00001 diff --git a/resources/ios/icon/icon-60@3x.png b/resources/ios/icon/icon-60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..dbc830308dcded4555effe7e99c9a14601322796 GIT binary patch literal 10875 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 ScciHlMOj{5u2RM%@P7fF?$eC` literal 0 HcmV?d00001 diff --git a/resources/ios/icon/icon-72.png b/resources/ios/icon/icon-72.png new file mode 100644 index 0000000000000000000000000000000000000000..4e5a82761108b5eb1ee082df6a743ac1df667886 GIT binary patch literal 2866 zcmV-23(fS2P)Ze~{<-Xf!H{B8;NZ@h^JOcV@G6e9de& zKMe0Zq*@{}7zA)DkQkmIu_R5ClO(3#eV#)HZY>Jpy%xeKep|%yLK8qsMvO{p@V1CW zQM^wir`S?VjN9H`e-MN!y8cD`AdGat`R8-3Jb;%9$wzx(N+Lt?5EnYqz2HI=0vo`9 z5)>F7?c3t8V|bAk?sgV6asA?)?fwT z0e}Gyg>qtQSkz8daI;$uv(d$S{=-YdYma=G9BANkV_t6VRS3-{+aLr{2t+Kx?eSHz z3iz*9@knB3jzqk2s~D(TPyHV+yX#MKW(B>?5;j}MCi)f#L@dI&#e@kZV=bpxnQ^Wp zR>94WOP#Rz0~A;fN54WiIs9Qp{pDDA1=A| zc5V;vBs>or7H;(Wi|)~@oJsicHTT()JH6sxbng0 zs;H0T>l^;c0~z@cVT*KvRp@R|e0)uk%&)x;;KsP2lgzi~s;I0ktjdMkLMC&zb}wke z48u1!Ja4Fq+UMVE`4`Kofm3#}E-`)*?@276BqWeZ+E+Z^+~YC* z`KB;#F#PPF@|z3Uz0F3%v_X4NVA)ewZYQgW!DKj0lnl;Jk|c~aDM?a_T93ahBGtrn zy+WFm`2Nk${hvQikf z3L6H?01SA?Bc?r9{_D^G$COa7GH&LiX=T7b#Ky-YoAI!sT{Mp4Az=lhXD(~0Z&8eC z7$o2UQUTW;F^2oY%Z~pQm&n+yE()k15XA$W;h6GtCy15!$4ZZ(gP{f)6cKLHN-qT& zXZ1!**%KWtJ+_BY#SJvU{)Dl5d%D$Dkp{&S)+9k1GD+2}6c`|Zs>NwylrY_Q9n)23EceHX5b=!`!D&^6?gY}9wh}u0%Y8UonA^JLostBexd=*XiOWm z7O)cW2xR;jg*q633gD_h6Sk7Y&vuG$ZpzHrrGYkNRHFJN!#Lcn^ePQ*30NxO( z6BGpdTiujIhN9NffMztN3mualA&qguQ<(_{ zz`zE4xhf)YeJebBU02DO!)4}}e8hizxy$#3$G_c^=i5OiP;OPk$nOq3jp0T|x+6pd z+Ty0#UU4Z@U<01gG%+2+A07q&xU2dwV|FnOY`wx{KYf$qaWi31t-Xl2S1lZLu;a&X2veO+!omahs+zuI! ze2SIMH{D%C6ar0U@F%Oyqe3N$0sN7~zFdwryTwdZWRXEhtl9H7A?p?9d)KVR6t{yT zc9@kWx+4Tp2sGhL8_eTORRlKRONi;urcGE30W@JT2aX%(V2}!~ETR-y-2C zg$X)VlKMjk_|2UdVq2Yr4BQyE(#8lu6ar1Sdd7ryGvAE>K9dPz={TBj885GR%|pmX zvHYT*8?eX_CNZZelEmTK;soL@p=sr5yO+K0B#+m39)3W11K`P^tQ zcJ|3s0!sl81-FlX5yX_qqcw=_Fm9v;5Nn`{Zg?D3MC;H!G;ph%yzUIibdRZuNfT9U zU_3-$Ro65gY6Ayw+aBvAmDmzp189E&#$zGo-YmPBd*ov$bqy#t_p8(9K5Ss_PjrEv zT(71UXj|V-e1SHX>P{V(DjqUht6i!|RuDMsQW>{umx?J(7%@9?sc@<4JHbvQJlYAK zWL5118@CE47*<)<+zDsKI$;akXiWT88n&Q^&BK;vfhKE36qf{= z#EV3YaH|<;65|lR5t|Zs|L#zrshb}S1I^}J1G-InU~9k=;S=W{cWZ#Sn~v?lfvth@ zo@w)~f##bzOly1s+stv2CrvkVKDa2|$S1=)2l1({H|+(|r34ZA4f26Y)BL zb+_N7Wc$s8AQe?-+~(PSn|H&M=gR&jfW-U58>Sx}wPCtizG3P_5Y_ALp$o{LXTx-^ zEpA4P)sr1*xG~Ei`Bt{LpRmOp&b!4u*Gmc124W<|H2+Hp8Xyguq0UW%ml6$MBUPNv zVqzGY`md3SgEJga_0Ou=Yoz8c{%W4i(j9!(9*Xr}{82=WnOd21HP5P5zxZqZs4M^Ox&2PG{NH2%vQ~lYtV3jzor{+A1Y)UFx4z z0}{aO<@#L5Ayl%ls(%~;OpFXX)y$9~RZO1hvufH8NB}dC^B!PvVyqT@?p{O>MdaiG z10;nv?~$XgZj2W}A7plBuN5)~HZot^pvRD{W<1dxo&(Ey%8?g!SE&HyKugduO{rxZw z^iZ(xO literal 0 HcmV?d00001 diff --git a/resources/ios/icon/icon-72@2x.png b/resources/ios/icon/icon-72@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..56fb29e64e62d8afc5488de5f4ab6119becc6901 GIT binary patch literal 7793 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 literal 0 HcmV?d00001 diff --git a/resources/ios/icon/icon-76.png b/resources/ios/icon/icon-76.png new file mode 100644 index 0000000000000000000000000000000000000000..e66a90ed64a22af5253377e7ad195985e1b1a3c4 GIT binary patch literal 3319 zcmVFzkc0X83uv1b~Jh7B$4__pES*s(oH1uqM$U91Q6I3 z%0K}kQa8p7hrx>0ItU}-7RUc5Bq1UUgD~X(3JrK-Pv;yTfUXlEGK&96nkuF0-j1vr z8T;SDljQ}4O4W$~Vs#`Hu+L7_sEPF^8^7{Ux; zAj1Ix3P50+Ya(iEt)T!<@mqPdGHqzSLs=>$nma8kil@layigBcxessYKi<%5PtD5% zr_2f56=8-jkl}y;1t738Mf25&@+@YEO!prnDbW?tAPA`}q$ktoYINyQ{?1x)@uAr{ zbe@ca7K#($yr5JusS=oe009a>U;!7Lg;XoGCA!WgIgYMY;_ZB%Oez0wJTqsn>eYv7 zoari}g2DghTS)Cd0D%RZDXQtFgEs#?hO+3O0Fiklh1eXPKuh1ozCF99K7XW3Gj>;; zgjba1_esG45Lm#Of{B=pSDx9adkiJIHYHihv!cPozrCjR0w?`Z@{1$`z)GEon2t%M zxz%_7T(>{&T1dieSTSrt(&H(gEy~C9U49~%usw?nNh_I%N`!m~X|>3FuIUi&mU zj7`;Znk0n)e)Pdjl`EF0dDRW!i9Ihq(5z41+SVjx~pUfz~8tpKNK# zLc6nTnh(9T7s3;J;6SzqKi)Pci97-nP6wpUQm3;yNjWMNS#(GUE@smMw95d@WCpq^Ol<8D~0}&`)!gyUMwN;Ry2|K#!!CwRy_O zr$y%eir&=?Qpxm1RMhBOs;#3X_6N zF%1s4sEWdKSH87>y<1SI(4;fVQUnk~m?45mFF2jUt&42!B*3wR=d(i9C;-Rxtnu0s`Lv`VP z{??W3z3ch;`|9R%d;3{Vp+fWA_3`tX}r5+td1%(PtI(dZv zVhB&~0YDW+fhhpj4Q@$gTGU2)S`e9jTSM~woBHQo6;u~Ia(jzMX|1Uo4nq+7u{(1` z{q3G+D}&51alOd(LN|y%0*4!_?@tJz^vo(g}0!-j01xlmtprBBxIuSq&;U}B+_0QB# z9f+FgEkqV-L!KxP1&Gv>9LwnR)^ox`BVV=75$mgrhvh_tr1|xW<&%v#FYQ4jOy-lU zsFI5s2Er2%9sq%z@)z60V^JOo5OK3eI-P!er(EA}Go(u;>G9F;7i%iyi6HB7}M|VnyxH)U`z3bzs(BvUIsdn3F?6hRL z_V4#Jj)z$eLd}s+c+Mj!3_~*!HVkAqAV2{KtUukN2j!tqzb0ik%jx|aMU(qn!gM^* zKqh9R+Yb~$k`U5AQvD$Cc-D}t81i4l7!C+f00KLG23U9y6}6!N5g~Pqq`c;5iSzf% zS*e_t803w zvLqHzadQJK6d+PVQoaHAww>YP{ezk0)K>v<*GxKEYHWhX`UNIIhLO$Ie$pM}oqk3I zZb8bc8hJo~0ub0~T?srq3wIGHK;+n(WFRFYaG8RiNBQy4XwJ2C))e|-h_4dRsnAR_ zX60ZpPP<7;JAIa1UFqk$gL0>reZR3!>Cl{X)(Qgx6o9}2&J;3lSj{_IJ(S<-L4=?+ zCMErCNQSLQ3afvw??F;JPmkm&xobLJds}-6#IPssI*9G??i2z~+btw+vW56LO;BwinU@bW+Cn(D>K0qbDI^2a`=OT%R6Ls}15DaB z8EBE##fcmsnRHfK=P`tgpVs+2>(jc?@@ZYW1idKAWKn`%F`S>ES3DOa=)}4_Z;_z4 zKWZ`Y{G(Pc@)*{W^mrc3J!%mP+8wppADZRzs`k*#+4rZN5T4Bs&740uH0Pz|-lXQx z%*ifpe`sFf`or2Fth@f;f@dR!XYYj9A8D=`_{Qh8*B_BFrv3HD5*Jx=#pGRN8E&G+ zJU821WW9E=WH<^RSu(Az%i3RLEq^7+eIX_#Dk!a~47ieXhLnZ-#Wq)x$;esFl_UX)Ue{h8qH z89x)y`F8Ek1jcZr0I$p&-~H|ufV3BgTWTE9K2@dwm%9M%iA;~SZ2y;?&KxI5t{K(xLfX01 z(oXLOMobNixUA6Z^wVyLkB5d3LQJWhs7AF>Z!h)bcSjfV7&gpb6LFQr#kr+#^d3&wd{O&z3^ECIG@#N>6ESsK*5yb zNysv^Z>C8EI z6r^o7b=Fmy8oR^N!Wa`b`luC|VoRe)6nRuw(kSQ5H?AVlpZkY%MWUF8i*rSyH0BV0 zkti1l2|NQdibSnSmK{{dqVulHeHnF_4MvF2ejTfHMRe`Pp>Q09+x&AP&$LWz7K5*l zKAIAI);4c4u{REk?_~=1o`{K9{jt6lKlgRN*yp@BXUE#ty4GIb&)P9s8Y(12G(;E}7$mAth|a@1^Is#tdU$4hYW2pz z0EwwW1ZfMZN@!;%|ZPxV!QWQBN#u3yC{E;YLn@jj=?mEcw_A_=45&N1SesTiYzP}93}*pMW;T0Yni3CV4L3)+ z%_`Z)v+yT@7{7@wg&xfMcyb(f=3oqW_@OdU9l&}I7F2Lt59XiSy}jS#&wHk=hHkss z@M~Xdzuav!cSrLd3`j6P(G`RSU6~)>tR!%}rpunXn7mOc5D>?X(f^dTMxt zE0S)>OIfdiL)-hkZh(o<6zeh>`;jH4^4IiEdYFie744<+f?=zbs$gN(Ue=yv$y7%r z`XIP6{-Wrrxw~6PxwbN@$ z82dg#9jI17PRdB0mU5$KshE{x>U+QPE^+tG<59e|Dt#4u%nK@sj3Lbr%ErOJSwm3X zWcJ6`E0>%W#+L$nhQ_a6m2-R1zz+S7Z@L=ern=wwyB=?nek@zNu)ED!eq|cm zbA3>~wi|pD6kLgZciqXmb{vv)d`BqTK5V+unN(Iu3(OfWJI+Tw#vSydbCItboOK8 z>@~br>gh@g^Ua9hbm8?@SIWuf-4wxMt6=f!W@Jf*dr14s-HnKk#@oEk8zRm-cy+kP0DKIZBqlx19|6;QsBs zy7(stH&m|s-~1p(3lK3AVX)I3U}w*hiHqsY*c!lRU9Wz(On zd_JA@+^xEBqrX(vOR6%_M7?CBj9=>J6wL-iHarR!y;7JxEI6sswj1xop9bCSt{E^8 z2cNx~c(kc63Un@LM9D)TN@fGff5rGkx8vMXMQ)r9JJ4Ub*vJBkhbQJvr6unO0X)cyUAHTVvP40$ggQR`1Qsc#3q3-e{e3;HA{rpOLZz2oZZBXQSIAJ3rK|u2#4y>j z)xQ+CLi+(@Yvd)&?X})im8=IBEo=p&jhPlyUHuOMmW25*Gbm7%IgDk->~WczqGo9( zGc>PQCs%_m_TC}|JtLj}szaLR&}#KziRUd7wUMD3P{2@HEbRB4CsG<`Mg>yg#Re_0JBIZ2C?WOy}5poc@JlY zYp$*y6ocnxG!Xvg-+vaVlmwIvy>5x9W#IPFU5CEJcvyPA??#~ena%Ns-M-nkSjH}( z>ZY?7Q#jYxf!x-~co%3jW^Pgc^}M>}lbeLkZ|jU5qnngMXN|I3-KUcNPThZQyq04j zC|)!o1+f-)4up8s`uNK*GV|0F&9UJFQ&8SM-8AYSJ{B^GlG_I>S-wAf zFVk7y&xf`9b+oxgE;z)t?j#G*#5*r5=VmVMdps@$9?3|ppUv=;dsN0uRo(pk8I4(J zz)#fAor%1ZvluO7gT|joSY$Zw>hTwEfg>DXX(cBQPgJhQyQ}0D(nCXSy%SJENpfA6 zz0ctcI#L%kOVC;)rzX|YPZ8kBX73L&R^lg%T~S<)@&*SbR}vHrpZtD)!hUqYK9x?W zsFrz7nCwQ;K^Ik;oSu<>kdePQRmgdnCPR2Th9$=Z3~ByiP@tjTq5UmC020*xft^Fw zMkWY!syI3~rnUX)8SG=k9ZGVSqTJ{a9w(3;FeK{qM`MyTw^Z%kebrO;D1`s!+Vo0W zo%UP+Xg`ExPhymkO&)F5LNEzkl#<>Sot4-Zz6whA!bR$(eC!yyKcwwat*fgNX-|e4 zxYxVTeF}-GHrriBN4mG8Tz`LTG-!3llnY1iShi65@02gU>LsE@b@^^^Sc$GVdKPjGongAQ;J5 zzqPLIE;>|{On)#M=7{_AFhCMZ7HIt#U#Ee&(SArG&h(^(CKp?P~5uNTfn0g_vUExY+Sm zlRVCfWhwFkb#j|SIklB>v4S@ApV(KnS&zcpBU;0Y`a0M;j$lMW!*BOocai)d0-BHaKiL?HneN$bhZb= zAMgA&RQQXPR(p?EfcbbPa6-2XI9On!?RBJdut5KZKk>jRw+ifJ)DHEC1YrAcJ*5lR zb43CbCP4&FsCYST1}`&jXt%h|mEz(L!?%=%$|mgK7niCkSod#{q3Sc?FFa2{xZoop znu(Isiw56WhL{3pHpMOuBcO~3)F@R_%Rf_CcaiObxR8SP>@HQ4HvaA~k+y%-4J33N z^`nRArN%F+F@_t_#@tLmnZQUM0p~$fsjZ_X=a!AytixADyfF{gh^<{{%vMb6$Y1$n ziQ&W+&8PO$TC^v5`n-Ftegjc*^QEbp?Jo2Mi@S)v`8jssv<1ap4TmzLsid!!Q9Etn z*eQ?I*cR@u=3Y5iyVY#3xebp0TG6J9$(0@=Z7-8%Rk-L1`fWcKF!X0-^R6)MS*@^$ z=HGFR>v`V5mo$QXJ-z>bdNk7*cM4>{Vk~>^Ce2h!qo6@A&7RS`qf zOj*8pIzUHTGmxep@+L&eZP+%fl;NUtBckSZn8jW#$?J5MdY{ohw##=;Y+zX<`vS+o zvp`n;>i*>Og>9>l%PR6KB>dS&+ygKq=)|xAZI%M340ccY(iXPdmZjp07$S`LG|->O z!(ROS-O%i~l3{^NFjJ{zh$4qnytXir3SUtN1v|u`;ZH6v|1fSz{r-(^ttgABdtVNH zWu#-H@0TXz>J?Vw$w~f}OK#7Uih!=_>tL7dH(&4j+CFQQd${&#@|->q9oN(SzbTnu zXkma_ezuh%uJ%ZF+S`eCF7-32cR3yF@|F7OCylxH=>gJ>M3aY$yvJhIwB=KNTM~I; zcPPXlm3ms6hvskv#D+&&mfC=(2i668V_%w^aWMYw2lQ?AQF}WcKKso!Q-~XOtDE3^ z*UA5-o@|d_Yn;4S>xPKfH&31?_&KXoPe@1u6TjnzVIxk%H?qU@#gd_|3~C8`-QIYg z84kxTBlzROvN|+|E*a?0`5pYsM;RM4pE5Gt_8{PAX&UIhKsY=_KjdMO-=8An{!4G2 z(**%%?zEA}B9%eakZ;pIm6QdK^E?Q!L~o&MrYjS4ZHR5mY#wbI+WKh#QIzAmw7df{2=h?~r}qZ)YXOzL1|FJ63E44Rea5+h9Si3yL6)@UfH zUnLft=9iO35M?mTPOd=6EjO(d6(-HPo}Ve+4Ov+&WTQfWrnhn3ldb!oGo_V$g-%RTKh+Bf-` zv{3Ubz3ir9Y^HZ8hD0`|_@jvEH3I9ZqTwI-D0nEPYdr3$>_=k5lKoEO!vHJ*5c^AK zvbu0#^s;2uY)&3?DJ)G{U8NwI9oqPP=XbfEVKOf{20w(wDV|q#I5qGy_Zw{)0%iOq z^z(Lz;bQA}Ux)$2_$Is>o3<#+TsdST$)KM@qq6$QvEAcOm3bEa@SH=*a0Vm+BRY(a zDRc8hEZC@e&bZk>UJ{E81B*^>gqXsTDltNH(nt1M&>oXHcZ?^>#ae}y<dk(8Ejs zrmFEKA)Mz~9;Ob{dBLQ+6@o~~{u+ewFVBzRazwy|ix>Ur8gP0iTPa;J9%Ms2@yeZE z(>bm!RnZ<8X*k!~!Xc{b?@k%T$ zq118au9l0^O?5G7+mPros$ah{-xXsCU@J-LGCln_0vAcJKykk~HV9*&(IqWfbOK9< zrkkJE;^xdU-+ZGev8bz}vy^zgwy9w1wo_C96-D!q4Fhya%R(V6IEqpc5WQ8qLB7QP z3jnAG6Zp*vZ)AtfG497VV2?yXZ|~ddLx*bcq4c;E4ny_aD;lMLee=s09%Ny36e2ns z;POqoNhe0k@%X_NXrRS*)`i)ocl_yfblmhNKeV{sKj@K6#XJ71cKC~Ex0DSw_?gcDz^6UCJr8} ze7g$Oo#+QS%9W<^RATu+GnJI!A{0w4@@wMo*FTR%5LYvP8E|^AyfsadMWTiKa`kHo zuvI=Ok3T~S3N-A-kqu5Xi$-U0KZDE(D+=!o9C2x5Y>uG=3Oe;L?QH=qp8fY@S;>Nk zqS&Ur<7bpqS)22x6LNEgU{oxoIK2`jEcTyBWNJaOf9?25#PV;)FjFyEc!E#%9dlO` z?(?ZszI!5a*!%^l6_xLc!|5`tiMTOGM*afD$%s#ao1V+fnuChz^AiW2?p4eY5x8Qo zVnh9K7vCn$VgBr+f=->KU6N67QbseZ4H-sdqP|)i)eL!&BD@kK*WZ*Sz_h-A1-DS0^`Lg~=VkE8}l3Rn8AewQw;u|Z4;sgMLw zNx9Yq?VG@4+fb_^syC2N|dC|VTQM$faViP`r>#!6F#?r@pad&q%^E37J z!HVaNZ*w#B?2{;YJrYbL()qG7X%gdwPcf@Y*17e&bakm3wwB_Wb)Sr){1<;;I#eOZ ziBHHVw8;$_Ji3I;LC@CPupbPywoBZuHu9=#_WV}fn8)2XKlaCg*2}M5S;jY4Pg~xC zXE);G1xa9Z9JyWzT9E%{g^p_3aOm>#YFy!9R_`(oJ?YVt97s6J4_D$FQ2eK-WyTbd z%ggUxA`j#O&fS{Yt^2?d9{WIx|rB%v`!G)EU5o^2nnN5VTz z;$Et0kLsxDJp@KhONZ*Bqc`|U4nGp|=Ceh-?H0auV0=Nj3iSI9Uq1S4;Z8ovTm zFcb1_J~Pn2dEUB88Wc#Lz731j-5)E_lx(Sv_p?3Kyq3BMu1YB{t? zlb54Db9W}=uq3nFwIXYyf8j}_v<$Ibw)7C0#=Xq^87q=KMq#&VcSmh0#E?_qBxGP{ zVyb+06ICyDOcYtKG0Zn_2uw2v=M}@v!A9b`qYh6i|AwKypEej)|3z7u8Rd%+7fmAP zdIXv+!?4HZ_1@#? z$`J!1CETJuJ@tK;l~jf+I zm&lVuDq(m?STVq3Jl0eIvCj12$V}o~Ns1(Z{Jn;oCxQ#+K(481I?!)=TJrcyG&|bb z3oK!3*tA@8)gY0u`4>c$Zj>=MZ6f^WTb$|3477s5d|s4xs#kuc+Cy(57>CWPpG2_7 z9Tr_&!TAnruqjqz2_qr=2C#Hgtim)2G>5gDeRB!J#VA@OeQm#S+TfQr44@+z1~!Q|LpO;PUg(`nf=<1sm_Bbnue{J;UzJ`Jq7OP| zM)pL5E31tg0R?N0l$>`#<9Ndz0gpR5h5&3rrIWiveE#nyZ7&L;tqtp=9B!A>aGM0~Bg(f$ecw;A0Z zVMCwkCgroM1qaYxs$j{-gZha+KBzrkpNvD_1q*wyq|S_>e4Xpi=fTf?kDm*&VU^oo zIqxZMq0(t>Uxh_x0hrP-11s$IxnPX>A(6%|AFTQ3eB{BA$S)#&C|1~p8#Wc|w zHs;t(+ctbR4y3nTll9r|vdm@n(V%Vnw69Y_VqBBVoyGy9){kOUhzr`TSk;Lkv>G0n zBp6R&4gr2CM$R>kP#@BGKRU?S8!L-6FuCD+6eRnpnwL0snV`u5 zuYZqx`nE2u@ObMenEBgg>yAF>cQ%R3bf^815-triXrh`dSp>lT;40q?JJz#X|4uYe z#VRVx@_4P<8R}K&U$I1L1%oD>a)$v^V!K+YTM@-e;Oq526Af|e-6n-)!*AbSo4h8^ zRgc0fO*uSBd++&pkIkZ)QNsG#A0Hg|y?ZTn=Sy(mLffgrhy=6lIOw^A_3xJ#pp3qk zj1{4J^hLX??+YNnT+@1YWn0eaLgmyLwFLiFxL(2iJoDWSA$6&zoOXt=u-HthNcFF+ zF(LTaS}iZ;mnyjPsOFMu#->mrC39mLDXa@Sut@DdrzZUVv`_4Gw~Qx?CsG1N(`c7)i0~ph$o>Hr z9>H-)^f=JVs2SryKk+v`ijhfH!s->nu@qoh#jC#%e(e-I+C=lf)$1Q6mnyN~=2zrS z8?j*v;%XOa+aH0_TIPLPt}niY{fjjn$P^ZmK17wWHletf_A3kZ{x;?#7cG7Zt<|^k z*7)Uhv-qxBd24r53`Jo;uP>*eAqytu;709nfDSynx!!UvGfO^kTnG3Lsg;*Gg2a-~ zMn@~3sffmz6Owzy0^~YGrrYt$8-Y~$JgJfU@icKb_5=QC-57lH{7q+fBU%IWT=psFN=??B0@Y5#3j2XrGH;!)mlqf+K z-qh`rSud>Qx_6KNVeym!uG*?e0d@q@pixeN$%YxT4F_HAq#iBX?Orpnz%yTF)&KCh zZY{(!peg{N!SVe?=+OE;^_`okhLQ!JX&i`zi$cNu0kY5JcrBe42OyR>_XmFkhP)H4 zq{wm`2+chKP@6mgkt2PhAil|R|H!>g>RY1?6eYHrnL!okV4&l`)%%XFVCHbmpKd;wDvK;=*DU z=^KiHg}n&cqc2i(GtRZiTX?8=fQhWab`uv0QQi`EsLhrFIg0a7LFE5x9^_PE6WN?f z3iy{uLTLD8%qED7(4$3f&13lf;$kB`pp!xN8C{kJ9+g#kKZ*nio}wLy;rpLf;PL@j zOvbPp(1m)!v>C80!)k^fsymtvV(jL{CoMrgvfd30ILxwBIqhRvas5u7dxkd|LxV|% zZB9nm3lWdb?wF4>`I-pONyoTSt6e{jA}oXRsM4CmE(>_)_a!VWv|gfR7zE;b2FJX0 zP>5KrwEpZs)&&&(S#%yp0f?!9S*O6JSHgn$YaAl_ZEy_<%rzcMfVh7Rxx#0`U2k-m z-ncT%wMzOY2axVK_xQt)g5{4yzwzYW)4Fh>yP`?o|F2HQ`8?h0@_{Uwh?7%-!zgjd z$)6=roSQ8rnjvrHW}Bx8ElsRgCP$JUba8TPs83k?AB_t$hNYe_YMR8@`B{V0KfCzU*9f!N6@ktsGx@&4d71ioQi%<{U9vgD_)s;oc)gi|2x!HzD`K>!KE}n zI7*>7unkD>ZR}HOJcnn88GW<9fnbhnN5cmlLl9K>(F1{jPG|ROu#n_3I-F!DNJQP}eejZ2 z?779K1DoWx#HBzgnengV!t=m^bK!bz*(K$k3QMoDA824UUbV(i1rBH8RkDWdx7{*a zB)uuI;**B8%!U0U=IVKK?~f#SRrzIO{@7M0qxD9kHM=dPskETlSBU;!^|X;j8#Oiv zQTL(=ckIVv!30XGKS>Yz(%wINKx$wy;eTr=t+eY(Ru-^aO+A R!&L$dRV58bje=SD{{cQO-vs~w literal 0 HcmV?d00001 diff --git a/resources/ios/icon/icon-small.png b/resources/ios/icon/icon-small.png new file mode 100644 index 0000000000000000000000000000000000000000..de3146dc7f5b63c155829d75ae9d8676c79a9621 GIT binary patch literal 818 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 JPDHLkV1jm)Mgaf- literal 0 HcmV?d00001 diff --git a/resources/ios/icon/icon-small@3x.png b/resources/ios/icon/icon-small@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..0efa99d8626ebc43f4bcc9ac6f1f188bfe5cb133 GIT binary patch literal 3856 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%0A#XkDo?_vI; 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 r|77bQyZ_17KX(6=mmXf7J7|b9kJ6TF&-%4-7 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 literal 0 HcmV?d00001 diff --git a/resources/ios/splash/Default-736h.png b/resources/ios/splash/Default-736h.png new file mode 100644 index 0000000000000000000000000000000000000000..71b16ca4d0873fe69cce7b353f785e03363a7861 GIT binary patch literal 45098 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

pb@@aqU5 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­iWj2lT!2`T;{4j4o0w@{ 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 O=eE6D3pe}y{{H|s`#k^v literal 0 HcmV?d00001 diff --git a/resources/ios/splash/Default-Landscape~ipad.png b/resources/ios/splash/Default-Landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..6fe8925527e001c9a4efb8567d38209765cf4aaa GIT binary patch literal 22655 zcmXVXc_5VE_y2ijv4@a-nbM*XlCo4xB^03z$udQyQjs<5Bb63eN|D06QB?MX77W?S zE=Ae*ec#RU{GPs_-~98;+~?kN&wZV9&pG$pGY`y74cG8V^8vt`BS!is07&>(BJdFL z$79C2P}?4_k;CX>0cvbws;dgG= z-~{tmAG7=qtDu3EQO!!NWG9xcPEF6uF08fSZu8LHzzoYbtj9J-^d=C=2Ulb?q##S{oxEuabgPD{_j~|o7rW5 zIDYT(8QCK<*z6LPT+a4+$9i4P{?x>dDP$#-uECfNGQCro15;R1Is5q+77hWEjor;+ zy{%$*jbZmcu(E5}aSV3FUzSS}^Ia9Yq?PmZGuz=Mvul)-T*jVV#1@y9gELuAKeN8I zat5ccfk{qv2dBA@Q{BE=(Z-pa$4Xi_QJ>lVX)ND&tXpqavufCAI;;FI=T|@0F@m)X zF>5+Gf$6NG-<*L-tZM{^l(o3bOs{4yt>Cg-8Joj=-ZHvsQn1&n~av(=pjBCWp;lURs`=n`f>v-TJwY0i5Sx?7KMjPq!khW$%&Cw)-Zwg&jC4u3t2D zIKgK5;4^JKB2k#me~I?ry0Tk3m!h6o_Yn#=^mynE)UhJl`sC6nrNnFdDsu2y0EGAa z^>f~G_TNr|KT;mTJpaCoDt!3&P~(LBd(b(Sh2sCdtYVV?wi;TDWrwroqhETLe=2-5 zB!DS|rLVY1Tou_hHCfz0Xgpao@NJ@n#hQ!8{FYso&R#F-=NNm|ygFao5i%FpU(w!C zvAwR=KH#DMoeJG2-)yDlykCD`dQ~~MiMjWCCi_p9Tk+HGqpv)dil4FUvBiYhi-RL) zJ)%#v*B;wCbN0mfK}>iiznD`|!oL2nocyO_sB2e|%9%;lnPQQm;?9%{CSL2q{T)3% zfC=KR=g2!bIo0*!D@pa18Z&iu8n9r9BhZ=W z=2cAhy|%hN-fQRaKpq{{o!l4|vpGI-t}n|H(A7$7sw$-Zm9%j*Enneodmo>|oBBC_ z-1bOKtH51tIlnz*ki?4XeG#DU2#L|sk(!@ng1fMUc6r1xgmGpGI|M-cQ+fH} zIgN?SiV=S$ivm;<*5I z|Mo1wqKzs6U%4SLY&udp_#-aZLoos8w!CSXRY7C5I2ZVW38>~g_K%*E+0$2(@>3QPc$Xb@RcNS}B$g!V z&4%XDz`O}rzAN=N_AvI&V-&_SqWKWJGtYBd)=K^Y@#`VBgSZPDtYWlU_k@%4)sB^@ z5O9!&NuGcnWp6Lo0i(m0j?T{fK&Y4yK}+vOuiofyRjx*xiy#00;6ku6daBtjFu!~A zgWw%P|2KG%7Y&QFwVkf~MKcS2*_&ETL^%qiVL{-RJ?yI4t&k+5-FljU>y0vF<+&c` zUiAU9a@oq`Lqv2&k2EX`{97N0An4EIN48q+#g~^xo)=;amHZ0Ogk?@5Dx;f^)6+BM zn~(;%K#fW=d^A+QvKO>4(KyC+#2kwak%m*sg?ay*RRnzdV;=CpR~_xyBoFR?GRP&W zMM=b8fa%+@7o50ZA^am658gi_zZq_ThWPLxhkz^Gz{clwC!o4zgBSF`Jn2bq@IQh$ ze*n+&P6tB6w46@}z6AOuIQ1s#89u>|*qE$GRXHoagot=0T$N#fNqfR$%+hYJ)VX&;9Gg%?S7zdm2RE* zLVyJ!gHWuIx8`TbeHC5+O3t^aM%>Iq53|Gdqq%U? z``AWc0m~>+rrr$}fnfxi7>T$Iuy5eajS15Sx)9tC+bX>pDBR7C4YcEhc_O?GOu0zG ztuy*6aV>(HLTYeMD6UCbzVnfHd0?IkBBzrQIoaYaosKHL1lUiYGE1e{fv?1TDpLC* z@gBU;SY_(U*`gCPbaXJ01gm6p-X<8|ZxobE{sBDs9V+I|Jp-hcE?#vc$Pe_Z>J2C+ctGszUqE>BYY#1j3cD zlgIy|V6)*xT$2Y5i;>(Vd^W1@U&E)k0fN!5YZk)KFj&n2I0O>ty}BJ0SnIm>h?)Z< zI(YBopk0gD`5pA#6GFl;EQ0cBtzt3c+{*JBpDzMX*>dMu;ifbPb-iu2nm9A_k-Kob z==+;Txxmpz?BBMQe$2fIveto-(D6pB^2mQ4w_3Me!y%xKKIvhZxf8IxTQ(BlECE%@ z`VZqqM!AkdmK=<}xzVgglGGN3R(XiJrO$TQLDj;4Y=EdU4OrKzHF`-AvW`JjYZ6v` z4I#)NXgYyfajqJd8R~$)vc+GWV-^1~rGHK(L7o6yc7Mp}+Cy#-c?OI;g!1@sz7;Mo zCv7EsB$4W)^l%1y<4Lw$!DXAOcwijsXs~AFui}i-`Lh1w;23s|D&Qb(!#BH(2&D{H zQJ}7)IHzzTLjv2k&SqqS^Bc}H zCmP;4#220%h-2zf%!o zk6o|-A4MMY9#c8e^ZTH3<`McOP+K;L}2(52#zoU99KwQdA-Z}G~*>)oR95(f? zQ$XL{=Z%zbVVXR5NbwhT&soERE&i`Ep6MccQf~Xu?8^;g?wFj?Q zbcqf=X9qlN^W>xYVnTZfnl4-}U!V}74~j};%Xg9+)^AifvzJUSxGGV51MaALWU4rVJEFYxfrZ7R0SBe8trPGgw(#Lv_dei#GHt9M6Fn~l?>uq z4;BL{_XWd}oP?m6qwp76kt`IViQT#z1wD6cA-vTO(^OFXr>72@4C$nOO}#sxR}*L< z_D!jl9vfqx*?TuXB2b)jy$vi5t{!vMj~4C@1*b5Z>lsrf3||Fpd=9Ot7n}^?rfdBs zxbC0J5nWS@494FQj{o+M-}pQ7>0ey{`3?n|QG zaeqFS&~tt7Eib6a{%}=K+-B3}#-)Edquy532-}WM5MIfle%oLCGm)gSAEu;adh$UyX#!i&o?u^RCkPQk0H6o z2#?fAS=9+qcVMTHEG?vS_dFIYxEUD>;Lfr|$w(IQQO4|bMh_#gnwaIs?kl7^BhIhL z%3SEW#m|4M54gS3kLITPv%=Q|u~VwoSm!-;BV>8Wy8p^24#muBBN1^P#RKjulo!ub zwlX$A>d^W3#qxgrPLIIl`|6gC&W#|7>hNoEgU%c8jn+Him-eM0gdT?Nn!@Wg>aE*ZhSB*kAMeIQ4-v=08F7RD2trx zFP)?Qt6>K2SY75dL9Kjdn^^^%`yEDs!?r)#rek<#6j9SSsJL;Z_bHB zXsLyHv}xNTaDsS|MwaR_}R0$Oo3J#UeJVA}B=lUZ1pIIH}25_o-MLGt5{y zVKxv_%t@H?)8q9jUfo{1pn_Z+RZ?LOzb38uK75zPXFfOoZR*OaCrM#Xx^8V1o{98% zIF~2tvtAlss#WS*%HFv!pQH2hVFwnS;}EJUA8kAes6WF{iLnG7BE#EkN}^1AbPcFK zpVF&4xB~&lkuQ#XG7DU=U+3@jtcB8*=<7lfbtI5Z+BwR<6zCgbDB_E*61sf}BzYdt zFqCWa8ZDNBajsH%`W(^4N1U!Ag`nEE2K{_kT@s)rC$PhEsMzaLguLKUpxGJJZCMTU zCs6An_eco9Hb@~ioQeWQyW{hp3tj6WR=v(HfY6WMWtN8nTy#&uEk<#x@s&v%lc_1x-9&!yzKVsL293&DymJ+#214_>E9(H1Pht8M z4rDO?rNxt~2^#WI9AO6pj6<<8!c{WO*vo=a@pnIL8hzXL4PnUOyI07$kVtpFqnsd; z>IDZ+By!=onyYM4-l@Gr;3oA=t{XCYY&BF*0LI9T58K8%@+Q*{$}7Be19c(&V|c{3 zxVmM(SUPl{=`e~)cY|?eM;BrlTsw*-gjJX$)GvH3$P$7Uo$9aLg8(`mStN5|gcoeY zL(5MO?bh*GpC<~_6&(B8tm@8dm#g{I4Mw$9_KCk1$Jy{@w>XA{`IyS`o>5EKiyiDR zJMthFk8vj!>=pAPed@j?a$8b}+ZSYuK3clpBSFnDmQYtK_a?2C)NDMyr|{@b1SZ(n zPu~3a`+3PQ2XkY^1Zw%YP18*!*Z6cdY{L?PFUfS}`{e-X7hCt@PmJNpjabu*&EhmLkS zSJ~&Z4P;8yoKhuI(=ku{g!bQ>f>Eo=v9~YM2@OgNGBmK&jw-pHk8jE^`|>3wfPYs? z?^nm4{9ry-ycYOo9_Tzay-~@_yI%p*Y1#)>R-K~oaopC?G@JB2c;fWwF){Si>Dt+0 z+t3FmdDVx9yl_vFDur@X``m&eG!1Ui?M}+pl2NYbO9=Iv0QcaqpYF~Yp)HlXB1e0N z9UJggZ~7;Q$nM!>(a!Dtb{&I{`UNg={|gZ%4SxRKOuw?I;wo^aUJ$LJc7EYZg>F9j zA|n4akB4-h$qhh52hyM{TTNnTTruBtZvFb3^EP$7XjbD{Xc&I`(`bGFv6ZUdOJjBu z|6poE8cMo44R+enq|84sUB)WHYe54)1tG(MA~aTHgontsBQoG5f&0+dZ)Mkq#M`+e zHr|Z#mx0F%dJ6C)S(1^lYpa(Y5+ejs)lJ|hPcRD)Rw-KRq#7xdXiTIyYsjFSEr|Bo zoF5%g<&A9!J?O%5FcJB3pgvc0I!WL2Of(5!?;o(aB7&wvD@iS957MAQ_1%40#U>}- zV|&)h))oJshSxK3QB@h1TYxOt{p}(9A>97tnCu>LJK9;tRH0tDCVU z{-XVs!`KHeEIqybr~>2CB~L?#15X~69!2y*9EQs7HW}ZTVg|ZN#6MYV&~fmsj57*Z z;hg@lUU_lU;qtsOLc6-Dp&{0>!sgHAT@lJw7I{SK-XQ#ZBYKo|PkYm* zJmd3%clmCRscUJ9Ftw%;+lL-eL?hQs1QLO&D!c2Cp2gp$iLF#GGHgzM3{`8*SeLnP zn@By#N2ppQ{s`)DTmFN_eU`Z*dg~r;a59a~LWGnAr&%=Uipp3U7x38kbOO(ha1E~e z&Fz=T(~l5%E#kc$Ua8HbDDYYsXZ%o<84KitZ#I-?+x7F33LXr+>4ADw`7+Qx2Dn#?_BleZIclFfhz~U-) z80Z@+_c8QhB$08~CM1g=H}~%1u$a2zyQuq*i9@i}k>I3mRFwP`m~h=fc?FDqB#gjp_gw zate}j{VOel*Q%reJr~EEuko9_ko?NWX$b!Gg$TEkf$BZVyiVPEMwbgU?=FJSZ0Y;e znZnrtC2|{8Y24kj@4CaG+ah_X`hfO1HV>4xFpCuqxyucaH}uuVSvZEMdLPsgLc42- z?SeKt+3tAw_Pvk$ymm$G^T3Te-JX0u?0rCo8`eK|-CxkJn1G<>3?fu)9n9_1g%&|n z5G@p`s=|(Fl}G~AD}_40#qg8!rb;$^8!}S#032q5+K-)6=frU9X;$UK%qOaykU-T1 z;)m5wJBs2$aKZESG4A}#VoGT{>i-D1o11EZc!>P;@Hi%x!;X+#ActBi9Q zT>n6X{R%s(4^z~w^)Bz|=7&J{omF=<2yo};$^?ICzW~Gfy!%y?Q%9w>_1s_T{k7Iy zzaRuX^Nm~;yyX%Q5Se=8r3n9K@*fG<####$BRu(>YAd)}T6FEQX?9gdlv0%P8XH7d zY`~ND=Xe)1nC6a^w2kvK?#Pm_8}~|=pRh%`ZxYCG80;ZxF%y|4TUtUvbHS``o)@i3pKIGlyX8@=iD-0VXzcMU|q`|#*GD77rWbI;>^=mmW# zOHzf>1LFk}>U!5070ffORM>*UW5A&gR*iQtF3cN|8MkMiRnV%SSCUx^bA0HpQ0}d!n*mI-& z+64F{I3Hj*+fsMWISgc_m0*~#OvJ609HcInuSJXUNCCCNQkTByU+LyX={9SC=Y$yu z^Wk4=J}AO%*|Qyao8BeAUPY##OBBdMOvEaJy4;olT3P^5-|nnlx0^~dGzIf>a$pOA zcz~5jgj20TsQdkGG#kE)tuMxj;BfaP;7}3aU{D)$n*`kWamqWYHX~B;@ruS`=5Dzj zbvU}IVI355yrdwt$`kITZI7JYZ&+Y*D6C~1cSK}xM_7pYU+e%+{>TO>kmid5vSSN-E9aZYKQ%6dI2)MTWI#7At_|v%PK*Xa>M89=HxbnmJu~* z!}%(i+^>E7LXjMlUT%97A1ec)zQbD{`mMckD9msiWF-m^I1O?T|J))gcjeUK#o{Gc z+_0d5mx9=B{*5%WVQXOg_*X!`R(wJ=w`7=!IjX|8Sp%R(WN?)4s`r|d`ekr2lr
mg9ETuQ^`) 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 TF0UNzIRLkno=z2x%)|c&{KBF< literal 0 HcmV?d00001 diff --git a/resources/ios/splash/Default-Portrait@2x~ipad.png b/resources/ios/splash/Default-Portrait@2x~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..3d06d86d8585bbb12fe02c68bacfc1927ffc6287 GIT binary patch literal 99461 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%0ApXA> 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%0Dd87#jsQm)JWw}c-6N1B7#08gM-E7i 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 literal 0 HcmV?d00001 diff --git a/resources/ios/splash/Default-Portrait~ipad.png b/resources/ios/splash/Default-Portrait~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..53ad4c4c9ef6c43c9dc455ed4ad03e4d41b5c88f GIT binary patch literal 22692 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 literal 0 HcmV?d00001 diff --git a/resources/ios/splash/Default@2x~iphone.png b/resources/ios/splash/Default@2x~iphone.png new file mode 100644 index 0000000000000000000000000000000000000000..6a133168439fa147727fc478686aa606c4ecb4f0 GIT binary patch literal 18852 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 literal 0 HcmV?d00001 diff --git a/resources/splash.png b/resources/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..cbddba06ab1b118a755a2396bfeed32945ef925a GIT binary patch literal 62210 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 Uc5QB(90>dv>znEo=sHLL1Nm!VxBvhE literal 0 HcmV?d00001 diff --git a/scss/ionic.app.scss b/scss/ionic.app.scss new file mode 100644 index 0000000..9eb2f78 --- /dev/null +++ b/scss/ionic.app.scss @@ -0,0 +1,23 @@ +/* +To customize the look and feel of Ionic, you can override the variables +in ionic's _variables.scss file. + +For example, you might change some of the default colors: + +$light: #fff !default; +$stable: #f8f8f8 !default; +$positive: #387ef5 !default; +$calm: #11c1f3 !default; +$balanced: #33cd5f !default; +$energized: #ffc900 !default; +$assertive: #ef473a !default; +$royal: #886aea !default; +$dark: #444 !default; +*/ + +// The path for our ionicons font files, relative to the built CSS in www/css +$ionicons-font-path: "../lib/ionic/fonts" !default; + +// Include all of Ionic +@import "www/lib/ionic/scss/ionic"; + diff --git a/www/css/style.css b/www/css/style.css new file mode 100644 index 0000000..ff2075d --- /dev/null +++ b/www/css/style.css @@ -0,0 +1,22 @@ +/* Empty. Add your own CSS if you like */ +.o-imgMenu{ + width: 25px!important; + height: 25px!important; +} +.o-imgTitle{ + width: 40px!important; + height: 40px!important; +} +.o-bold{ + font-weight: bold!important; +} +.o-float-right{ + float: right; +} +.o-text-right{ + text-align: right; +} +.o-mini-text{ + font-size: 12px; + display: inline-block; +} diff --git a/www/img/asking.png b/www/img/asking.png new file mode 100644 index 0000000000000000000000000000000000000000..4a034806e9695c64bd7a3f22fbcba36e82968c52 GIT binary patch literal 15393 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 literal 0 HcmV?d00001 diff --git a/www/img/avatars/anteater.png b/www/img/avatars/anteater.png new file mode 100644 index 0000000000000000000000000000000000000000..798416ae1f604200d314bbdea335003b8128b9c1 GIT binary patch literal 8310 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 g|L0(}N>fD+N41Td<9ize$pxR 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 literal 0 HcmV?d00001 diff --git a/www/img/avatars/bulldog.png b/www/img/avatars/bulldog.png new file mode 100644 index 0000000000000000000000000000000000000000..a40bf36bb3d6a870b8c9d927c2795ab416a81389 GIT binary patch literal 17427 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 literal 0 HcmV?d00001 diff --git a/www/img/avatars/camel.png b/www/img/avatars/camel.png new file mode 100644 index 0000000000000000000000000000000000000000..dedf394094cc58903d0a7d338f75784708762c98 GIT binary patch literal 13264 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

JISy?IfVOrus zJ@F2V@5h8Qwi?rGpl6GcR^cnc_7F$y`-lX zvP;OGQ+vSQ$-fcG)VlmtzBO_5hIDz4iaMN0n;RdIgBdn6SvJ%b=@uR>uIL@W+ zOC+YY`?BKMJjs-GCuTU#??i`_pJ=Z6xN}sT#AtuPm6ur~jRl;(^f2iBaEds>t(u~B zTaK^b#2W|P(y`1Kyw+U21u4TO2EWnA$Bo2aP)lelID=K#suZdD)*1_v-~g~7JwK~8auAD)MBJzi@LIT7eWQ8igo`KttTC~%3C zvd01F{CdODu7(7CALz{jYmHYPt%NL|_+pjT_<5qI;CbBUnn#g84jfpl&g#0>{b$D} z#FTi(k5@o#05f1gz1YR?#r@i~Hj5EF(bDaW08qPnez8w_u>i%*j1F0^F`OQe-6>I^ zA#o}R>h*imc9NiD)6#<#3E()JQuK%Cn#hUHQkG-rAwPHoTgW4TnYz7t!h_`i|Hz%Z z#3wK^G6u+kCoOVQp0QPonvz~KY8j^B|1rHR6!PBZB%7O;&2W;3*CMwXC` zB`*g!Ubni?4$65=st6NA53562O9*)FD<;ru)2k3@{SU11t9&AJILl`<9n9Ar z=xvOa$!uo_!(a~fv)TFOsYBL-?jWaDT)marW!80{xIG+BXO?AB zX#m`h-hS@Zqf%f4Y0|m|?{^U`0OQ>@`e9il+O0qHIw}AT$1QfPs`N%g;b$6>SSl}p za@ou}pV_ga=S$AxK>U=3@QirJUa#ldVYX&txT zb;rkcS+FggO|0OvmbF0bzw`3p&ZmgxeOD+Qw#*{ild_qKYZY`DpyVS~-}$7dd0Os} zY9j4*54KV?C;o42V{+qO6$;rmZGY?-sVAKCl9m6#`zio~uK!B`3w+t3w`2#k;n4N} vSs;r+FU24;&>r!BrGP)M1-;n=#EUexqjwG39t`WxAIOXi&g)m7a)|sNu2cGf literal 0 HcmV?d00001 diff --git a/www/img/avatars/cat.png b/www/img/avatars/cat.png new file mode 100644 index 0000000000000000000000000000000000000000..2da894e63afa7c319f810dc1b62f2482ab8b671e GIT binary patch literal 17717 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 literal 0 HcmV?d00001 diff --git a/www/img/avatars/chameleon.png b/www/img/avatars/chameleon.png new file mode 100644 index 0000000000000000000000000000000000000000..91f30f6e67be1cc47a3e4e171be91719244e4b22 GIT binary patch literal 14981 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 literal 0 HcmV?d00001 diff --git a/www/img/avatars/clown-fish.png b/www/img/avatars/clown-fish.png new file mode 100644 index 0000000000000000000000000000000000000000..2473fcc8116c2c4f963a9d797b1a15de3009d7d2 GIT binary patch literal 21350 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

?CfoD>?RaMOLrjm}-fEy>N-Eym551CRex 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

`Lp-nnV{&~|hU{02Q6cKg6(_%s0R#xH$ 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 F@jp$sRF41v literal 0 HcmV?d00001 diff --git a/www/img/avatars/duck.png b/www/img/avatars/duck.png new file mode 100644 index 0000000000000000000000000000000000000000..2c48212a6eb1435f99281236b89f74b4aef5abcf GIT binary patch literal 9866 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 JbH*m*{{Xy^C#3)Y literal 0 HcmV?d00001 diff --git a/www/img/avatars/frog.png b/www/img/avatars/frog.png new file mode 100644 index 0000000000000000000000000000000000000000..c41de7c8969b9008ce7e202062cb860d3a8158a8 GIT binary patch literal 15772 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 Q5cmhXt$VBV=DlbC4=^h5VE_OC literal 0 HcmV?d00001 diff --git a/www/img/avatars/hen.png b/www/img/avatars/hen.png new file mode 100644 index 0000000000000000000000000000000000000000..7bd5bbf8b26b6dc343635db1b32ccf39248b4c7c GIT binary patch literal 12211 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 GZ~iZdtL$h1 literal 0 HcmV?d00001 diff --git a/www/img/avatars/hippopotamus.png b/www/img/avatars/hippopotamus.png new file mode 100644 index 0000000000000000000000000000000000000000..b8987cf1963152d7d5f71c69ff1062a749a0bc73 GIT binary patch literal 10816 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 KXLHV2hy5>vodm}K literal 0 HcmV?d00001 diff --git a/www/img/avatars/kangaroo.png b/www/img/avatars/kangaroo.png new file mode 100644 index 0000000000000000000000000000000000000000..c73debfdddaaf81dec3c89dbfc0b43f5ab2ea1c9 GIT binary patch literal 11455 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�N?7@)AlFJh`kD^qV`6p+NY9iJ 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 literal 0 HcmV?d00001 diff --git a/www/img/avatars/lion.png b/www/img/avatars/lion.png new file mode 100644 index 0000000000000000000000000000000000000000..3865da6cc22f20bffe24791179ebc40471ec0f23 GIT binary patch literal 16996 zcmbVzc|6qbxA-%|*k#`$Bw3O@OWDR&WZ#uFODfBdvNMx?D@CCYq7Ye1k#+19LJ3*N zuCk1MFlK&leed^k?|t3Zy?^|?Ud(uw^PF>@^PJ~wPlBoOB}TgAbN~QGeLWp>0N~J9 zIG~||KDL4e_n{9;e=U7W8t5mC#w{NDpVn9Jia!9Xtw+DGyju%WP$SPBUE4brsOxtE zuibVBfq{WiH+?+)U9b7NOQCLiWUZXx=u~=KCg0QJjg4jQ;gYeXSz# zA}w28U1{BG<8U&;et30Tby)7Z#o~D2@cFyH$>J|b0zmM!Q%RccX}`4EOM@JYx)$qA zOJ_(T`-x^QuWbc~;`!DKMx?b|;s{sW;!nH8a*I+Wn&>bMTs+5izuk2v!mqUUVs^(A zrSY^jU>?kqmRRMiNK9#Ge{TKkH1JFXnAq4Fh;8Lt8|#Jqt>Gd62ml5 z_Z?bd+6&Kl?~byix_Yg9$wJkNb%FWELg|q(fGfgknArs@m* zdBU}3_{xo-U03EHS{0I+ZweOs>A7nmeHb}2IhAV`AX#O1_dsn>cytMLBDwuCSuk34#!k8&S>G+&auH?xh`XlJ)5TX3h&As=X{6hRb)2J&13X zxd@S%O-sJza{3-c%KrI~Oy(|n3jjvgiHq@M{B?CgJF8htl>rPq9MM$obPd;FJ%fKr zT>1`2Uq1_tv!y40aXG08&pmKdZOeq%D5g&6V;4wZo`&7;;k1$Kguv4sBlEsMxu25B zD>$4{=)8ac*nw&CD`h=BL2xlMu#S6|9SGuD(COUTVuH?c!R8n^pgc@RAG?OZT)?IR z1i+C2s@_`I7_YzT308BZ>?{VL2*``gBk3)+~st<8}mt#kB23)sAU z2nFLf^!(DBOCpX~mDU+6NTiEen^Or1pE>bmolti`9Qw*S2isZP&Ak`LpcNga(I0HP z=I98m>Sj4`AUJ^6usZ8(jtFxvs*Q#IpTtX_6p?ufZ`yhzWuCa|S8VLHO-bw7S+ z_7l9xwGGPZN<(4-G&UWNPSR)V|FRen{zQgN?qLHSB`9Q=i3x~(hFXP~Atp#%V+%HX zjQK!X`y`vYJ0Ir}FVS)MBH@PQB(q6ksE)f|lk!tISmGrqC8`-d#7ws4PSxnZ!*fQ& zEt7?W9PV%hCZw_hWD34QEW+(JW#mb;zN`C5BK=#tFcC*C4@i#CvEZu5%g+OzVA^!^l9c1%AV`BK;4VZ7ZxC?4 zWu!uny;iS7Z3bzvAbDbU(h0*zWdANj!;%iIOb^FPae%35Z7#I^GDnRaXR6GTo!A`teeof?;N2y99lvMq})BlW7GZC;HdpE3*r55|~eRve4yu-DpVesW<88AsSi zTnSE@%Q*T&0||vCEe@WLgv8`pbKQ$J){p#@UgO)xEQ2mH(v}@q25mT;k(<8G!Q-Ek z$WS3nCUdQSJpER{`6gSD0ail{I-YH0;i^piW6$fhRkzILv29MOg&SNN6wDqG z1JMp4w64WwK+SRUd(8&09j3BEMMJMw9}Lkp^F1WwVdkXn37N}J!qIV+LD6s^EK2mG z-e5!@8kBw-d3^?Le5gHj)|HWOc5HT^$&$2TV@23JI4yRDm0>-sUcga5#$zxQg+pD& z?_7=;>GCbY)=IU?|H(99Aoh~*-c!7T*(Oee31WowYlYdY5)|hLvx9e`W9xfs9K(=o zc(jq>>;BFn6)hY+{a>9(iC?;Z`?#7`%b+YS#X4L>vR|$Jk{M{Vv8bfi>FqWaGt}fc z$!JdTWuu0jcYhphNvrHNfED@O9sFil3_g|E3|R+@bl5GVp{@2AJ-n*>?!YSqbw}MU z(;HDX)&+-jeBtkf3051QUn(cxWd%#>#yasYHG3C3U3tIsoeGf-NuTqd7tu+R&5%gR zPm_gP)|^>vC+u}EI`Q^kWLB$tUYBZRsr+Wyk2$>meM;4GCs~vgP6#CBuicH|#I(tY zH0FGoz=ZiJAV8%Ov5$T1&ZK3!Mqdt2Bi--u>#8al=0E$culYirlyMDj<(!3QsXRU4 zNj56flz@5etJ-_f+A0#Q-iKByvod*Q9~Jqp z4$GP5J2|tA46gUHQ66?vz5>LdiWkpzfBAQ$V`3e!2u-GPjvOVzkd<2 zszLeZzL{cHkx;OGr+s5?th{P{z?O|E1TV0=J2~=IHCar|fZ}}kYc4y$U=Z6>7SWyj zharwJCWrM?^s#n+l4yL)g;g0P)L!U0W+ArMH*Ko5c*odwIymknTQ7LLJfyvM_|?Wh zJzVY;>qGVZyLSae%l#>y7XXmJf#G_eg`sk|;ZwVLi)Kzb=wj~tlYuAm?|d|C?INP_ zYMZ{|IR;ph@QQ>Iz^#ZT8LQ^b3ey2*G$B_a;@e6V`i7M}6Pm*7O^5$%=c9%_175ZT z+8nL{yZOFQ^FRKSL)#@B7O>2*qDT7*Z5!qjFh42;h_3)dn|iyHBq#i8bnf?V^3*<+ zW8TK1>cU*9GexaNUSoiPR#in|s6Y&F(Js&YnHnX{oM;O~o5kvoXVi^mxm!Pr zQo7Ei57{=;SK4K3!GMc2K>ZFFF?>PY%iWSI|0n!?9yv)CZ6|(*mG|J)=tuSW6!Kx& z>KVCZ^W5@nrhOgsg$;$wpL|vrNBS@7UUYnU*d6&` zdxf>T+Yn_6Fe7wW!8bnA#-%*Fl=XoIudgaB+_j4$+h%n(F7>&lacP*)gwD6?8KqMm z+o?D0O}VCxt4ly#Im`|*2bh_*=2V(Lcbc00UO1|<{pl;MFV>BErhJ@aFo)JSSNx*y zfl<@9jEaRH5&F&p{#P4p1nc{9Iv()4+FvDx#U25mM{2y`-^;SlDF3__w`IKG-(?)z zTt!*wYRQO>AwxP&I?ays+=11W+yrUzxr2Jp(I|@LR_Xkf9n*JR9Rb8H5T#jzN4J&;Q!V#lj`>lId7 z93Te}IJP%UhteTZg7Yr_CA0r2c^OmT!p}s}%AXWuV@jbu# zy~Z`jA~!UN?~+DY^&LUecok?GA}_fDD3AXdLSQ@t8 zn~NXbQiC6M6K?UX{R+LAKYJ7X;iYTQA|xNPZDhkL?b0!FXTdE_lYKiG?4AR8tZQ(= zJHhuOC1I_<Qn-zEcHfD`pLz@9iK^xh!%Ap=!Iip~Z*7mAIGFxK>h3l9^528Aw zDBYYDsrLW8|6Y2a8n#srIPD_1uqu#UGpj^8Y$7$UhSS%OHO`?#FNBUxIZQH7P zqx&yot3$*0UtupU1fSqUPkD+1tiZIBdDt6Q*r)E~!}UBT`8t*T6%Ehjcj`fI8=cWk zPZ%_wvpsy(%7)tQtut)L zyQ|gBEJ`5$DuszGWp(m ze7Lhv-Rw81u_BG$lZX~L)~G8}@MQ0|SB2BNgIB}v_v>RioWvj!5qU))5YAc(25jx= zzt%?4qf_xBlT%wthpcT6 zeiQx3%x3ed6FbojySN)l7SDaZc4aT;79 z7{%(7%ch@RVI9xN)xDKkwCa)Y;uof29)!!7F2bF+#W5@0Dx-m;Q%e^oopznR#Xr;@ zIDjeMHNAz`ooswSouTA(m#=N@HWLC6P7%q4V|HXZRcgU{kDj!NuiN5^&v$GF#-_4g z4GQ9z?PzWH>bgu0ysnO~$ut*#d?tiC6SES_{QrQdm zqj_DXnD8CilalY!R>f8qE1(PHffSI3n*nR3nsWm@(wzEB)y=YujpV2J5T|y3y@xh^ z)ZD&JU%D@gFM9}Bj@#>T3*MM^vW|{21+DMO)FiwbY=ueRNsb%Do9O9;8kXzvC~;>a z`j`6|I}38y7mIZJPlpq}LjpH|$a80Ioobj+t9$!W-^a;XTA_I=X+390X?(Wm@Uzm( z{?46fo*5^)OtbE+*)XpkuIM3$nYXqJ+Hjbr1o#tW4w6x4gP%_DX|Uk`$fg97eLgK; zqLmdEsW18%*PdozcPV2mr0Q!NB|MUyWCdp<#i5v_LO*{K-nF~_`q@-PRm^u%nD4F8 zN`v!w>YcNQGN09fNV_$B-$?hDY&|hSJp`^Gj{}1re3mZyu}pe0X{EZEB>nnOyL_wV z3b}&Su@a(epJFnsZoZr8AdwZ4O9JHLe4u^^2|T zg^9vViRMVA&GJ<0irwGVi@K38O>s~|Ek%Tk1V=*IyuQzFEdMP{76TZxOD5aWZGO$Z z*TtQ!3N!$1ar9!x3g9MJT!r>qV zx~dB3v1*#f$T|>4()3q{jo$DaCeks9EvC3WeA6g#A|5Rc`9jhT2k3ttcpr8!n}A6? zgECkoOr@xA+(M79aHH8;q6?)E#V5H!=lA;{UkB0*9qgF4u2@HbKPv6vn-{BRn+}VV zPCb5T+36Xqc8=;YAo1C34s-x zeCl#WUfCR)Ut_cNd6t-5-{KS~-)VU=2$%B`<1YPCO@zt}FmJ)}Oz_E8$*o|M6VDnJ z)P6PRhPTL5GBvzsmst-`>T0*91CfqEk$IU@faTnfGf&GNufgA#4lbISbq|(m`dEu@+>hsxN4u#Rs zEnNlASRb^EU~go1824k}p%});Kfe*Z^~wT@-of#*FdmE=eZvk{ge{#dF_L$7))PYH zDo_^{jPgAo>%yr>wse`k{%^Z3>0}$jAccg@pe!UMQzX%F5nRNv%J!Z(#Ap6f!w`+t zcn!(X2wMG|Kr&N(vh%&>bU3G?;f``}A{+x9#V?d@V2E5aBy5Rmeu-IE67kQzlLrKE zAaMHd)NS+;C8?h&x=(v%GZY*(=c&Oy?`zcjtN>1jqG=&z!iJa zJP=kEn=+2uy;=TxYS;A9G`jGZH*e_)UW+|qnG~WYwDm~_oP`@2j~}MOehy?kuHRoe zCLv2re)L;oJ9G5iOQqcWA1^TjPtr){f^dpD4h&0l;R3?h+5z5n&EVAsE2T**iE_B} zQqBflZUHnh+1gkV!3VKc4B;$y@-rKVpQ^~R_|dlgr{e^PszCK@?&O2M@4wBl*ZB~hmj@))!oh+PNH2)Gaxxmjw-PwDd9Z=?jG9lsZ z^o*xkrpm=v-o<`k$J|o5Rnqu$8By85UP+>Wu8OMAaeEy|ROpbLCrheY=4ol;CU$*K z*wJCGt$0liGpFE}FRk#a*gzW^4X@0}8zit`tE^~g;+PJqB#4X!`|ol7_b(YsbMOSe z&v9MkgapzQM4S>+h=4nPnTU>xO13y$J_`;>Ka=|uCSPLiNK;j-PWD48w8y1Ka??5&aSP_yE$XrdIWhn0{mV3-H?%;o zJ}!}=e(=l4Q~keNgV0J<14zMi__wSpJSwx|puZ6eiV6qQ0h%6j$ozFZp%Nu_)Hr@g z@Afgk%zb6T%5B8GDme#jeuQ}KlZS&1;Ov4h61PMVIcfG9{dA_&_zWZ;To_Lp{fQ|A z{#=^6Z!+gLz4Gyejwq;`R7172gG%-%`^-*Ue~QWz{C+aBGUesA(?Wr^h}%Zn%YH5js_I z=EkzB-qE?hnoz!M5^{Yl^O<634L*LPR_TyZn$TI{lKo84;Z4IAu~+3<1gUgQG2lsi zxpCe-z%})f`N~M<>sJh@k_*+|WyjBjY5j=UGP`@w*wHNXQ%Y&d!C+!n@5DCYdrHXy zq|7dEdFOw4Rm2{_qC&Mt~NU1gFfX>;Xe8K)BVM+0Agkz zyjWZLq<90Nw^=Z$s9KF=52-<>l&1}?3kHAn6&X51Tp0Zyw4%zZaqrc_SV*zxh^>&8 z6iWUOv;F`GF>^3^Qdj}a?mK5i$<9~fVSu{Zt@b|L43N_IueMasKPO>iuP;Cf<1rl1 ze6r*tY%we40*krtsHaixx-Km9{0FO+17Lklp|ht5(o!#hy_OyoP9MU9R!rIF^WcZ) zOyp33@`3>GRV)13!wHL$dt41BFr+CRlGg9x!$G1xMz@c}R4;LNGI;Vk!WoaAl-hU0 z2Ah1y2ZDO11*0AghMmIA)zgRycl7b7{cvUE-*h8r91zof*OX1_HlLO$xEl)5VF@~+ z^T=y{&sXbP*gGLzHPfQ0dVfn^F?JOgB0eQ_M`*j9mc79`M%ysz5uPl4`8$i}@6 zmjeetWYSpddYm^^vb`s(8TUg5#e z6}|)O35}GA^!!lqEB|@WzTc%ba%Vli8^n8ll?XU3b;2 zqGC;yH+!2eN-ETmRT4;P{rxD;~Mmp788eDtHNRio!-!o44BXuaO2{i6?ZQ{cdn zj?yTXD$^>1IZ|}%pz!J58?^y^#jacUd%p;e`UojH0Ji~WSRcTyP;m!{PgC@bysb>y z&vQTJKkKL}y~DF})BnBn*iexjWTv^%j$A}ix$!t}k3}=7+EA+h-h1{@13U7`X0Rke z@|lK*&(^_Ri`Q%#^ayb8EQq4%!kncrEY)AazKgIO)0TYx&D!Y1z&BznDpR5S$(PJA z{gugY-M`Sea14?Yb1~W#$R2taqy$6XaY@86b~Mb3g3G zu=!kjOAWcQYY3c0tE}LDhBXvve~O3EA$>m!5QY8H#U#H_UU6&ZFrw`O-c;EkOl;~% zSijt$H0N%jjSiEn`B^r*cEu_SzPU(^)^sUK*SuBuW3zmt6CYP$bQn|{NyqQ~jk6?) zp?GGl+hIbd%7wY3?r=eFj{Pn`U~TfzIX6VFCrsE^@6ei{A38In!rXgRH0%$c&eD76 z*Tttvr<v06HBqykUZ$S^Xp*laK_cm%iw0MI_W@`MiZ^9=rpZ;(aCQ}rfg@ph zK6oeTPRNMNRf>k?ZQ&ZOkY;>2eG%KU6@U%?T1tU2(SY>jB5+J zB(o=GVci`gu0Yc+*mTPIj{B30tWIu#z`&gk3c_;kGi4_AP|c6rCmA0Zij$6_TNcqsCKDPW}|$qg_@*xNRR9mid3eaMA?9j!Kx zN81uVA?9b@G1~&nu`tf76On#^4r0~DRkEnPUL7CZ9ffP$gN*l1Ragg~Z{(&v0_LLL zBN~;YR}e_igHDuT*f7T?UrnYsLIFV)k+8H$eA8j*_mEys-tIzHUmRO3EaHswUg^;Y znsE6oX|CRO%BnPa5zr0Td_-s{4lS`UXR1pmTw&}Ou(p6YY3+B9(w7Iy_h`v19l$#6 zi#BeD%JU;(G!@>Ge3(MDdb3F`U66qgfswu?&k4zpDnXi)%pO|HjX!t_ zEIe5wP4^@mT~(1D2kXH!F}Z0d%vIPGe*7w5JY2B(#@(u94P}=}2IV4kSiJUWXQB}wE9Hs%Lv=uB zm~d$`F4q02xEEEsKo(qd>T_vSepbr+vtT1BNAjC;88s~==X*5MaT=E)%YcWg|1j!fNIF~|aw+8PCdWdTqI1L41 zlNpzA{E~DSqL2yxjlcs{*4mN+^TTfDFoHJu+Ziadl*~l9(yqKcG>kw--1G17C1v_< zNkO&*ts0*rz6?JM4i{^lUWF6o>QD)Z#s*6 zk$dx!&bL*#VTmR#AEyTM7w|~NqRKZMU=IcA+_sh@NEp3U2gnSMK0$}p@x3V7NlO$e ztu5PjA!M*_?#;HmuLo=>(Ph&h+D!APVVX83^(`xyjE_zH8{#zXx5JShz9Y6jf}>T+ zs(5_80o%5^Wdy!LrEy%< zpUe5Kzt*u1UdV&}Hs#iX_2j>QI<%3Q6c|52Y{7l32eUp`yOI3|RX56yW0P?$Vlerzp6N!~_A!zbHFw%Z*}GoR<(I58%C`}5j-Cz1=j zXtEE*G-KP-5uFaGCRF4)W!5swaA#KcXF77%iT(Nen-r^D-5;58wb_;&JOMnKv6LBz zFHkZwu9xvuvV^c8>z{iX<&ZqWq*?0u2=mPx!wIkLY4k?Tv0sL1Wk&p!oR>Pzpj*CQ zuX6J`d2EHX*Q2P7%>HN(qO+Rk-rAGRewj| za*q)=-gR8Lq-s?eM-SI;q_2b|mZF=*zH&G($ucNF?McRyR%PvL$!Y$%l@bLx4CD}K zM(6eB?+*w{j`NWi2@i^%@JMW=Jd|I8(x1f*kV^AZ{$}mhm~(!`l0d!^=CLW=ypLBR zpCaX0*|YoV`k**?{7zp(EHa3dLOJ!LwD7ftYgJ<2fz}7}L+GKZ<_6+!R;?Hg@(xD> zdrwS6bMQ^cC^w{j$+d8bQM~KCj6gL`jVuNvvRzrxAxxcZRb1Ptu*Eii&q<;vmqtKJ z52N*M>OyAoQm`@C;M5(nj?dvC0dZt~m;3hxu*dw2PLerm$kUIC;6A4^abHOJN1we8 z{soj1XH~>!v~ZOi<+D}azxtAUQ2WJ+P`04+Rpc(Lvq6cPRx^c9@mcdVgp|TVs|G~r4NG%kMEXW~_}MEcR~__e#jH*hP5K(a@{HWE(L@Z6CR zT~CK}$`bink)pa#6OUe#*P`O%V8G6DCZttMg3harG(XSXRE%Gr>N)9*OFD#ZqU)@b zk-t3r@-y0|9>5>Ee0TdO)`?!blV!p~$v4i_|08TsCG8}$SZ5u%&5?;5O@}e`6-^TG zy6}haiksZaOT$UHrGfpukj(@r4PFbhY7D^f)kbM^NP4meHE2N}z|s}3n^Q(!i&mDU zK{)3#rWN?zcD_PSzAg<%kiu@7QixnaqMYK>4p~WlT;OSc`MaAghE;?$7_m?9OBS8XV1!yMqRCfnR-mrffz-moKdS%DXq)<>)M zP|+ReUCQSGvo^o8Q0t5om`X~FU?2z4V^URe2%F&JX5~u zN$9cz-@Gy@zt0i^yIJ}B7n3pUP?&-vO$=v3-R=-^44RMpz{rN9_aoNZF!S~QPR8`+ zSh_8}G<=0=o=XaeU_y5zkRoq9y)y|B>_zQn;5Ezf{&GsM8wG>74a3(Mbi)g6LYD;? z6`j40jvrYll{wcb?7QVFuLU2S zqSZsa8pP6P`oh+hO6>3u{K?y{yJQw}gg+d9PYm|w>KTPvIGZ$%OkFBH> zRh(sShH4)$w$G23gxa%H6&e)ivj`N!IXbFU~WhC41h7Q^kO7N@6+-Q+E9L1=KBz}+NCRx*Azfg+4 zF@fqYa*C*$3I{QpPqFt1+Z?AOA!6yU4=6>;uCoIyi6ROLkH|iv7~*3#isB>6Lc)0C z>xXM^Uqh*v>|jF~)nCU%?g}bCeL*)Z5DF`HYtylcfdl1Q;Y$3KbV|$%Mm7&t;t(Cu zidUpK30keq0RCsn=FxP9`~bzJF=@w>_*n_?!#gvZ1SQr}tA%Cuq(s7T4|`w8T@ygV zg0Qg(CBhJC3#mx$msF2W17^3V4j#&I7erpfi#YIe9ZIW!QUka^@uzqR8aU;8I+_hW z`5cb7k7OHwa;(_XKh=&(iL_w%n0fqOu1_W(kFF0#xaT@xQ$fo%;FVR%uuVv z+N0L7@3oWN%&R*bm>Rb1upy`ljp;0{TebBgC|F0oDF_q{4O2lJ|gctR6Y00 z2TOmMQOd*@I|aEm(>(8cM4cXdgbMbca1zV{?qs~&%8x{pnNdpe}( z%fd~dS{H+2tN@i0RIQ}uG=A41(HBZL#OwMz`{INzGmnxIcE(K@MSNeif^tSKA77b> zj-QYM`S(|>ZuF|0fl7^z3Ynl}ofTw>ivf(2_pcYN7ONs&xHn^m1?95uL^}T{8&;}V z0xgLt8N1BmxBX6L$$csQ6n!hsXMk8G8wCf1n^z#a>F6|1Qv@>Bna)cGjW%ezPw!9Y zR*u;NtPYbYuOcIC(!halKdOSQ2&#Q*){yPDit+ei zb_<7~=Wmd z8n7i{bul{4*Q^>M==c|X1rv^BhQ`M@`Z}1qRZwTtLYlCC0~IgZ@;VnrDeaEmStx_` zEcaC9oUVVM(lzeN`{8X8PrJ1`Kc`CBht~WZc2mDjZ=(YWM+*XzV_v_DHx|{)A!k=m zP(l5DUy$M8!imFmOhJ5O+T4qTpK?nNdr%;NRb|vj@NA}9Bh(kw;|o$Y%VHtlLB`Q z%6EV{sEm#n!)WE^Wd$E9&DYp6-yDzYk5zPRO5bPsoiG6-B&Yx|u5!CJhpsPTa9r;q zKE&Apeapzbf#Iv@a36Jahzr8`R3KD(>$>So{iKvig7-qK7)>+;MiNX-V9L4cO;rMbp8qGeIGX48+yLvf&k52NO0K&Y(;TD+6=L}C50|Yg;KlDf z4}#UI>T`K8K?SCl)|kCk-F%$oGZ>qS-#}$0w{Q68hp`QvS&FkXedIS>imyJfBsCOS zk`iB?sm_11SL}`!%jIsMq#fCRi|;_CX0@A^MEh% z%27JtBl)CiX?bwZTfeST(xocsKJ72eOFIpWzPhYZOQlDJwSgjiG*Q`aBWxYalPFXKbYkN(y7cUbHB4{!}&ZOs3htbYC3f_cn(k*Ud}mf4f0S#;OY46CSx<3oybl5mZ`ywNo*iO^9wTo|9f z*EzrhMdAaRK(=7hTXACB3#f(~Jj6)O=(LXgg8LRzHaJ5Sap_A;N9FR^&__69>!USd zMY&0Kx=;)n2*Re~Qz-*)(_^m)o%)I=JKA6G`a2ludGUs5J(Tc;6(y1UqRCbPhmiFE zXvzfIZ$^LMMc`6|@X5AU4Dl$|il;AIIt3m>RNVXV3>#1nh-Q>h9Nz7sGp7bD?yxXD zGhtH3AKit54pT<`U~9+V;%?it35@18>|xTh+ko}5 zt20#JzjJ-Z{Atpt#Zmru&ZQPv=4=X(c|(WdKvN3bmK}c-xb!}SfdSAA)oCCEixEhv z=vP81Fc`RJzgq+--+)iLzL5m3C>V%z?MokY9foGY&H@2>ZXl=}(f#}7TTZUyBz7pA z4?Z&2$sV=tcHqZjQNvKZ8w3(vDS;=-MEHR$S%tQsT#;mDa`MAKoeBk~lEn%1+?$tnA0 zM>)9Ln%R;8GBNo+=GFTv9zBC?p)yw(g-LRj+9FL<{}*haeBKu zc2&1=1RB^6?|<3?1J8VRx{WNR%743f;4Q!%F%TT*xS7>02m^=9y~{6eX9V04B8r3K z>=+epVURa1NoE*B?OA|x5+Iyg4CMWkByUL>Q)wWe*ez1(@%MHqDh9B0ZFs@*Nqx1p z97GOo6KQIB% zC%X2`K_uit&Yag@c4dZP`h0d5m3Qo+T^2;-ouQxw#P?sD!;O@R1XcL$A%9Z4-FFnlnKy9ZDJ6#vwp)>Gk7@Q?#j z!f+1YzjQWDF3g5Wt^I~Xrx2WV?T2BK`tXadN^*EZi=q8I5a0UC2QMl?P>Uy$7A&_X zUYGlvnAC=(Kdd(G9u4^XvuD@;V&Hqp#&=(?E+6z4fg7gan2Zbzd#`KfZAezdjKbun zjK;z!<9jAYM+O|5D=bm7GyfsY8&bUDS^v~??|cZg`rm_gm2UAwi0-~()s-^lcO5#i zcXk&B#XCn2A#p45YV?^uI;}J>1m?1m{IXbAKRJwETW%Sz-ke97iBM5|yq;pN*4g() z`DOdBj^3<`I2P#P10ATw&(^Vv$OeW>UB1c<1sm$rzHofbjz6+Cp-yMM3$2t3ujgk> zIJ+bv9FD@yP!dGLHBK%qqf{||bB4R-XyD&2WLSXLQcL@MdB@DS@_!lbJkb}n893(V z7XqJ6{|^vipt3V4SD7unbU!JLmG8d*NsfC0sR$JD;4O>8R`tzsbBL(FO8{9u{bv(n zs0ywhy*>ljPCtXc$Q<>ulRIUNCH#Nf@_X9*UzQLfo|qjQzTKY&Kd1E{G}VouslsHf!O30sU23A>nVQ0{8O2rybol|B(2v zo%)BHN22#{0sL=`|G9VnaPOae`%g;#1ML47gnvo>e=hnD8;_R$?@RoTF6WJZ&-<6i z{0p`J?e9Mn{CBAT$jpBO|G!gtgqO^{|GWQx>2-bb&%yl{%c}JMIeq{4_WaMC`!^B) z+M)mX_aAEhzjo!{eErKa?3`b=IXkfVajnt~9Gsw>INZ*(Qi(%}!c{8YrR((rR-B(ib8V+YM+5(|mP zUhp9Ve{HnWtv{-L263j+xt?HauMP9<;Fq-@*XGFsOM=1|6I8@O`BS#TSU*+-;5^H6 zzav)+lz(D8qvcCOw$mvnMkZ5I`?3 zD;mfeIYtsSE(Eo8W6&c+U|X&GxCqo<=USuA2TLxsV)_v4>yBknhy(rIl}Dnq<{)(y zQ+x>$qb28!X{BS(5>@*4NC-=ncF7|wlc1+}5K#33P#YoqD_0!E&o;u{A(p0NAjU$} zL2iKWuGuL%Fmql)(BJH!Gg)9bOrW{|dK&ah9YyR-{94N0Umo%V4oU-1`Z=8=euwVP zr^P^miLeTH|LV`&@1agZGdm17c9*$^_bWkIJHc;w=t&Nb#_DfPm|mFBXJ?uEKf^|9 zJUy!@I$~NM9X2%iMBs@}`W7DzRAeH?*;tq?0Be@sb(zeG-NR?)3^xK9x30i~V*O^D z8lN^=ia@0#Dnyb_${4~KQ2Y#sY(vW()+VFcWhns;%<*Ji6v2mMe!`tx0NOPk-SJ=! zZR`6}FQ4f!X**W{H%*Y8WjuHrTH2$VEWkCNkjRc9h@@U;aABH2*!DPpjEP@qa9+{RDWdu8MmG8{mW1|TaNSlh(l-4`hy(a z^Ml>)V}DVzgJxH`YBN#2s~_4g1l89Yf|l-J$ImHJ)K$sxz-4hrChFEhea?bMhM~en2Vaboj-VyuwV({5RjCbO$$nI2N~pz zJcDY%z75Wtqc`cn{H}nTG-`HsxcjtFieH;+!;P9paAva3?YFk=$OSjq>Vpvz zwrG3#H94R08c%s@_(v~lgkV)dVKpJPWx0ICGl&)Ieu}85|LN}c+^X5~#;2;ZI2d#; zS*L8PQ(!C4bLH#STm;{xe>$N$l|xetjj5v-hvZqrL^jVsl|`m#*X`rOU75@)2FbI> zCWn(x4(rH4&$>DYem{)ZL8wTY55tXN?le6ImTSoR8Lnny&f6=NEX}g9_G2_b_w6;V zKr>V!PI(BO*W7Y5t#^68t|W8p1M|4GVUt6|bD6pQj~2vs<=eWtA0xi-N~gQ zz)pUiyHb^VFUOJ$J(f}OxtW0C8PQjmT1$(y*XC%y&}nYIqU9E-yjgKLJTbuVk8DLy_w9v_}8(bZcBlvSQ)i(E)* zWC-YD4`$)*8cg(tzH;ZTT&Xh>y6y0Tlb74+fh>Pcxn+B8qjisS*!kbGbjaHxX>v0f zLhaa^A3n1y$sOUO+xfX7SCgE0wmyU+hj$aZ-&<)l2sgQx{anqlB~jfDpAfZ{{pzJ; zIPCXlo_7AW?1L6mmd%?mQs+TM$5gwf2(TmC4C@zSRD!+Rr8=`ElPNNdt7UxdH^TZ7 zrFr~65FE216^7FKc!g-;2Jrn4f5K(lm*NGE+(-Qi7BvtAqFkoURYMJ2!$bw8?@JEMaxY4T#iw{WlhVDpk2 zs^3H=*#vZ_9MnzR5QJ*ESxkCgfy%o-NvX!+q=D0s`!kZz!+p7cFUK!UB<8?!ly?#l z125ASq1*uz8Q!^)`yz|VDdjoMsB}ng`F+P`%?3MP!F~3}RlC19{PLq_cZB_lg7oh& wlUdk0zTCLh%X9;WO6C-vrT=cUY6jx1NNAPy;AM>4GjQD6GH~Ah~_pPrCs?!$&j_5r)kawPg-AnBdLZ_lUrMks{uwpe;(-<`N9Rl4#^V>g1A^ zi?DO~G3$ND9La}|g&qhx1VTeY*B=S+4fZ-fIkcV}L`oYsQv_gz{Pv%$_E0;j%q8EQycvRUL{ta#>DD=&25inVKn>*PWin9c3@qb;Xau0V?>p&N=e zN(jAt{Aqs5TBk?z{rss|4<%P4l8`Uy4qMq0~c16VW-VdMt z=#u*LfD4fAX;`;z-DM*qBl-(3s}ELS8s=E0T_|sKZk;S%^M)qFY)~07kss;ec}Kp`cPlwMhGYPl~0$<6qlA>J{-j< zEpdvEFWvJvW0PaDFdZKt6(0Ah<}tIgMk`J;PGO#`0|52tFnuM*wm_e1jQ_AZd;it3 zKDFbaGc5->_I3U>mdU~=M)4Rx2-?C=j@=kn!aV&u%B8Wdx1-hR0g3-+`T_GklS3qr zZU#X1_%JK)6!Q|Z*SGH;hXnXH+>r_x0O#4Kb!k*Y)hO+$iL8@u;{WKB@{gMeE4 zp7o?7oMeUkRmSVuYv*JD2vg?bFu^5Jr(-mt7KDx~@y1kCTvU0Ti3+mO`t9$+mq5re zuCBy-ylQqxd)-X`=wx+F#3720u`Wt4OWXKK2Sm82a3ioJ?2P>(MruXH=mu_QM?YKb zc_+KK^*PhQ*A4*hBOJPUnXgIQy6Tl=j`O0@{{8-T92Lz8}z&|if#}Md1!$J3_nRewX*|vbQ8n1w!o0<`(A6}!m`$E z0DhZhTb5r-o3q_Z%J$~8?F{B_wI1CICppTYA6jel<;Wk$K|KG$;J!jgE?>(Zs4*|x zRP^Z4BT0UT$(s(icQ!8P&11T!m$~}Csg!51GuV$A{W%9vK<`E$-LW9kV~cjQcYal2 z@XxjM+l70UE2Yw+0}^`pr9`~h~Gc~sOJ-d6g}zICZRY`Xn+s`9+4 z$&PuKHZ&kU?BjoA-qf(rOn+r6b=ZZJ-EzPmvOPl+19y2YVU3O2ZveM~oM$3($WUxE z+w##<*6Glhsg+8=e@ta&Uq9ry^#JYyWia6=lr78{zV|~zVJl1~2XN9fr1;c)+QkHZ ztG#`Z#ggc#bJObqcoNUgtMRwS(>S8BEkf!?S;J+`*AxKoLa|RCw47HX*LZa-V!^2O()kFHWxUR4odUDA4h291#`LF+yd8&h7sx~NOI0P4U-h6F zC~zlgfPceUnLCjeb2sQ6BZJ@^I)gYZ|f7ief(sBGp)1%s+yt#L&wdc%Af`;ABh3)2!a%TE1^ZV>hw8A}p49&cA zt9Q;Qzc!{n%PzIwa;nr`iQ8WnqZ;FR)&kGTgnG2VdhH-EH7)hQ5b*lA zDdsTQlh1-A`e@?WPX6IHX+2^4_oAd@JSACT92pcy*$TP_(2P&zVH2P2|q$_W=LHPV!f8o0>8%Evb{Z5wM@a#dQj6`6M9Sc$Xtnm)=k#@4O5R^>L+ig{!5WNKH;S~Sga_;| zni`SOBk>wB@J)L9?y~6YF~%PMj>_^4B%Y+edp_POjP6U+%yBJrf-?gJ><XfHY)vP$V+6|Gue^e(`VtS41 zqsW0MfwQY8pLWy2dbE{Hg@>vLt;^S!Y}9@)AO;20K@iUzWiC9|QsunptHw5D=wDxf zggaiY#kd#+?-L>*RM@sr3X6nLHLlu*vTa_1_(m%0nfoGvt!A90#l_FHyo5ylHAtCAQSMMPk`s{6%>MB8#Z~T<05Z zu|sl)bd99}iec;)`Gr5CD!N`GWX)?2iaNZjvKH+9JSaq&89|6<*)hbXrrx7oY?5`) zBI_Mk-fTAJsqX7~s2DSv)hpdG(YynCgwgCMP4roS- zJRCuK5EOz&C=e8aMkojfEr#~LqWyOrP?KQV|DGKBKoyAgztQ~fMy}!v5qB0CwlCq5DQ*QOoC6dq%Fpa`L|t)VK~_Ha)>@iU-6(~piyN7KPUa0ZHD3u9L!gvSfU)OZm%Ba)v`PG@tyaIIyhuCZp>n*%7g_>7hW{?3}p zGXb%3{k?dRn1w{c3?Eq|eA>85sx&`t2= zpn>0Bu`O3po3;u`gFA9S+iwFv5jLZw<=agC^#qT4b7B04lEUg>n>N^4R1UY@2$oR# z3JW_{gU7eR@18{-;U&S_3+j0-PJ3%8PXp>Vfr$9gn9^n}$jG+f1iJu7|m6fVPGgnb4J)33bO?>Gq%GXpk4*2 zNp_3#^1eBm;-otFA+uCV7QB11NLDQccWep~e3IiPf0evdlc|v=E)b#Y7Ys!#5vMha z>^l;-sK?6>3Hu;QPZ8By`fPE|0ILUQkp!#;&{@txUIaetAkWk^Nl3I0oY~3<^)vqF z=P9mQH~~FHu?!y!H;j`13ir)9)v8ny@kW@4EM|C`H1u~s{6`E|2;v$p5=CLakt!@D zMSz5%KSaSEnDl%>$EX)AzhqV*jCPq1M?{4gVrf#4r!|)rDydq8j2*!;WDHdWgq%lb zk?D28rFJUJ&M#d4Dq~*A>P5LWi9gA?Cg`xYLk@Ir?TX5lQ|giwo19h3pLl zP;00nSl49>B1}!eb1tB!OD>Z081aj!{D*yuN$WFIUR{_3km85bCs_P2NFOq&{;$Pvv0^ONC&b}jON^iczGDLSzvP3y z1OO2j8W7aD@AdAl_|*Sh0G#z1hEeZlOnWKVyx~{|PGI=KoeYiN4V4LpUmEPk5~|Ql zJH+57^sNOS8^Slh@ft^T`w9RtFKvA;oL>xltq9I0mumnvZCPqmnbKFVs zH*{t*iv5@wm?o2%$Lk@;0hd#>0YgoKyNXYy7)=MmI1P<%KRsJ4!3hoD4^-Nc%=J5e zgytm;=32yX=CepwAQa1JHvEB+ljfTuM$5r6cGgxaix5kyI@KZP8CtO4PMXVP67!vK zHh6jvm|1cx(`1QGkd5}(tc2bwXQeCXOc5E%-B%J0#e7i@ zZ=x7Y1H%xvv8+GpC1g8Z7=IV6-i?W5WC>qs`Aj6$?gp~!(7f(J;VVt<9&-x7T9RfS z`>P$EEs>11QT!F1`BaADK%u|Fv-L@eDQNYRBAiTU+__t`Q}_1nfN+Wo7R3J|Nq5q#+W;*r>@&VeZ6X9GXZx&*QD);D>WC zYg_Q*nMBrXOw00Q+|5U1DZgMJfMpZe>q(~Q%sG*Et$l-R5Tp|=IhV2NjSO&1rgg`T zDr*q%-Kv$(UCx0kE+W?z%{~!OK^i>+Q?m_Z48dQ6*~B!&iKk2?Ei|y}EJSD>HjLo7 zF#K}$xM-QmXD(;Km2PQHB-;&#Pm$RXt6-cV1Ex>YoUsp7%m_kt6_?XLt%|`Ayf!np z)O5q&5)Gl#75eSHo6Z0qKa81H*=p*`8qCXwUzik@t@ryY>I^zktz3*X5JUh=Z&YIPvZPQwG{Lc z*0KWeXOt7e^o{kqmhe;pR?|!+hHfs;Iaz&PdFOQ4370`joKrjxGiB8$JE3_);u+d^!$iwYVA2cR7|}! zDT_*>$IU#vDAirfJ7K2wC{*4@MfH3*C@LD9bG=w~zgM z&IxL}^X+&nC*siVYFKtZgxd`S^=cJq^3_ zbSvlTV{_|H>}fkd_KZny>$AUcSA-U+`p6U;dUw9sH_sBy(ZaeV^=_Ndq#aU2VNgve zaWlB};N=Zdu`)cr1xqVGb}<-A?v0ySX5{hgM$F{VJwHxKNeqUm@b0fxv$h6z6hQ@c zrUFaJtE_#ntIlEk`Sdzkeo(vy_#DG-n9k8Q8W#`I9yT#EtWpBSLt*PwS=^t%2R<|E z-erDpf3G<2Xv^4UeT8wcFUO)aKw=;#FKE8^~@RQ=)pXAoM$Fc^999_|L->Ma08GnQ}ct*9X z6q|o-m?VYk=z%|*RLf?B$;D5yj#V(lH$KAmpDnT|znx*pE#*<;d#}yqb#gVpm0@;w zRX&}5J=cwk?~;p-;(1#}7`KPGmLDFoH#9OL4Kmy-0v5LPwF%|qW{-}l8GFG$1~_`^ z%SES`?wu?ow-=2(J+5TveOM)+tEl|p(N`V8x!M?TLGpFdd(vos_q1XZng8Y7IV!E& zVXQIwRoAT6tE-_~4!ujQdR060VMKJQDKHI=9s~w$;y@>yK}BtnG}h zn^N7IS8E>o{A|)?r_B=jekxCvc|^YW{QS6OxkX-`WpSP~uvG+JxNXXeKZ&Ke~HcY49Ypy_LmRLdp`k`s9Cjq2dAJn%~Pt*i=wpVzy|8|3=Ex@@>vvY@%x zuFY9~ox9V!qOf51wu5Jw%W6AwtYMkWoCC|2;(|Q+j2z2;-P9MIrZ2PPfY)F*#qm(x zeS^(N{K&8vmy=OTt3v#w}>W(E6-hsJn{St zn%GG?*w$O-^Wkdq6U9oMitw>V&tL5b$bNZ)-d*biUTy|{+SMjNLPR$^@c`wpBNp-fwrvL_67Rln-ZQ9M8D=x;08f`IF5paC^Sez!lqaM^ z6W2~~bfUS1g`BntR{a6B7*FTWM)-%tzVRalqO`H94bmCKy6)9MALL>UMq87WvpPL~ zT9&aZS3F_rzJaezy30D3lFEma=3mc~g7@+^p^2B!M6R~bKwjQ?^;3b0p1Fw!3jFUp z;hXZRIF0XFr|Cx3rIvMM)`RW9&$ofAwAN^yhso!UjL)eLYF*uof+U}nkeC1AoZm`r zH(qi>+bLIdIp;?UuWftghmfyJ29h+D?7p#Gq*Wl~!=ntH_MR8BZ&rYh(%?dFtzur? zH5}vI9|p$ZD9?2Wd|H&Ics~NPqyQfZXxZm3l=O5qjJW@tR6*28FzEkuxq>16Gw|EZW-(ki2EIZ5 z_RjY&ze@g1t>)F>d{*Tx8pMiT=mE>qrvx2?lgJ0!Hp6uM9V$1o<)zM$DYO^1P zv|R!}4^@BG_B|S29Wk+r_42jJnf2wL5~J?VzH2n$r_FmGQQ7KgI@v`pfd%qY)AkJB z!I7p?WyfcUQjwn=L!IXfV>llgdG#yE#`k}fBS+VJTKL)7HI9&Ogl@jndf-@VSZ{m& zwTy)~o@P;Wo!r{t{*2kzS~;+=!&qT}FkL9Y*8AH0U-BndUW5md&@OT<`Q{r^>u?=& Q0RG!5uXE3N-gC}9_uO;O>s6SczAiJvK?VQ-v)&o)O8_9@Kal`U z3x6&7w64QnD34Qmm(lP~0NVZ`e5Q9lW99(>+dJwH;@ty62qbcQ>X>>OxjA}zU%TS~ zyuH0;Zn!#o*j;mXka4@?lsJ3hAOMO>dfF#1`*i*7r3>J^QbG8KbNQ3*-09Vu?q=D$ zoZZxC9JTih?rC$&gy5@aLoFowKb$E*m|^x^^b2j?`%G*<3UM<3nk8qw5CdxR{^7St z-uePu0wrE!eJ@n-YXKE0n=`YVm5oVjl-Y6*r&IUY1Od|7+Os^NrSVeCF-(Gpbc}r3 za?9OG$s5I<+7hw%A8?-2)SJ`GOgr$lCN1aETTe;6H{q(!Ua%OtxqQidQe0eX{jx+J z5u;RD+@k$HnL%KM83#bp@%h~6wrS&Ovd4Iqk~?G@pTAD4?{I@|%Nr)-3jT=|Im6#I z@YgT%M_h7r&NVC&4G1j36yr&~N&k?~f-L8>($00_sq9_Nc;hKy7dxB8(=Uk~7fNw~ zECK*$!%E&TNFjJXL-5K?k;2~1U;zT4?B+9@R;(Sk=>8~7onTzig^D1L5{2JBX0om~ z72Z6sA%X$Gk(r$F`@rC}iK~&NLEo%94G>5mcW0gw`6*n`Ibxdb{>LUH3JlB*;LrG7 zR{iN-7}n9;LNj?(xC0A0=e>yS<7Wel9)l?S-R4M9tdDD|=bjA(2%OAB&V0MZbjiQo z`G5>VAHTFc;CYrDm19StMT6ARLCVu58k$z_pug-#!YdA@3t_~cTE)0JTGPSNg?WS6 zaIU1EcihjEDX;Zbg`*A6zO8OipIL==^(|O8=6U7_Q>H9bfJFUsa-ApaPic+-UieB$w8A&EK;66Xke>nCi*YcgE zQF{}F;k7T9BfOAEoG9YwL6YLzFea@F_=6qC&+iM=Xp2URMUUyV7q~*Ret!PI-#^#h zGpP4cogT+P_g1-$6|PoACFPE5cf_6B%Q}N}2EH7KI;Khaw!Ls9sFGqC!Y{#du(z)p z7*>pQAp`)}V4^UlS%mQY+-qd8FS+!5UNJ)&BESfsfXyZcnb^R81uJah7%q!26pZs{ z!~u|X2yk$D=2-0s4c`ot*0$O>BTXUG(Q0pSfI6$mYi$SNOjj$h0$LTxJoAm!QDJYY z|Lu{D;84lb9&CF&G}3PU@Y&|ZeKGOzR*tPTHK?r<_&D4&DFpa_TMrVqNjO$ zf(6_HD+5t*tpjG=n%mn-!=II@f15J@^@O#)|5aXNIYPu!UKqqQy>&Ky1J_bxbv5wJ zV}FYn&VA@Fw~qK@+3D7gbPj71*j*YJaN*{R)?csgK>#j(;E|+3ij+;}jEN?ZH1zTY z?kkfT45#r0E%>w-h}2snRTwsa%df=eMC0djHRfb{%B(v4q6c5goU)(fkWkZ!=LL0{ zE!A1(kd0Dl-8(XFG;Z}Z_kmd7TA_R0yNVCjJKgB3{u~g+V`bRb^DdR*mKl*?;1d1{ zejzS+VI)rN{_o>niYGHq;}CJEmDUq&vM_8`2eEHF8{Q)f=T8^8PdWZUi*=lkH$XgK48Q#rL$1%3X%`#_h)e-MEm&oYJphP!TjgYnSIQZ@A|yt(9^8)BV+2?xKSF+ z+Lh8UMP`^9PJklSg#>coUMXKMO-msGG$J)XVDpI=9COzsRlfAIULSJ9?^Sg*4#NrT z!O15UQb+iKo63R&c379;rIMsJhK&ZJcP$X=@qwRQ$g?)3DRVxC^wE5xVvic~KOUfS zNxDr1CX6Xid&d^=ygaIxw?~sYP*-dr!-WFw+C61``K?FpqB|WpMMw)cy#-NDB_2kqD4Y zGvF*riwQEO<><9#xA_G+ge|}4!xZ6ph|H?CoP#~$>mNS`1tMs1^7n@k5NJPWQeMcx z_L`eJ#*h7_Tq!GXNF)vn^A2_V8@{TGdq6XQ^E^_6Vgt?MfXBDHKUm9ePaw{5EQcfN zHvQ1O=2`{5EdC>1clFu%{}RvFqx0N>*c%lQ9Kgv`QW)NMMD0G?PfAs+!%MB^OwH%XL<`sm=}aw&Y8oul))QVLEljoEGf z0Yi~Hw_qaYMGmN>(_+Zs4^DE&nDfq_e>v}LSe0Mtlf{C(HoOykh@xQ}0I{9J{ov&S-a%pTj zCT@SzPt;_$i3ZBwm5>-f_<>-XZXL|sN6Awd2+mJUZJr*?&2Zb(;j*ZRytNmcb$h}g z00vrtPtOm8`@&*musoNrZI?eUpb3rKf43(f4CfY?-hBjUj4H$PPoEk0K%WKopLZX+ z&d_sp8ULXn0k7TRwRjx4_nWYG!Dp_cD?j*bjoRd*D1T9sx)|OkoDjYWbj*%`TI+&i zVl)>mNi~Us6hl*me~mxq9=ud?6T0XD^fLtVv&3e|_H~PeMc6V2h6c}4|CaNVf*c5*=LyQ#kniH97So(aJ zDtUuQDUJ@s-?1O!IC&^!%6~JTx3q+pEU_;zytUcHb7fxMne*}T<)kjkI7@LU`%&A@4^kJ6jYX1*N+N&(%|L_4 zpU*FR#=>TY5~U4jB|$~(P4^zSLg^@sY&snwSNyNkQ8red6Jp2R0<9a8icO`iR$L7r z{%{&yWpG~@lR%a+36t zmr)1YQTE`nkEfyNzm&fQiM$Ay5*fW@mAsf&j&Dh82s6#-w zGAZ^(|G|kL`7|hy#0C;Q;gEZ`h)CW8Awm|&X#T8oF5lL*lv|X+@%Ai}SG8zAKVGG!7SzTC)%=54Gkl_yY6;zBP@>E}QU_RzrNTOzq32*X!Scj*2t>e@X*<8JV1LK|lh z?iT5wqhIk!G(!60b=c%AvI@fU=XeFv3p@@0YRmwcHs6xP!wHQ>tc@O8Yl10#hD2aas4 z$UO-D6wApO78Q48(M;Uwk{p^38bZcjQ+FoPTdNy-G*oInfhnTy#q{ zk1jMP2O+0B4h;3(U2r(JHS56rj|M3((x*?ctf;n}WEC1fJQ0T0w1fE9{vczzC53c{ z&PWB<{pzoIFgtkPm-YB}KO3?00$3VQMk2voX56t}np6_Gb_e#M5YSh7+NBdS%I~B~XR~q4!z-1>CL`Bbn`KS&Om`+d zE^S9mcg9MJ5*?i=2LjO{pOSL0b`Wb=`Ypvvh;Fm61)qt=G4C)M8cEm_IS}`HlF>7d zai_WSjYsnEW?laJfRs3lMuQF&q=wx*gz2t3t8+Pe0>ezHZ25CKo71Ze@0oQ8@CCI7d}O+}nzUj-CT4bEM?Y>RUm?O0 z2UuL89m=MRW!-=^&^V&`Il=%HU%r`lBe)YGm%Pjb>kb)^WA~W@;poO#^H{-y=oTeo zuMW@j&jM`hHfh;!O+Ve*@76X?xl$VCMP-);@8mkdKtWL@e+8s#iYq!YQ|lg9oCuQ_ z+}AFfF?xxgi$7lab)@JqH{$8fE^2wlfr#ds(8m4hj%v~v ze1wGoTun2e5u(Cwvs5%&eIvwr(%{3_1S;ntM2bQ~7#Qv&%X0kf_B?inXmE`Pr);3d z2{PRgBIFfN@Z`GMK?;}iK6oLp0zG1}^0i?=xTyNO1u0#7>f1UB0pj@)xe8Tb09!m1 z=&w^g??`5$ys_x#hb8f6aJ>qMB1yf+%jEv_4^qNBC7t(DOJ%fABtjoWERE&UI4mT5 zm8d|nejZeF6{4Xuz-#V4ZCq~mif=(6FRA7&s!ae51bh&N!G}=nh>BYdq6<0}j47_9 z#e^mAHhwrpWN%LXdI9D0C9uNwMR71TZeL9T4T2C2rct<3O+qn~s}Nz>gi4QhSZP{bS)5 z6OzK)L^E@knfK-)E*he`* zaUom0FZUF8M#J6Q4?bU7e{k;tD#?4u`eM`>gPGSMLGPC;j$zh0rfK2XmV~}ulP7}w z*;`R>T4usRGM&8HMh}xk3H!WAWdd5+W2k?Y5<^WxnSpRsX%X%Pp7GZ%pdNmdza8+a zVK9pkQsLgHNfkkcYxvD6w9#My29J)fOKnp^hI?;5#SSeO;+>=c3M?_=BGUdc-P{yP zU8)`YIDBrr^%^gvEA!*7WuHUE#5^3XAA4d$ftO%5L=tQ2MO2dM7hB;CbqoNU?DI@o zU2E)y#J+dxQ*ZcJd~pCs=n`&)eDV-ZCDzO>M4k^CQ(f_bN|Cyk*c%0j~B+8H%bh%~yDIKIRUTd56Ms6M<Gl*TgkC6M`7w6c^duUmZ&kbm>Kl z{pdFL5%ON9naPDZaq%Lk_wXCjI)oohnw=^52M&P8>yaVOIx@{DD|y&l4)Gw z8m3=cW{!&WzLLU{!*25!Dn-mxCYtgue`Za?=VM_D!=`P1PGVFcKA0b&qo%QMBl@aw zP!Ici<_&SE+-WQ$jss+~Asifrh#!4zt% z%oHc?geS+sH(_mq`#?+C({hV8?ag~PbgMm<+WN31S_?VI3lu&Tw5$q(d%}j;9%C%W zRrt}cxBcEGtN~KJL0J{1wdL>%HOIidgC6axHa-Vx6fGSh2Xf<{suu78Bv@yn+zn{r zPk$ewuIOY5N0T&3ht7#|2V{)gznr*?fOYlkJSEff;k{6anJ99VD!f1_yAiDqm)E2Q zGrHY*B>>?Ukv4m2SopYp_)$llh{g7KUn3If6m5DT;EX1TBE$<+& zl7?Bs=j9@T`pAsC%_L8}CN@poi1Z#47HA z``-X~I=X+w{L7MrgUg|mKbMmKgx2MB(AsK^zq7s3&vn!v^C>>I>wLrC-=to^4T zL#cp~yZDeGuhx`IGO2T+Kl*pUp31JWFSLEtsx)X|x>$w(Ys|I(i=9@z^$Vv@Wlb^n z=JZc5`qxu71J2ugzL2FzwF)WF#h_*T6UP!rBqdf!EuxwTf@QTOHv;^LZw5ndzKeJEYffd1^GVqf>$auc|Mo-Q8a06 z)%AMjS8Vc#oc`XWCYmfw9Kg8K2#7wVBO7!p?XTy!+38PADJt948VbHI!sOAPWxok^ z{7;EA$2fA*IzYBAmFMddKPxMJfyE^g04fh`hh(LM~VD%#WJfwFr zW6=8AjbOFvo>tS4(pATgEHGKz<0qS(6-C}oweFNWEk*A&Hm^C|@-2|~AvNyF*|?8< zR2F8O>pkUKH@)z^^@%-yCkC-&Nw|k!s?}a5%6F9iPF_YsYi@yC$2JDYS^>ce5fc+~ zq^2YeHVUqzQ}xl;*%FI3VGIy(ucVCq7QObu-wW@${OKT>^SNhsz0Imc*pg`55jZY~ zkZYNt`BGYt{G<~9ZH64h;!IZaR>ZK9*;6ZZb70fonC373s>=Tf>J4O)l!X>iT*`Gzmk zvjI6JP$4%hK=%Fe-PWw~3l}MNPCzV$b-7G#pw};Mi^Gjb`Oy$e?5TLny?({8iIJu+ z+jf$nO&kr9QSltWrBM~A?x=7b6O7ASM7>!#3LmG3EE{2&`UYMgioG>uhZIA8Uw4}I`|3}e(9@?u1 z@!^(3Vw5t4=R~%(L!>6oO!z~kx3rjW)Eb9J=+48~n|p=-dvF|&_k;f0QqePd^$r&_ z16qLwz5B8s?U;&4jeaz*_MrCh;a%`(FPB;2-G@Y%a(y za9K=scMbH+dpFrTT50`4Q8`M`V0$)c4a(eN^9vB4{Jd({T9%+BHa`*YZe{xaNDT7& zfn@8XLq|lGCmVJde`mYgZhB!t3B8lZzOw?&UqdGgf1(IEN&Ek2o%?myN(IEcj{dP- z8`JB&@@P1+o4ICccxOLI^EQIQ1ia$F2{{7U$-zm5ENhQd%@pt_6i{&6{sHA#^a zJD-)jI{{DNzm%|7<9i6qF9LVXSN^k*r>3K499sP9L5qSb%nE$8ex{qP@VhFy)$wl;kte@WY@xHdv(T+v9`#Z}1 zA6b2QP$HDlmozq7nF3dTD{v~May&wn^RsTpBJ!4&#wq_(d2BQ23Vz+>S%K=d0|eym zR^Mkn43NUYWm5_iNs^nR+cq@n`$o3yX%28N-{V&K%}~nh*%ZpQ48c>yMNMA>G^}2o z-uS>vu1lIJ+MWQNq{Hj?QxKf5815G?jtKTRSjvP8F;m};J~m}puNnM*0R6L_EHP7e zL-3~YL2})q__nOvFUGLW>$+#0a*66U2k^)&(YN=tr3O8oCr7Deyy8z6p}X9q}0R&X>BNl<|LLwC(QsoO;xSUY-<=`r2fs>o!UzLA&yZt)yNgyjowlAaM@k5V-XxBc zJtTq=jC9>iL~Q37`AaMVj%O7a1mjP2bscW9-fZHw)*$U}M$|M?^YPr?4J(F4XQGqu zVjEuGmv3i};cWU^)7^FMTUTOD^cinACIt2EAxyOI=1CMun$lGqA+^|(#B3`m0Fb^~Df?F+ZpwzPL6-|UbCe$hid>o0pOM@mH3Dk_sT|ZZl z$R$s*ZhUe;u?%jQ0`C7|T(gU#E3b%7kyP`z`cTtnqXb*sP0=dayOW;eekWvnsctfw zK6IQItFF>mEu9?HPqC1_pys?Y3Bhww?d^3AP+vJGMX|!?9$0?=Gpgs^P+!Bo{t*1a z<>QEf^21xNw^$W8)`Lctfax!y%)ilE)z`|uJHF=b8#^7g{z5&FpL~vA(+z_1g>4_W z^8vOAc5bwvR2N+TEgO01{J1(yhrc9L?dY`_NR%{kVh0srHe1K4oZ#dy@0a_*R8C<3 z<80BokHQzYNt}N6UMp@yN#Q;r5U_~eI*vorRhh9h^oXbILFpaI>v_s@l0B`jtpC;Z zKONNcKNSlT*nF+!*5S+_;^k{wZb@Tv`=wgd_Z-&n-stH>@=g4ylddrj|E;=E7!1bt zf{G2vZQxHic2>nkAVXp8PcvoZMJddw+L(}_2U;bK+Ui(+V&<*c&o@Ig5d%@0c|j)u z2s$&XakRY-k(c%Lr7euIDw8);54AiF(RvP;ta#{q+%|EPwS(?kx{4%d#_fpAs2r)6 zK;+2}$^3H+-KgH!d@{G7(Xq3kED54}q@#QHAyo|)lVcu2e! zkfAK6))O-~aY#_|OYCa#vX@iCL8#1z=@*#fX^=K{iESbLZ{wH@@R^@o5)-h+Yzr4HE7oW3=Mwu_-}Pzh3q>{N7C4wn^vX`Tz+k~ zt;|4jkYphXu4l&QpOSFXLT=sLJ$$U#(P-ir)B05J_bzHZ$_Cb*aE{hW2?)T%4%_iBVr4M)1X(g<6445PtvjDFUN`W&+)u{7&BFu%qO01Z%4hEiL zl@&Mp^QfgMEiLBsM$T0fp>)RQ_LnG=B@d_d2rE`fJ*}&4vx%GZG%N;eYyi`od|f`m z@b3ByIaJ;VsYHy`d81SNG~0@f;B~`Iej-!pnHSX)a$suJY~V8xi+%1`%NQ?#Hp!LQfwWM)UeLk&n*d+f!{TJjzL=Ae*r_%jjQ>U))nLYsl7qOJ z)<5u$qcCjX1ihRxh-tX1SHyygykn~kGu7=t$NmB4AcyaZ8m!nfuZ0MvjSuB@345qL zLk{G?uN;Fe84y%=L*{$-1vYQgunYNv6yK3kA!XAhus&QsK@S9*6>MElPJ!0hf{y)& z)DUvkOp(xu%=C;K4_;y0#>s9(Sg)AT2Xd`k`I4f@NWJffpa|8$MGq}$dk=Qhf{v8# z^Y-?|`^C*(25*#9NM^RESNw`poBQP2n5Wr)^1X;N^q&FpJQ_GSY{;Bs#(nD%`)8)_ zxkfOsPCPu@c>d_zIw?etLvYv_W;bV+K9L}Kv2Q$%N2cMcJsVrFG)vBUk8nT5LOih+ zPX3a#-&RXMDL$$+^E2vbIUWmSYtldUQ>P zScKfYdNX~2aV{fsb~BP^#w2@ER3>lO-P>tOsuI>m8LJi{n`;bdnWoe}83zr>k-~0MTJoB4o-w?JBG5Qv+5pzxe+WaeCB-F#jv!AnRDbWa zStdZ>0BqMv46NoqM&qW=`&Z9@&9yi-VfoMQyfO{t7XHpMwJCr@VqPS~p9Yt`iYRaQ zyko+S4pyAwCXV~x^J0J(a2wG2x8NbjxaC!f_B~$tX)yP#cVNOjY{k_qBPb1MQoj$l z3=I?aqcGK+oQgNULcQZRe&f^)HyR>s@Ft_#JqVNGa)x(xQwjcySOw>!=i31>$_Mo4a zrop4>WA|TSi$u**pp62w1peRsOOx3*x@if|*o8*Iyb!$PscEcrjpDTl%2>Ro^fY|& z%T@&pzk441pbN_6&F(Yx?rk2-J@!{I0^-nTUBCg{9^^pCCofy?^EBhMIMrWn4O2K) zGQ;BDOI+)C@uxXXF0k=I{lWnMj8;_^7^g)%9d``DqxDJo=V!mhyq$1v1Rf>Xb95GO)et_^1k#{Q|&0Q=s0XJG{ z5ib`hV1?Q(zY8o>+}{vS!36%yt>{{vFs^5!_^)T%Pf#4=JXM_c!if9|=Esb` zKBvbW5!R`_?{H_{t)O8bS5EDfQZPm7c9t%*>H!R)-kgGE8k=7ezulJ2-R31Ji3vwm zPKU}94SrmchDP0D1C%q3p8jKghDe)H0rrK35nRvb8f#gRcaTR#u=m?lsBwn?I8mbQ zK7bUsaKC|9@|1`abDd5=z`u4xiB;g6Z-abWouOO%wvu81PyY!YM4nF!`h~pi{S)LO z>5w3Y=x4M?i3V#|OXIy@XD9C>5My4K%2@HZRY_yh>CP^1_W{j~KYyR8-{#9J>p}c) ztMPA|>HE$_=F!41Kh6Y3^JU&VX2t!vA!I-K(5QVZB~QDe&f2Z}9yUijY?6s$M4L~B z3viqT$4KkO>D=YDAPtOJ_6stm>=l$XU>7uUOi^{lwoVJ#*BaL_k?P2u-rP>)lxNa^ zY^a^DTkzA8l;2hdtgCgBy`EaPichva@cu4)K+w)4>}h&?_|spx$)%(mKSu0?qb`fD z$*WHl7tBK_?-|MNnby$L97qiPocdgrNpXpb+D*lQ-pOBqLY0)(ak7`GH{8s0@I#og zdNE`wLwj1eI6Ndo!0Tz|YmIPf9xiZzrAtD-`v^O*SW2(U-27Lf36sVvM5;wBxu~P3 zloR28wO1p8i~MU@BPPd&+D+u)0qGUf75WWxPqQ}X@gjlc#H#A*XUFo5N}m+Mn}4$a zh`}@YT$vuUwwphm|5l5&HSqgZ@b-85CR#GxN`JI^r;6A=S47a@(zSAJ8 z^(nQrDgcN**8FLg%-i;3;7z{ybmQ0VD%*0+Rasjid`o}^f8j3FUTq@zcEi>+2230& zpZ;B%^0$ee`h_AABO9ikK0#K;R!qUBqySjj`^WkDPbU(#R)^Y7M&a)AO@7gy38(+P z)YS`oxOl-Pl`bemMWe`o`2O>=)WSv2UOOUCeg|B*k}sNHEe_ouT#7iXT_ zNFAPUdYH~yP?B5A+K+2_aE?+BDW=a}rY>rt0cyR@&o)s$!AR?8n+2OFM4+*ZcVM_0zx z1skJsoVLx?Ey>2dgHdp$u<{bi*;TFH!w${~Tn7KyP3J*0>FDn(o@N^$t^mSgfDM-S}J#Jz(wd&)2aL))p|iPp*J@SFBX-CInZEUwx(CS zG9=m#FSxOw2Al-98v=nA(G^w!2m2e+(S|g}_U59XwGhq1isleacDDa+PTKBcxj&B_ zGLK54wb385uUtbN?uF+5jP!F4 zA$N?dUm^2&gnZW29ZcWD9ztR|d$ZdwNYgw0ufwjq$~%pn3mbSDLP=@qQ(oj&-KAV; zo&6FIqZUR@vozT2uP?ZLSN3GYiK=SqZ(m#Cr(ld~hqo_epmY!6OZM>gB@evZI!mkj zCJeP`Y}{-7pl*FF=!-F<>qn1tMh%VY%+f98>A!+H8W|n>yy=AZDar4ynX%#$Jlkv0 zb7s@>+3?iftxg<)FJU>sw=FI3F&d0coNdodC^m3DT=DX+ACasqd#X$=EvmjI$@I7O zQkIPN-k#9fsb7Px{f|42y?;f#@oJjwBKAOVh~{=vu0g5jx1kZz=Ep<1xZIgPHK^!~ zKi(>r)0wXeBu^Za2)8U-x6+Vk7;SnLQk+@5^1G{@LoykiyK+>t{d73{ORef9&-OWy z3_RmD+%3CB6>sD*3E=nr52u^KEwQ?v+%XScT&T+W%KY<$Yjwu_f`GCTo3SQ$(AZIh z(P2jUCTwiQU`fa*h0jD&7k_-Y>Pg&B?191Na1mSEIU_Ceaxd#EVj14Fj!dM#PL{&h zcOIGyhPR&$ikzZ$O98@0942hvzTVA83^)e6XVVc`>6P{UbtbuOp(4rH*F9ou64vFM z_$wNxH`CYW#x)$z)cDzU*5)l}ikg#shcA`+S7-mE^Kr5G+(F6>u^pVxlQ8J;HzvR6 zOvf58&-r~CUW?@JmHu=>zqP6K5;;q_^!`D0c<0}mJLhvu+LQMef z9ST0u<+2N~uWIE8{^Q_DBXFc>w&_mC=JnK+w?lm2DJA!cUQ&;30l>6;y+{6`jzcE_74Ri86~!hmB|08J9t%YOGQYSCsHlqjJl!_akV_C5?;bY~yyN ziJ3434UIn8oH+))zm-X`>c1zCeqr7P<$vG%z2i1)DM01fK*iY^mFgULF@+sBpT}ijx1*c!#8*n>OSsg#SHya<7zK!G9oqr%qlFs#0da7p`~#KmS|kpK;rouchCp zpgMfT@}&k*(&7h|5!Z%rpG~)&UdIwHxzyDJ2V??Nk!{ z$ObOw+q;J(D;`C(xXhb$)KpLbjw9T)x>S#Ts=xm4!max`uweC`afY)gtAf_dO&0Z( z1DV}k`~BZ&dGV7t@8;zq;0G9=0dbSS{Q5?&8T4ylbxyn-ytf=LppMyWfX}xEMA+N> zE4Y3+yftkv3htx9NLnF zCCQyfn@n3Lzb6036sQs`Vw~7FxB<012|B$?5`D76CF{__-_ZnJBmh3c_k7gfJg$2; zxVHHd3L>{5(zHvT1#aWYn#2Fvu~kPbGHo27@&Rx7L&dM;eJbNfL1JL!G}n8sP`@BS zgUwdQ{vDG3isUxwku83k)YRXRyAAg7K_J7n-r_SxTkGwoB4Jsru?I)BFYfk?!46T- zvWAS>CW_CT+a`)XbG5PFMyzLA5#E}leBU{x0)B)5)dLQE8*Ez|S~2)6vu+8eM9pY! z2`BU}n3Ue%q}!TY_Tr4%Hl$f&5Y6^10h1ythqfV^>{4JNqFOiJQaz)v%~`&TrQ2ZK zhA+*_-P++34jLQO1}6$snxIMk8OALY)|DmHtAZdHK%_uPxH7I_7N zHw_?sdY)NnSikr-IViUDoFXw0 zDFDDY9p=TcbEVJwg|~<9o+(`0M8E-cB&N4Q=|bt#eqK1@9t1{G$T#~_)?QKv$LR>{ zH?o#=gG`{Ugf)aa=AgJ`^&A?SrK|~7&IG@u40+Q)!;*NxgO;=6S4$uE)5AD&zYA_f zJxj}6Q-`hqPILtQN%~2*6RT8|5=5%Z??l1nXXLMoREH;VgQ-*Mo$0b|9<1%-bWn+( z47lNznwCqGdg3QbQzVxV5Mu*{!A{06MJyFA-CHV(IU@b+-MOaZphNgqp2E2^2mxg> Zzu0obO%JoyHvs<8)6v(?Ic4+T{{!%)!yo_v literal 0 HcmV?d00001 diff --git a/www/img/avatars/monkey.png b/www/img/avatars/monkey.png new file mode 100644 index 0000000000000000000000000000000000000000..433176d2b112dd33973418231115b229c41cd12d GIT binary patch literal 16073 zcmcJ$byQSQ*D!u(VCe1!K}s5=Ybc8rl@1XBrA4}ikW^4nLK+l7Ns+FhLAo0TR62&P zVdi)7d4JFP{{7Z^zgcV6+_`7>IcM*4_Sq-KK<_p=2@44T0OWV?Xx;|^DEJ5khzP)+ zL*KD;@CV;h{q6%I@DoU67Y+U=cE4ll2>{eRS6>LriPJLplKG{U$x9Iu$M@mGh2uR&{Pu<3wbxSd3JFc| zFoRDc0Z|b{8vHpYRQJ}TA<&5TZ-I@q?t%pJ4uvYi7OS#clQL*5QS8X%g}I+TQ~L*_ zW0ip7#^#W~lGVDE)N89-UIV*LgYp5TmmweS;|M{~NeLkUaHU-~`2F8_paaRkL7Kq- z!h--v261KY|AhwwkPH9=zyIe$HWQx0Twt!8vBixNdTCAFtnbwRCCQPQ7cmVCpc1Gk z1J#EQ=q)>LdVKX&cc$Bo9_-NbfD6zmP$}@4chu)R`I0bgCSm!KcD(&rL+2HS*N`>$ zr#NccSHAZGwNmPLoc4Zp)AMMN?m1W`W&?n`5E{o-7dO5v6*eVzJ{xYX`J*OfQW(@P zmmE`}6=uS>z;9DrA%EDfb33R6Qu+*(_5;It2%~2Q>$3Q@4c6Q3=G@vAT~6$vc@+-D zh%S>b1ZvDoZgCRl4(tnfAd41~%U`(_CSnvc(V<>47M3yw2%$VrE_rg?ixpxJ@ zF>(-Y?N*w0LxmTKLUG_}9MFhC`ss@3# z;n(yIgGeJ|XniTc$>U3lm5nwgzV54;Wnz|i!VLr9m@r(?kWA^;1RP#rio*+;#T_pbs^ce(o@CtlqpS-747}0CG}=TIr+t!* z+Pu3SBmiQ$4OeP0Ny!;tY0(*w0R>RiOIhtM{?tJIkyFNr5)9xv#o;P1r}6Qid}+#f z0swqSY_C3191bu3`>2f$;EG-fiS>O=1xG3m%)n|xv8PD9 zr=zRAn0KkSA#m|F|9zqV)F;rFv(3z?R<6kk*u@`~?_Jkq2<*kK_d*P3Op8;JI zkEigOeKc=A8MqJFEZhxDY`0G&h%APoy1z+3fA-v%Km{G(Z~Z1NrJfG(<-`=XkLK9B z&Xtu_0*=iqf4|>VHj_k$E(SbGN0Q|OT-Y3ItLrhcx}0<}jKKCAQzPbMU=_~*K>4AK zsT$R*cYfO5nX&?Y`UTN49V2(y8FW+n>3|wm4F86UcZWk2Ik74oBB5eMVk>mng)ziN z&j>&bWM1U8%T`eksnP*1wmt(e;2xUnA5rJi$%NHNWje&jys|x4IETQr?}`izC?~|h zmMNOa2%14!KUO6FgudS%Pv(|t69l5Meb}7k+p6SOZEY~8vFvt#GXJ>Gd}AVkmm+If zpI_XsXRsPc{iT~VcgR(d4n=ggHP`vhCup>Y!Qk4vGwIjdxPpQ^zvVQJX{@)6M?Om= zX)ZnsULR>4@y4)l^jUvtGW$?$l_viM-CVkRDW0!Q8=vPnBR(n!5Q&`*Qq|`4KBI#n zojoty<+CRV_$Q1~FKNbc@$5wl>C(E}rsb`nmYi;eSz_tdCPXWT>r@5i8ue(4qmTFa zB^Ct%0cDJv`+-aY9k5!=G!{;EjQqnO_d&@L;|1F*&TnR zES%NdZ1rJ#{ZmMV@4NHWZpd@T`*@t`w1&6;{&F(GY2F_>xReaYG2`zFilmER!X{<9 zgglur0?@N4Riin^&uTkgp>L;U-?@9ARby`RzrL^dB8kb*I{K?*ri{HbSj07e$$G*y$x2}3pWy>wGEsJB@{=xr2FkB+~y)tiyp zd;Zpe|Lga68LZ497E=B{-*+kKZJV1?je1U~);B2eX!O4c)ZWtT3nl@U7ME6rm*G@V z_0}W^imxpe1Z#6Wf$W=wA+Og~&x|p{GihmGC*tpkG>i?k_i}RHVcqz3Mssf0Bi(i$ z5pcJtN!rg(5&@+eL#bL8k?v=oXhTk4sxh=|BbM%xkDu@Hj1AIc2m4yCdE)CRn7ZG4 z;dGSR@aVTk?&l^Np4a#1QiZbte6QQhvSBLd%lp8g=^DQ8A;GV&Bb9mgNy6L2REgO) zUlr1lG>@bAUo_Qsk=-ZUH|{v{!<9Lw)_M6Zj>wq!n}6V;6#&#oaJ}se1kE8N$Pbyt z#QOs4QiIiErpvu3)uaWRJGdPVTq3{u2Y>sJh9+WDnKJXc3FRWSa0t=8Q)B8`CJa^( zFt1=NOEMhdf8&y>I(X6&f*FSj5%PC!Gc8KIfcNpA$p>w2+3GO_#(-`Z{~CrhdY&vK zgdWi$Xlc?*M5g^bJ2UM)M*&K8VU+pVE7gD+uh&s8i%MnsQy;GoSLCdga{iV`sFh$= zgP=W6edsQT01%l{%Aq3uoyEvxvr+qG+Qqn{r$gO~ztI#Elv1lqILy(YO4nA#9+^Cd z;4MSVr@ zipEnxu|k0U)6eC>k84z23g{J2{dC>3X?u4<6)=q|qpHW2bjIJKx)KWRdK&;3Dr|pP zU47OfDN=is|D(61l)AN6vy3On635c`b&cFpc_ihM^`F1Y%n6B{bigd=Do#_m(8dtC zAJ5;^`E1!th`g2__j$uJ#`9I%NOLJ`3@N*0?Q3f@@cz<{2!>oiH{TD`r#k%(Y?)Q* z{Qd0xwEtIGcF21-pM$t$!cKBhHy_o#ow?Me0BnLT+kB#M4lu=pWsEDv4+RIq!raIG z!jNc|EmZ1Euvb?%_Eqz5n&on9{^me~6Ul^=3?8GvGtA;A9uHmg(Jl;3CnuNYA2}N>?`4kVeVK6^q6nc_yt7u;aH7X; zEC5tRglO$4sZkxju|B5MevUqv64gDiJJ!ZnEgXt{{9}XNm~1v}Sc}qMbr6&dlnk+2 zYFs%Qc)2+eRXDB@@O?OgwL*`2$R~*B=X~u=R|DI5Th~?d+d)6LMt2o?2e{2a4s?h! z{1!t(jgzzBJHk|WnwB0havJGWD-z14I`pa@I{jYOGgPfJT9gc)D#%NS+zO}N05;Yc zGzt~A7%#ZEnPTmByNTh$5Y}a+#HIF{Oin~m3mC-j-RXK<-P6-Gr{;dE)O*7K7^oPk z7HRU?LN&jYpaT-yaQe0mKol;HTf=Q$@P=HV&So?_e$mpBSe6d)+UZd8*}4?=Xb^Iq z)T-vUAf}U17MY#{q_AM=+am$;OOc$?Ke&x$iS5CayDOvST(o_A3*L2E{?4rhaOG7> z$<;u;2?Ib!1Tcj#9jnG#RJ)Dj43bi56B(24tjJ~?aW#d>^q2abh0fmh8;qT6vm=Kg z+tF@+4;C+vjM231>mG7R{4rg`#s|83u9h`o(9qYuezwbNkL)O5$e)Xsmvy6y#&AcQqY^ZkjH44R-{5MJ9dtktA zi3t&(@R66l=;0%QH>f+6ztT|Z8hTQzGGX)Lg%k@2WR)fTF*~%Jg0W~~74m>DO8{^s zoH$!%>?Jrg3rfuh?b^RtE|zceY28`e5C|5lu;#vo_xn=ui8HNaEEMJK*k9p{P`!48 z#a~#lV}EYt_^x|kv;h$82CljB$zGpe#`dJT1xOHSp_vS&Ltu`q=otg~uGrBVFEW*+kLvYQw~jF260S~CQvhhLd_1GM z8LqZVy4R8WWn*1XYCIrydIR}u96$fsq1l@Buv6ZoK$5c3LW=aZ=?hT2M>ZMU!DV*t zo0r6{G8kW(gun7lDZ??7{l5*!3Xqxr}3BozL30 z9sMjFq5w_KfJOp;k$6ki#z+4BhcjB|ZmyrCeoO!ON1WIEW65@YQSY-5Rp6nc|a=Y_pD&TBU_nvp=w%6R$|U-x<>Zd963% zcYbW8+zL|vl4h-I1YmJHu`-c;u{n8p6wJj&vjY*8+K1(Dp1K^)Bpu2A32(952Mzkt z;9;eWBkprZe%V^eqxiqo&x}KTgB zuCbU(!OhuJ>x2D-x8`&JfB3hLFpc`AS6v^WHU&q&Z=12+bTQ}cWRv6^wAOJ{)ZrX8 z0S)6~8sfkSLqJjP27f^|S(S%1w{W!Zgb6x;vDWX^tJ#r6!ge~zO4h3TQBS5~8LB_H ze_xP()g_ZuIqYOUu{d49otyNOZ=om?_>p9wO*O^F0?DH2V;(M9rHps>K|>8PibnHP z9lQ>tgcSS*miY-DpFxA(FMa0As`eCj$J-E4TKuj;v9RB=_r_lcwVMCg2&lo7Y6?ZY zi7CK8yt|ci>~Yz=c_=Z_rSKj-c{ToVXRT+8?=0znuh0$B@F=fRF2U`|w;6Z&yuLBl8o`w`p=v{{Imvk!RN_)rKwi+cX0jS#xqza*bo3+JY9Iyk!s+J*J)iZ z*sRi|KSEL2;41bwXl=`?Tyo32mpk|hIp%2bjLY+Q_Rl|=%zD3slyLsOXX`Vjiuc+3 z3n1qRy2uFXqT}$Ka4BRY65N$QBA|nic_lT3gi*g=Jq8+lB~t{pmLy6#yhYO*QgDpqt8at|rQouc4?(TEORQeG~U2{v@xQEg9VZf3s$r zV-}Bw*?8PzgyJVzTh*8qYjaw~kmUjGEO$uB*~chP4}HIOvf1D%D0++dP>~{M3I zijLcUJe?y12m2kaV%e7llqc(ZDpE-oP>gK*eL(=S0A*^ak`8F00M$Tgas}D0WjD=q zbt(17Jo(ek(4r;`l-B?J3Z)X`v>$j(36Q}1)L!PwIiub#tQ`EdnvN+>Hlo=m_!nQN zwLzuvt2fRkUBUipI}L7U4FKp%MmT;VwsY4y&j_dfk6zB*NQ(6Zh&;A9 zL&-IqX0x#V7UcugRj^m??OEzks6m~A>V5aF{Zj`Jk$HJ%l46KOY5Q=Gb+|AGTrN6# zafQ&svYAwiyLs=}6j!h6;KDGufE=~TcQW>oReVQs(U;2+$mOdI**?LM0qa+Xf=1pz zA*yyLm7WBY410-l{YU(C?kNg^RY7bTXl;1~;4X@S*~eYlF1`_tL>7YkXGT{c3-Qm! zs2x0bbjs>i`m>En)70lqRm`e`&V!~oR;kkZ+ZOf<)mpgBn^jV0S`hRmADk60P<`bc z*FvgT=KXeR=%he`gO0HmYo+1%hK$(Fs@u3$byPn?z0+83D9;$^cj;7;SdPrUjq~(P z%Wc51-+0U!2TJe!n-CeRWNagpgucprv?DvS$;tX?mWn*f_;2Ice}~axBSJX=bJ_?B z-0OwH<^bWDNM_GBa#q%2zp(LJpfTv>N?GN=%t@f`1kK3KOk*Hy$tk*igpYx>W=|CI zm}XnwBWK)U*xnHjW7#B`@G z_&m2Li$jM57bJ8r9)`WkC`k#jBj{DZBRs^P$e*fI&|SQK7o#5CwNg%;M`WR`jf^s# zrhsjH%bPq;!LfC)8r#!2d{umcu!cod0)WNbs)rfFp*G^g?633~R;nqd>}gZgR3EH|G8-28B) z7kaMhx$hSE!#(EtH22cl;t(s%yu5u_VKoqJh}|XbQzbzps_n;z;+@M(@D)||^7Z9O z)p^pYPeALFRtt}4zZORE={#H%@p3rGZ>)uF^z=xLU9KmNPsSyu2J7TYU4Z=_*?kMt zHmFF~#K}kbF-K!#tq`&4)XLj}HcTF9KyJPrxf8dE&J8#BBJ_HgFcc5*OR$jiqb?8A9l|xdW)+; z(~cYn?t^aS?cYd>H6hcivPrZWRQbih`3qj4s7g1zo$NEvPQ&3z&OWql0=AYZgmTn| z5_^qfKf>^don>A#-+@H)DiJU#WOtRTP#6DBjPU=nkR}^P724lK_c0}u4&fM{7oXGS zC%s8KtT4ep#N!h(W1x;-rTrLWoJ$^mK+Zl;TA@N+`j<4qKSB}uf&s<_7FDS^YCFu}iE85nMp(08?Y;wqa@13Ll!Gshz? zr%gWUD8^TWmiVZ9PT~asfvVO-Ux~_hvy)XJeer1!w^i?p<)AR-KpsWe`%xs1Ky*tt zdoCE)ry)l-G@=P1y=)FtH!3?QK%le5Pr)&gOZ@sf8OK0Rk>LZUbEX!KCNO#dVHg9sxMupl{T9uVF6ef%>_V|U01zr&8)xyCa+|#n zTsMnWWxf=V&kjX2yeAtF$K(;mO%qVA?p={LGYz~~6XozPHdO^gLXqeMK4BJSrSwII zH@Q}mk0Jtm?}K5&MVo<^yDY#MP6C9h#%9a)pch}e*=6Kf%@PuwqUU59#I8ZpF4ZA6 zYqweH23eHSjmvKtmTqQsSV5bdL0|vPvNwtLdfD_k9iT}|X9OyDA(`sxA zp_(N=`=Ok!lFk)ctY8RGx!h55J$29QRp|KHq^lkvM0NOuX}q?4rpqPl@z*7g11r@N za?XMJj?|)uI!;Q7Z^dT8|GMAI2wr?NehzZVr)}VkeG_Od?yIH7QM*tP3;IA4+bLA3Ekury{Bd`j}BX zGgiC8BXKuf0|E|91FOKtJ&2vQPaO>l{Bh(FK|S_Iu7mmz@tJ&6sh1Fe{lpY8(a!+a zCxetHJ?<0rj8^?upbl|j#24=`#ZHJ3Et#2by`4eG?rdZD&D2``nuh zqyCgnlaV7|qEA-(xt(o3Yc(n|8UwLgjId=%5}=j*)oo#xq3Q~I!_os`sEX2)x|@ap zkN(ieiErb>#~VG4Mo8fAG?u+R=wZN9n1)L)!J)u}$g*^%TG?$r{z@S*Bha82@JMbc zB#_!fSnn&4{S)Ckle<(TTebeH?p0$|IPuFJCZdaCjw!_vsKFoB;WtoVR*YEq1$^-+ zzEa53GV!!uRp!bs1=>V>Nb<@R0kkrY+XkUzK0d9jRod-`dXeKM_4l>sgVmKLSP8}- zf@`E}2vngMgK)GoCXS8jpk0s-U}I$x5n&se?N~HvUMzn4usjOz>5K*wDzb5m)SBo% zWgY_ghd^xLH5vgxPDXB_%pLAF8rpTvZrRqW(GiXI9y)dH9|u!5V2a4r?&6jnBZAu} z)<_T-T6$-*j+n^uW-Skv%@R|&RyIE?hz2*jP-2gx{V}rY*5+<|4|W&=7?zFqn;d}@ zhwSdKp(;ns6>(|V-jnGn>|+aaN@2tv^~WLZY3Htth}?O6BLUz8;uZs?V^9nVjVPJ5 zgDR-xpFHm!gha=6jo$9!!6Z~ZO1}j`BiK&wExYB`ITq=UP&Ia-hvu_JG{3FgFpE(* z|IX^s)b@B^tT*cLxyOA(YjcU5rd*f)t%OI>u;X)K2I;M7e=Vdl zb&EtSCDlh#9&%$6F7I-IYknP6mcT~b`m$ei{*3xdE(fiz@T-l4uu2J54P9{^ns!(Rd5T@?0NZmF;2SpJ7=D)ic#58r)sS+6_`3kC5o_6HrZ*e%< zqO(NuV@idIF5mC497Q`m&>5QBsCaz&`INJ_4R?J{u*E4;OE6=6(1I^oz@?|}0Xyph z32FXAdHYoZ0LzMDj6GZC*A8#~tmSHcSg-HsnQE!RI_5u!m|mvSCPg~8PHZLORojbk z4N<+b)K31c((ja(Ny!!IwtF<}W1A-b4GzgltHc${A#sNwP^f$%uN zHmT|JKo}HF2XRU`yHtEp$o1=Ifse!NizPxs5pfti)0uV86cL6qxji%9c+9};$axxQ zvr9jnpUK0O@Lee9`BF6`=4cE|trfO`PEHXsaG4i5^NCck{cn>fu#b=9o`Bsv4aw8E z+&roUE})V%)->VmrjZf2^<{JDxD~jK_&o=(eF@<(QxqO=m%{Qi7Gcz_84yD&@&Uv+ z+{Rdq*$_dssM1Na%(5LNDV*Zk^X9RLx(zUx)Z9n71dliT(Nw+E39NG?K`5mrb`;|W z@A>~M;249H=r>&?q%h2cG~Z8eZ6*o0yl^|n_F8YNZFC2Ms;}RE<2c#vR*U|*us3lI z<u-+cZ&w<=J@=*uDNY3ZSMkkOSqU(ifL2kL@A6nU+R+WEpOAYwr6k~+r4s~R8&8tzndGB zG9sVZQu7sQ#QbDD6!Q@Oi~eN*#^j>`&cE5A?S&92LJ9pcOj(kh_2E-rJiTC^q1tzK z4t-pr?1%448SKBy&nw~!vhtZ40f+HEw$z~U2bQCoL;W11wRZtc?Ay!LtsE+sj$_e$I6_8$)x*YpxeN86BZ&9zVZLu}EU_A`;h9 z*>?YgU%G(hkHt^`zJ;ALsE@I!(k+ByUckWynG^D9Vxl=CRulbrg{_HMd=OHulg@eW zZfb59G4OVg5ozJ8mu_PL8KS&5r|+&PRQr@X@+K8OkAn1rGY$W5Z$|kGm4#jq+qi8} z`^2~|_uZFV)p^HlMP?$}CsPjmp`F@Uo37()V@AXMt5=?%A$K-%4wwF&ca}WuC3f@) z6nUZLX($+rskP{%$|C#|h{*4x1N_9Lh@bnM5UtJUGvG0cBi9Drj4yu>-57W$xUmGD zOdc3@F(!o%GT0SnXeSqjpJ84byyjU}+^h1{DWb0Epz_EQSVa-9iF6PQ5Jqc&8cTe5 z>up`{{{cW|X3?+|?#+MtF4$8%UbL`1KBqz)-@P_+?~ShGMs&&w>0kfeDue9 z^@eu=(HPBU&?nMSB|+faRm+yOg>97v850W6t}Nv|l14AaVbzGSwvyjdPp2GG%d9P! zC!yIVe8*?TLMztXQ(@ZppETjC-vS`~;s-pFJbcr3MD!;EaFinJmJ~O2~~iIC`3%l^W$wf!WHVatkdtdZ)>K$ zFy4AKbVk`r781(#jz-*=pk0jYF0#2!y19H!IfQE>5s6MSwU&C>^SPLpt790-g|i83 z(SKw;nM$|H*sYbzb@(wZ222EDx83UWBHN?L?jf_ze+tggt?_?7dDS(10If1J0}kc6 zKC%k}IgK9|WzlzC88r??xRnFnS@3d*A8HM0MYb0%Q$+HjX0sqHv{NPhCvhSw^6mvj zFs|V;es8Xqe!YbRjRvkHmTpcX9y1RP&EJy6Vwd>|_)v;>BPzdFST4Re^&=%kPTWyp zOZEnINMtVSb%Hdk1wLvRv!)z!JDMM!+8I~~@7UWwn|_34dk0lz(I}M9RnZK|=7TE1 zNy9Vy0+ve|8cg^i2D+t}Ul0A}%p!ZuXDby>i+)8(yk66H}q>l(uLwewh^O5WyV&R{A zGmrfGCZom3goh0C1x0@5YnGtv4?pAjD)Q4e@zY#w!}#odF?Mw7tTl47iO1FH>HDL5NUW?0?z z;AW-?Mv-@5!*Pvxz-EJvcvn!#SJMZ8Rs2uDH)ws)ICy5zEK@tOtLq@co%1_c;(l($ zRJ#qV2+fnjc9Lo}@MD(P_|0da=l~sx<^FbthIuCUh#_oa;qt?J4Xp^+Yad7p2pC+Y zRSy#-{tk49>;)!-EUvALGR8H{j+y5-0lx(B`r8l4Opzu>L{A5ISly9f&@zq1LB4e8 zP;VRI*@r=EVJ{`6s;rLl)2H1J7<)VP2t;i@&_SmwYBODXssWc)L7>{tmv!+Q#JAkn zZx^AR;Y*Pdgiq6sw+yr~qUY3Grz%oQcIhrkU@%msI|(wGL%C)a?`5)JX|V13>fyn= z7S9rM;6c<*y0vd zfXd`;GqecuFE2eHw&Q*13%3@iR5HVq@G0SjYVl;_g1LoWsxJ|yKOoZF_E(=esI?OO z`7WaeX0yCYg1|)4D=WymxPwT4J7g&1Pi`hAXgg{z3uy{TD7>6rQteRKd+jUoQt`K2 zyFTV8!1geTO2)P-LA(J_dT0Tu8OhVeVVO{j_d*G~FxJ5ekvYY2`jgd~^jXwUqOv6X zGKsV%7ugyBbK?f5H8A6chFg)Jl79IJLhCkj=rbc0X+XFEeDO5ASA|P^Fq?EjN^TyM z*!y40t8$zNjZ1T!Gb2#6)HMXKsej5MHLEX$im&^U>J+Pa$ID?{3)SB)KQP`|BK`c8kaTe& z3WmA|1t7^?I?}F9l#(@o9j7@^)qa-H+)er!4I60>f3>>=a$^U%)xS!8J{PEJz9st; zXz+4|M4x!YouHwDfuR=LEv=OMk0CXg03130OGo-e=c0onL{3;w_y*7nQd>nY%gs>z zZbbhE3p-(eN9tY%IhGlQ zzXovuuv!?bMnW(zcK%_99N{^)@FM8IYGgPB@mmT@=FyFWqJs<}1=qd1))Vp%acm_A*z_JI+DSza}g{+O|W<i(=lnwRbd7{f}%& z`H(L;Fs{v0LNlu(Z!~3~(6@c=|B(Z}8mQ$lgoM5|AHn0;LE;5})W`lue47dDgPc$p zDt?3meY6}SfE~`TC2Kx2`X>nRssd{|N&=r%m@FY(4V5Lc>@2JJ5Tdh)M)AJOmsPQ8 z5&UNtL|z582xl|_4a1zCGCITIy$BioTNSi{BIU|AUbmX*%Pq1DOmV7Jf9x%nc!hU zncV;MKpe+i)>_O!j^MBBPElXj>^=Tt5kR)M?rDQT{^Q42|B<#qGZW_t4b}QK`S(HX zu5hWil+7MZ?rw|ZHW#!ze*t-1z2}mHWp^j%6wm3~cK#PK9co~gcE=v9()=IPBB+7p zu38BFK@#+;Zwvs04Lz`pNDngrE(i#d zT@5(=uK=B&p+zfOJ~+g{678^uz|V|ak%|;3C?X6XdIS-8&-+UvQ4kz7|HFpD@LjDA z1o(&j9dJx=FXV##N23O4whNVmRM!6iZ0SKQ_36K~h8BLOfpq^V>I?3%SAhZIY>=^y zGo;`y5dw;u>GMso#Jj>zVFF8R4kAF<1~+bf8FJ z<;sIdRjO)ewwH~o5jZE%3Yb#bW=TwF4Fke*`M$mEm2jo4xCiB_EtKtzfMaRwy*@WE z<0S^DcGUuQXW779%Mc+rG0i9r(x8YbQe?G9@b48f4(uh5D%pO)LOxM;YO3L12btMGgiGGa?**V!^yV;UPpPzxgr!{zw=@1OJz^Yq(&&GBrS{8%}5`J9`%MO!UYl%THGI3xX zeymecW$vudA;fC+;W4o6+^MG~kZzmD4Pp>ZfAlSO8(;8W8Q#+R1m>0z378YAwX!8X z{rVV&VqxgGfTFVr-A0ZGqC&LF!&@jKzB*N~>f8W0#V56efx85+a156zCUm=`@FWl{ zX!(H#DLf!jfvQPV_stE!OxHf39EN&O-t`tLo(#3Q1-Wy)ru)gx5mJ+oLlIGGl=wWK z9@wEactPAP&V})b^ArT^=@6=ZhkTb`LzhD0rv?oOTa(9XzCDB4@blv(nE-kW)&W8L z*2BLatA+WQ+qfhbIGRA1TH%D;qveM5qa=ujtnq#ZQ2ziXY+YcwIz;?C@CPL4Vrv5N zO%0{c8DG z7cW6Qk`UF(4Ou?&cqGVqGEc4-k&(?wZO&p9`00WiK4(ri4&KWk24p()?e-FDWn$No zb$ovaqWkEX`RpGknxaCvh{iq4L?FHfJeDd9kaS1)3j&qOfqAZb`>_DCU5Eq7d2{+( zWDg9EEArzwP~PG;&{A3-^1?EAWp3+3%JT37x0cep3Zh^(a&2s7SQVf%sNV4zwd0M6 z7;El@1>;>bI1Ek&|gwfYsBgw775^E8^3HD7T5M zj*lJ`I3wmi@RwkkX5tW97FDYUfuF*%o4eem5|(R2qsYp?k-gx0aXB+@=YPsr8$AuS z`@&FUd*49_eyvw>^a$50^EH}H{`dmiw5tMVc`$LeEK0ZjrXI{jp^Yut;)G$`MGy#2 z*`xy^tO4u|3TAYtZj1(`ChjrC>9P!x*R<6FoSZ*s-0QE&9u};=fcPeYE&KRL?gYtE zu;{!9z*r}M>D&E`CZ*vHC>jP*btgs1Okl9qzRlG33gC=SMg-_ikIohg;n}5JBH@IA z)p)4#1&2&f9zRII^P#lUC$h&xZy$TV1&3Mwle`-;^a!!kRWRjm44q&-yoELV=`M~D zx*A=Tm8&PX*4h@~E4SncpR8$* z!a%a*5X2gXwf=McUlTpTsGX6ZsZchW)K&lpamdDdch}jZqZ8`Raa9(-rVY={adWoR zd9G;+h+egB;jCvn(UYQf@mG$L*mrD5wtAryHE`#I^lhm3H4S$3!o)4264FuWpqc~LV%+y2EYWZN5-z1f7A>Vqr&5OT=~ z|HxfB6X8o%e(<)&%4kTV(^VAY+M;>OMKODm?T}ZGED%*)CtJFc{ErP)7mfH({?bt8 zG&$HXrH{*PoM**dEh5lm_=n|B^SJcz@#8NJ7h8?9z$$R?0*3+AEY8}QiRuzO{ge9^ zbotLTTq`sN+FLh+;D>*dzza4G*eh#@XX9JY*GXlS*eJ++TR!<`2OD2vIqg4wL7b4FO{2>IffnHS;%YDJJ*Un(P66T!%M!fdv%{xHqa^DVkz|eA4YdM_(U26f@P`oW4b_|D5Ugx2~%x&mEtWxNh2KPY8pR z_$%TF72@od6+C1P!0T%v9}s^dJ~y*>TYnk*X0GH_WAkPvUEX+JTHzr%cszc2nRnPZ z_Us;X%IS7H!8^VIyLj+^lG|0Ryk&47Sbln2FaFoYVZBuCYJrtgT zT%d6eJxwVC58HdG_jd0-8Art*k#OcMe2zs_gGVW*JOiK+jx*^_$wTi#qQ7oyCl%yu zvrz3EgEyA64PQZlDN|?(eLaybSXSGp>LBBQxyS2)TgY z02V69WPupwP_z3`0buWE$kR}ku{w@xy9rQtld*gN@D8Cx-cqAO)J!Y6iC(?V4!W-Q z8GN5bix#Md{fk8WNAL7-%ZrsjH7_K7}Z3cR}qCfF5X=JADKNb;zCV^1C~ z(Cu!6`%zT$0n~~Y%rELGmc5`?+bxB<)4%|Sw)_>b_My0&ik^?r6JLomQL%IC6%4VkqGG6o)^oaY!-m zQtnlN9#g=ENC_9V=*Ah<{cQAna4)O=*4JaoF0gK|@_L|?e|BVzPDGFf6LD?qvam-? zjoAZ6=}Up~;Eyv;W@Mi!mj>AGp7q?lY};G;xh|`{HgO0i_jo0jnyT^tUp)qQ`d6;) z|J~i;s}u(Sh70iXfAf%ih48<0;TjG>aRH#K1}XmcwzUcx2aJr&uKaG>@xEepS4&T` JMBOIr{{u$G+nxXb literal 0 HcmV?d00001 diff --git a/www/img/avatars/moose.png b/www/img/avatars/moose.png new file mode 100644 index 0000000000000000000000000000000000000000..cbae9e8acb6860e4a9a0472fdbf1c2903051e485 GIT binary patch literal 11453 zcmbt)byQSe9Os>(b13N&3#3D77!^eY1Tp9m8BkJ?l9*9SML|SBLPAtfkPs<}0Y^m{ z(jX)Tq#L9L7-sg4zrS|R**$x9Ip^`-{oZeUzHz_z#oV(vXUxSe$_@bFI&<2{5&$H; zL;_Z3cv=hjxeZT@0msi=WQBj>tXJ>CF`M6Mn*ad#Md=5k?80R-B#PWTX?^p8FXm>j zi@zHP4h~kj=HnUQ>f-07OAxu^%Z6?D!R9lIFvdtoRz%RaDSc}483ERy}seTTLC zT*suNpA0=2GDEV--DKFC$B3A*JbCOznst}_;j_HQm^fNb3NXgVpR5_lm%f9$|0EuV zi#_)^wDFK>>QGJQ{9;zR_Ehzf;c#hhLnpxuqfXk2FjUtKm^3_`(uxHjDjv%ScmTlB z-2p%vo)7@A0)U2B(BuE})c?v}Sdm6m^KDojRgnwVxEYO#4HOO6z09%1t?1ICqVL5! zEO`0)$bvB6u)tBSWI~6FeTb7avF*vN9xE=f=x&#|*#}%GUzEIN$d_SZ1HP&fgT*g# zn{mBI$)xckqYW;meR5v>M^V0P^6cRB9FKkNhjF|(Rq!y;FIY?Q!B_6LI)kZRqf&g4 zdju86g4$3dR9$T4oPgAikF}%a6O_zB$pj9u%mT}{u&O~6Yj1Q~+6}ycSfs#Ybl{wy z?&a6a6TO6dVtP3#hX373`vPpT0w$4DGv*|*M#4PC*UI%87XnP^v&LN%nr0wsho=V0 zdZ+yG4mGd2iL2hHTWH=o)*o^tmYXvXwOnN{Ri)t+leHOqIj#3OVz5*>IyCeXW@Gje z*_w<;boBWi_dG{CC>A5n9HN`eZR}RA0CMf)M$2Z^d(U#0vxP!PJ#sR^5M}mP^HHqLzb-FGU1; zx^P#I<;`2&M1s~E(jAo`w|69Ola~yWez^4ga;k8* z#+1CSpluFA*V4ynQ81q-Pe3ne;~%q+gkJiua*VWlE4WJEbh zKR#zDF-=mcc+C4-B)$$K<WLQpn55g$lTvqgdRK1aKi!#VP|n?Mqct-RrV_)#PJN%K%Ie1r zte9>r`l$DH**F~<9Kh{tq!Gg^<*2ko@1}(i)d%w@c=REYe;&YHk+|y}7_wEaNozAW zTJs>-fb=tWASu220XA8it6supx!6}wY~yvR)6wNd{VjGr_$JK|$r+Q7nk?VD8hM2u;}z#< z;6t{L@@**%+tREpY_8rHX4vkB0PTi6=AIvKKkcuMOLS@IiypYq@*U59m$n;bwyl}& zd~i-@ZqCY3@b~o2dgDuF@rx1p&gvMiFP7D=70iw7-M<2nAR|n=@h$ffd8x>_&QamT zw#fY1K$1jUA+%*lM;6e zG*_B)`b%%=4*!1PzV}%v@+QRi;v4PYSUbi66S0t0a!Azzb+cBHbp7uGZ@UJG%%fXD z_R1hPH11DMMmVtlHKE>>axlzy-R$maX1H#LT4rGS`VhN{Yv$$Bwau%^zAe?F%jKlT zMj>Z?2KI-BJcbrHhLxAIx{pc^H+gHn**+=X-Y9{3+WDbv$Bn7R*U+xvw^N00OY$$C ztq6n>R{v46LgUje&f z-A32bc`I>$(wVfuIr*;(HKn&6Qe_4OtytQEdwLbW?rvKoljdzdwG5SV$!Sn6>Ip2`i;DFZ9Ru-uW4=h;?-d*eWaDE##z{WJa=Pgp z=P&GGy4mV4y2vM1CXo{NZw9}i%NAt5{-gFn8umsc8a7EZ?3#@Kj{oBj2UIQ~|C5o1 z-IXqbq#yLl|Mwv)lw}3#hySk-*a$(B|4`FSYK1f6;E8^)LUDNfKMoQ9$?`x|Jn)h} zM9?q)_d|N@Ml1vX^8e3yx)(5xIQrIwqhv@u> z;RlmCbGqqr&=s7TwQvV_sd~|ocJkTLvgHTqe9$r3WMhKTWFUG~UyU-%$p%J9sIQsg z1}|6QmmLEJ3Thn>h3hM*X(GY&RxTx-P;k+awI%LSyKkwwzOEkT^4W=N1dfM>3Y~%E zC*K=f?uaZNB`%@xYGN;MrtOXWB9(DSC;aR}oy+bq142lNc?*|KQiaQ1zML!?!uxYtLqMo-L5yc{)|c zq9zvL{=iYSUfxUeON@xiIV~-5Ap@xnE<;YM*qmR4#(`?;A9A8ObzmytcTo3K!f?sE z_nmPx9iNs~P4jG<+UbA_c|&rkzPwdPcC8Rv9+YQIz;b4@(l6%nzleK0Cqf z>TwRV`Ll9KYEniFuB4;|eMDS1jHh%UQrs7{hl({$)xi#X3TINteSDKL`?S^Fz@Y!n(#)mX zi3tvr*pJxV6^#l@L-UvvCZM4SxNit^ol_pfVkX?DmhAemQ{{qKb6@Gf!0?GFp?Ry& zjvdC?(dP%;A4Lgg2!W*_VJ@G3-LZw&GX%*+YW$BKXK8U%e^1&Ha{+nI(Jv=_=|QX`e$$@3a)(CjaI;Hvn6MKLQm zBkEqsJ5s0<_S>;|5~uqNtu6|aP(+#4WeM>`(Q0JCS-T3*eK%vn( z!INcee*DC%%T#|tIp(GB7r3Wl7_&xj&ozUccD{X1>#kg*4YgExzP6`qX{TU^7Jefl zc8Bl~I#W}|s4B}I;)fvg#>24w%uxj@Hn?woqqW^o=VvjcE@qT~1otHnJG#Zz*~Y$x zE-Sq&w%ZN$XO;`S&D~aM5#A*+c+Q+G-SWS6@`=K2>i%Eeb%@0&2`D2w z-VILAwJ=Rd)V_7Yi@Ren1mhS$BeGWADsdm{YDNQbKs z7I9$%(|Sxr2+K96xKw;&dsc_=dIu*$pOOaZs8HD< z}+pX!;F~!ZuuS&&F9GvCqx-73$l*yXT&54ZV##}K*$1SnvDxcE{5hFI_ za1X;;f(zy8_X9DBi=A749>x4IZbAr(6Ia`l-EC)&gb(>4(*zm|@$T^qf~~xWobvJI zq^500OLCpl(+lZN9VYBF+2X@MdWf}8PS3r+JGn@iQgbppiZFHaVq}2LYbCkxE5d4z z)IT?~Pu$0u5uyYoO?G-jDioH*-O}tL$FUp{XGZ70HFZ>G9pb(u>%>?uH+XfXd%+CH z63Xv9yfNU?_Q&b1UhtC0$vV6gd*-iOsah6!S-fRuYnuMJe$!;a5Z~N2xmh6RD$lR` z`>^8Jp^LGV=iWRJ*UkGrJnWd>_^YPX@rT`6US!L>{_DRxIZ`%Hc6KJ`&!8oz?h*uA zC6IBkQ;N;a3!Qj_DnFBeMC(NfiG`H*D>IvzpEYbL=>t!u<{sj2Q99yF>-#=+l5>(j zV;!gBP6)J0A$+-}F5x!^j*CZkXur0WLJX>>VmC~&Hbm^bc0$L6FHdG4e>B89<4-wR zk~8!i{|bReKCI!g_AYz5m8zX?gp8(+M<-MnDAEp`dXQN|-V>$PU^qhFJ!G}Gb!kXh zj#8)c+R;5WivK&u?ebAUqG|-Ke(qaGpd#5AMpa;ph@4)%9RN&)rJ z&Vd-3ASQ0lZ0KbzmA&n(!hAuT!M0Ck8dsJ)56#=xysTOORE1zdZ^%czi?khiEfVfJC~I1jV6Rj zKxWT=CAq8!{Z;kNtj6NtRrlT%Ej6#cw$-LQ)+h_{iPmO7PSAXG^Zw2^6xdZUCGAFPhvk!AIt}Ohf4uz}-)FuNO1sV6lyyz2A#%JJ=ZTEpn$<#)t7OWy%seIGQU zYq&f6FP<1Mdcma-0MT-CFPGCh^0oKnyW#sr1YHka#+ZAHaMF%$Mju6hpPnnFq6zG@ z_YXW`=YzNUEtfn&Ti>lg=N-)tTE)r$S1(9=q#{pg=X>6dG4pm<6hl^=?h9Im#qkbp zC|xWKaJH$m8o$iXCz9s(RHbV~-eC1Ictt#k{bE*VI_+UT>p(j~HtRbLz^(&DES4zo z{K;PCcUDZTk>xo$p>kQmmtk(5QfXPs#RUGxw~|LZ5MZr}?8M&@Y<>LkJM)G4eE|0| zjmAQ7;68JDScq^R3BIP%Bpv_89h+z^O9i;*-N&?Q@mLjEx3on^E6_AzM-_`P)M0e7 zs5?-+7dS5~&>Y_M@&p5<)zq#7lG|2xacM_Ldkv@5m^PKdAW>yeKY=fpK&@TL1~`p0 znq#VA8E5~N%6WjcC1Ok9L^Huf0s*cm&>9r6xl&4dfCY7erb?6&#tkuoC&61wu3HQY zYev==04{MG5!G1^pH(XjH{zJB`#8$O;A7oDS3h7;H4 z?|~cBJka{?!t}HGJe;bd*b$H{dn{P!oqX~y)-~kQUZ$VjU*J?F#fr06Ckv;e>j2Q@ z$PptJ{w{#(SZL{G(#_3lB;wmYN8*@&TLQGI<2L@sZAOi*W+=9Dz>s@?ZjzE9=o*~B zW5{&`R*$kBM*3EME{F$V_V*Ti!n2_+v3BZ4;|`|p2f5k^zj6jvkLM9^zmMEPZI&D6 zeoNp5U1U(xJj$TauZI8+9jLlmAvmO#Ie408OPz^iEO(K5fYTDsvW$8U8t zGYB-fA#?jkoYf9wd$LQ70VQv{_J)%X2U@X&AAGhUFL8vqDHEf^xDJ89n=!znU@ET$g(Rzb%u*Ze zp5{El0)2rIP3_!BT=kN|-5IzD#w*AzF+}|VmfZcrvf#QMW$8`iDUu4pLQvV=*Hj2F z*ink&`0F#JaC{$%N_RTGFEvtvv*-Lvz?0q?WG*%yn_OFJpU}GuEHL>j4&W22;d)3| zU;VA~*+Yb+0H@kv>KXW7z}LzQF5N6~@yTM)~5U!1mQTOBOT*EEP5WTyod~U7DJxt5bq* zE2aD$)nr62$@Z)W_!YcvIM2<9i`-d3Z~CeW(LCQsO$D$Z(KI)b-wd-cW=7;uQ4Gu9QnLNi2lU@%1=+X$cIme-j5O9@q^X?CtN z83Gj^tLTTKyA$D|OikU3XfT~diY|ZXNC{H=A z`p6s0kJAZND)t-|QU{TqXhdOhsqF?6C$7eI*cWmp&l5wAzMqd50f&Sw!0h-T!H63S zBL)oY=w}Zqr#XZHTp2z4;ZT1N^Gyi$9nD=9(E2+ zIS}Yq!{jswo_ax3QCp*xg5ft9nwDsY!Z>B?#n0S0JIJF=jI5+65gT$5Ji#3qku(%q z!v1=>kS?fFdjWnnrwWFZGmOZdU{{f)yu6L=eVBS{g<(Vw#f}>vk~no_d1;`-QaKU~ zj@(8(s!zPsNf8rU4jz)aT=o+#t;8^AuwPMk%Bm=PYv9Ppl5W>=XoXEOX(&wXnVQF0U(SO*+(w0^7+6R-BEbI5@L&3gu1{{pCIz zN^?+-skWw1jOlBE$Ca|-xoNAkpE{HXA=~i@Hk@)O4(y*RAZpP_mJwgFr%0Q;@%4HL zzeW~T^t<0_6%0ykD@z}G_>`>xrHO%2`V6fUrR$t5PHX&@8d8fKIgH}N?O*6=(f2ds z#`a1PcueZ;5q`-mY-oQ;?h`vTEL9z&O9KN)WhXE=a~t_6D}Se)B{sV5dVTB28^Mq* zQfUTg6-WG(eTg8;;YM@Bf&9DN2oUa+KrfwI+rxP5;gb@W8@MxV_+ga;19O({TIWf z2RieyDTF9}ibH2?pn@mFLtCi(sa@~Jh3z4ZdI$bS#ceKcM)W@ygdasn{4VQ~9e>1F z$WspXExXIVUk<-`>fpAlFIWjcF74d>gu<{74m*qq9OiW(y&&&1v897lj@4ZE7cAvj zT$;++EMlI&8ypmx{Kwp-~4IOb_(z|r>V*7eb#Eo!$^CHA0D*yL zyLxHL_8mFFciiOQ>m&5aLU(6CXtEo{Mmbv3HuXQIe3ukNR(tQ-->HZn&*AGTkV`hu zZ>k9OSH=#rD4s<~18{$#wrmki3Y1#3o$cI7Kk%Qjh{`Xkp^KJS$GHCp<%;ZLJs}3A zqLM|_P<*vC6Al2`Mq+?YzTt)4)k*6||Ll?avO1>MKjsiDI4t4IDcqGh#i@Yph}3-e zateH|j(3X%K-eCxc{>c8)u5=^_s7u|S>rho;8B8VUW7KSowBU+Zy4)Ymz9pU`-0s( zY4UHnN6CG1-jSNgH0qElj0Dn2q+R7e3^!Ne+A=AEgggPji~N^y0jtUSl;C{|Dlj6* zAQI+NenVE~T(o-~rCQV05gIj`?_X5CIwoqgC4)pnHPfaC$JSHdv?INU}X(`xIm19#<10sC{d&+8{Z*JHz z(of!$*NS3p2*0?PXu6xqyY7wdd!ZKQ+v&-%iZ;~rF@^n>D4dYqGD3MbvDnmmsL&J4 zJMT^M0vDArqs^$08QQNjY8v@bj8Q9M`4}p^$%IBob)+iC0H7KuAv>;7o9*<{wtyZltJJD9TuJ;e53OaLvw%ulLFSXz>}$ znaB~r@Fv-VPYiz;Ty94pPSg1C`wsv35?+HRV$WL>WMp1L;GfQp>aZ}V2oEn9zO5t? z4OejojP4_r_pmTL`p|!&YMyAkdn@4O0V7KU59)q|I461*w>7U&$0y%(Cw1MjW$ zWWPkGiF2b{gKVf15j$7RP44bTN=pjl6ZpAVq$d)$yh$5LdZ}2< z(5?8ToTHer`c&*>U@Ff`E?kI3v2f$GAF!-ijc#AHr=%MzNS_r0E4d-=HNQu}i|`vc z-aEl=_{QxRCZid;fw}0=Q6?6~M{9Ky7Ah}(LYs(ut^r}*y+q(0m5XC|^jB;*$cyye z5kienkY<+vzg`-?yk$mfk>EzZ*~l<>^SApRVRow+Uv!z{?nmee=wTPTY)CXbWG_0Y zD~$WO@ZpyrLv1Qnv8NK}aSMD}CTaFsZ6Kr8@*~t|R}bRdLfii4$s$Ii0dvayz>a@? zt~u7heG7I1(OPn~$oc+q*9wdx^*~2eI4tZyYyfGxwZslp>ZKW(j8Uc@;4b?|ufJ;^ z#Dr(Y*On^(R*-_Lts^K?uRa}5T8dv+q>s6kSKOB-JF^$eJ2#29W=G}XSrEX2P)Bw@ zCt5{LkBm|pOimM1kc6y;N}ZVvNxm%`?f1#LyHu@~KgVD@FK-DwduRvr?hYLp}RiFX_AMTt2_1xg0oXqsNN-)M#|ob}sIM&Wlv7p{N((Z%7kK zZDXEs+gNp{eGNkoWWeKFv1$sRCusg5nJo8!M-^N&=O$E-7;>uSvw}`){9>J?G%^+gb$L!$XwYfF4?J}_$_oxq+h`ANWWK1Ol&+w80MilqJorx4O9q7R zJ(ENs8YeTNZ+oYn2KB<1)iU811;^z>?aDjfxL>YFG9q(x1!I2kv*C2x4j^-*gEF(m zjj4h$&-4Hk+C8vi!^ehON;hFd&kV0=zEeBW?z^qqwakILQzw%Lv^wl%z}a=htNE7O zl7CCisgjYoj2)+CL6AloDbup!G8{NQk!%P@JT?O= zZeCFJzWOF@t3j^VXM_oTuQ=s281z2)k2_}z-%|$JL;b#WK1Ksdm#GY3kGw~kaXor& zB|q}eHoGOl;*hUA2N5wXNsx)UTjgK%vK(OZ%iJlvdbyGO93gpe+k$e;Uz zD04cFP-)YX0ishYer*rR#X3#BR!9;D#jKf+fd^*$!8?u{Z(X1uSItciE!kp6eT`R# z%GQJ~=d3LKF$otoLM+D`!CS+MyPz;9W;Ct8H#RoUL_*Y!8)q1sPq5>XjZy&F*4yrK zH-P;$L0+(BE8xS)61yI@lXq4an8%hzkH$VeCJuTJ34ql$8Kg8mjf_GqO%qX=0TamlQJh2SsIn z5~%6mq?_77M;7uiHl2w@L2x~8dZ|P~;GTI5f>S!J0SvB_c>occm8Jr?RidEJ;@KV` z{Oj^w7>9HV@IDl($NqY^_KktAo(9{jE@uNPGDz-K3szlTMk-{17BNiL5JVQa>HE2 z!Z1)&K2i39>zkXlk%dT>rcnCC%;z#o8H8Va{|Ol23?qgS{(saC0~iKAFqNqf!_fH1 z1DLAZg!a;)J>#cz+QwN8FzhuA-8D$I0H&&8&|R-|XP|ctw%wt5SRr1{8_+Lnbr^!- zCK!S(3mAf|#7%m7dTp_VcbJ>3IK^Quh%O#*#x8&k7<)(*?1;b?T~N0}wuVpH_E#67 z7Of-Qz(ds!A}}42Pk%h)}Eb%G|W?7i0bGW6(D)kixuaCIVb?cG9Yb1 zF!~aVO^(=6Ml|gNo)NKp#roUeULd;mC6|x6NskZP>9%?`9YY!*Iju8RO%^wR4F9*3vS zV9>pb9*0y5SSxMxpdYtZg^_5>g^>`U_iNZ7wIMqHy6m84_}(yz4nwv$iQXTF=`d6v zjDEzUf{2$-TbfipuuO82Lyn6yBNf_ zbXo=2AK*lE4P~=2H64V)7IoN(trL4>L8I$ei0#2?*k|U#iZRe!Wu06%Sk@n9#VtB! zLI}P+5CZwubA(F!BRT{R_n4cQW1;4m*=Xd5#y=VvuD5iRPju!8 zxQL&6(-nlAxC1K-0c(1-JR0fz)CQLSVtGAGJ!4ZXGgM$^B7-QCEp~y-m32qEf!0qP zeXT^ma=>ZR3$oaV!TAnd!S)W2BA(>L$+wF@-@;&(%!$G6y1)shd9{sB+sDs|!wM@g zqBWi1`rA-*hlwaoaR&D8HS|Q}&|4Oy{oZ{mX?PKV9Kmx6A#*o8BLp;nqk9J(fDDXy zuOA)21qk4-2pzzCBZl11kfx(=LvXG2KrC~p(?dYVybJTgM>+GBgzsMK{$c3PZpSgvgM5HI9+N*~NMYGV2UMy;R^m44bMYS;F#PM_PLFQ(@g{9=Q@(_G& zu7>6H>>n-oARjPKSA>fy0WNg|k3v{o*<2^!ekj%kos_x&-4!C7jb(>*P$e!&Jjn(- zmLR-IQ|1uV0Fl1A&|`bp2E?ydLDw>!=7@KgxNz}Y0?=MQ+%(T%I1pXq98m&Vz~CC4 z+0;Z94ExZTcTT}L{6fPxY;_tTog;;>K&lz#de zifvghev3YD=XJg0v>G_-`RwAgCpWw$f;IlcUH87G|1!zY%EW}&9eeNj)2{A~ho?HQ z<_FC@h!ZxeUwg{29+RErp>xsmdvJT&VE9kL&xk?=!r*PbvCoyKJn*qX8)NC#N**mL z-~j}?f$Sp}U@d3w3D>Ix!aX`JNym;DBuPB@|g|TqCC2#{CSJBs^CPSI{4N7MYDH*IGX zL6yghwewvb;9!7I3HoCaN>ym*#3d+q04=Cc}uXHU|`^!w8iR zFV}5Xqd{Td`AJG~t}H_3P2l|7SO|21A85Yf18)`cr_v8GqT4&!btKQI0$W?#PE{jV z2}|qRy0AB4vSBS4$b0zW4L$=83H|F#E$q#K(3HqPgWM@UeVK{>!@MEiqp&9W9pTeVGF#vf3G}7z?HYvH`sSid1|*p zLmr%}O2GChz~vVCO1zW(V1m;Tn89wf4#aI}Prke=0bjre@@-ovzZH_g!PU5v`es>O zL704Op=!RdSO53#e;?iw{h@X}n8AqG`^dF$y9TLV{dA3T@6vi~YHCk+z}zmZ!@ks1 zHq5slOSVgx`Mo)Ca81s^E?XWEk%8jJ74kK@K^I%W!~1l>2*0iS@D%-nIOX~e{ck2;9V<8hoaH|Lf&@pcf72Iv{qI`( zo5CLX2RS`;1A>Brq@VbB!d;wv-K1ep-80ry`2auyp?l}n!{EukGa=0aZs8i_*t;Ai zcRuMKHJFu;j!s@aWp?J)#NE@c1sKo%XeBjFocnR_N9$8;LGFXHe~e4O<^zqw(x^`o z63=oaVht3SE^Hq3wTScGegh}HS9V{@+!Z2?z2p{NQYSWS?q$Ar&nCiBME3ZB+!`K6 zz?g0$1o)4HCI|pH0N_6o|DnobQ~y(y^nJzv3mA|902JMs|84O~hD!vEu_8nSAPkY%C;J7_^e9 zi7(6;Kp_~YZfRsS(fjN<>~%45ZH=#P{MaY!)GJO4RxoYeCXpk_dO1Q80H#)})gsts zG2`G>mFgjk;?2OI4rPypMVmPVE0sMh`uMhAfCG43Q)L9p%Q;^d(}OK16sMdF4=T_g zNfD~ADW7);L41Cx3}yyy=+B`qAZ{LN*H^YbYi-JAa;Pk`8W&%6WQzm?ZcK;%$+k|oe5)bCk*U$66iOpgDYdd3SWkl9}$#M&Xx>we%alMyagPETZ zuBFP|>JZYhuDNnj6NFN|jV#jpUG#D%o2xZu%a!86!$%!$hCl!hChBf<41pb7`*85+ zOhuWO^Vie{7G~h#x&2D0OPdkn6H`jKThzy(bbK!0n%6QfN-!gkuua&LSSKfRAM#Or zH^;sVYmr%Pd${3ah4PHcFpgE9*(h*TISOBT_D>6T+SiP7H&~>My-Pur--opnI~DJK zK?@m2{@H!7XLPFb&D1}?zYs13ibk8u0DlF-qK%?O2`YpSe;E-$s=Tp`-09AYG#ji} z#)h$sHF^>(mF zIrOA>RuGkqAWy)zB@V zAY>7uwj7UQBMIl6(BxS1MVIkaNbX9=(E#~xx72<V)mk>voc(pYEC+z4M|4luSfuAo=+{?g{eO-bJV`cHD*VtaRMLLN?a+Pn>+6mFV z1`JwAxc1&+xjq?LwP9bcnO79S**E>*j1Iaujy(q2R_Spn=Wm0?RcKsvRt$BI#59EU zR!-d0BBc0w1s8*jD+WlMY`+g{XJ*$eZ{0?kqDctG3;CPO)Tk@k1I*W|H+s4w4OPrr z0}AU%w0ACmH!hDLN63=m+Fvd|QYOrvh~FDZ>r^^x?pTY4V4Gv(&LANQNUtMG`+7`%W;geH-lA$aksdLKvPw}-YtFx}((57yF3nXTxr6+sV zLuHGl_rIa_e+#Winvh{z${_pA*~8^86Aq^&H<+kSU8v-9sZ4T99I}+Ut=`Z(;{{A@ zw0iQ(v+*I;t&id?B!F#XM~+Y5X4Badw0n5&1vNGr!}%ut>^`1r*LhU}%z2+7;X%-|V5@DLEKQ4&3pUOnBZJ)Xvhx?zukFB225pKsQ|^S|PwBIjEs@ z^~bJPYQo;O6FVe#XAbFI-`e#|V|$AH0EEWP;pNI|!-PUqTJZn44(Gqe@lg50Rhkd!JSX~RYQOgq8UI_H;0C!2 zaMxkpY4FT`0{oG3IlKWkGmFlcpV}{vrJ-XbKpQiHLnMK1PzxuCL$8;Qy zR(p$1|F)qj-grVTst8y?zWhepsQMupK0JgnIcFnzsCcvT8vz--Se0kaw<+^_S+nR~ z3{5+O@`je`gsQ?jQ-t^hPwNa1O=xx2I#Xc&52D&=f78COSo`%BT?TB}X%Pm&J+${^ zY}MsvvvIUAC5TBs=FE2B62?S#s<)xs78n#*-Kl_6&=;pC+FY^)6%TbGb1?*sf@u5_ zjOlF*#3_`=bRvZ^?CVddBVW9Q9w8%3Ee;+Jzo7XIJ*s(1frWl2d;Z~|E;GFt6w1d9_u+`~U%YVksQkTD}B{5y%bNXFh%*q-$@kK^Q zIs>h=x6xM6RmUY`Z$A`(~PBet(DukN>VznXuj}-f^^3P?`dhu}?;bswefx zSZ4Mn^otWUhNSK~up3uuAzFk%L;voJ3R}HO12IXu1m=X6Ot3LBG4Q_vIi8MWjq`=EYSD1JHktsT^I4p8^QMOMF4+hzpbjV8 zWj%Nb?-@+%`Z~FGA~V~Mf)*|7Sy4td`c|5_v{2g;uj*M~72QhQL6+kf*x@|3hY>#0 zM*B*Rp8FutVTjwULHmCjj|G>x>si$GFYjI63HySO7NC{)Y=n*?EwV_}UIx~;3x`{U zu$~!Bz}KL7&w-QvArzGlwsmuO*|M`rU%S81w)VpI`K*#>UG?xhp9mx0uyV|_nN7-0 zj=Hmz4bg@=mHH+b?%A|?y*UJ`8P>_mN-Qj11y81)$ zC+=vk?d458lJu>==6W93*Liea4cQ0jI#)Wz@wAy_A%_;dM|o~K^bjk zQtGc&BuGW9V6$;%z@&=(nYD_|#BiGQs}(_NB~;_g4UT~M9Mv|B8LJAGsWYFb$mz0!Cf*H`ixIG?^4j12#|F&H1vczSDaGwiDcCJko_H16OkJ5iNTY>b~) z8xmh-{=?WcPdq1MuTYMi)9Z}2ytFdXBq*X!#p5b)rJ9el6@I`f%D>{T_3{0T1N$q% zvs)<}+^C(z@IPDAwB#!EH6I;{kYF~)HIAcUbQ$`nNTn}r{qY9A(u>rbHk**M{a1~J zW>2WIO4zMrZv62yY*6ZX7Q274%4ccDa13I&r%ZDxcas4;|6HrrAgQKU@F-q9)Q)9s zi!nz~X$kE;`usY@+UDiUeWe~mQC0*sXSV#u{^^3y1Cw1mGsXGe06D?~sY?`I3xf~!|FsRLAM(yR^tpYOB+JliFL||54uv?CeekO_$ zYZ={Ebe9IQ)Gevz){XboT_B)M>+j?abZgV>?FQXxHj`C_-8p-cbo-xM#qVZ`hVP&o zDrNqRdPeTPsR0&R{%Fh?&B=os)(B{L{k?Yse_(WuEL?!sBbx7e?eE-c0lliI(P5u@ z61#4g6us8bPrc8Tac!iIo*~T&s&D3nsj|%m!io#EG43)Q|!qUotg^=&0bA)hk!v%3ag>aP+7> z#(-0&xWFuvW8D46c$o85v{0*HD~B{|4|a8cYdK>Y&mjYm(3{5&p&*>At%R%cz_(OZ_njAc<}QlJZqy7e0{c`@^Zmv?ZBW*l_o)HW9*yg*pBjgFa-^yEH0f6KKIy@4jncAjH&hVN?)6%h z1Fuy;hM&U4F=+Z=t3AXK-g1zjv!u;i|77i%>&%}e2?lNp3n0RbZh@|0)UdY1 znEYW7t0EI~`p6thANbu=eiGm#=?fYkRzA`e`|CZFnj>R5+3?cIsxz!>x=j` z&?2EY)BI@nY;V8}p4M~wS)n?suj}6;kRemQB+y=;cMh2?b3ZFh)wnI3_Ytnb9 zzNz&+7O?xbG9Se-lvi_Wa!rBo_-KAmS_^RKhApDRzfH<{GmUn=>(qI3M*CxTL!hzW zagWG=TOQVZfSY`9tgxWaJSks%bIsy2mA)*2eGjV5xIkPjt1%FlB9R~&YxDZg)a@4~ zwcrS))rSkB&EA;C=Xb`45Pr4_g$x z%C|zFLemenK0Q!!A~E|R97Ork=Ekhql^~>00oRBOP28mOxynZocBWsa$D4se;rYl0 znN{IjI6G~otv?1RU+s;o5n@Gr%Y+!z2x(s7LM50RyvtTKFH%%7$Jtoo4*!@=A2&tq zVCnhD_oBHg4*>N`fN%yJ6jAS503Ns+c4tdyq9I8$I|&l;8DS>B>ES)z@&hvW?)(X& z0QlxEne?}fJ?&`mWI~s#&0K)NQ)7ctZd8I8YtE~l(x`qj^bv`CajCNq;^@~AwW$Wm z3Zu~A!QC-JRF6A0f8!Wt>K`}ID;58}n8fFDDdN|s&B!P9&CTU<)|i?&=>8U&?@~0@ zA@WgWST*3^;&7v279O+BK9rn0&M5owv+_uK-mLPT*__YdZQgi4E2>B0GLy|QyyB7Q z#X_@KytX%c_0!)?_JnKx)5GZ`u&n~pZ+RDD4AizH59FBdAd=@spl{6Ol6;^lbajZ! z^Us5lUiHZz_WLHsdBa$S6~63jf?8W2zXuQWYU{G|&E(B6!tAR*PAdBcCx3Bu0lmv! z|Gsj1xFLq-*_J20QRN-galfJgxX-2`wayD-#_VLx1_f^vEPp9&ol0HX)2M0OgKPcV zr0=X(r7LT!>MI8jqwNAEDx$ty3zH7eOj*x}4NNzb6U7xQQq>a9AZTAx2=DoQc?lOq zNN|$`>fBVo!Z_JvCBtF*rLQGzJ#-C1F)QUrw z9&UHzXE7!^sIr|ckB60){evnK*!!Yis*&&~20z@vQel~UYhN(}Vu{Wvp(uHDD;>BkUVgd^Z$b5&} z5~E_bGDv*yd;|{fgZkOWXAk~F-7~r_USh>P0Q+7$E75Ra)v5zQ-&VkD)M&xH*4suC zCHSCGuhs*rE=^sx;;AoQHepnkL;4Y)JiFU)rRve_MJOPLDEI&Voi`(i@S+NCB_}2Y zICT5AsfpCfNda<)ziz4Tv+!ozer#jAJ>~(e_b9(h zxBBefe;x{gwJb zx)fC9H9f7aV!>oqLY6K?i1Zfvho&QJ$BADhX!uNCB~jgp)z{ymz5>&4oj~>XP-Ew* zGSJ{bK&q#RCLfHm?lg7#<6myM4jlltSVf-FJKTt9f7EcQ}7ggHOleu;}Eaz58(a z`gn+NPZUb}%z`{8DmmhLZoNud!NJM+^c!-UYK$9)qj=aIo0*Q^^+N}uaROo18-z>h zBa%leTcnyF=O<1ZUbX>IwCHN|Zq3e6L|dXvlGc?LS1)vZ>ǮaYcjg=uUdmht*Dt9{Z}%(Nvpo1`g-;zmC))M<7e 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 literal 0 HcmV?d00001 diff --git a/www/img/avatars/owl.png b/www/img/avatars/owl.png new file mode 100644 index 0000000000000000000000000000000000000000..732dc88f028bd34f86afaecd66ebaacc199e5f93 GIT binary patch literal 15224 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 R4M-JGQP7YtxMAx5e*iO~`hfrd literal 0 HcmV?d00001 diff --git a/www/img/avatars/panda.png b/www/img/avatars/panda.png new file mode 100644 index 0000000000000000000000000000000000000000..e06893cc4da8fffca130eca86d0102e3c1eab747 GIT binary patch literal 12716 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 HD&+qFkR%aJ literal 0 HcmV?d00001 diff --git a/www/img/avatars/pelican.png b/www/img/avatars/pelican.png new file mode 100644 index 0000000000000000000000000000000000000000..547041fab55d905e297a27c8cb7cf544d39c0d70 GIT binary patch literal 11651 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 literal 0 HcmV?d00001 diff --git a/www/img/avatars/penguin.png b/www/img/avatars/penguin.png new file mode 100644 index 0000000000000000000000000000000000000000..295e7f118366fdd40e831b104a17acee520a1abe GIT binary patch literal 14255 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 literal 0 HcmV?d00001 diff --git a/www/img/avatars/pig.png b/www/img/avatars/pig.png new file mode 100644 index 0000000000000000000000000000000000000000..1f3f237862e9303fae7118f5822c0a438b975248 GIT binary patch literal 12970 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 literal 0 HcmV?d00001 diff --git a/www/img/avatars/rabbit.png b/www/img/avatars/rabbit.png new file mode 100644 index 0000000000000000000000000000000000000000..cf23843fc470dcf511363050b982854c201914ee GIT binary patch literal 12459 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 literal 0 HcmV?d00001 diff --git a/www/img/avatars/racoon.png b/www/img/avatars/racoon.png new file mode 100644 index 0000000000000000000000000000000000000000..c4d3418c3092da07f72bbf59a4191f5b73b058f1 GIT binary patch literal 13133 zcmc(G2T)T_+wUfH5Q%gUNRTE)ib|6fKm{q%1eD$s1r!05PJ*BmsUiZ>k)m`&npEj3 zO{EG_rAZ6Dh2);_|L%P6%)K-By?5T3o0**K*?sD7pWXAE-A$PObq#u2PFer}{WZ*;K;OXfpe(!;^hrR8?+v2Y7j>)TvoB*8vdhN364Xc>mw_lefMqA~LGJ-Z4Q9D6PrYDq)ROf{@#UYpvwEAm-@ z<<{E}foVsbGY}T2hDj9-3(*}a)SmMt6hSPY+W`(yXVDQR6ht=}C?)rt%_T~2HAXgN zlj@xq2p3uf>C_sR)6%zI!sMT= ze>!K;G0_7=K0KoYo4UJT+`0IhD%!3Y1_~trqn8RR5rt>)Hf#LbnN0?6ngjj?_g0}` zLe+Br=!pyK01UDKnrd%y|Df05?K)_Ho}|N)n=zFIK8*f_+)6&BqXy76blA=BY2Cp- zU8{(W^QT}SP!urQ2!%H?&AItnVCE9PPy=cmSYLW4OZ2JfVkLnnM>RO`vj+U7C)uhP z$J@tRdIA9!#f*&%u5>&2_B2FF3I-a)K;7T@_r^Lp0J}zuCBGrXyHfL6=Q_Z;LU%t$ z?ATx{H4<&ENf`i}%?4<)bEi3)@Pt z`>daxS}IthDAh)RrcJoM=EA{sjyP5@`55N)x@kK#p@t3sTp`fxbU;)#7&o<2054;} z!*|zz>7JlCX!3%^U>7wz53FPbB|y_7SoJgPcD+JU9RT)FU(Gs{MML*T(^NV(0Q(*; z`RXBkMA<*(rs>8>uje!;z(Y&GuiqnhgKXYHPzp5Nhb3xdQ1<*+xjGt6pQ4e}3b55s z2VFBN3qjL!9p$voBy~bnwCFnq>C4O04YZ&6>`l8aQ-W4w@GEyt=||!Hd^McKu=MUV z!SeuB4Db7-z0(nVPqN}~O8twl6Ckt(Fu$UA8Ou^XP;I`L_@-(tcL;vb_BgPHgP$WGC5+ZNaqef>riCq z4vn!vG|oQ-=8Xj}08}NsPheh2?c%VR=a>D^|KeIrIilg^+%kogd$Aw@!W>qeVKn#v zA`;j9GS=b%d2j=mJ?R?O2&FWC5yf$s^pF0{lZ#Z4Y=uVus-S<=P1ZfR7ksxVRp=iJ z0n91nRaX{MVjncr(R;K_VLErAfp|Q{{mT^!DrolmcdoeGFwJkG#?%d6S;`%fnJ{3$ zhJE@Wkk;hx*I-I$%#tS1f4$Nk*Ziliq*;~rcy2wuqG2dG;o~Zj`u{~4)`k`PS~!XJ z^N>K^A9BHq0QDE%cN_{i4y>u2|I_Zj`j;MV*-ndnzlB%h>T#oKt40b0oHK0YU{!HI^nWZ-@b6PVh!FVR%X(F!`)1h<3;dQrY@u$p???6EvrH3zX|I#SF z7D~vH>Jaaz3 zf`i%$aYB|E9&h4q;jc0mnW`X@+m6pzc|j%&m_bt|O3u{pUNu;d)STTr@EOzK;PF^d zT30%jDmlIxFdl^Js~q8?eARI2el95@_Ef0ne3{`P<0mHN4mSpgOgz!P926v3jjA}N zvW^*4pP5^ozx1jL!;PSMNIGiSjoUYwsI>w|?2Jfx>nF1|At(Z2G-tR_yzeyi*IqFdNA4c-eG2|iW zoHj0EcGTeSoUHi;U zb1xCe(~`hle?E}}aZDX*Pi5WsWe|F))r;IGdERTG_PUTEK*PXGCUVaMlKIlVf~Br? zCZ_X0*>e~()hD$vBFPt(X#%xc*b{;y4n>fWH4TSbbjJWrt4&g`=l9ZL8$^`C*4H16 z^`1KPms$1vhmVbX#*Y>17%Anns6*EDDBnxRFdicI8ip5tqWY?Wdu>w`Id)yrqiWn& zuX3O2g!dJjH>lwrcdvXdcA!>A6z;kq?wYd;&DaNId$r8ZD2vBXWMsHxJY{*~{sB9y zic@fFnpe%ZEoF7J!`}|HLL`Gv8X<)A=9FWq*y6p;4n*!o3#chU?h>` zzsVTk@q*_cTx~xJ2arDs+vdl>)*$4}>X=HQ=ct+9ZM;R~q4%^+Q~QzXKaHqF+YNpt zpVrHdm&V%uj=T^zAX+}I@v$AzdOTm3(u5UfJqh8?{34iJo-Y3a&QV9$^1*@@OxY5epyCr_YU0<>CkDYX@ z1!|#S=uU*a#f+7mNK8j`p}vH;weeD-vvu+BcMsmw>&GXF0@tNlljC6VRDDQOXVP7?G6qr05nBvhvfO-GFZ&yU~nt z>hTc7AU>XdJWJg9`Ynq#P-|4eyx=+gg(pH8!RrzC#vGI7R(}fMw+H;iW{Qz??4Ou2 z*342>Nr;9jk#oKf(jgBFSUs&xeZwbUM9at)=jw0#t@^6;s$;ms7|&*a;X!4Q71L0) z^#%X5_tT!|NC=>IPz(0c{B>D&cPx1I7o#uCCDR7oig3O$Ll9!>I3zs#HqEo?zf`Qx zGRGQh1;rwyOPM^1ZFDTn?~s9`K)K$pz5t%lf^L+yK~ZlRuOvmd*3SfFz8@ewXt(ga z-{xdQF^N2Qz(C1mqnU+`nk!41+Q1qb?C`*!sBIhQtd@f97v51wEMpgoAEiU6KL=7Tl*C0 z)c=sr8NFp$RDNvY#K}OxX^JYLUsgfwmn*%uv%qqlUp*(vG>NhqZM~A#RISl|w7U6j_q8m7{2+gKIVRfIlqvJmqvl6? z9b-67gnvQ-4GH$iCDhG(XQ)@-H1=XbFz9+WFkJj32W~>>9 zuqSdzC^Tax7p%ie#?o$V_uRKqA}j8;tN9B-ZmD)@l~0#TrQXOstKFgm#&P!!edm*P zOOkEWzOd@i%ZLU4LnapTH&%D=E_`!45ZS}UMDBl?wy)~Aj;ZwC{Y6j1z1!G*p_0-; zfMi&(Jic5fMJGWwCAJTNn|v$9r!KRakR9R- zV&ERqEi2MAbYo&sbN$mO(>-Jj?ZoR0$0lk2hC4x=iv68JLE8hkFT6<;jf{uCdCG;~ z3KaxhWA|9$@Nh=2lAbR%rtgk)vcs%=%Ayk&{3iU8Zt@WpmY-BzQJgEJ4KVUs@KdjA zh`hX|weOiS+J3;tw<}*_U@0LJ%3_z6D0Vf}JytYesj5hGcH+Y4)@xgzk~ZU@xva9w z+DYVuIQm5_R&&8(7sXuJ4DTBj ze0RbPzZ<5!oV54KAD-Q5?CrCi8DOIcptSfIxNZ9G+8t%?g87~jG2+UfH;EkyI&YHt zrH00(t0*r|P$-aq!8WoAS0I#HPqb1NboY%oILY%?`O~8!iS{Fg3lT-Iq?nKJKHhqL-n}0i z+R=PdLtJJxHwRleI6NK(pK3p$`?G$P>%~7oC&y5q`o+SA-ZB3{peiT;i3vHZ~W0 zniqK}{v&tEF=o%%~13pDp z3-|XW9sbX1q)~08nSoQeCWZH^Lhmb@BLus=-_u`9-l}?x}UScHCY%BZ_Be-E(`dTTTj!YY@Vd zOMS#x_W3a_{w;Nf9-93DMO*61ezP?v5n7 zME?8Ir7Z%{hr4;!=uUz8oS30`f<+;req+PQGkc2@ag_TsuyL2pzf2v5K1+x7ppde1 zndK+vp3@Vz%;Yiqs8f`DNh6Y5Ds~1w(bXMhc(OP}##HMwZN=?|vLSd$9zb2BXu2ht zz1!CqC+dHrmR`)%mWzr!2k|O7xui%KlzswozDo>jCGKz-Rz0oXnkol0eS&AmzBu)* zEf3!Z%P^T`1~-j>gPJFEvhFe!19<%tiBbrJW1CpPkyQaZ%4(8|9!T9%gP|vBv76(B zGe)&dFtnyh!?qDEfExgZ4{0;YWJDGfEAa6C1q#q04tmn?r`rMoN`cJ{M_S-#3LNYL zG{hc0DV+|X1#^of$voF#SP5FJPCH*J!-mUz2MtI&tqMaM(qYS;tr^w@RWyNSVszUz zX272VI{#=3A03F^#n27ZrVoyaTb1omKEeYS%6sd~l7}$B)q&2-3Pu(!J^oTKyY(Q77cWt(V}9yJPjp_nNlfm#55emG%4w5lpcg< z2dEp$EO~}N?Iv)TY~*_|qX9tXV|ogd14WbfIFU0B3Dio?QK0ybZ#m+40E+M)No54Y zgo5fq=Z^rEGyE)gEwU`FxxFC!^x8@AE|T!k*Pa&pcuM8wHkV{L4OFGaO3`%YivM%T z_b~8%SPNEq*=@oWdWS`e8J-2I3`F;4BtVqwGGl?LFtUdqdQrBI-V>)lg-%UGL8Bt5+B_$Z9rY_~TfB%@1Z;?1bkoA3iX+FZmuz0)y%A z!xP5)hIJl3C-rZ&&5G3fBI93M=YIOLbK|{tj)*#8LSE^h;Hgy*A90tf_D{6A!GvwB z)Hm_PydQMF1;yu0eCoEU7uUbOBoZw+di^*qC^a0oi6rMmHiW<@XK-uR_Q~c5vDryFHwfV9DLn-W3*pz2gQormBBknAJs+#)6;=nGF}oD;C~@K8 zw5-c(antwbUl-N>;dkKLo``#SEBn)zn{)9eKW;y8`E%iOO=nmGS1v)%UvH|~L(-~>^ zXNFzpE~9cE_Vvze$D2V*6AgIFs=q1R`?BY)%6?L4u?ee06^JLL=D7U*!7*u%hn^Kw zTl^Ast{7DQ{GN|NLPOD7NI~=63hi%>k?4=Td$Sgaq2@=q3mZu3;zr=1KwaDVqEmG> zU=O|W!FMaVaIk7twxs1;!h~OH6+XxU=j1d|gfg`74;V8y055~DsG(PSceY*mPKoaB zuNs!=kFoI?IIrS2ne17&&0-V7x}D@>Wijll`L4rC1x`Pcwf6C;Re&&DRv$3daVF}j zVM`W&4?V40_}04QVC%1dmUu;HzF6R`fs)-XIW?{h(?lFO(Vad5Z}|$Qwu`+}*bMnP zcq5{H#c`jX>jv~mz4blcC|VW|kIBgG?ND!mHyXr7R}6prH5%MCy`kStrbNZQ``0xj zTgcIN;TtoS{Dk-#@yznp=J;!i?E&vV#A}V91GTeVRfHvf`wZ>tS-a2nB`BI^Jden5 z;%6rpX&Tjic;|yC7Y1;)i3~n(x!P+3e3GZgmBhzKLPy=kzmL9Vgi~)CWBS#v3@+Y-)Y) zoLR#q_W|~$^!sZVn=RU(gH_Mm=^q?iaGp9}u~gn`&r`6XplmXe+jDYmDa+EMKJj$P zMW^5LhfGhCO?`mumQO-P@v0SOpyKOFx&h0D2)y}^b4S;)4dK#mey>Zc=6wotdv0+J zTawdDh+wh|lEvjmsUKACQ%n;QwXqXRt0S1|UyYc?CH;Ne+m(F(D!(COTIIcclb%yd zCD^&0<-DEcktLtPC#z#QpZ>fee`1OLR3m$J)ww^{dG$qbm2c6d+hsqIYE@;?Cks&} zILu0FCf1CQzl(O+J&Byb=L!Z|iutl;8K{ZemB zpCaZD$I&;7@uKwy2aORSUv-m-a|aXg3Haz%_M9Qu3Xtetfjm$H7l4+ZK|^+ zgh!eZ)E+c)MX_9DMEQJ^R!HiMko`Tm)1*~LnqbVH_C7$43dcbQVbV0Pve?~3g z#gzoFn}bgq5PfZ9-pl&11rz;2zPF_bYLDD~ak0o?A^hkqR>GU{>W%^xZp&5g^f#to zWkLQ~q|9J>*;nz^(}Qb$VwY}^k_H~p9hzs)%X(Fs)h41Ux8n+|@ZO%IhjqpdUMDM7 zUlyI@lC$xHV&I_bmqNe6^4XDXeb_^-rj}semhf*Or%q6J>@>8^ny9q<5`!2bL%zN~ zM7kfXeO>%Mk?-AKl##Gxzj4qweqPxmT4nv!fOG%GlGWQvJudTd&?PvzWZIdf61>o& ztonOY#msZuqj6pTmd}^jVxnc`IdK^Se%I<*nHl?vJ2TQIy=$+zFWk7+c&Z}uOG|u> zbp^nO$CMyT@VsK_TlCYWM|KSZR>R*G4rg8K_FpfVf{IJme+A~q%D59db8q@@EME7B zb{ZdL-EU4?@vvAMy!9=yYu|+AOF6m!O88!@gj$w=)ziMZ?sA(E5x&4ISr+%h1M6AY zD=rqAPSX#5{28H(j2QSFL^Y6Mz>=9XW7%+IcCY*sZIfJcL!~(}=;mICzGk-s-R}S% z^K`%V$M0P5E!%gl57sCN$8T5feh#sW9>{GR)3-aI(_d-tv%W1c@m^s9t^QHzhmR`7)QZ%%iGOiEn;R0P7i z1N`Ri$Bj#k9tof9zxl`dBb$}0X7?~RFRVF>g2-DZ7V0)95}skGqqmyJT{bOeqp$?( z?tb|f14zQ7w`RVx$brN!hN->3`BamNQK&n+A@6?06W(8r%?ximH7C+v8vE%KQe=dAy@@^oQ(29oJz*DY zh35Ny-|u(kKARNwllSdm?kD$#9{A)dEbBB%fdHHG5$M}l1ADWBjST`k?ee*eUY%T; zo#jOTdldCikp)0bz=qqDh^|iDdwSXe^I>3BPj}NPZ8yEXXHhDz!7n-&r0^?G|3y+W zSO&M?R5KjPj#7ztD|Ej(DtrBDF0Mgde6>bTGJk6dB4RtT^tqnRyJK;eLTD$sxB$eA9uKeCO{o74-d&j~K-y`TD1NQ=-d0 zUH=pJLEnB4!^aZm8YAS5d-?LN*ZJFBUg{aKc8K3n=($S@!L?SNVgjszF?6A^H5ZvD znUFOa^~RLkvb!Sa{r>Iu-|zV7khH4T98eAOA`E_q7vWEcW@W2{`DIQqP(8b&y;wL+ zU-rkli$vwTQgh%qq=I^5{&9JR=O?X8ytPbd&5YWUXhJ><9r;^pi#Km}O$u-ExWf8s z$;X=qR1iGB4^Ph6tI{iB;$Ob%UI~~Q%r{ALY=jJ$+=!JOdp!YYcd`GfkMtmX+eiVUq& zcZG|YYj5JI^x<3L0SDYJQOKu)Mq18_NP(9)>*UU{ZC#R6QEua$)t1Y$ANER8+A!!J z+GwkLV(D_m&s-LQuqAY%x3#A(hcrsip(D>f%wLcwW*VJ72Xb7fXvuTQKmL8yR(n)> zrx(l0{llMw&>#USn4emQPfb&Q71)QUX%5ZkAgZ`$E7WzZ8%0r5b zsAz`NbLZQ<%Csy59x!|Utvcbeh1{2qL*OtpeN{&_8zGS!zVyZ0Zs_wZDmaP^UiV2% z>mM?_HGJz!tRvyhf^6E>^tGd%VDn4Wds$f=@=8=U%-PRQVZ1+F_^|_*3=X5(t0iBE zJ5z8(FLo);exYsNd3$f6er+W9OVcRqioZV-!S*buI=={rDtxnYt$Nm(o?k_-cbc*p zZGMxRTjlB$Su~wWi1;XvPY(aBBL`%(Bd4~tn1&OD2{^WT{Hr(_HtY>SE|9$Vm}%Wb zZsxhwcdM>(kw6B_C|#45AU8;c_I3p>;zif5v?sPSc16qI^MH8;g;6z`1+~8$v~+)I z2)5pkwWEfoT<^nT$Os;SJm9oCrZ4e}({g`})88=xn#LpR_x?VC_@fsC3&Q0CO$Kr7 z3E+8SH-*iKI0mdPWn@y8V7FCvu0-`hj7e%aB=OVScHz!iqMUQ!UzHC}-DvgqMlC?4 zBn&nT4eT-}e1!J^yvool;GQ8ZdRIBf`Dk}R0e(A(nurQ+jHf`K#Jkx^2%Q9~rphi) z-zYj76xkMRb1GgErm*R(7Jf`f7VJqZ@uBBno5M-aYgzre3Ebt}0QDzj#w?>b@!|`2 zEADM3?{Jn5t!cNRTGk<637DL#!d zj)u@1gwv1Zvqa0Eb5~iaOd&8e@KF_wpH)-7BJeJ$2VG?kc-6S0USXE^xq!) zSkta1JI-ix311P*a)Aazi_N33IVpqyswSsqYl&9zKmsz9?lh?-fnrkTItn~>*+^+? zZ;}0=LHu(oU;V0W{Z#s!AtT*HsfoBo41Q}LT5{r%36Sl`h2wZgl4RWG;Ck?C_t8n7 zqY#a7^sHm>c52}Dk+yulVYyzycqcbj*n=8U;5dch6k-5{u+W}T*n;VcH5QROyH>q1Oprib-yW#YNI*!=?5CF*^O~o)J)_BgVFfub7mx0G3>n0SC{5=_@p;% z?}E??u%krFe!AuvPb+R{_DVt`2*$YGY?*is$I%MW0hu2qz1}qn8EjjW>h+Y70+0?G zVK6Fh07`cUnxve%`avCsB<4M*lpCcfsqTMR?7E%}qgoVDHR~hK*H~ zd^LJ5r4jqMejtqW7r^<_^PK)@pVQJ9+Ls3%3TY04;sO9_j6QS?Rw12J03;Zgp<5`J zGN2zgBjGoVCv?aTrPy!=YJ!-M$IT2-9TrCg9Xf&HS%Sawf7^tH;3l0uA%$oDU^R)Hr$x*ocw-!<>J77NGSCo&3A z*%U*ovS)$W?znn2A1;#3Yn+5g;)RT~xHA+PpY+;lU`b2NK${k8GVB~9vM76|YySPw zw4K{U)nomh`X}y9W^2Os+Mj$ELwlscZ46-Vp2%hpJ4;gwco2f6)|$ja-X6D9)Bki6P0X^LDK?;u2~rWyL16 zEyB{5n6U^}5W;iFYWHk-?x&Q$W!EX9MyVmx+2h|81})j=uSrEvOnR>$Wf1j+!IU^K zp8ITj=1QUG6D6HFxdySCj@YNX z{8f3QSR!fENtR*8*|_P`nD0w~XlhXv0WDJWGGlSf*uyr46Y0$N#R1#?(Te~GN$Au8 zbVaMbxIY&r$dkf+Uko5$h>c?2k=oF((ps=^<&ve6qA)aZ6Li<_$ zDg0lI_*aAeZ_EF`9Qb!}{8zaDwTykpjD_`L zo}r>`e&0>~8llu9%f6kyvg@(Dgd$H%*(d9l)HNo1Z^-F)SUYc7>AwzC;Jo9qg8%Z8zeNla66ioq#txj$t6etm7 zcxIPa)hvHTvtEOHDhRbm-82_6K`j2eh@V+g>8C-2v|LMJ*}_k+(s62Xm$M|04j6*U{~Oij|b9@u^hQ2efqI5X67vzsUd;Qju_ zhNJ~6l1yd*5RA)+V^U*Jqil%w4pRh4mHzK9kk}@lr?GIvD|lbxu74~_<@$yNvV$E3 zBV3j=1W#|k3Ek1Gyk~(DI~nQR+q(d}v9HG!-2YwC8O=(Ad&}RuX_V}LWUSE+C+)JQ zFxd;Lm<0*2Lr_PX5*uZBX{b#{|UPQuX%N1(crh9g>_ApY_ zL<&2m$r23LQD%I#NbkMb>Y&nr5*&go#-d(hK0oQ$~R2IyB=aqyyag|sv)xx=w&5ZZ_ ziu1zsIP%PH4{fXx)$5}VeH2jg{{&4Lg zO_K#Nv-(XcoZ)+it*TN-LFyh=$6}1$Wj1&$+{XTtTzif2!J|;jQLV}}_x9!ple_z68B(ClBa4ThWx7K>K% zb<()%93IAm@P_GSIh6{(G@~?=@Z{8@yZ4o>Jmm}8Hbv4;Q+cH!SN#<4=9ga^ESi>j z(ea=>QPA-5RP>D3Vy$(XU2*jfVTwwg0*yB5p6Sll!6+!Rf?@#r{09oOfC|dC{{6p7 rKwAF~#H1V$4aq#t760u*@sY~XF5OkhH;gh6E4X&$`sHFZo2UN+(POF` literal 0 HcmV?d00001 diff --git a/www/img/avatars/ray.png b/www/img/avatars/ray.png new file mode 100644 index 0000000000000000000000000000000000000000..f421efdbe014f7b6d3f00523438077dae4cefe85 GIT binary patch literal 12365 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 Z=LqS-=*ov_K83L0vijAFxfd)S{5Q#*syP4v literal 0 HcmV?d00001 diff --git a/www/img/avatars/rhinoceros.png b/www/img/avatars/rhinoceros.png new file mode 100644 index 0000000000000000000000000000000000000000..0d2601ea42a2ff3fe5d9533960e32d1351e75597 GIT binary patch literal 10292 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 X+lF+hab1FX2ig~Pf6uvK_2_>9+nE5W literal 0 HcmV?d00001 diff --git a/www/img/avatars/sea-cow.png b/www/img/avatars/sea-cow.png new file mode 100644 index 0000000000000000000000000000000000000000..6585715d8a040b2a7dbffaed180c4effd377667a GIT binary patch literal 7696 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 literal 0 HcmV?d00001 diff --git a/www/img/avatars/shark.png b/www/img/avatars/shark.png new file mode 100644 index 0000000000000000000000000000000000000000..24804b75aa83594b32334d8911bfadb79f87c54c GIT binary patch literal 9692 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 J{IfP;{|6qcAf5mK literal 0 HcmV?d00001 diff --git a/www/img/avatars/sheep.png b/www/img/avatars/sheep.png new file mode 100644 index 0000000000000000000000000000000000000000..451bfde2920cc5014cc0a004bb72222e37396698 GIT binary patch literal 10609 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 P00000NkvXXu0mjfoiF*j literal 0 HcmV?d00001 diff --git a/www/img/avatars/sloth.png b/www/img/avatars/sloth.png new file mode 100644 index 0000000000000000000000000000000000000000..2f7322acfe1a0d5a6ea21ea0d66b6d748f824673 GIT binary patch literal 14905 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í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 literal 0 HcmV?d00001 diff --git a/www/img/avatars/snake.png b/www/img/avatars/snake.png new file mode 100644 index 0000000000000000000000000000000000000000..19567d9602681a2d66a5425197a2a29113c3e85f GIT binary patch literal 11368 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 literal 0 HcmV?d00001 diff --git a/www/img/avatars/spider.png b/www/img/avatars/spider.png new file mode 100644 index 0000000000000000000000000000000000000000..4c5fc5b2791eabc7e898370dd8e8633043fe9e20 GIT binary patch literal 20064 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 literal 0 HcmV?d00001 diff --git a/www/img/avatars/squirrel.png b/www/img/avatars/squirrel.png new file mode 100644 index 0000000000000000000000000000000000000000..f4afbd32f6e8229b5e19e6232b027ef8501958e0 GIT binary patch literal 14305 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 gXZHZO=;=%p=Qqr$wcdy_L!`k|pb8 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 TwG#QC0|0i}JMAd3BcK02*dDU< literal 0 HcmV?d00001 diff --git a/www/img/avatars/tiger.png b/www/img/avatars/tiger.png new file mode 100644 index 0000000000000000000000000000000000000000..b85ee3dd19e5819ca70fcf0d6c97f16179879052 GIT binary patch literal 22444 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 A?f?J) literal 0 HcmV?d00001 diff --git a/www/img/avatars/toucan.png b/www/img/avatars/toucan.png new file mode 100644 index 0000000000000000000000000000000000000000..d16afd859f2a21a0e532a4cd08b1ba892ec05b75 GIT binary patch literal 11365 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 literal 0 HcmV?d00001 diff --git a/www/img/avatars/whale.png b/www/img/avatars/whale.png new file mode 100644 index 0000000000000000000000000000000000000000..db39b49b1eab5870ca0612564444cf2b9d54d3f3 GIT binary patch literal 9451 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 EFWXi+^#A|> literal 0 HcmV?d00001 diff --git a/www/img/carimg/aerial-tramway.png b/www/img/carimg/aerial-tramway.png new file mode 100644 index 0000000000000000000000000000000000000000..668d19e40ce83bc7aa5f75eee2e728c2e71148c8 GIT binary patch literal 4247 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 literal 0 HcmV?d00001 diff --git a/www/img/carimg/aeroplane.png b/www/img/carimg/aeroplane.png new file mode 100644 index 0000000000000000000000000000000000000000..87dbecb6a18faca8c26b248e0ad8273f98a58d92 GIT binary patch literal 13091 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 F{XZ5cG(P|U literal 0 HcmV?d00001 diff --git a/www/img/carimg/airplane.png b/www/img/carimg/airplane.png new file mode 100644 index 0000000000000000000000000000000000000000..73e764c5c94aeea5cc6b5af8c8f0a4d3d5bc72c2 GIT binary patch literal 6880 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 Z1~xqMFZD#t`N7J7%l5t73b*3U{Wsd+1qA>A literal 0 HcmV?d00001 diff --git a/www/img/carimg/auto-ricksaw.png b/www/img/carimg/auto-ricksaw.png new file mode 100644 index 0000000000000000000000000000000000000000..bccbbb5e6e2251bdfb2cece8b132ac8b7a90cf65 GIT binary patch literal 11888 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
-{5?f#sw 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 WdW6RjU$kFPm^9V&REw3Z@B9xLurlZX literal 0 HcmV?d00001 diff --git a/www/img/carimg/bike.png b/www/img/carimg/bike.png new file mode 100644 index 0000000000000000000000000000000000000000..b7161ff1d1fbbe5744b5112b0f347d4d4d7c3027 GIT binary patch literal 7945 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 literal 0 HcmV?d00001 diff --git a/www/img/carimg/boat-1.png b/www/img/carimg/boat-1.png new file mode 100644 index 0000000000000000000000000000000000000000..ebc556e9f6cca124bee063e702adfbbb092cd209 GIT binary patch literal 14793 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 MPEEE%+BoR{0*+p$IsgCw literal 0 HcmV?d00001 diff --git a/www/img/carimg/boat-2.png b/www/img/carimg/boat-2.png new file mode 100644 index 0000000000000000000000000000000000000000..54c52b449cba1428417d82f1492b431c06facf6f GIT binary patch literal 13772 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 literal 0 HcmV?d00001 diff --git a/www/img/carimg/boat.png b/www/img/carimg/boat.png new file mode 100644 index 0000000000000000000000000000000000000000..ed707ff5e68be265724d2e00898792f2896b93c2 GIT binary patch literal 12519 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 literal 0 HcmV?d00001 diff --git a/www/img/carimg/bus.png b/www/img/carimg/bus.png new file mode 100644 index 0000000000000000000000000000000000000000..4cb5d953c1f6fa8bbe4ed602a8d3f43dc40f707e GIT binary patch literal 5759 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 literal 0 HcmV?d00001 diff --git a/www/img/carimg/catamaran.png b/www/img/carimg/catamaran.png new file mode 100644 index 0000000000000000000000000000000000000000..77fd3bd3e648ab559d16defad8a636668fd520df GIT binary patch literal 11066 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 literal 0 HcmV?d00001 diff --git a/www/img/carimg/chairlift.png b/www/img/carimg/chairlift.png new file mode 100644 index 0000000000000000000000000000000000000000..f81f7e0a3d27a8fbf4af2dd8d77dbf6f8767a3fd GIT binary patch literal 8409 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 literal 0 HcmV?d00001 diff --git a/www/img/carimg/double-decker-bus.png b/www/img/carimg/double-decker-bus.png new file mode 100644 index 0000000000000000000000000000000000000000..9c79098fdcb03afc218efb393fb824e03de2501d GIT binary patch literal 6219 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 KB_2Qj^Zx)+ncubm literal 0 HcmV?d00001 diff --git a/www/img/carimg/helicopter.png b/www/img/carimg/helicopter.png new file mode 100644 index 0000000000000000000000000000000000000000..05a018b709153a3b9dfa46915b532bd3594c9e26 GIT binary patch literal 10790 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 literal 0 HcmV?d00001 diff --git a/www/img/carimg/hot-air-balloon.png b/www/img/carimg/hot-air-balloon.png new file mode 100644 index 0000000000000000000000000000000000000000..a05a93d14a02906a3af78f72778fc904d43c9305 GIT binary patch literal 12310 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 literal 0 HcmV?d00001 diff --git a/www/img/carimg/house-boat.png b/www/img/carimg/house-boat.png new file mode 100644 index 0000000000000000000000000000000000000000..23d4a2013e629dcb6cbb5d48cdd6098ccbece2ef GIT binary patch literal 9701 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 literal 0 HcmV?d00001 diff --git a/www/img/carimg/jet-boating.png b/www/img/carimg/jet-boating.png new file mode 100644 index 0000000000000000000000000000000000000000..429a43e9ab520c10a90d4e312a05375569e6449d GIT binary patch literal 13481 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 literal 0 HcmV?d00001 diff --git a/www/img/carimg/locomotive.png b/www/img/carimg/locomotive.png new file mode 100644 index 0000000000000000000000000000000000000000..df725bc59e528995c485a6fd13c2624c69b4fbbc GIT binary patch literal 12344 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 TGhH+u2rNu(zJGGm>*s$1VlUY= literal 0 HcmV?d00001 diff --git a/www/img/carimg/minibus.png b/www/img/carimg/minibus.png new file mode 100644 index 0000000000000000000000000000000000000000..674cf052c4e1521d435b8d07cea348c846c262a9 GIT binary patch literal 5625 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 RDi?r%x>{#7bN{jp{y%{>V}<|# literal 0 HcmV?d00001 diff --git a/www/img/carimg/monorail.png b/www/img/carimg/monorail.png new file mode 100644 index 0000000000000000000000000000000000000000..634699e8e21e4a0c692d9a805561f970809cef0a GIT binary patch literal 8348 zcmb_?2UJsAx9&;-LK6`IDMGB+LFrNw@X(Y4{30DCdNd%?1nDIkIaoji#Re$BauiVn zMS4jD6;TjSkWLT~k={!n$z40>Eo0m<-v8csjzP-WYt8z7bI!fvMH?$KaS?eD0D!oK z`5y-Xz`~DMKoEp)(;gyoD&Vi9ekXSM`n#u&>dON_l(YE5=uk-8Nax{8uI{1CiQpjj zppn3@Ryk5h64!`EUu2BiuM4irl<|n)_QxB64C9KyoyI1I$`H}Uc-KR&ugvXYZJNRl z8U1rZ#K`mHzrNhR7WZbe@B;DgO#C&SjX{dE=Odj91L5y-*IgM23I0)26Uv&KvwiF` zgAH=;*Z)DPyCYX17-K}4UGePM=oJ!Ir>jfWSG%hH&j)nvcP{R$cz4Yhi>|&it+rF6 zkz2lecDWh87&Ug&q86D6318QhmQYanfX<39pm7GPZdw)3xo2+z)UeMi1=^BDX{1J% z;Ywf8FH2*jNw>P#+`7AyWb(bBu9u3>c^sEV9Jdk~-?^%G?Vb_(F|pF&t1H2#yYsdE9Kagaw5f|)6A%Q`#S_| z^%fk4xV}~Gw^IEkv&Gmw68pcV%jM8C6c`36HwcKA6?ZI-q!d>`@*BrdnbLOZllK~G z{s0?klMEGZ2(hcHtuTh60@4S7N55DG^*ioC>qTHb+eZstnwSY`Z+h=mF9<$-?U1vn zt;tTHZov|Zl4yY^N3?sr-TxYL1Bf^|z%F+x^?_3yFz@eUDAFRfYxEr>VZg?{xJ)^A zR)eJp*m#ev^YQMW@=EYmNq~l}B)CkQp_vtqJMsE+G04k*)NzIeDOm)>bn)Qr`rtWP zXCCt*mAu!5`N<=HJ&<1<nJF$IvY5QZ_a5)y+E3e`iVId;vcKf`)`Z)@qvt8_ z@DUEK+QL^f=VQ!fAV2r!Qo*JsiH&&}^P#uQgZouq;mNv&R~wB~0ixmlT1DRzn|`wE zDI0^Kd=){?Dmpr4mA~|-9b~)`2R0UCZ<*YN8WW&V;hm|RgHa0*Acy({*W<9v8foyo zXj2iZMH7(CXT#E6^!>5vTW?;|8}J6m8TZ%M%&dUM+p{rB<_A-9DX(!VAm!NZA}}rk z5=Y~sO%m<^n+IBe>8L8mralMh8S>JAIsO(&-VU~$!gcQi>Bn$Hu;r;~nE=?RFX{z6 z>w{!h7h|?)fgYB@N|LMTQ#+0-hSDzr_GC90V<~C_vD_y=_VJc3*1PG+33jSuk?n%y zr)Aq~b`Gxyh!3ymn5>=PX{v%6R}4&+|K)&DM@JGnME@s!M(l)o-WtK7$NRF2@9HW# ztI%ZjE{=)?=smAp92;!~*FR{2*smU=vX~(2C5>mCo^>j;eA=Zm4wY^366dh1T8vpE#y-k<-N;!Ihl~0FTI*`Oo}VNbWDX+gxQ-)~tTbxpu5W@0TeQTs`G( z>T?a>VwcSbyKFE3DC5BZ{=9{?eINK#s(Gxbw9^I z$lm^kZK<+QSyY$x@IRcR-yX5V1N7!Xue~h$VG}XBqid<$%Yny;*qwMB)Lf>j{x!bp zN#m-W-E^E!o@`|Wm$ia3mHjujNUD-n{||eAv(Z5KSO1?=n}Q-veM<>xU)vuvEF2Jj z!qp~aoFV31d&F&N9iVQjp1Ut7fM-5cmF^*`p18fwD3@XcF6kK^_DKCIWL?FN&;Rg`w1xf|LL(=l< z&WE$n76N=diKw2>bYU%kCC7>Y$_@jVNGM}a9x!1D3n2>thB7MxL^5nJz*R#E4Lt=1 zTEOixEaIvSo@2m~kD36B7;kG71m--GXeiO<9!fLy*C+-}V~YjBd&=e(n0x8s6IftQ zTmI~c1D7;=Bi8UvoA$#t$6}wKUsyYlJ{Gi((XPN109i>@1kEga$HQ67vQ^d?u-Z_Tzt}Nt)HTN?CH~0|&rH$Jn2tpr z^8}7b65avchvO(5iN2{GzWMOfB~1nPb11n5fbRkbN@^JJXiR+`TsvNl8Q%(ssjU>4 zpGNoo8xofK&@em*ZFYA9pmjMz^i)G$JAlUs2zKa;2|_l^MRT4}SL;w7526puL_)MA z21l~j5d9Xgs25P~O2GV1jiHJ1adcf4aAD98SonJcnJA7*wSl1^p-&1*#gZd^*u*&# zGQ5ms3i1(YQz6Kl17M*>5Un_d>e&%YFI4cLEdbOQuo9$2V8NC^tq>@m0QgQuNG1Z} z7<+mv=$=$v;fmh^-bdiNZTV(EP!Y$(kph53P-Ea18#)$78@d4F(*nuY_!vO9S3+aJ ztr|f(b|vuo5PhR*Vf7dZ?%buPP~5q(?&t%jOTZ>AS*Z_^70L(L^xZOwePlyS;&6M+ zbKFXhsXi5>sHT9XXmB+kXQ6R~p$=t37l8sue$EM^3qZO8uZ;eQw&b?;t zkO9Y??oMIi%2tN@JoX6ER z{0?38vNfNcDt8zP@Dl{<(-FN5#qboO{}f`tcYghAlHf*o7Kn(UPLOXlZ3T$fFQ*+y zg@^G3G_xPt!Tfq6L=^@ikGu?GZ@rwCZE>W%D}0FAzzBqcA%UsXSegVR zQmY`7t^7XN9<6=x%<@3VfD%AGsP2U5`FQ4lq?u7QK>yrHX!aT9o(aHO92xDP2NSug|Eo$&G1zTzltQhoZ-XPQ`5Ap$) zvQ6fTeg>Q*YfBx?wScP-zKu6}Ji;|5x%?9`h#Ew7D503SMSd!osbl zjzarG=`>|_6PY}VLDPPyf0IzI=?x>!k*GNoSmE5NWn6u|5pe~Iy11_jJ05g=JLVl4QMnq~{7{Sy8PlJJh)FDp^1 zrSFOSFIq3$=QoR*0|Y?XzT9^Bt%%G*`@oKE%cwxsYlB@_{7YH`8XNuUJx@ZJ@q!p4 zkbmof4h5|{z>D7gEgOhP>Gs&_=qBay|$&IW+15614EWk04xZgiDfH4#!FCPzIOBT zRlFK7^WD#(E%Rsdi3*`T-Ld@UajV_%LK#ouy1E`3+hWVo9!zc}jD5xd47k0PuLNdG zBzHsg(0Tq2C?^DdQ^lc(AKWt$CseZnMf4UR^g4!*#9%I4Luy9k__CN)RB&~IN|QhV<1mK}@lJZjigQQ_~A z_iD~0p@w*Fu9%H;Tz^kB<7B_v6m8DlO|0`4{f-ymmGjZ4h5Y)W(UD35MGChyZK>I9 z!D8TU1hq$nJKN-v(YxB6lKsIW5}hGEL%|M1G_RXJgu7*9YfQ<# zV^?B3;eEy2xvmNN-=i1ZAL;11;&1DzT6lp$y?aLj0zBM;%?@Utc`C)M5NAkRe=a#i zx|lb|`rb$Sw?RUB4htFyphpUF(Ko@mLu^5SRhm5mIOMif0C9VB|T z9)ABNg(cbM%WgWZ-14bh?^L8)x$}a9Z>(DX)V8kkl?B$G`d94}0y8uJdbang7usr& zVy_ybjxGhEFRsO7Tk`fc|Gi+~n>9u{H8*nQX3C*vn^!V7hZgGM5>C&|Z(P*BT;&+} z?E7>NpOqgk3NX*C=qXwo{)MzAsPsu%lI5Q~-BR|;vi!v}yJD)SQ9ruAMednsZJ65% zvC*S|R4cz}dh4^5!KTfOWfQ%g_=m5&D?v;2YDU@h z0heVgTB!q1xlfmMXE4okhw ztuJE8Yl;EgtdPX5SD0>IyETuLP;xoMOCf+}`OWtQBvK1-jeKs;>bO~HGm`f7`+;b| zAJ#et2cx{cS~dFZcqXpgyJIwAt9}(a!ch8{A3XKmE}q&Z&2pi)Hs8=1*{Cjde@bPo zS|I7IXIxFOQg7?I!PX}cmjmx()U;EY2;hWn*4#wcdjH;bIo4Uh7r z8k`5{2A?ykLLTkb_=mBs0ptk4zHqfK{J@tm~rW|>!@I>amnKcf-Gl(Zgke14HauPPpe4vet<0>6S z@)-V+3l~Ge_lOA^nAO?S3nmPoj+P7>-XTwjD^Fe5!f*nrb}70{tV!(}9(c^2et~J( zD0`pX%Fk+SdG8D}Gd3dILp7xP2h zhJ~|cKOZW8yR#uTDuVlLg>vdlFHf(*;b&9Tz}Eyrr7-s+Vk7geYYnyjT&#*dmN8vN z7vZQg2%TT*R*cc_xSvNeeIr@%P1D8fV!KRV5wVfM(NxYw-+AkgRtpa(m0Q{zJMG=H z8l9fcC@X#F?O;j7%-Gt}M4yN-^DYy-#tO$>z2BS;-_@o3G?%ls7`@GTScdUn8by42 zSTZQ5QK}v`Aw4>w=4Y*8Emj$|nI%QRF{vSP*8=S9w^v5nirX|U@h8_k-_8ovtVC<_ zHaKl3$zAIYvlM0>0lE3WYA|28T%FBZ3}f{Q^JGTFW!v8+4TVkh)F_q&5c0_PN~9WBCVo-ZP`P3!)LrZh`%yA?}uh7Zj1 zJFUUVyX~gA3K%t+u}zrUo!E4;y#=5afbor3=CBOdlw*ojD-l5A@aVT~t3WP{kvXXG z!KAOp{NG=w@xen;Y9*3T6e@5OD=kb3f|=WhwC)5pS5eLI71}{I!J-$Wh0zO#HUes} zZC5Ds?fDU3E|21K z^<28J%W|PaC>KinpK^aIWF|o{yMT=~^1}bStK=RuVm%30!m&i%yA5JyV2e3WSH$G# zcJ0HeRSFXP$RX z+0Y_6ZG&0^v(Lq2jH(QhuH21pj%{Zxa$C8pvU0QtS?Wpi38TSv<*NkCM!k6D3$w1_ zKLV4Ah6GD0DEXBoVJp^_@xoU;y8g;}C~J0UqR7fU#Dx@fU&?TH-CR6qDgBEVkkfW$ z=}P$eKTBAF!7brcCB0da*@l}>uNtaq_nzwvA9~`%Jw4a4IQ4zLH{^XtYRGKzM19PDv(|Q+S#p~`P8NsE;sgoZs zMcsOQAPoEgcivfY|CY$IfajUj41FPv)p}SLt+-ksN(Bl^H^l`huAvEZ*X9V@Q*bnoWFpz!Fl9;dKR$P}*uf32zMgpXkRUMoi&HQ?&>r1?$y-rg6b zEy;YeR<70`&%9|cw##oa_?k3WkK*&Y?lAo7dpibhL7;_6a}P_P6-Jry!%8Q|$L7qp z%o~#>>&;32vIJy={fK{2J`~d}D2t6lk=WN4-EB-(;q~kE1+T_!W zY#j1#e$*pq19&$Z3b*qv83eM*3erxpRdv~G>63mJ(fZf-QeZx6=>_T|{ocMP2k7Io zOH?gvx)xou+_tTnWnl*{Ae;5H;E;qk7XZ>_lA)6C;kk23jHFDk5_8$Mwm%_(s)Xo%kBytFvJJdL1K|(ETz~ZmG4w(iB+k#FoP!!F0N=lxW{sQW;KXIpO^-dd^0L zXv9kb+XRFbPwJBLWu1m+!!^BeMC_wSDMe#)wUqoPBfHkoT&DVy_o4VGEdp~EP?{=AF~O4pI>3rfb=J)?f#NZm&X`ubK zU3@}|{$07tGjBGsJB>tVQ0L4HMDgTO&Xe^^rFF@BC|d7dP?X6aQK+$&Qj~EhpNj7N4L_m zbO(Hm@I>G@sam&=Cb}LzC{AL4@q%TU?z?V@0`0<;HvAp#Qc>4o7f>*z#na>+`Aa{x ztyoB1$rt=Fpq}+NU#l;!+t-+Xxz5!`7WnwB`(>;`#x9_r+ODk0PIZN(N39MJ5aM`W z;1`GQx_!R;_{ZQAYb~^jsPJmOhyCIuT0UIgCFvePYeRv-&!aMYtwk;CXd8Z8t-YQv zQ?@&uA<2&fV@K25(+M);!G`j`6;5S7`|tk8ubnPfK6UFyB14*g$_>oBNb;qtH;bQe s1%=-l8d#V3uDQKh|BEhU^(9hWpYOo}x+nZk0svT;SpD(bm~!?%0H76-Bme*a literal 0 HcmV?d00001 diff --git a/www/img/carimg/motorbike.png b/www/img/carimg/motorbike.png new file mode 100644 index 0000000000000000000000000000000000000000..34cac6c2c5f55d5d807c0effd1d1875629fce7b8 GIT binary patch literal 10760 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 S97J*<0D3w`CrY&(Z~QL>TJN9$ literal 0 HcmV?d00001 diff --git a/www/img/carimg/sailboat.png b/www/img/carimg/sailboat.png new file mode 100644 index 0000000000000000000000000000000000000000..b3f77c08b8483186cbbe65b099635382bbefc930 GIT binary patch literal 9980 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 beZAz~%D>e-@szz5o9J=B4L| literal 0 HcmV?d00001 diff --git a/www/img/carimg/sailing-ship.png b/www/img/carimg/sailing-ship.png new file mode 100644 index 0000000000000000000000000000000000000000..9fbccc0d2c7bce4b18198320dedb730e47eb4c99 GIT binary patch literal 9919 zcmb_=2UwHYw)Re_QjDlb6R?~S6)6JJL$HAg3NtEoXd)oJ1f&E=PyroAP*FfyP?|~$ z9YIJ06{UsVAs|W(5PEW9h^@<~$K@*pn!h?K^ULs<)Qh8L z+=?~72Z`|AUBF;-7n1C&7A$6#D_0WHc&w%*Qlg+?1x;RkX9W$+uK1hAAQ9vIiWI`4 zlg*}wP295z`Az36)5GK9`(OdKw5T1JQ2&Es)$bUyBDRg%0DPBZ+SYup;bVrhQZzby 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 g+oL^?@C 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 literal 0 HcmV?d00001 diff --git a/www/img/carimg/spaceship.png b/www/img/carimg/spaceship.png new file mode 100644 index 0000000000000000000000000000000000000000..f123dde41b1b071ad3f103aab9ee3b9629c0dff7 GIT binary patch literal 6114 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 VZ^N%dx9xBpY;|&Td|)4N=I`a`%4`4t literal 0 HcmV?d00001 diff --git a/www/img/carimg/sport-car.png b/www/img/carimg/sport-car.png new file mode 100644 index 0000000000000000000000000000000000000000..6ae0297e1eef5d2efec37484d87c19d9ee5e240b GIT binary patch literal 8863 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 literal 0 HcmV?d00001 diff --git a/www/img/carimg/station-wagon.png b/www/img/carimg/station-wagon.png new file mode 100644 index 0000000000000000000000000000000000000000..d08b2e22ec0a0ace3705db345f16d41276c0bff7 GIT binary patch literal 10002 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 literal 0 HcmV?d00001 diff --git a/www/img/carimg/train-1.png b/www/img/carimg/train-1.png new file mode 100644 index 0000000000000000000000000000000000000000..0cc8e8dfccbf0573c5126a8dfa5de7a5cc0ef941 GIT binary patch literal 8723 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Ξ zUbb(EN2(#Xrc`jmHfgx$madI7je8Z{8|81f3&DM>HI9pliL0WrYbJd%r_<(Yc)Z=G z_MHn1p01Bu(;Am7${n+FZ2vQQGZSGBW?Mb~WQoh@k&4x&FLzj&D>I(PSmg9~zEhpG z8SW(&q!@2=o}D%ImY#b0VQ!;6P-KyBpkKdK(%#XeN(TuiK?i%`HoanSlEwC~*LZHa zQ5p9Z{mUaipY5&k+UN`8TYDoatgu1eXg?9_x@U1taxt~eH~m@%`NJ#Um-FrQcS9xk z;C`zITXiYT`Jal6I{0HSZuUJ3jFj)|p^pQVwrA7K6<=#!sv@m!w7aIb68ct>)*f@% zunk3*3a?eF*;mCMgC`#oemHo)O;W?9LbrJC!4LQ}ifgEB$nwNx4}D={S^Jd5qT)IS z{{<^+Yk#)&n>chM<5%U2K0g|Ka_3E`kA4A=S!t%aR3;;7_2HL0i+n*h)rdUZjq8iu zC2bi&zR}Ys#Aaav+URLMi_{wWd?&BI`p@tQ-={Olp7cQzZf;HcxN-hd2~!U-Vi%87 zI9EDf_chcsEL*_V%lkS4+lLfl=CMQfCg*jB3hkKD_0@H10S2}%}YL#2xCzX2v{A)!HrQ;SdJ8} zd@GARhk$htX~C8kWbsKP4FWWX#uzuTJG6!S)D03YT7{Y}!u_ zNIkF{9|^r}R<*X$zMSf-6bdsWN^OzN@)%XuYlntzl+HaLjXT}Si^2Uy6BfkTs>FkW zwZG_cpYskOo0M5 z)`^dYE<~L?xsq_euwE?W=ln|2K=M4?z{eaXp*Y{fO@3vyI=Uzy7z& zYa{!_^6=CN(Z6tecABp_h5Yk~7nq(TE2kg<>MwbLc9tjBr*f=ZLKt<#8usOoUt(r5 zlFPl?Q~N)xyGj)wGaoP=xAc!WId_BnvT^)eX+qt2;P4xyWrz{9%wgJ=d(vgQdmNyT z0|n`H7q$T5=uEMvoEn3YWn)$PQg!H{XTtn*jd_&?USuwku7=$|qq@I(Dd*umCNqtt zUJ+ZPOYfaqM$3$B1yu_5tzOji+g-8s_dNMyNw`+i$ME@Th7UX3F(uiwoT6Uh+V7^l zXYhXQ9rY(BCyx_5p6$%Sy}`lLr>EUomK0CcO#7}%ULZV^JOsZmR&wG5_bTyD-;bRbzHSYwSjBM7sca%PS$%Z(K^NDD_Hh z@M&diQGFf#vQ=x~`-;fudAgxJ_x}_X*)gH<$tdFeY;_|UdvmYzKQ7)Wl&T**o!6W< z{p(zw`i5O!@O#5P`z@_LpZVh}^RHEM1?Ll5=^5H8+~gHQ9JtC<72BUO=c8|1UVFUKb%%Pn!3&cQ|*l{fT{i zgH3X@LANy<1;RT?0oK(|<91TTo{pr;-^xDgX~(7KcnqaV`gHHv3a#1)u>-TaTr^7a z7kLXO(>p2(>^19%ryUh8la}}R;qmp)ZlBLd3&`#Hb+YzwS%^!>F`d0$gv$PaWcye4 zmD1xnin~qyk(8d?3N|8S#bhCaHZ5A3l$^tKIJ5IP+IKn9 zSdR*DnQ?HMgyjx>m*s}3;-riBWwK5^lX|YjR}ZJV^Z7_YNj0%?STu&!J@%<}>m@pl zrJ%c8?;o|Sc>Ha9Jf!goo(Ph_UzM-R`-jP!+XAJL-lQxc!WjLQ-6y;Lt#Zq9W8|Y0 zv7-Ba`Eqzzp(t0EtvSt-u>3TUerwh7Kq@?q3xV#^?~-Kx44x~48zF-L}H$&$hX>Mzt1{$mj8%MS>0H8+B2WBI&g_f9##j`I%Dk4-(i4;I-(gW$=v#bKj|0)R*ll%6w|A!GO;-_$?XF7i(@KHh-B%4(84ha_S)5UrWCea#KfM zP*7kHD~@NID(Fb{C5CKUIqw2>%UAD_;A=Rpv^{;{-d{$>YOSuy^cyGVIs-K<;w3o2 z2nM^CPVp4{RL-^dlhaXge_W=47v919{Dx$*^IB$C)R7I zwAR$5GD*iLCm#=~?|%4G4(C_2f720GLw&ygK0v-i$@uU7Lo`O8b! z8oQYTz~Jo93FU(l5^&sbxGAeW4+ zI^X33@I!65Z$U+v6g+1vfH$9w7^bN|(Y`75s$;UQbKJ#}IxFoEKFD>j_}@z4p~dJr z&1I{$z)wTB-|t88N%4@+*UGq#@UqQr>CZvJ`Az|4Z_%zK=`+_u-=(<93|NiR_{);& zqRZskI54JcQ2@vbII z3}e^3;);WJzc`=fvoTs5`x#~IV*8ZrY!X(~o&L46sxr{Et= zeNOLyUonIR!WPGEWjA6);P1>#SWPXM=T$L%YD@ z)WG~Q*U5vFvaQ7_iYSF|y}O+fvqfnSjo9*S3(ei~?NC!En=f}KhAIpQ9&lAp-udSK zdFPw^P54_pz8^(opkW3V1EY|7&r(0YSJ1ca6o$Y}#|xhO@FNX&r3uhrzZD%q=)bvx z;g4W=9id`uG9illo2iOqEyNl9F)E@uwbY+QaJ4xQc1pXA9fMmy+c1SQgFTz6%y6e! zf&Qbdfc@=lI|ej<6;%>@h7R{YdiN}0KOG-9l&o_f4qg`g;G-TTq#$}n)2VvVht+q^ z9Ab7vSUI@O1EF8-LNwS90r3anb%_Z}Plf1@LtI%o#6m*Xi+4rxJEC+%G%HVyLbG)z zK!OZaWRil2JZz{|Rk1sOcoAkfpfQg@e3AI6nJDinl0Q&A>+c5tV&~}N7!t2x0ySO% z4LFr6;?O#LMsm0C!90A}atSEN^#JxtX*+r}J_%J4e}@iNQg~2#=cuKI`8c@ievo?9 zk^}6HQT2W!dPkF~dU`^LUK3SM`W}L(YL^8GxzV(;VsMgZ!fCpF;C+8IBC>L%iag^5 zIDsh!&qTE<4yXDW)ANC2mjDAtsbTQ9A@C?F zypIHek={hb=n_RR_VPM~YIiW@$#N&XG2lteBj409UOXw1XX)`U!1Mgu07r|r0j_zC zx4#V#>VJQn9(Xx0&(UXK{leg1#l{uuvWt>o=?5vNQjy469ka%g-$|Jru;OrVmy0xt zj6(JK8DUSS$H(xh$jN0r>l;|EXgilz)=()Jay9S1Yz{98|Aop`4u|0j1ML3Fi3RHlxh>j7~cwy`E{|VJ}aP4eP({aAAE$R;k%! zSOd}O;B^aRwlFgx`_9}KW-zksGx%&;9Ay4lHPyO3wX)*~a`yJ*qfMG8Axy5%`|Lqz zmUrFoXUku4RPqx|1jPE-;LrHtXQ$Pk5!RYB>8IwNr2D_HPvGMO0~owG-H3{Ma^lij zuwcM>9%x;jP2T3^Ed-Yo)uf=gp>0flb7Nik*qvVn%X*Jj&Cj_o3vwU-%#P^%`e?(y zJV##73Gx+8dioOG?)m+L8}AFXRG5!KP}giDMv)ALcj7$(uakppacLO7$za6N>9dVk z%&5?-Av1D+%=W}JubxAy{IPZmZOj;)E1F%lKFwCr`rLCo3eusqz> zT)0onKG*FFF6F5!G%jo2nmTW|eC?ux#N@MG@h0y)ExBGzwsl~WeRBZa%S5_@{eD^( zVS{qLWUsKEtlRoCMd-et(_e=R3>FnsTnsY9Dm&9D3^8medQYWweEfz9!^+dVz8wUf0I8 zbnOOZ%jXtD{+Y=$)fJ-kD}!d*K(F(eqyDZioNu1QU!}d|9C~eGOJX&8#& z0+EuTm>77%FbeTzw@7*L@7Gj|<$@*)y2yJLhe>qJ-86*lF6Pd`_o zuJ`OZ7`MZ}s2vfk+PJ4@z^XeVbLUGy3Swe$j1U(XN+-A#e)ZJfJ9wuG5lOfYxN*6> z#8$z7e_OReHX?%8=wdgGk2dcKe1;h9J4%T2mronne*blZ*6~IfLHzhZ#H^N&NNnrv z-?!AOCM9BRo-|=|tYgnQn>pOF6=1X#7g0Q?OI~I3V4ae$NJ5z%Wa3;XF;+cc|-NjR@I@`vpF2RUNKwFk$e-m?sl|j{0ge%(V2q&smGxZyQ<8vvYb~-u@PJU~ipg&90~` z%XBgFoINc%UBT&~HT`IWEOK4Ih9TUl-lJw~TQG$Sb z8bnp*!$`a`%mFJ;qosuo6ONz!(Yax@vODg>9Ps*>{~6;L9FDEk-0^3AUtAR2h*rQt z?pHRQ%oGid7;z_v-OJNzH*qoEe}>DgM(-h&1A_xk6X4ql159{z7-h|o$O1^=>9-vk zEMj7j@eFueu`H62o)oq-z7~g!SHR=_)=OO2U46@C!*6fh?&(yb+z z0emZoi=G;;S|Uz>Ss4ubhcxA7|zuW4!>6!~5Y|OZ}Rt(lpQ614%!t+cO$p1a~E{+Ahj>3r>;3ef*2`um3r6j^H!41Bb zk^{C84@1nhMveX)@mmfmniIF23*PjSb{-6FMM1Qm!Z`$WSs{bBp5OT~&W&48L z9mm7tx4+8#H-1AI;Y%s)PI2B^;(w)xsNU7z{~6X-%f6(hnh~261h-(qeEE7%UB4XjPQ)qg}uGeqp*W4~1YWx~X{fk77RuyVuk78xE&G zoU=or@t$Y`)}6k&ab(-GSPYpT0bC!4o2arF5upTh$w+fXUeU~;})G^(>`1`3+9Evc*L1fV(@EEL(=WvH^ zOh+K}`b}`RoMGNdPbR~z#3R>-7M5kv65Vm$3z}}iyLr@%Q*SlFEnXq%@nCW;hq(G= z0SSyK>&sf3iNcME*gTj>c^}B9jCh$WepT{U0=%{W%r7CC*hM8r;>xEdc3hK!o-f^ue3s{C$IKg~9t?u%iH_6Rs z&rWu0H%PL{xml$%5@0Y8s>U*H+&IIWYI=5ul;A61w&Vva31#G+Z$TfsenSE=awg4` zj7R{6VvwGsGGDTc2C(Fu9WD>5!LPAl+!+^&>)Tr zw{O^}Q93g4RDrM*;V>*>rX&q#&)>p;L$Z*g6Qm{`ML%wCV1~coT^Y+ou=Al9Qm3rWiyLb!chTvG9Y-`LGv5e&V9fY{cl1S@x@M7a|(5Egs;s} zIEZ5I868Yh_YA7ockEi4LnC|+)KYKZY2#~#6--mK@?|SIc4QIFjT*K01oR->ng}7F zaPZ@~uMUIVNGy}6o+o3v5caz^_B4;+zJH%u-4VeTqGyZ#D7FIG9#1Hg|155$%za3Z3keJ8WF;yN5vCnjYa`MNeE8@j3NG) zes9lPVL+z@B<9rXW-Sw3MuWJDi`YzW?#co9Iu4?8VZ>)92Yl4o9S+_7Nx3&8)LjgSfjuq!gUa@4Fs)2@uXR zD(TK;aXoFo&DQCg;ibJ_Ni&e;3NwB7E5p}06(jN1&BhMwSOxcx0e&i>d5KMMU>8vQtV zcSB-_>0Py-G$DjTgn>g|B|b3Cz854&xS=9i3yGHQ)Y)cc%wd zE&IK!CK~r|_GXDaeG}I#XZ)%3!$f_7bEe*o`l-q6#!{o4=#0V!r}exI;%IN>@1dWj z+gZS7akALG?^|)efT{*d^}5B0>b^ObZ$t@33EJ+Ef5O>NZfmN(79qF$qWXxhN#@oj zYu`-bi*KHe=9>>W06cdvl-Yl(lR|xz=Vg7lYvY9teho?c#uxS`B`c^$XVh3lTUK9{ z%^vjh`RYyJ-pNnkCcYSx7xl5$XrqATi2LZ3q_2Tq{>KDKJ>j!2B)d%ODYvSJC$=uZ zccHLGlY%nl8o}L4Rx8SjxB3>}H*$scmt2&u$9G{&;dUzyav$ujf{J401=^TfJ6q@f zDK9ejtrhGw&P<3gs(-9(_|f^i1e67Y$dio`hYDE-_#U_@%o%mY@|0a*1ZW&lYzxwc zFIfp~F^1x(38k}Ar0=R>8M9~&0hY9v3`B6QdJvd2Akiek8$B`vKLN0lsagOH?y3#! z%c8}hKsfgYH3k@jI=YK10xQ1HB+`pRi7+%n=zBpJ7WJPu*a`Sg5w?FX2&nq(WFQU) zj3d(T!UH5e$Pgw3OtS4n$q)*VXlSUev82E~VRon4%S8dk=HDLrB=71WI89!N# z1NoJj`~O25&H~|qepeAt^S(k0Cn*kJjy2;X*THB@?a<2Nv?W0lGw}nf%`rsI`UZg28v# z{{Jfiq$+SyyE1B!)QU~A?a&OfjZi@Ydqm;S!Msr&WBZ5`^Bhh4Y|lSfT>r;Xh~JQ#hoxNHn-I5vVr|TpFemKg3a@>vI|&dR;_&IXL7aP`By+#O(vGLs|}G zHK^8b(=Y-?(OOd!&u^s9pQW z?FG=-u*u>c7IMFkY0E0kx7D)G<;nt$@t;gmk{Wn&)~9sdVdzV6$h!QW_(x;X%3DX} c3Iix?q8b_b+ugJp0RFjfPG6(wtWDVe0edvS{r~^~ literal 0 HcmV?d00001 diff --git a/www/img/carimg/train.png b/www/img/carimg/train.png new file mode 100644 index 0000000000000000000000000000000000000000..7cfa2834ff2579379f3e0cf8947929a2ed2a56c9 GIT binary patch literal 5561 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 literal 0 HcmV?d00001 diff --git a/www/img/carimg/tram.png b/www/img/carimg/tram.png new file mode 100644 index 0000000000000000000000000000000000000000..cc344f2e50fb005b7d9c1aa0f5205cc8e920c8d8 GIT binary patch literal 7219 zcmcgx2UJttvfc?DMG!?$ny9FN6h%5ntVl-?zH_usqTx@*1vzxS<|wa%LCvuF0qd^3B_K69c?jC6Ro4{!qj zcyupcxC#Iq`U?k~>=60k_jv;%tlsBzk(|&ki1TmvpfQ){J9j+Q54ySE z=i+srYaR|hShSZtz+$m-&h9SWc4$v~IS((#)H%%q00@`pUO0>N>zf_iQD$Z8&#|Dj zy8HVP#6iAB;+^l8E*~^8dA2WIzvDUL%5S$aa5oDr3Ob7pn9G>`O@J-va~2;G`S#+D zNoi^1g>b!dZ?458B98EVKQx~@kXqGM7mMb)Y&%EL@^+-sLR@BV-=U^?FAaLHu4+3v zq)VAf$Aekhiq1v5-bbQK3_d-@u~4yn?E}G-a!Y$Bwk*DV&E(p(9RGN)byB`EZB4@T zSyuZE7|yq3_Dig_rSxso0cK_5tqyiHQQoL99W{t;ju41F0S7zV-%i@6$Rl3dK`b1x#_oN1eU>L5V4 zQKeu6;X7kb6%a>ueEH8db>62~09>Plv2skV3YZarMzQm^t}9jD^4{902D_ zyaok^4IW=Jc2{BHx~+P_ztv|_q%ucFV8vJ5}DOm z`hqr{ao(qlvhF^sbvid3$@W0Hw_x?!1%TUi(yp&+a{MI+#m}Bl6L1Kh*pBjS!{xcZ z?is$H%G+I)db)I0aGIte5Ftp_0w#CAT<$C!c%V3Qt5>$#;HL*p%Z^VG~#09l+B zyptR>vQ9*6hvvsw#t)rLrzEcnN=tHrm}$AjyvlX=NEH1>ZKoFUBJ=B1gNFN=CunnC z(xSFBHynKRxspw<+_8{@e{A=7=Vn#q#uFYW9_2M)wb>BQv4~}2RX~iT?Of)$6 z>KyVuV9`Q#aX^p@Ua~biA9?a7uF+LAbqHS;Pug+n`(;6_15D9Gj{t|eoJ7W zGUK2X&m(PY7#5Kz!)VH25#yCCy{4^Gn-35_o#6U-thZC!oCz^C&BHT$ljU1W@(|C+P6S!o1|T2C9hmWj}aXfs=j$>#o?WP)Jsz_4Sd3hj2Nr zpA*K=#OBoS_7byMl3^~2GdY(%*nduL)_|%rk_xh1ngzg|nZO7GK=d#w+U(TKgdN+9 z`0e#b18kRz&s*|e7uIJ&IgGE_VN#5@=6BjQBl-lFYg>22Hskb*dNBfJvC&y~BwEyO zIX!_(hWEAd@JlDt9Kj!%z`Jn*dy&%*wP>kPC z7KrTqE=#wZ-3y0-zAL*ES*ev97283v>FzD|KK&APPWZ&nXpB7e3f8mL_%$L12om}9 z;j&u@tzEmg7KhkE7^GnZM;Mjs{*fqxP;nX7`BSI^-t*=*+!*zhYw&!1Ccdpi=4Uj# z-QHCk@kBnL_irQSCqbzG=`k*`Ct4q_z4zzsPc>k2dG_yWa=uxm&xJgZAb|rg2dPaR;tAYHdm2_6&$})&irLs>%4zhk;rdq#{x1)Wf8uyB>Y+Xyi>G9=ThlGK zvLfd1Gck_3BcuasS{B>mbvZ$D%yDJAt)@@1&IbQ0(Yt>6XBVWM=Ps%kgV)$4E_mrrZxZHW=_* ztO2>}?QJFbO=AMI-M6iN=5+cAPSB_i?Z=Wd4wgE_?fmWdTmzsTVyrlmmnIpemL|Qu zksA3PeaYFvP^Et>D!6C5SRnSUBz+XB3Q)@3)V>7Wlz3NrWZ|oX)lZid-Z(^2Lw{y9 zI2^6hd|t4*`cuo%nt+tcSmSLY|O` zSxIL+_c$?Qxwi0-k!2k6d}zK3TO(Sp;oDAU#f{34N>AgDbtWmgOj$tB0HQz&4Ubt` zQC$f%dll+nU?TC(over+xj`9HWoSg+wf}GzAP%Q8WSSBsbCG6gov{44bAb3Ng_%#Grl_u%@z~0A>Zpi|pKoN@64+1H)+%Q9VqA+4H0t}Q z<9l29Jd3Y#f->yVu!K9cr8MUjPzq4R??1^}U~<3BUI5{!!c42Iy1K*>d7Ql8+-!o6 z74&tO-__ZGH!Vd@iQEB*R1`gZce&;uuWjX-s|5XTh#?lpFy^<)DmlD$H<&ujM-ra+ zm=ch&rN?(^Sj&Cxp52pMAUU&rr>bfsjuijg+mDL~9e37Qk`43PWGh(^53K18N8R^v z`XX3%ww!cpE6Bx4M`(buv?ZEB82ieDr8p=9mWvpVAEm0~vUVUm^4gSqfIQ6S(vo~L znWnny3J>vj_s4b{5K>CKSl|Sk|3nKrs+Orf0pWQ#Xt}}g%Xcp8z!&TtM;VrQ=q0{MW@*?ALq<3N*%KNs?yxsO15YoVSCaDDwWw z*9@`#{wpb=*+&LUxd-h6&h@^C%hluV{7o8N5~>ilsT}cvxFdb1Z(iG36{!e-SgK+( z&vEk=*>h=DLEXo#t5AsTRAs5ihPf-JaN@GmCAxPE=*X_+K!D@aXze_Whk@g76#_n} zk{j-6GuIT2wKsisWqQLPE=0eod(Rs>#X&w^sQRk0xlqHz+YZIH97#cxI!9+!OdD6E zeesl4IKX`!+-R9m9tv;whNIPwDF||bvImoT3O;rH_&&`>f3zGwa5Arv{=H*4=_|%P z=>Z?0bqW|;OmVdFc<+WIEb~G(hWEw`rI20d6(`@niU)k{k9_b7f4i3F%?}5LF=CCQ zvNPx7#291m6J3{S_a-7aSb6k477(XkxNJk;W>t(K)ctYF4HjQl~365vj%n zYm~Pf%_KEclUtXvyblqClVVwc#bBGBg63WNcnNw@Jz_+yQ|-4lo{ze4P}n96rmJ?8 z1f3VUK3L4>n$Q;EV`OW@4~U>gyIlQ;ti|*=4zB+TpZo8gJKYaFX4@QD;%pfDZO}cn zL#x_x>8@?{rT1?Mu3Mo|aqXkwnPKt5O(TuO=g>(-Lin635Ki1M@FV(J%>n4i0XV_G zN1%72gOE5OPlxM(M@yM^AjLsXM1%ARHP1LIy0kJFSUzZk4ofI;Uj8uXXt2rHz2Daq zPsvqHds;K{6c+DRa5d}dm55q$h`|8uqR9L`y8w}zmXm7T>b)mh=7UXy1UV2g*Rf0# z+D&ACR!i9t{IRhlaZ)#i=CPA4I8PRo-J}@vFj+9QC-J3^G!p>u@dJJm)09d%yuKY@ zrA0Rz&diCX(?a&gh;$d&aRUU5rSa9E2q_1ey|^6J9ta|b*ScIb1WA}Xx4>!B>XB-- zwkGrD*&8Q0HFJ-gcNAz`NC^#a3r(Z)Dm?EL(JWR!b{L$lT~8NMQE4tsy#*dto)#QN z5>j`A13k3%`>8TxLKz2u>|yeIbL526t*=_(wF*M?$3w zwW&Ibs);PksM%p&(^?#IO0zESa9T|ls&0?M;Yb_@-K~XIsCyvK*!@gRiOAHsejei*65{wQ1Npm7JlBa5$on`goz2CC0;ukiRu@ zFQmALCquhEOOG=~=eALBCLT5L{5~{utiO1SI)x5d&q4AXtQl=9G&i5{Va25o#7N&I zLdfHb7dDNvSl)%86R16{QET?C`QB>q#u%gWoH6PkM)L|K(Mp(fLz<&Q!O?W0&myyG zb8tJw-bsukV!RvmGuyf`A0LLUx?u{CO1Mb!dzmh)RO-OgK#h`f+Zm#I)GGlky@e;o z2D&gy_4~Wp=o6KM-6S+-W*>=w`KW)GK`@nO>nQVI*T5JtbZ?(Aq9|cb)_zK5e0*`PxtVF!?$5n zSA$!n+v1hc7VTQKkD*hSo1s@zCzU|=)tUtrju0i0$}U<;!%?#Mc6PtsLq1==!9Fk;7$XJ1STb1AFXaP#t}-X`k+)CTyxHl#Eahjg)VvpS!N1aQ3&~MFBDX;oJ@J`n8R&S4vDr{Y`^SBN9}k zh!-susRS^D4~$!M4bijkr3bZoKw*HWlg$Snq}&EIXAx3@1?W*7J4qQ3k| zlHq@w2Q>)MD_V|9^vcPk$uE$GhcWBMqWkA8)a#r{`XoIP>z4Z{&;E&~F5#m}G}S+l zvk#7K5)4@y@30Z;F0soD&aun1gF*HmnzO+m)+#I;_9~yYbqncp?8B71sB`Kt`hs>fegv;LW7T#v6A@2XR)*xh|vLcHTCq?4*o{ux;a#w@q z>-r09$~{&)QE4mZGg`zWg-#hE|l9{=`Onw>Q)OrR-V%qnaUb>K^)3oHMN^qChl=!h_YVfg>UHJ1 z51WJxinFt8$54mZXBa7}Mi0>$Hd(uYQzBJ-mspo*_DZ$H#R*GQ1);fbGAg%L&jBSx z%JcQ}d$PQ>2unO;09dA-B@40SQ=citSa4&0#49#Zs4*B|+105Pr1^jt`qQ+VC`=-}}b$jecD zy;p{>JZl+Dv4L9LVS<>%YLj7GfWvU=gyMA;HxYQ7`FPK`B(A4!BNR0-Aar2i0D;P@ zX~|-<>oO1Zn_{A=`&D}wt}i9D+HIv@b)}OQrpycDZ7ywCWhoOQ5S2s=)>+7(8xvVp z^4gp^!RHYZviLV5pXZAyZt&S5h05z=!kLu)5)NM9$XaI+-3vF%&4a$FxOdUQc5%Zh za$jtHU~y(3I3jTVc~a2V1W0A)%j9&Z1;G)HOGi$eW(Bu?d{Rw-c!Z;H_T5!GVK|8a zw(I=mL9P>#7L1UMZp{lz90!Epog#|iLNU~$}wb@|bFnOQ>Vi zTqo7%OnrW)E#iEkXn||U&5`@xAFSXlDXOx{%uQ1RK&sica+BUm?H_K#9=WKdGfiWGV`V0>vASX YpopRt=}pB=0R40?8eJ$lXM5+r0Hag#;{X5v literal 0 HcmV?d00001 diff --git a/www/img/carimg/tricycle.png b/www/img/carimg/tricycle.png new file mode 100644 index 0000000000000000000000000000000000000000..9e078b53aaf2bb9021b999be912fe2ffdd78babb GIT binary patch literal 9723 zcmcI~2UJtrw&(^#Km_zqm1a4BN)rtr9i<&n+Cc&7h(PFY=p_UjD4}@714s)d0-=VE z1PBTeMCpVo9SOaY1VTvO_P#sD|98Ci$NT60@iRuo+Iy~9)?Ar&t-LfhHR3sO_5=U` zJhy+-{~Z8W!ADkr^Ef!{g%fGua4hK7?R%WyCz|uo3-FyQ;I{`sApXeDFUzeYh? zOt67Xu%*9yaG1*yunf4)+0?Vi+(XtWqB`S;zne?Z<>+3+{%E_uzhfr!aJUz)?L&A;-TqpwMa+L zta!ALa8T=zl8im}PF=Y);6pw)t(@6wnDbs$eSn6kMrohsILh0|V-IS50oDG69A<&u z`^^YNE}Z_|e2??iE5I|C~uOGKdqw{M=c zlUaRP{)fI&`bEGeeK6$l(Q!iBku-2mcG)b!y(xFe*zzHBD40#Em&^06Nk6}XXS7lw zh?-i2%ZplE!Fa43H>Pww^y$wjSY~B$w$m~Z4z3kmVoki9`{;?nDWGo1EadT1@x;qP zIKW&Bfton?E^57m`)a|ZAMM%6Kt)LVBw7eu!9rT8h$TIxeS`B7;Dfb9#RWg@Jeycl zu6(a+ffM*1B6x1nmLjIr|CjWpy1QYEU*5@fo6J%f+<;oUJ;-KKTZr6%!IdvviP9G@ z61~*OJ*H$EjD>C2$^Nn#bD;XJ$(@0XlWMxDQ zPk_c6__GdH&x#tq*LV`rox^IBELPi_p=9P6@XNPdBT0u4mu5#eirwsB%tFySK=jW1 zj7}dW|Jgjlx*rlL(;$l4fYQ!5I8B?*6V@q|jB!z%C@E7p#R2cqMmxkoRkg%I?hs#N zH0DR^E4YAP<4w=p(DA1m-Ho{h-!9eh?tgZe4fRuWu{8RuA5eW-m(6v13+i{p#ge1L zhHfC6ySsOpO(%gQ#Up?60VO{I;nDn!bIEs#bt!PLAP43w$AC{Rgo_x8XB1=LFriF$prv)L4sQiS?WMM8;R6&x|dF(yD20@-ZvcZz__~31=p} z6InyI)^w6`(nG)4Ou6gT;;*&RzC7H>i;v*WE9_-(6zmOEKOZB=M)KtFOyHfjOBd_H zcTCc+!tb>f_#q;1W>maqsDWpxNfOl&&5Bud0kd+d20`qx8@BWoF)r=HTWAE6@Frs+y?$2eJ=H<-ii?IP zD>L?VWuV3A#g(jWY>Hc37>@pj#qzY|9e5f;RI9e1!`PNC`St6;$xoCk^BHCNYQJ_% z#XSXdRo6#pPn{A;FMhAP|IJncm`l7o`Ds-{%6B6*(2)8yL6ITj-e#>g^-JxbG$S=9 zL8q~7-@hc9f+T#ExidZymQXqII~i~LpkwWHyZsYD*ZM9cm19b>TLYX-h(Ppaj1;8r zV5NLzCOg;XGDeXO{q4*ps6x_slqh3&Z`%GWd@&;yUGxLT z0n*fiuFIT2aFwvxnHvfvZcLkD%8qS}X>R>u`sw+u<@kPkrvXwZ0(VV%UrV-bKSfsP z-Fk%VrK5T$S%%+VLQIHCxg5dxOt~T<;G3_e`|dCPZW2LX2@UKlvAhoS!XC8-75bFZ z0}sV89mZ$pMn&ck?B(}JD`Hc|64LISOQ02zp|M4!C^G!+gUqB!g0AoRJ2pb?8eQ6S zj5uv<2S~KRiPt2N>t%p0huR8e>|%kL_zi5@;-ZIC^ulJC$LR+#gtGeFv0*z;!Wm*x zzrE$0^q}~pUwPjMTZ-@C^m;+NPSW$NYQiRk`e;PJwcdB2GHayjy79!1FOZJ+4bt6e z?o%6!-mwlFTb;;onz=l4#HQTIYNtS0(dL@BZKDE{*?%lYyK6u7wQ3e#DBN9z?(L!# z(Xuu73!~VlqlN1=<;ZVWxHq!KNSI;KpDm=^$R(p^MEHO!n#5LGee+Vx)qJJRceU(? z{B$33gt0=Bl5FUZTRQ>BtN4zuX8146CA%8kfKC4731Wupk z{$z*t(z(J=C#EeQ*1uxnxW_$5dyH&z?#+8k*dXbJz;P^1Jo2_sc` zDcd|-kdiQ|{zz0jh=8O7s?eV*O<$tG#v~L8UL7_SKhUZ_YS$V~M)xofj{Js8-M2mc zuIYsdZ_WolF0$0w?qWp7Jhb}egiPw&D7ziRQG00SD)TM(<1Ip6%txvif;35 zw_?7bB$7G~u+SE9a&!1ZN8-nF$35gPCbT`;D%w$eXw6?GJCop5NY;ZpYLw+JESKb< zvnmdj2I-}=FFq773I$a+QP$t#$K4P@upbH+E2xT6pMw1=hW-B!l7HwVs1nHq5W<7y~ihVc;HC&p#;n! z`go&D(?-MMRPVHFO0y{KJSJWO$MojY4rlh_mYzxHJm;0vXReNtZrP{CM$7|J-Zk&MI zTb1?HL+VicfNzMCMC~2ElsL0qr(i<7#=&JnU{qO@F}YbN`qoY*bnSyr>oWq*bF3<= zYN$kV=&fCt84+;-&>ZMAyVldkfqFaEcIe_uR3_sYR0aER8kXlC+^0c}qX;4XwXDVkxoqR#T(`S(@cS~{XszD|?#VjZ^ zvysPyCGT-Ne1_>B!Kf`g*c7chBr@xAh7-esa*<<#Eg8c6>l0AzN6!Y%Yu`)k?BSzD zq+uOeX5}BqH`aDgJ3m0e{IlD@lt1!LQS!3 zz)yOJ%-)u^s72Q@Ct#=gW~hMTC)T4)O=RPXB)^vOC|}7>7v%o~7j~0okuGR>)#No{ z*gK(e`1*kTE7CKFYQ`Wtkn=mXY~xdUEk12%N)6s$Y8gc~Jfo!KB-nl4LRhr@ja*WZ zUV_qa&_MPpQXItSQJd<=YlYmv(3{1l+)-;%@+&0^iaGV+BHbo;U9YhH#b(b(Ad zB=@s#2z^ckN`Dcouq~qyqxTILy3de;S@K>B(Q9I&Al{KP`4c%F2Tlq$*H+tugmaYY zjSsI%uObpkSggNc+#@nI2E<;I zUPB6lH%p3OwRV1g4DaM_+W}cW1Ed3O^&z$W7kizNHVMOk?S1d+B1W8g4P|nElu#FxXp>+)wi@LB`qF6CMc%hsF;L={5khg`Eqbpjnh?ChWznn%ZwCcT zKzq3WjUQV@9+H}Gs4%UC$2}2N2e8w=*wP{I^v$a8ao*S#Mpp=h$jknCPiXW9##$ic z5z&-Y*Nh`p1~t%)jWH*_w%K=(m|`&!SB}~nzke~M^Kgg1N;AqqPUbMUZ_sYksib9{ zWFSeNY61GTbR{ck{eNzjEqMOmzCeCj3&VWKnrbw+d(Gp2a765RqaY-F!X#9l8NH=v)q9Xe+cWb$L@$z z=#QH@!iv|Y5`9xf`&uFww^OD)wn882j>>0hRVy^y`SJN>YVw#{dgY=@RZ^|Db<5&Z zRJ!ALsm4p<*ZBynEnlJQO{tg;>y4(~nJ@1O==iTMWOm{g89u{Dk+uNP3g!eE!`=1c zs=KrUgoi_c>O1QG*>eCV0K|d~-M=%O1L?s2@!uI@LDK(0q%JpcM{|U`f_<>?WMUHO zzC~}!I2Nu~q^MLyeu z?*5Ka=&pis>gZR@g29p8N-?N;nM$O~uHh2v=noW9h^lJXthKU)$x&ZdOD@yN6~7t` zuaY)#9l^$;d6i7 z1FJxpeew{=S`K`a7H0g}pDj#QjYJpTO~R>AHmy-GD!sj0W$Bjyc7Wlr4fnGBRgR&x z?w@dO>z)G(EAYM@J_3yqA^+0czdNAKaH;IQ3B;aIWE}O|i-lB7VG?VwiV74hPQcuP z&7xx^?yFkeDD@nm%ihc2OC+&HqN=pb6Io6Hc@KMf2Acga#ecSo04%_jUA_+|3vNm!kMPt3-AX{emfxU4$ECdmh~6wbR`Yt(z{kO47POtc0pk&;fF~ zM9`J>7_bz02zFy!#{f)ja|jFJ7%OnESKT32=`jEd1tAqaX6OPys+I^p$cTliU)Ikf zFf8y7I=7!i--XN)^0DV72qjR_dmr6!v8@X@a4p6237Gr1cRN;Gpe2}}|B3l)rdlLw zha}+20*ZRoYcyFRdS!L$;YrY11RGDh@?-2IW6n2QsCgn=&?0O<_1F8zhdOwbi^=8_ zJd^;50yy{WA&V<7zuu@HT|5WGp1Qi)+@GBpp^=xK4~z1u#NGt@*ta;WS(Cp-U#$?% zhec*zho1tRgU+98R*W_$F26lIw)fhI zZ6^KECEblzQf$FQkICOy=d-i^wrj7bD{QOcNj&J!o*)%&=X2c|Y56u4yD@+L-*c;f zy5m2+OBY+b5K%6ihmgyHcx^)6^^bgsgX8qz7=H3H1|coy0B>n#V+G7NP%U>LGKNP; zjI};FY}8ULfp(Lqic&yatr&J>V*y6DpEGBm+G6B5Or^t4jkOU>cE$4aF~54@n*dM; zn}u6IJoJwYhMSQ?MMe&1$=jT)^`j-{03ge0ztCtm%mTY!nNG>URA1ois!s=LVp_H~ z1-lDTQ^WI$M9i9{Q>O*V+nC8KJ5|IzY}>62pXC@R+{Rx$TOw9Q zb8j=63yB%H1pcn-zT0pk2y@^`ys_%H+b!Y&j&d)|Y7Ue)1-cunXQK{N{6Fd8uRHEq zC#n48D#W~qZaD9~5x*#rLW{<=olrGR+dzLHtRC zllpG6l=sx(+;Ur#uzt=N?rDGZCdFK#?lnwm6=~ArSJ>37fuHEfq`-^kpcCvS_H_S* z$eVJZn@fA`I=6e3v_|%_5sOnN`4QS2#{lT}Gn*V$v)E4Mwh>fv0z0|RZ#8{RP4a$I zoO`%KKlLN;ju5c6Kc}OX8S&tteqTI+79fX0F28%VSA=1_R&74N(zjG7Wq6Sj=qomm zchG87^NQ@uiuu*cP|nMmYy)q;l8Hct%0~?DqIsu>v&2|h7Uh9aCHUa8c4j%IEz)<} zEMX+rX8Y_nNb~4FjBKxZObgv`QI;CDscI-L$-U5~H5Jxq6l6d|{`FyO&o|b?Xj%&z z`~Gc3mjVMF1r_5@f&erwCGEq0AzyiOgBJoGD0Qxxq$&(E|Jr%C(jN?| z#yZ|GM-@8T4L3C{p;l(G7hDK?wD*f@#KX#zpVP|KpR1YNt}OK6A&r`)r`&g%PFx+l z`rKF3Ir=zIx4g#u=(C^7bergsp442*UuQ_Q@UDE{Lp;$*RIho~ou73n-~SlhxEIvN zJdQ7|X20+=ETNsrSI+t#e%aAO5cp`uuIIFEEF4zsTXiTqYfFsy9%OXQkkLcad zsoz@*2CR9gFJm0B)<3oRyb7KM4ZbZmEB2oD*$=RJN-IJJX z@HCjt9&tH58JSiOICH0&oFx;9kCK>k)5RDz*FWuwtm{Xom&;?8*`gbjKNRiVdCZS$ zftUOgFnZb_JZfr~Ruf|S;!eDxK~1@`&OTVvaK8RC|D)!OM+yEY?dc8SYp}1n>QjR$ zTVevWP8OXzsF*V$^I*n4{+)i$(y3W>#ZzjnF^I=y6yneF(H#t@SL8F6`4?P8Cx~i+ z?opAAjz)5HtZYx5Q>yRL0Ie9aY3Lw!bLOiGKJv6v75MJ=64hJ2_6o)chS~P2+h|&qcuO$jQF?9oHqvfjcZxU^+fa6rMT$J> z(vClN3>cL@G+LjSQ5n{E7(}(}I8a(3E3wkrcgHFD?XI=0$_A1u4;LRgv4XiT)g!$k zY17OG7vq4)-4sUi`hS`ibJVmN6ogTac*oMgxM(1DuT=&A9aYV&xx@_NJ|tlg9X`)D zL%-mUu>kfgqwZxi6Pj7=JGd=5qh;k4j0?Pz0KWS~aQ864hVD<_CFDg!hhN=-c$Fep z86{+xx2jmx%tX}f#!$<`*989w4mW-Zhm*lrEa|;728TnizOItZb>Y0-cU;*R1 z0og$cp1GpI2_)}QiIrx&;b9eawD4oiX zxklOaGlAtEVbz`2&7=5c9cUbUP|E6E*jqkcWt^GJ=iR31rHvb_RlO56rmCF4{k=-e zV2GZ_8EW=Xl_A^5Q8sFf8D!Iwv>QF-_^s-WwOHRUK4GzMZ{!T@tyXBqjv;kfF>x(< zuM?B96i3+-`XB4+e-;P-?QjnG|5?%hw<3Q6|4&Us-($n2C+n)PuOGiaDKBj$$=|{H zeTaNQ_s-&MFzX=^V_`vU*KE3p~`ec#FeZSM#y=MW#5pv}|wo zGg#}Xt1>ot`g;;tZkU;|LLkDDXS=g8=~~O5S5xwta4d@V&Tc5ZSp%(geFc?)2+}$z zj6Uu>$hPqXDx`mOXeGq#=J||9kqDu9L1l{+Rv)USrc(DiPX&1raXi#-?m@d4J}+Ys zJOff+GJPqX^T|x!C5Wlv_3jf##iWc2H$tt(!c(E;UB>s*fQs6TmxWUz+~hvV?&9)m zVo2qB{jytZSx>uXc~g0Y#<$m`J;eewe0Y>F%M4$%X7K|qC73bUTWKqKup7v7pbv^2 z)IRL-iL*>-kYJe!d%989-{rH@wrAuZkV3ZC;@y(j4agK#yh8fwp825bfHn4}Y6TqP zdWzu)$X|R7Rzc>vLU2F}VP|U~L zupNs%QP8t@|JD3=%_Wv&u@p7@S10b$9l_Y(s7~1T{rwIe66`1$mRFphR*~bBGF5NG zeJnOXt*JXj$FCiiLxr#d_wRQ-o*$<}c(GngYc*hPa6_iTJ>av5C18GE{2IrGBOE0)Ttg@m-Hub=hl=b`EioOoajs_c&Q}0KjPgAsG zd?6!{-H54X%4HeDAgIRSmE5)_sDd}iRo@A(ndy3VqHu9BPc_tP?gzH^6XN~5w1X@ysq3#Vvzhsa0X92d_U$r{)FqJ+ zuV6IGOuY`HT?dTu3<-2&8|mX^HpzbO^?CWfqtSoS{lD%d?hB`bZsVFtB;oM`CtusN z1|I z4R)z-Wz8xs!zDVtFb8=!fxY25ok+sXT3Zz(vyY^9r5)N0E5{<4Q@~Qr%Q79NeXbkG zc(f^c-{wG7>oK64l0DRw9B38wGB?&&{UIgMmGJ!$c-PcY>FOV43US>#=Ci95l{#`Cr~K{loW#=;gNq?;8>a7+?P9& z&Legm&-((hCrT&W)%g6*pb7wx^*Mmv%2v#uq1zUR7k8^ z^U$K7fQyF=fEjo-G_)Z>TdQbkK3AZFfV*LsTv-nys-a^v1tIZxYlZVQK z+3LZ9`{nZ$g(#fo`E%s;^9D|f&3of>85yD-1j~7mgM2NMk`Lbnz}eJ8DcKXDyQ4~Y+eA&x%ja7A8BA!#lPl!>bJ+< zS$ZSuxRZ=$_5Z%-|FrVI<@x{WC;v{c`KM$3E2F>l_FrA|Z>{5R$@XTuPyzn=f$x8NrbhfPxU42eqKm7Ds||Ppw)&mEzg#ugE6#+>5HO!qv>DFZ zV$McKn%+#Q{ne83gTHtH@GuJ}pV>IRFHrts(L9Vk_))}Bu$#v>`h==LFH30f$wIZQ z1QqS)jS02704C4hdaqI`F3BZvHX&uUm?KtEzs$RBo*}n#r9(?ri&NjeQhat)7QZYj6Q>e73CweGsprxu^3JF?kju+~d=xhqNnYVby)! z{W7xRc}keWN!;d2sPWzcM#FYLJWL>k%k6nAM8x8ZK{;n5iz2@59`?eH?%Uy~(S=g|>|FGPrAWS$YW`PT6k&JeFNjfsg)E!(X zu5LRHDf%9FZe} zvGP)V5Z!@eG)ar3_vm0ka42zB2yUwxH+V}+YNe^PvbWCXQk_!!oEf4cAoDt(BB{@? z9J_KxV+E1CB*V+-F;cTk~IhU*;PI!K0u5Z6T75PK+~?+XxZ4CxS5zU;3n@#NkTgbQk6hW6Q7TJi z#4yJ0Cd&+2$38R9SNA^Wp7Y%Eoag@f>zQ-ryg#4!=e@tbpV#;OjkPp4;@>W@9RR>@ z{Oidx0KlOo9B^-g$WkbI9U=(K3FEWe&@Y_((p_lJZDHKO5RNGss)!6coWV#~!lv z4dAHVi^laM`1tgN5O?Gfs=OV!5If&DuppBrW!= zRy}+0bcu~gqqWYr&5f1#(YS(cD^g+`YXxalZ5Xjpv}o&+W1O#O(U!*POwR#W zXpe5bkv3(eyIY-)ZDvflSZ{vY+V0O$Bx^vnEM(cti#4v&f)Os{^HZ+hUo?MFeu7Gj z$&^aebLKh@aJAY>dh5rDYoUIo+FafjO7*4HkCK{MmCI28V1ll2B+eviJMv=c*ReKz zFCE#5L3UT%V$E+tht~pcC1QO{wK@78-N#6VhaaSA^>M?2Zuc&a<-H9|$pO=YR_VR8vMkFZr%7q-H^b>Sf+srV(TI+CWosIdy3=ZBvaVP=bJg@jpIDRb6v(deeYD zJQ2ZQ)0LQBpV%9dizQY)l^)+RbYugG)AdC<3fD|5+@O!W<;Ga| z@xZ}!t1~X_<=z-Gd*K=nTQ;?ms5xF%*jj+?wA$(kOF4hWPWV{Jbp__ejoUS5TPmL> z6dPAAu6hY%lppZ-wPizRA5~vLh5HV#;qAC|C_g-vqbEag;0)v0z9wqiHrWRGAfBDlSq?V-TrfPsZNUVpzfKjRU}z@=-DZAIqB zlLV-M*W2h3?nJ@4P{^C3+msA9c(CFOOyC(91_6J+{j(Q_K!%KE?Ou57dW2^a1tpUI ztqd>YxXuL!Y9DQr4n|%7c$m-r$2R6*)LM}eb7N3Sqf-A*RyxFL#Y_!XIEx^F=Qvc9 zWJtq_`9nWYiYVAo^YToj30u0t1d67lhW7y_snP9Y&4G>=EGTvSr=-TUk3LhwK|4P9 zRvz9Gxn%6RVUYME-^u_N;nk}0C54Gx>~Q%Z=yb-_cqH@Xk{|+1uGWK=iETW}H%4HrBAS2*}rsfbLd7A+>`yy8Kj;6K#76FTp4;;H-nI*{jpI ztkMjfcU%~;b=U_w9vidg)^8KKdGFmY6nuC>BWge>=(^30ZIPu1;b6^tojS9D$#y|9 zOp&ndw9<8al!cLaZx#{`7742_SEh$W7#>!gxi%qJga^wNpU>)q? zr{Ia}lr@@S(*sC|-jb;5F7z`=cF` z3G4WXpaLI~s}yEuZHZn8R8NqUeTX?0G&^ytb1j2wM|d?yE0k=$TuF?x z5$s`ZQ#w$YHQLI4lxoi663BNap+1cX?sOBj??_wL`rc9De~DnjqNXq~N^rDe<@7Q( zxEMQyx$Tk_8lC7srSXas!w|SCozinyxiHdj3d*vj^?;&fbfVLjlnECYZcwXW>tt3Y zs~{Mk^UGk!_g$bD|C`O`Zw>En73LFdtE1i)EiJ#R^}b+>590)x9qZ>fIFzUR?-A9H zzWTK(>aC<*XE~<3fq^*+1t9gvA+V`f!>v}X@aS2wfwDp=AfM zuIda|)oVPPG76??TORBBn(Wn&C+-9YT&MVzZ!*Q7+w&Bvhq~GXso>M-z*!$kt(WBr zC$6(apRZ<$DCaDdx0 zeYz>q+D*i3g2S<8vq=n8dwZXy>!~4noE;QDaz09Y0G&((--g{ zz5a6b{L%0xTAGp_+q8ZMnjYa1FjgAk8^Ma#y7Ef~clD{OcOA~l7&U*O3=Dr}(&=w` zP#L|6@i)$q3$2XQ=zdq9*iUjJJd=-cd5F21)pOrpyL6S$mP{Y#MmPt(A5e$waVeOt zeX@(eD%d5!4aR`pm}xmXq}I+k>X$JP&iitxUv|@Y|OctF)M83`g_IvaK)HsClWDk)2hMLsy zB3E%8p7SQHVP7swKSroFV{i#wG&IyJJcT4V;q#WY(5kJ@?!mG%LCo&Kg}`#HDIaAc zBub-UJRgo`C9})LOXK>AGX!qtifx+Es6MeTVYU5hgTT(nEYp{=JVZ4lbY)=^p27u(mCYQ{c!YwB9V*7-ZXHc z-{36?FA+E?S@tyhtI>=#2)vuvGoc8}I_?*z-Nr(oV~!Q+hwuRY8-xfRoPhOeZE*+8 zwY6i4bZ^vuV+TNv&#g4YV<3GFqJ`;0)^~wEB(Z;=2DbN^I1$9=Bn}hn~TChMy z5qYBg#4iEhm|V$c*0>`l{6l(=pQ>Mj?-x03vbko8!L;KoF;;b zYXZCFX~~BJK(9{B)d4>?XI4C>Wymlhz)%3}+K>jw(lU&FB4rzBGlHJ@pP5VknrHs~ zT=EaepPh&xJv0osHR57Gp4rb7Cz z!dm1Jo4V1eIntS54N6N%&UbpcVDZDkK>?c+_E!Cw*`uTc?1owWVW34aOl$T(Nvj&Hczyy7_drGd z6Gm~+>MwBokIByf@n4?*V_$zO{AJ;1$=`<1A(LGD`FC^EKs8N`U^_ zqm6v5R`Ds!>O-F}+r23<^UEL;Ou51Vn+{&FPaB)6B5k z*jcl@5;5~<4&8&GC8Aui;MwR)v0OtX$E@9BCvG3mq{e#9YATSqJ#S9;s;un?mUj0o zB%lcV-FOxrBCV;vbHc&&SxJzq~L#KFR;{p{qe?g>*!O7Ime>Q-FOf{o8I>Afr}Yv z7J`FZ)e*OkBjP8Z%kU2@L;r*MKQUFhxGKU%q*3`cK-acA$)7XwSb|BE(Z!3VIG|`Q z-C&v)&G?Vsj1CBtGNAsBfCD_{+roV>$h9yWxT{{TPZm9vDg@*xJoJP@wfQFFc%0Ow z<}<;jQ2_naeb(N0ZLCI6@whM7xxOINHB){#xTCR567d>8Zj!dgf~uT?bbOGnudqk( zrAVdP@|{?A4s_EWc@(OD?hJ_whh6X~wlZdZ2%Pk>DSg2+=uNkPi!@?Gb z`JHpM23~WIBKeO4&$LH#smqFohwJ4k3m@iv$D3Od9~md3(ogF|I#sHo>FqjRi(E3s zyyuTS5S5}5)&=Qi%$TLz(^&bi-zzAJdqG806QS3oWGR(yGcf(`%Hsw<+3s*no{Dp# zudv95!^*tNCDUel2H)!T6n-WbZM-Ho>;VpV z%UiF0w0Zt1|97ynHQh?giv!)|bQVQ{KCAZ5B3@}klTOVPOM==^Ioj20->|VZ+`v!} zMlEk7-qlv5O%@!igO?eV`>oY0(DDi_-i;BhOb|G8UXGMxO*X48pP{c(o~7bgG{MS_ zipPe~-fo0jaeeCgrX!%g+(%nLDRp5=dv0{xu?}_6m4#M z+uV{6+THfGyT>-Tqxy$-_x%VR?gu(N5PlSRBnv!JI#(PNtVl-aT!HLET`LZEc_O5C zd2#E!P@VSHEB&q4k#4V}-7AkF^sGGIv+@LjaAk(j8{wqTJM-Ntgi{EjRX>S*vJiTG zvU`1gM(AT@_p(m+v2yxYXT+>ru`j3EH>b}xN9>F2v;Ds3`hD~I{c=Qp=lcDSkvHIX zejp&bbIq}5>oZ@5o~VzS>B_k=7+WGC0@C;29z1YInp`=Qc2|;ie+a#kQ^9e${$ZEu zrNs?H#ZB^?%|o}WtkPVCyfXV2cGANC(e&dAKl%{`lU zKEL47<>HdkGXBl->goq|b&u`IWZG^_> z3ckM@qya!CKof8V&;X+Y`R_RJ|1W$x7Tar@FZ@AEwOP!~7ozXe-zXEGf-L>KL#*U< z{76M0CQ1X@vGZl4uKZab_BR43By)}UIZh{|ZyUby_jHr5=^2_x?65Z~KeVvq4%XOP zUH9XQEBhqxw!3&o-^V7d-`c6V{eEfN1NqNq{smc3nK}P#x5PMg9h76q>!@jV@_Zpq z*ClQg&eY-0(1VK*cqUb)Sp~AN;;bskh0Qkb5E@IENf2ELdzI)7KP?73lBNc~Mv>2$ zF$0DpG~;M|hOv53^>HKq&S>(=Yf}VY|3UV@a@W%c2h+Dj0o=}j5epW?eo3V00jNy@ zH(5~6P`QXI4b*gb-zu`75f#{;>+{L9yiVvQGZuhd8jbyU3M?jxDs#WU9{)n2>k}LA zXT2OBU=M31@!~F&;}Mb9#1}TjSV0PWTeA8tgk&@04T$Mr&oiu_WEjuD)kVAqB#7BEw(wkgGG zi(wOZDL3c$vJOAH1Vk59)!=jU)EQQ=EjV!U@rNXa4y3!@OPISs586nAkoz|uKcz69 z!^@4;_!FrSwBdqdM-xNVXuvu=w| z&rCI70#Kmppa$E1v`x}rtD`pR4z*U9fq`K!76tCWzcL6p7;1M7!ZhSFTw-Ass2MWC zJ1lc20Cmae<>s?O|BU&JAX3zLrff(hvn6hsa&F}w+^*f6%9}@=`o`XDa2D*tW9Gci z{%JPuuExJ9(4fvH^Jv7u7US_Bv{0768p&gcXJ{GC*9IYz!~>#m5MIFa2*;(?YLSjh zcW{WL-VTR{c4#HD%c&xKbc~iUe-dazLFBT2i5p9qkz%&PCE=8I{iX6W{+bWC?k?FQ z-cyQ@qFpknzR8Fq>uC}yr58+YJ!uml{hIH;O>8*HF;sc<8uv*dUaPX-7+#P+eeogr zwMKs}J-u6MXcJa*_uYJH`DKfeuu%J4d#m9c_J)n;4wMKVU1l1TY#cu>e&Md*M@5QFV)Xl|c(TLho7X$r z%bruVX43fQ?p`cPbn{Q6p_vL;=Op1=*Gx5jw?Jce6;p{`79^f44tUqHK#w>*3vDrT zSH#7XOoh^vGbGWn;b2mLGnFpiwohVw(v&O;jfDr($jQdvjSPQ?p-(2ZZH$Hdfn8u! zpWP)1x0&WfW3LhPm_#{8-)&_~M4 zkV|c*Dv6?FA>33c;+9kgpJ(l+#*<3~;`maBImB?iN>Tg)XZ7Zt&8C#XxMTzV(XPTI z!&9czS~*uBr!u)^4z|Sb;JNm)fraCswyf((uSbQ0?8(ZJaS-v~sSY;JBAiUfWTmIY z!IV(hqtd`hjq?6YK{7vk6^0rd3}Y!1Ya?L|R31D_=1X8P7QxjK zzY_SPUsEwBTLlb~NtzS}mq7t0g|1F`nxWe%d=D9Z7-5F(B{knufkrik0obg9W-hcq zaaqD!!WJo7+X7S@Da2BUo?*zB!D751z7y1`^e>28F4Tyr=#y<=n*oor!)Rwo?l@7( zT5YVM?{Gt%;Q=m-;oTCI`alGR}!h}PHBsG`VNm`y@Q{V_W7 zxMdW?-Fi*zwTInme62ZCMy9a0#X?;iSsR*<7Hg@qoriat90B)M$K>oaPVQ;gOWgJ-v&_00cX0&Tx@leh+67^D34d~i6bFhg!Za1m=f+$r zu_$bN%aL^-d~bMv@a~;#hC5ZOV$b{3p}?J_aT5yYpXJ{1*eWD+Yd9{nGn- Q$Y>zvCCtUYII(poMH@&bntf%PN+|2nbl@_}$-_5igoTb`Ps!^wW&2-IA*~P7o zt5SS9NXg$%RX)1#Ai72CIfrF&h88lfE+TEq)r!vK_MVqhA4v92<2&1?L?@bG=lYyR z*6vAZe?L`w=Y8_6yAp}SfB@dv*`Ix+0$_6A0BCrF01yEf_!I8_U%dK%cK?IvZ?XT; z{STY|O!j}c$kQpY;KT_<(bXTFq19-4lsep!_W zyyMxaTdGZl)tvSWd!$C34p&6MwEf*}#|Zm|XKxmN+GUZ@iu>FcF!TQ7)yYpqFMIa_ zWYtJb(ruO1p(lWTXPE*58gv*nYIv90ExJ4x=S*x)UHy3DD%h4fLhYWd0IV{wtH~LZ zUFQ3_Q-N_69mrBr5NKYWkN0IGV^cVIDSv}Ipdeop2)-h4r6?Z5zbB%79>@4R48ups zIcT3L7=M%D&-LIWxG^Y0Zi@o;n_)P{HQ@LkS&EY=z{7EA`Y-jz%dN~vPs!o+?e$(8 z%BQYU>Z(R(NJ+2$HLbVdhW}7M`|#)w+lTrKy=w9uy@=5Cp;Oj1mN9m?e6fT<7+yQ^ zKs#)rAXpWF8|;r~gb&3lva__lTO!(Z#wm>mA=A%X=)0FiROW>ozBFXy*hN18*bB>< zuZLtOKU|r-*Cks~UKSsnv{D^9jtsh3MwG`iT~Mt|e!$NHjB7qKE9jCU)3xl9h=0OQ z0UlIJ+eydFG*viWBmE!9#t_JAmKBxvEj`7H?;Z_mUy8!Vy2(s#v@h*Q!}YLPLB*#y20y!A~%mflyXSNPHAw=sx`v zEfD@}KL@w`0y^+o$wAWG-Acw8eP;}VvhS!(Un?1JDKI3$S}KspaXNX59Ay++svy`z zFjU%hsb?=9Etdg|Mg_Y`Wdo`L3d%B!u#W))19M^+R3h{mLW14^E8n3N|MXUDo-uKl zRMy+c=(xvGL9uy?f;g_Nbwk|mz*03TWPd=>LLy{cle%mPVKVnLM7RPg9oV6POy(u) z&HvGZJy8@4a+g^*4sysS=BO-SD&c@B2elTm3u-fa&lypzAC|d7-d$jCSoW#FYjiQ}0d&=`c69Sf%}8)lnnq`=hSp$hSuc`~HViQ6N;Z zs(2{msH0fCfwU_Un49Aq6NgfNWJ0WGGc%AnR~pf=+h&2u|dmcXE*SP~&HCrBm3`YxFXEKhi{JHqI@i zi}l&393)WERea*@hM~ea(Ml@tW969VtdlAih0B@hiz5As6noa$H6GM}BjI9C;(OtU zmUBlgt=g&e;4IF0{NNy^x+d)pSlWRtuRX%KhvIYI^t66XzEPV)eY28Q$5)o6zK2_n z@8FaJ?}K}465GIt@`*g3r#fDud!+UB5Qh&uds1rbn-Pc6wBLp(U72>t0{4 z=97^ujAx?fv60Xh+xgMg{AloFg`||LFKn-iqm0GZ_nNhEo_RaC!I2$9C$(mr9S8R+ z+m)4emN~YLQelPvN3Twbz;X1X1W}SkD;asxW3!6qK~}lMBqKw-#C;AgXvrA6=+fa~ zJtXhC&l`X3nZ?5s<*0S*jCJ^x_hDO*jzO``AvZ#?NA*$(bt9ro6fBs1tA%R`>`>xXhY`9cLj;L(}4V*XGm%ZUYzlEk9H zyM2-9KuEUijJU7=zB23Pbqa?+eI~vbeyx+-E!Flcd!GkK`fpmlze~cxET&J1uZ_J4 z%2h^rJIBu&=8fz-h4S>SJg-|85&NEy7qPBJY>lvPHM%T*qB(x^XTt?>GZh)FGGCNejODN$_D8>WQbtqp+Z z!EXa}Qmng%lEFG4q1Rqp1sgY;&Kc_#e`jk9k?(f*t}sM-%Sy-0i-+o@@cgcRs4X5* zz1x!}>4RcJTRpJ<;L*F`3kAkBp4zb03+k|g!LLg2#_AG?>0*T6(h9A;@Fpv zb8FHhGj*1O$PSJ)v{m#iAYm^4Qm^{8*>kW%nT)E}=e(Wa*}UUL{$=IO-y`^uw6^BW zgZqkt7DDMekx_h&I-EZ*3e`Tb@guAbcv&NSri`Vz4diT0-BZ3HJ9Qh|plXVT4CGan z`q^I_L#Q%iZu(+j(i}68G=Hpc$kbR0&usg3PmH^w0^T-<3ceLWz1>3>ik$5rWPe2I ziNZeE|MbZLar3QCWmrG;DzIv+XUlqMh~}`X7etIB2*WGV!y$panLtY+h9{f?l96)NWp)wL@sU~bLvQx{gL zVv~ot+}FX&E0p2>md(8*Oo}eNRdzNw5qk=FN3I#l#1klOPi3_4<6oWubs2y_Ralx=~-cls@2TElQ9Uuf; z+6ms8oY1(Xe$&qmOwW#1G<)ie9fMyiZ_=dqSKvO}i=R-8D^{f5W~^dsjaTy^FFd)k zZ8YR@DE2nH_=^+rP~=}T+~Xn4C3vV?S(}lgZ{YDFMVE*iV`&b17)Zxrg`YBh2)aU| zK;%{1k!L&7dIr-}F#ow$=F(CM0-F}~)pfn<5yvSqu28G3Yo8Mk?A-nMk&^Epi&SS} z8i-K%L7d=>A8+TMmKZwJew|zsBq#My3;0m!3L#D1AFmZB?L0FPCnWHEh`VXhrc7l> zJ2cWku@3jNHHV}OL8JKgo;>KV>}jj5?)h|M2+5ll$ez47rjM^QgU;yA%Lb3KL{ARE zukX|L`DAqO?f@3wS-RdhRbZJQ*R?V|ynewPN6`Giuq!#T>WjXs*?qI2&Mk0T^<3#m zeFV!&G?w~R5&CYV_36pw-qlNLhkgQH!_z@orqyyvjjgtvCx?<7e_%1?KrsL7n z)z-QJBr1Ck*LRLp=__OVdX0`|Ecxz9P3RR<0u<#o4Wr+;zA?HtyD^-`t&?zn;d zt1NZVrtapXYduounzc~z%Ifq6KYu53hg$SG-Q6dOzl7c?^L@FQH8pAmv&DB5LUM{j zAEi9;d`rS=8wCgO^CEn~C&w~~>&xea*=+W#2v=Zy?O{^8NNP9yj!Ka9UAA`M>n`v2 zP=^&cd%vjP7vuBzg;;6QxUchI3ukavd?uJ~CC8@cW<+PU8YS`SZAyI$S{u~xgVK8> z=Clhbfb?3Gz(XIE7Us9!3X0zg0}SeM{i7LiTm{y=*PRg#-DTP!c~ipd=_`AbeqEKy zWAuCQUvIK}sSXdc2|}h%^)g3M+<-KUsnnD`9cm*g;yjGuZ-$QJG@ZV<0lVhm%wQWG zXNG>nYP#vM6nEWD#e!i;8TPl9{?A3+|-9U!n zDBWEV8p+rOB^_4g27Cms04Z+*!mIKoGfnwj`Gr2->&3AW6x*UCFe8x93(ff6z-obl z5DbYc2sx?(S^CHoy)6P-Z5S5^hG46^O+b6H?Ke=G86_m^U=f_-QF6f?Bv&Uy0FGPY zRp7oloV4k{kjaXkgeUhi~5~PsWFJbhJ1b zjbf9a8dtLURVSxi*hUeW6JO3gnm2jS!Yfx6#}WZ-t9e_2xdr*)+NY7;UrPhM~N hCsF#7(jazvGWA?i5Nm#GO0w_3PU&Bw9q13LbgG!ZHQza+pkoTa7$&42^SGVwu)i8 zDkb}xeP_c&O{m+T;$s&whI8jclpwV zYXBhOE)sBYzzsd1eG_g_-sdh~=Yl`MTz@`-pSf>evharKyI6mSb27;R@Zf$Qof|$T zo=!gg_IDhCzrVkNtB0GngZ*ts1K+kMH&vQr9MD&79Q-QPp zir|>ky~AAh%+4e39X=!@qlJy;Q9i6|vp-$w(P-;w3$H&cFQ+^?CFZNL=gWR&fm6g0 z*-xLG19Iw#E~v;PgpS1Hy5fqvjf~vbqL0a;rXBe~josCQmc6~xPx2?{=6^B#2fgQK z``>#xynAa14CT{Q>4ZZa74^r>)M@3Tf z%Z?#m+tPT?g4I>EJTl`Ae!iNN`=H#c)a#t7tR^9%W2z(B?(S861JZX|LS(G1NMYZY ztu}!+FS`O4Jts@+P4DRxz0LiwoGVr-i+`8fkkj%)VGj~4?_bYbI&*}yHoijMQtVIc z3TvYEl}yRB4cy(NFV^JtJP{)+^y*@pf`Q}{B-z%i(Jj5!tTmam6!TbF zRCKdR#|$k`ET){VAO|1x&-hs|w01u1G%0?<*8)S=PU?zW+$6N0 zt2=L<_$FK6tE4X5$uPo2oXF(Ly-E(7gD$0?ayv67<{wEIt=vPz>jGkbc-So*x-P6z zp42qCVz?~k?MS@jV9NgpciW2okh(`93ScWZn8yRRZ5X5eOPiB{AM`{MZaH>{R|%32 z6CUav2F-o1(Y0HoZ?s<7BNiA?xD z%0t$Fk~HPtxJ-Xel~;%aSWQl*MBsMCR&7{4O>wE`hbcmsf-^PTsHL82akJiwfC#*d z^@mmbW7-TAlA843H%_0g?{aImR0uJi2ZR81U}(OH#}HptyO5 zo<%iQhyav-b~6^IIjYfPE5YWdoYz!+?HmuG1O9)Yz=ZaeZ6ey^O0q}QqL#LibGRw# zm*{U}b@-!j6L+}4%+^AfN9ZHZg`k2wgv!sWig^Sv zBScbhDQaL6<}bz1T#uQRT_X73iO@EB_$hbN#&`vbf<_*OZH+kv zC#R)Nv0qVXW6Q%m0!H-<+UmD9RjcDQt`8ufu3`*v567rxym4?IkaoXq}J&CAZdV%WsCrla#Ibpj(e6HcE4y4+E9Z zb#xNC;5&`WoXsvG-5h7KVt|6a?q-@S*QhP`)OLWMt}V*d7Ar>ZC?B(Usm6JEsW<^t zC=e!{^Kg$rbHXrlsbtE4sRc7=Opm}Btz1VzJ^al0i3lDWD~LVWM8u4|4?!%eVd`uQ z$Kf{E{L^y?{r1LS?xqmbrwOwLs)^7>dHd*--1;xOtaJo(>aCROKd~E0=QMm(8 zK(q0DBkgEBf~abcOHf8)YjN95?2_2_ByGaKWzL8DEVq@NJymH&9p_EFA z?A_q;@_Rf77htd2w0((YT;&5ow5D8(LqKRkK5zqn3A&U2*6A)VYR+Slmufz&YGD@} z^PTPiqeuQ@823RoA=%Hc02Qh)Wyi<*~An4hcu2$6ED$?9dQB8?+);Z-}lqm>_Oq9lM z^HEf1lDk}y*k6^O1~}|Eaf+biTl*N@eq(t5Dh8ip#U@=fJtx2Wb**NlbAm=pQBS9 zs*#1*RFei_1aYEs0&|n~sGHY)7_|2pubu!-QLqfZ|LNr+DX_Y!8}^F7gdp}ZbBqHD zaPxs|fP|zu0Rjsa#=s%K1)^YiKWdjQcqf7OuRZuqE`agAfvZ`S1_za_8^jPqrCcX4-zor>=1cY57dhxz`y^J%-A8=EK(cxr6Jtdi2MSl7+@s0xXsjDl>!Gl z<1Ckwm2YtamfqfQ5|H1;&zs3uj8u8QdCD~)ZM%(%h{#+#pWXVo-OF{O&EU$9*djT% zM%gZ-_G|6e+s)cX=kNzZRkov)xrp0A+f|G^2@Zr6UZ{V2>2%ZZyMpt6(bGw?-L^_sF=az1C zV~W67QgqLk`s0#d##LM4?I%o7=DyljNylOWbf?j_6Zf#;7aDYDb@?vJJ4}@P0ZvEZ zaz0hx(YN%P`R=-5ES-7RQPx_(r7&kWXFO*r=T?1+DhD*aI;yck&s+@e${MdtN#QVa z5o*po^q1QiygI&b8{uT&##&{cVBxRgZOh##y@#z!8EG$cSGB)=frO*PVl88noN-@s zyN>{$?)&7^vF02<%(GuCY7OW1Tl30b+X?N#?OKjasj4VY%k&Px6wV`*ZB<*PwR zK%H#kNtYf%QR15KEG7=EpD~68qf&={AyL5aTom8cx0eJXv}0z8(qInDfTqJShuBxvUI0WJ2091_FdaC`KJH5V)Q zT~K`esyMra<=tln`d0N+V{ZnaFESxq>)9h6ynDgN&x_0q>J<8toG+0}#5XDWtP(YW}~fT;&lN&IA4o9(;)ne(`HTpqNq$yZ}? zv9DIbZt{X>q(nF{67fJjZ}#v07!;Q5@qR30>T8qj^SO^3oXX6UrB$rPS`p_>#h+}1 ztC7mzxUtE5H*-e%o^sAr$%d@mTg$X%(sf0`_ZNxWH2ge(jrBqfji@buw|@6o=Vwf` zxLTHY^=&VLOFx?eM{=a*o}eSET!be8rkVeKK-6bX*=Xl{u;%uh2(#C!&OzkW{WBS9{>h7t&#lA9)N_(4+gF%%u*qNt4WvQps zUEe3^ASs8Jxgq(s4Wdt#{My!1=T_{%pyNeVvmkcOtnK2Q?+D5w(`?Gx%j3rpan<)+ zKV=C|ERF)1#?~jZW!X^>IlVSP2Z>exBel2eQ_Et>pYCsXKKXr-h$QcbMdj0*^l0v$ zd)Uo9B!URK5PK@hQULU!POB%b@sEX3y(G&Vsz(hPNDIMn`+Es1)$UHQg=F2f;x}E* zk1fVfM9lZTmcAIe;(i0pl%<;@_b%?+F-Wu^5FuN9vNoRU%j#Z>occ={Hy#R{$V;|o ziluLQ61%v70%1AzlG@}<$-Z9)6FRG=w@QA+#V$N1*|Apg5m_JzN!A6oTmD`;m&8Og z1zslfh!3R31gs>toy{g|%!X~bnjvIUX#tI+A7V8Rp{6lNC~9El`rKUKhq7Xo%3xE= zkRf~5rkXU5eT5?*VkR|GgXnM$NDSVEJ;6yAD~4Bo_)XuhI}px6m>aMQ|9yQo72{;w z%f<>reWjz(ITnOUMNTTFzc4fDG7|dS@waqq(E(yt!et~j@{P4Ik`SHP&HzJ#z)I`s zdFBW5UJQ5+4uASaWdhu zBMPV?Jj|YW)FJ2xl)rOhy@KU9o4xCgB8Z<==A!-pnzdK=f=sX9?UhTT9^Y7mmx0X5 zX!RJj-`!Kuvbxx&Q*o9OAnRE6#pUpRHT9jLsjN?URc`RC^RRYg_&_X7UVIt+^%dp- zw=#!*PfJFDFI=!J`nPyND5qUnqV2@BCzQiwuc&{7-Yr=yhJ_l9d!IIrqD!!5os6sy z7ikWvKZYPugyz=K|8)zv5ae3-6EN7hZ@<(U{LV+!bcz#%mQwCe#;3fq4J}?e%1=KY z2#2BZA?jsJf%hH&)9(dWl(jaAQGi7ajFKF$ohGiqqVThd3Wtr?gIaO_AjsKHn|b@C zfX^dC;BG(lNN6`qef<|3G|J4s_Wm#|nDP}MQ^<9&20@60>4a*dPeTI^y4>Kw6fNjz zG;hAYB%~ukmL>=wDL1_YhvY^*{z1?WDc5mBBW%s#^)d(|sCq2;yZ4zst6+`gSIR&^ zOYeC^b_TJV9B`Y{$pO-k2{yqVl;5+lfqf7g^{mr%+74_CLlX+Co&NT$^@Jp@OAB_q z-3x>Xr11{tuon8W?1GZ#txMy}8LD7d=Rf*D=2g%?S@R7My zG0gFM-sh71pFs0_J*p8O9US%X)y3dA0YyZe8)!A_U=CH*9Lh+e5>N z>_o*x8yKV>$doUWw-Dqvd-_mRl%4&DUg75C6u21G$#U1>pz1rt10%bqe>kzxj}^m; z#l-dkLL6ND2_?QeSd1XVb(`vfh2v27@!n`vXrLXX#Xf|xdu>wYpo;ZWs`%~CzYgE% zxmbK{XAJ*Y>WxzZIC)XJJ$0K5|+c!W#P5T&v|LJyPJ^%LYlh}SU|n> zkKbnwsxcBy-Un<;x#1pm$Na@@r4{Z7&D_g7y1s5L9mQZ{SzMmS7aSxZ2+v`~p4Xb+ zLhke~bpgWj{l|civ9(7bf)2abEGy-G)ZREg)bRcjM{`Efi^yDyV<2EfyXn(?+ubC@I6>ubLa4;6MNNfw$|qnKALG}SAc z%AR1&+mYY>_q^u`x!d)}SQCE-Beo6u_NqkF9cGvomsHnqBxKI?p7;vC5&xDOVK=#f zqP%?5QzQnnHI;Wx5`?~H;%o5`uEVG_1>V0oJie04K|cXoSSH2+gC*?+DCnOjy!nP9 zp}Ry~AgXCgu>hE;(}#*rUt^=c)%6x63PK;eGC8Og1~BR2wvr0`U5=Hvr!@6|01%b| zm)fx5gqMP>Ezk|oDoerUViZ77xB-+3+ej6x3sGiNW>51q7bn$cgA`DY(N{NMqsvJH z`JL#hw^UQOtyGba>56T_7Y^ggxB+fkuMJ8a7sA3X@Uyc{;-Jg1#4SwdGh(A!{0F8X z7EdvfUvUFBwqb=1i?M6~(*1`~Sdb9W@_OY>xqk)^LPeMU)|eHkxWMw&)|gg6W{F)l zx?BPcz;3j6r_9g^VxpTXdf?SC0Dc%9bzL^Pf;7DLhmp+{urkE$;0$4+KWput9=F_s zAjGpE7N36cKnAPdyaeFwawLk+MO6NPC2!hJZ!S6!(j{y0{aTvm>j&qsp zbOl(CztRyqtqkRwS}XX?ODfdB+vl?)9?>93{$YsZ0TutSVwGy8!piFUaXVsQy1x#8 zMwN0SH#U0Xgg%zv8wo?|o4yJpacsxUoxiYA?OCpZBlwBP6C>c9!%FE_njnczGY_N> zvM_GSVi6D$;B_KuR9z8lu7MT95;))%THV=hKHWO$5>|ggLaiAPZY1-X6&rws>9AjY zSeUZ`;tCglD`-c8nFh>JwKUP!0O0HS;P+3!_Lfo7l$F5p3&QwF|E%a5y?XoW@J}6wBeboTs?9DfHRZK!wprd%6g^5pt+apit@0vosypzjoktOU$Qet47$!W5M zif}jou>6({B);4aIYo;!R)KJxy0EyVT)$JfJ*6sP$~^~Zm@5j>G|5( zE)q`ujq2BWUZMpuGmmpS=wmk6=a;x%Pr{EKv9d{1I=%=_!B1qs{mH zgvs@W$!8D(;HVSUkR@T+i-dhV#B3H~?z(pCD?_Pp1Y%+By@loK2MesB+bK1~8N|=8 zaU<_}o7-5SS}M!&3zF)(vxb(dq5J=x{bgiZ32Vr*?9yokHo6LexUzF1;u=aVMmuHi z%#rUjZ>SnEgb^425~0}u!wnL50-E};Adj#9@JK+w(_mE;<<)mMz+L$hwT6hbirv_t z9!t6k%RMx9RkIaZT=TomLA}LJ-JJ188kJ|xIPJ%JvY_@n;n_ZJVmWJF4kMa-ch==V z9DzRbdapMjp3#3ShE-ePodLls)>=cbGCE z63-zVge+9)7!^v_`gb}jt=JXqY$pC4c~sCy@!$k$;O7#z>(5i&1Ebn{ilHM9rfd&} zgc9btNte=2uRQme;)%VC)*k;brCD38M4rvj)>jPJ3e&HMW%R}Is7vCd@W=4dcp3b0 z{PaI2hWbp&uHR=MsRNw>Hm~l&SdM>2vpu>^7H@U^Wt*ZEytIERT$-%%%6EaYwcVlW z>1x`#v85J0FEK1^eBsp;_m8lIn4VF$sg8&$we3mgY8f)q!a2)XbJhDz_T(NzmHL8T z)`G_3#z%~0jg^hnjn5nF8JoyHoVya+gb^+k#)y=PU_?trnNBT^6U!$_ zPkP#SmgEfyNeD7AwABpTbsA@1X}|Pps=>rFdCiOA5YI@XuR1j9JENCEvk^kux!U+c zcuD+Ct@L9Vsu{X8f|vkVo^Sw0-+~MKwYDSg9QEc5+6=X&UzN-|i_o>#=xhwa#CH8K z>CQcgh{Muw7sWvs1JjiXFXIyMtL9m|v!2Q=?_ULBF)d{}1FfH#R*QE95{Co)= zaf8lmM)!ZxiYC>M<5ltIu`D2}jK4VB;PLDa-)h6`(N)G$`j*XNQFg}Kdagb;?~6n% zxk@zMFXQ3LX&CS>pSiIikBdp_OZ4xBP_PG50v$v>L#H9W9tGOaC zeh3cd?zHbY#$G9m`_&e7@yL-Q`c0vIj;hFfp`ajh?KA4O#x=%22q`dO`!g!{`Fnpb$eeO`5(F2@|LZjkIW zR#r0jF4>*KQmX2c;;Nt81^J8mG_TU@6WOdSQw2lsQmHy3=lkN%r$NE_)M~VFPfHN) zP1ds@IG(lQg@yg$5*RLA&YJGN)J02Wb>PJlGpg*xdZc7#vljnPpy7 zUG>|ju34fleAP<6XBI$x%J7-roC_T~jz5F1poJ)`y{Gz~hGQx|;fWgN@e7;n`2`xM zd9Of8T|d8Hc~*K>#le|ZaH)o*l%+lr>p$SV+|TK^HqUIhtBT5Roz?80O)79B!I2ZZ z3E(jw^s_c+GTcJFQuxm1ZIRN@wm$mmF!!>tW0Y>g3(=29dU{h~^x@Pr)|+pCWHcUe z=dv81pFfRv^7KF7ey6UqKO_=A&%Z!^4WGYJ6X0Gpn};Nk#iv*oz9;C4f0l`nHReAo2~tw5d?} zK(Xg0T07`dI^$LR_WHO@wUyWzsa3z3#VswOgWkVWAzi6Sa#m49#kSoo`ar zX1{CA5izz|;UJAw!pufv=Ujkkg+plt2a;m;(oDH1K@f_3j$i0cz_cpgXcBh_4V~9g z=A$wAG7fGu#U{rMcy$D|lF-(Ug8#ayuLG_f-|pUCfa`j)YTNMnCKBEnbNoFr-~U0C zJe7ymEAOvZyT_PhjFod{E*Dgu+#XXiEJ4Uznb}Arr@7fl>O|}2>o!dLMz_95lmYEh z$j(X`j}Oj+KA|3Rw$&?Rfy~0oeTiFtr=_M2Y;`c7%~gi^8*1r1CZjO|r6&gs`!49~ z!e_?=*NT%FNu4xSg>xcQXzi_S5@V#tKWmw^wVq;YZ|&Wy+)68WFB38}KlrRuQ)4VL z+r^m8n8z57*xq|eMKSwJ1DiHC2QA0p*bGDD>KDFE_nFvvEgABxIQq(@wU^iCXa2^- z4|#!Bg9k*br~PYe4E535jI_+I;Eh&#V;&=9*7h~!W>nIno=0MlmXS%_or*Vg^K}|@ zW_9><<#qL^ec@2s{2BI%`m}GAA zYslKctt?Q9IEk?|cS;w8#HcI%KcUn~*bXuaD2o0mC{-G+RoJuaYwdq`TTimu5)A9S zWi^f{3N%T7dLXa!0x7zN8scRz>0ScGv? zu@Emc#NDYR>1nNF-zk zWRQSN;!tko#)>p-9mq;Uay-5YLifHefeUiG)h}!MHy{c4`g({Pn*WD`jzvMpHqsge zX#RB$2_*wHy=ql$B4_KX{ZlAnl*GqLwJHC>iZWTZQD56DoT0O`Q-6`F@{hQU^@{k< zh9x_ey6VXL<{D&hUQncVGRvrUpR+PB~fCMOhe5T697-@K8Dh@wlqn)zAf79SQ?{ySbJ|gUjzno37 z8DC76L)W04g_)!*UJG9>cpsXmzbXyb`I+Y!>b~6 zdTZ_AjPL8$b}el8S-a?yuyt5M!1BOC!b5h9K9mb=BZ$W)BXJ5vS>O~vvK-){HcN0g zkl3-l6ky#x{{M%tj_^I|QEj=!V3taUP&3b^I%eFrxZ%@--;*%OuUK~d*ZTiQ>wSG@ z9{3Q}2g_!@`Lrx4w^bhuNp!U6OfR5nwuHkvHX2BS=mQMRsoZ@{hPIZgTRshxyDuFr zY%E&B(?xU)_wL9WrL<+pf{7Bs$BLd#y?hSd@df{ny1RJ(lb(VW@)9JnmiQbt&M8|E zw!?2zi825@hlQyBy)8TsAJS%Q*i#nNb}aW(imik9)(kh6riFkl!-a^-%up_ALl8}C zVO1f4!bfM$oM+!*`rF9=8JpE!VM)QVWxc+GHv7(Wn+X#zE5v^iPF+D#M&KWh^q~UQ`)#j|^7r3b zXDd;G$+frU6fskG-g6hWnUSh72LtBI`NE)=5fIxv*)MBS9YGBS2`>Na8`%DoHWt*0MgPvtGdE^fpt>c+uV+lJP!uYk$~2W4E` z12!K#&eOlFu9==B3XUyVcHLjW4z3@8<=ZbwoZg^`y*nl*0t(1;wxNoo*T>#!N>pz2 z?|gfR5Na}EQr~(k6{vjog@;Z_4xKSK0qbPF$zn;~FzD-jh?bkG2;QTPZ!g-2qwDyc z$4h_M?r~gaQ#r=cFmHMT3F$2`&r|p|hAS&22D*9te-;k&H|Gm1Jnswlf6Z3gtWBC; z;R03-S2}z|2xCEPqmY{N~N{2gO9|gV%`!okQCMP z6#u1~KXIfVG{L|SZQD#f!NBk@lrX$ON^Q()cF}-@2oLdxuD7Drv9+<%j!5@PY*gwi rWTJ0XTmg)q}DRC3sn# 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 literal 0 HcmV?d00001 diff --git a/www/img/carimg/volskwagen-van.png b/www/img/carimg/volskwagen-van.png new file mode 100644 index 0000000000000000000000000000000000000000..d2755c217c485f3d8b948e05119ee1d889f27850 GIT binary patch literal 12794 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 T;FQWgM=Uhdbg#Wru?YQdP{W3? literal 0 HcmV?d00001 diff --git a/www/img/collectivized.png b/www/img/collectivized.png new file mode 100644 index 0000000000000000000000000000000000000000..a0815557855c5841bafec245d61dff0a1c7450a9 GIT binary patch literal 1776 zcmY*a3pA8z7@lz%mquDt=wgJW{+WONxskarG(-s-tJ!KJq9m7P7MnVWny8hz5XG*J z9F>r*>~<3(b4?{Fg^Hr2kPNc1->>Yp|2hBnz3=lr@AE$2cm6q(>F>MR$k5UdgTWYi zd-2wToq)dj+F<3C9Bu-ec7nTipuWETljnZVKxz=@^+N*K`_LCVw1{5~0tP+S+Rw81_7J4}jd<2ln9%It#py7*kU<^FgOy`3Yf+gsaX;^5urn58U#~G6b6Wy5;=)PCn0o> zM8VEckPsS?Oyx*bV1;0S)7Vl42-s33kxXYxR798#!88b=awJL;LS>6pBr=^yrm>_7 zB1{7yV1nwuI7f`)Xh{l~K%B;wC_%~+0~(zpRR9pQfE1Wyi_w$_Q`x`(LZ2ytfQA}I zaXN@WJBUeSDod;Y<4{BlyrIevnF^|CIzt0TAc4^+K?MSEC+PHh;px3*t&jiufFSo>`vLcZ(nNq0pX#H!$*G2I(jr)Boa%cIl0G<<)0`hJXu_F`b>F6W#xtH zKQCXodab7BMs00f-OYxE##>D?xm=-Asc$#mZE0w&P^)l@zO|%&M|>@gc0K{8C49O$qhhZJQf=UcQmtzObXE@Ya|{Z_Ul*?)`_X zHdIj#L|R`uf89(bEZr^`zOl@ z!#}p;X&brthOyoz=Q~+hS!?fTXExb1^$r@jb$<#l4_cUJKDFB1+{9PQg5ZRV2X6~m z`O4VDk9n)g3D@{4zq!u;>eAA>2_w^n*14j~eRe|VcY^04uXb_%^e5rkN|IM(On(Sb*Lf)cFP^>Ey(-lcK$PS3I4brGWR z798$PQYay)XJ$|`guGkb8{CFbU zYS3lh#Bhw6DZg&O!jObp9=Ml z&>XzDsTGlY(wOc>5|xSVxf{~>{#4(V2h|xJr!AW6zS9h)7U}qKSA+~Un0&w!p9uQi z_MZ?~o&O-TiyagwXdzm2uL*Ti-f_BWPu|ZowKl|@h|`N=+*fZw|8BfJe0i1bA!+{r Dzy{;n literal 0 HcmV?d00001 diff --git a/www/img/community.png b/www/img/community.png new file mode 100644 index 0000000000000000000000000000000000000000..44d6eba641e17a16d2feb25c82ad42d53c7a4f9f GIT binary patch literal 1058 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dy%*9TgAsieWw;%dH0CG7CJR*yM z^j#2UEC^o24rEA{xJHx&=ckpFCl;kLl$V$5W#(lUCnpx9>g5-u&wghk#lXNgDZnSh z_5c6>K=lkj3J5|O7y<$m)~}y`|Nf`V4$mv+ai^q+wYEC%*^__b^7r))k4k6$T;upF zUGYn*!jE+h>Q+}7!|Yj45nbF3cT3M)4*ymO!3-AiHB#)Wt9 ze@l~pQa1bhIy;VpB+=Gxhh2M%&Yb(P)`1hm?Q-0+ujusor)9HVw6uKBPqoZ% zyI+9Jf+d>kH&4EKOQf|+w4*oo^w~n7u5?AtgcQf!`z0sMNI!9kD<#8r#~$vC9Fwg( z*<<3YckCAJ>?=KYo;@@|YT9h0&D-0qT;(e)m7F#Q$c{d8OrX3*X3k>WjoU&F9bxqV zI&Z^*yZ3>P=SoZg+9Ew|w(;iej=T2(Eh;*9L9n(-W8G%ig)4ma9pp>|TDtH1TKli7 zoPjC}PM?)uzSecme)gysiT)`T+jrGnye!<@p}b}jM|={{K%g3twr+>r`yi$jo;}az z;l<|T2a%FnvI=Om>e@{Z*%`O)%)fgd=<)CA3Q6z(wE|ECyg_UvJI zI924Tls6%-HN|p@*oIAKma&F8Zjj2cKD;NE*V2#oP0fv!jT=;cUNsO1VBW9NYI?vs zD1cX%&y>SUXg%X@dx`H$=Dq4<|NCu9uLQHhw)M3+ix#V~GpIfLSsi#R?W5cNd4`q0 z<5r*AV#t=ia<SbAf{l&zEBPZv-sQT4kny+ktF?dhxIwl4nj1J}F$kL-MZZdIPFZ2sre x*ZXd7N%V<6wp=fS?83{1OO*i`k?>- literal 0 HcmV?d00001 diff --git a/www/img/from-to.png b/www/img/from-to.png new file mode 100644 index 0000000000000000000000000000000000000000..92b2cac64725fb6741413e887a5303c78f4f96a2 GIT binary patch literal 1231 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 V)A2w7aX)_)nHgO`RT#L({STJyPAvcc literal 0 HcmV?d00001 diff --git a/www/img/localization.png b/www/img/localization.png new file mode 100644 index 0000000000000000000000000000000000000000..3eaa343f343a8b5b7a2e01f21b4c01317edd2dda GIT binary patch literal 891 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 PsEEPS)z4*}Q$iB}3ADFM literal 0 HcmV?d00001 diff --git a/www/img/settings.png b/www/img/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..fcb0750cb97ca43ecb55d61597d9874c07148596 GIT binary patch literal 1375 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+081LKSUpAgso|NndY1$n`d zZy=Z*3=#1T2=MX+vID*Sg1vnMy}hBbo?vCZzM)<~alarR{~#a_*@Uj9(Mo zz>0l*z}g}H1=$YtFWB$?LEu0Gk|3i%E(f|3Y^*2H3;w|n&jMp@ANx#MAk|h9jeoKm6^8I`)qH`^g!<4KrQN*t(y)p}kXR z!Zb6}mMuTk4F2p%ImN(%*R*LRsA2m zKl|80Y|3-%_Mm;ISK1u6JQ_QD;;J1h)+-({`kJt2V{<^AQ}#cDIY1XNCV9KNwEw=z zeHzH&Ebxdd1}4wzAk65bF}ngN$X?><>&pIsLxzW2hVMY03Q*4vPZ!4!i_@(^zoUf$ z1!T7#SbAmA8IC2_0>XQ^oOHdfMCb}Ej9RfpmE*&xz~Jwn@dWWZQWNamT5ix_FbrrEa&lpIV<@8uASH@tiIQ0?xD;@j&l+VUaWZ^ zqx_Da;qbxF;tPzDpC~!iE|zdkxX{E(Dp#R(T2g@~Wx9F) z4Mk_mDPA&AetY4o^xLR;dn>&cS*kpXe$3syBloeS<;|L)ewQyx67&;qD&9XByDlhE zVQ$*qWjjO<&vE8RY^^n3{o&{4n-zSk=R9nTc6opI`p1S$<^HA*HZC*5Js(_rY`Unl z^=a*)9AQiAWIoStU&U_PHC_3<#X$1uJ)t?aM-~>RPMIIND#ZW%(rM>zwd7bS1bZ zJNJG3*86W#@sfErE-~5fl+8>Jas9pTberFY+v@pE2an!dws@&+=+DNv^ToQ>*e~Wd zedXrO)z!U4%)j&Y?T*(Fp89&Gd3o{5YuoA`1526u6_fwC9^IsMnC}Q!>*kacj8Wer^p=gCxj?;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xh Rq=1STJYD@<);T3K0RWpG9PI!A literal 0 HcmV?d00001 diff --git a/www/img/smartphone.png b/www/img/smartphone.png new file mode 100644 index 0000000000000000000000000000000000000000..35bacf1a0edf3419d74ddb74c9c6b4e2b8809364 GIT binary patch literal 893 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10;#Gi8i0l9V|2_Rfz5Ii` z{D3GJNc#Hv1_T6n0g->8pP!$%Uyx5gfRBHWn_DbUHZ(NU%P-K&H^@66z}q(vDB|fK zuWzW24^TT0K`agO0NUsW z@+4R`7^uB0$QgB*-tAL2J$LZ4Dv<28Al#W`W%Q*gRGkm){BJOTXa8+Pq=j!i@)c z#FT!rzgM)pVRFw%;REAKjdht3POq8#pE#a6y0np#w_?VsbERK|Cf>GZ6Q0%!G?y{S z+ug-r-5uR0Kn`btM`STD+OC5zqm#z$3ZNi+iKnkC`vVRsVHv}kUfwXE&_7QX#}JFt zZzrD&JLDkXD$lY)K}EnM&}4;%M@RvOMFW@P%#;7?`&kP+a?QQN@40?`efj&Gb!VBC zggkY77OD#W@YI^CsAN0)?x~kDMlY{i55D&xQLJlq&Q!14*4MN|xz+rY&--uNyqlft zG?QZD{{tI+cZkZ!ZA{?YQ1E8aqeWSBGM4LbSU0vt{XMf{(Zjj%4tfXneUZx8wr*X% z$f33OvliWLtW_6(CogB6TT=byi;j4l%&XGIe+-Q=9}Hd;OZ^Ja<*ffv8Om}04|l!B z9s<@sNdt6RG{natu+$r*Z zd1{5}+VA|QjsrtNwZt`|BqgyV)hf9t6-Y4{85o-B8d&HWnS~fyS{YebnOJHY7+Dz@ z9gP2 RNC6cwc)I$ztaD0e0ssYVIVb=C literal 0 HcmV?d00001 diff --git a/www/img/telegram.png b/www/img/telegram.png new file mode 100644 index 0000000000000000000000000000000000000000..3de14d0a6d58d02a636d07b5495ad2a8f5950045 GIT binary patch literal 1013 zcmVsrP_C+*LtPe zW01mLjJ({*VEqX)YaA0)z;M9 z-OU5@#p8~=kNIG?eOdF^6c{Z@9*#O^!D=h`||eu z_WAw!`uq9&{rvs?{{H{||NsC0|LKg`bN~PVD|Av$Qve4D2@Ve!86YAgEG;`pe1w;n zvAV&-#>mRr-Q(u+^7Hfc_WAnz{r>*`hjD;}0004uNklKn+Xk({3`0{7njV0@2GKqWD38je@cw)GE;@#8!~`+yoeX9~l8 z55EL|u1zC^rT{feoH;<-55BOJo8dXaQ5T?wnX|}v;F(hVy69P!II08G$l>hr+A{t= z^LjTZKLv71m;haSZx}yKx(Bx@M>|X?4J<*@dcEZy*_AmOV?se_lMr@ZdJY*!9Zbko zlzBJgyOQ})6%(=)2X#J*(5g=o{EUM%#ZmVxpb60AC&DJeFnh00000NkvXXu0mjfzUnfC literal 0 HcmV?d00001 diff --git a/www/img/users.png b/www/img/users.png new file mode 100644 index 0000000000000000000000000000000000000000..c46ac06aae3fdea9165fa4dc00fdf3b0655b439c GIT binary patch literal 922 zcmV;L17-Y)P) z0bRNRUb+Tiya!{v3ue9yXTA++zYl4^4{E>=YQPa|z!Po36>q{9al;sK!y0qM8+64R zb;TWa#vXUZA9%+gdB-S$%PE1&DuT=_gUm07&NPeAHH^_Wj?p-e(mRpUJ(JWvl+;3) z)ZrrlDf-BYOERH)unsoz$r-&d>PSghb#t>Id&;aaZY zTdv_-ui;#<;$5-gUa{g{vEyH|<6pDmV6)?3v*cm4O#lD^&`Cr=R5;6ZQ;Al>Fc1uQA%}pVqAZGt zC<-DVh=L-QRRk+kEM@=yKkOy}8jpE>oo#lSO}9IYE#UI_Lc3pIyCI*)#eQSe8-*+5 z)3C2AhRqm z<$wf`vtEwug~-O@eagclRzV1$ijTAsk$bplf4IOF%mvWG3!_;X1zy?=>X?OP3CLodv)Arllt*uUa0;OR#wqGz9v+-yO%>Ge zoU@1dIG3@Y3JO@}>|=h;cX+A_(s;+&&$c-?twU9CXf-)+v;7WXJnaZfCNh|gIqkFf zkYLV+0+uC%naL?GOSH^{S|VY#WC?M|dpuDECwMOpDL%7;c~y|diu_E`s7t(61-E!9 z8zowu(0i(&rzd2q<x0?NALf + + + + + collectivecar + + + + + + + + + + + + + + + + + + + + + diff --git a/www/js/app.js b/www/js/app.js new file mode 100644 index 0000000..728be93 --- /dev/null +++ b/www/js/app.js @@ -0,0 +1,83 @@ +// Ionic Starter App + +// angular.module is a global place for creating, registering and retrieving Angular modules +// 'starter' is the name of this angular module example (also set in a attribute in index.html) +// the 2nd parameter is an array of 'requires' +// 'starter.controllers' is found in controllers.js +angular.module('starter', ['ionic', 'starter.controllers']) + +.run(function($ionicPlatform) { + $ionicPlatform.ready(function() { + // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard + // for form inputs) + if (window.cordova && window.cordova.plugins.Keyboard) { + cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); + cordova.plugins.Keyboard.disableScroll(true); + + } + if (window.StatusBar) { + // org.apache.cordova.statusbar required + StatusBar.styleDefault(); + } + }); +}) + +.config(function($stateProvider, $urlRouterProvider) { + $stateProvider + + .state('app', { + url: '/app', + abstract: true, + templateUrl: 'templates/menu.html', + controller: 'AppCtrl' + }) + + .state('app.search', { + url: '/search', + views: { + 'menuContent': { + templateUrl: 'templates/search.html' + } + } + }) + + .state('app.users', { + url: '/users', + views: { + 'menuContent': { + templateUrl: 'templates/users.html', + controller: 'UsersCtrl' + } + } + }) + .state('app.user', { + url: '/users/:username', + views: { + 'menuContent': { + templateUrl: 'templates/user.html', + controller: 'UserCtrl' + } + } + }) + .state('app.travels', { + url: '/travels', + views: { + 'menuContent': { + templateUrl: 'templates/travels.html', + controller: 'TravelsCtrl' + } + } + }) + + .state('app.travel', { + url: '/travels/:travelId', + views: { + 'menuContent': { + templateUrl: 'templates/travel.html', + controller: 'TravelCtrl' + } + } + }); + // if none of the above states are matched, use this as the fallback + $urlRouterProvider.otherwise('/app/travels'); +}); diff --git a/www/js/controllers.js b/www/js/controllers.js new file mode 100644 index 0000000..4b61d4f --- /dev/null +++ b/www/js/controllers.js @@ -0,0 +1,363 @@ + +var urlapi="http://localhost:3000/api/"; +//var urlapi="http://192.168.1.40:3000/api/"; +//localStorage.setItem("c_username", "user2"); +//localStorage.setItem("c_token", ""); + + +angular.module('starter.controllers', []) + +.controller('AppCtrl', function($scope, $ionicModal, $timeout, $http, $window) { + // With the new view caching in Ionic, Controllers are only called + // when they are recreated or on app start, instead of every page change. + // To listen for when this page is active (for example, to refresh data), + // listen for the $ionicView.enter event: + //$scope.$on('$ionicView.enter', function(e) { + //}); + + // Form data for the login modal + $scope.loginData = {}; + $scope.signupData= {}; + + $scope.storageusername=localStorage.getItem("c_username"); + // Create the login modal that we will use later + $ionicModal.fromTemplateUrl('templates/login.html', { + scope: $scope + }).then(function(modal) { + $scope.modalLogin = modal; + }); + $ionicModal.fromTemplateUrl('templates/signup.html', { + scope: $scope + }).then(function(modal) { + $scope.modalSignup = modal; + }); + + // Triggered in the login modal to close it + $scope.closeLogin = function() { + $scope.modalLogin.hide(); + }; + $scope.closeSignup = function() { + $scope.modalSignup.hide(); + }; + + // Open the login modal + $scope.login = function() { + $scope.modalLogin.show(); + }; + $scope.signup = function() { + $scope.modalSignup.show(); + }; + + // Perform the login action when the user submits the login form + $scope.doLogin = function() { + console.log('Doing login', $scope.loginData); + + $http({ + url: urlapi + 'auth', + method: "POST", + data: $scope.loginData + }) + .then(function(response) { + // success + console.log("response: "); + console.log(response.data); + if(response.data.success==true) + { + console.log("login successful"); + localStorage.setItem("c_username", $scope.loginData.username); + localStorage.setItem("c_token", response.data.token); + }else{ + console.log("login failed"); + } + $timeout(function() { + $scope.closeLogin(); + $window.location.reload(true); + }, 1000); + + }, + function(response) { // optional + // failed + console.log(response); + }); + + }; + $scope.doSignup = function() { + console.log('Doing signup', $scope.signupData); + + $http({ + url: urlapi + 'users', + method: "POST", + data: $scope.signupData + }) + .then(function(response) { + // success + console.log("response: "); + console.log(response.data); + $timeout(function() { + $scope.closeSignup(); + }, 1000); + + }, + function(response) { // optional + // failed + }); + + }; + $scope.logout = function(){ + localStorage.removeItem("c_username"); + localStorage.removeItem("c_token"); + $window.location.reload(true); + }; +}) + + +.controller('TravelsCtrl', function($scope, $http, $ionicModal, $timeout, $ionicLoading) { + $scope.travels=""; + + $scope.travels=JSON.parse(localStorage.getItem('c_travels')); + + $scope.doRefresh = function() { + $http.get(urlapi + 'travels') + .success(function(data, status, headers,config){ + console.log('data success'); + console.log(data); // for browser console + $scope.travels = data; // for UI + localStorage.setItem('c_travels', JSON.stringify($scope.travels)); + $scope.$broadcast('scroll.refreshComplete');//refresher stop + }) + .error(function(data, status, headers,config){ + console.log('data error'); + $scope.$broadcast('scroll.refreshComplete');//refresher stop + }) + .then(function(result){ + travels = result.data; + $ionicLoading.show({ template: 'Travels actualized from server!', noBackdrop: true, duration: 2000 }); + }); + }; + + $scope.newtravel={}; + + // Create the login modal that we will use later + $ionicModal.fromTemplateUrl('templates/newofferingtravel.html', { + scope: $scope + }).then(function(modal) { + $scope.modalOffering = modal; + }); + + // Create the login modal that we will use later + $ionicModal.fromTemplateUrl('templates/newaskingtravel.html', { + scope: $scope + }).then(function(modal) { + $scope.modalAsking = modal; + }); + + $ionicModal.fromTemplateUrl('templates/newaskingpackage.html', { + scope: $scope + }).then(function(modal) { + $scope.modalPackage = modal; + }); + + // Triggered in the login modal to close it + $scope.closeNewOfferingTravel = function() { + $scope.modalOffering.hide(); + }; + // Triggered in the login modal to close it + $scope.closeNewAskingTravel = function() { + $scope.modalAsking.hide(); + }; + $scope.closeNewAskingPackage = function() { + $scope.modalPackage.hide(); + }; + + // Open the login modal + $scope.showNewOfferingTravel = function() { + $scope.modalOffering.show(); + }; + // Open the login modal + $scope.showNewAskingTravel = function() { + $scope.modalAsking.show(); + }; + $scope.showNewAskingPackage = function() { + $scope.modalPackage.show(); + }; + + // Perform the login action when the user submits the login form + $scope.doNewOfferingTravel = function() { + console.log('Doing new travel', $scope.newtravel); + $scope.newtravel.icon="lorry"; + $scope.newtravel.generateddate=$scope.newtravel.date; + $scope.newtravel.owner=localStorage.getItem("c_username"); + + $scope.newtravel.modality="offering"; + console.log($scope.newtravel); + $http({ + url: urlapi + 'travels', + method: "POST", + data: $scope.newtravel + }) + .then(function(response) { + // success + console.log("response: "); + console.log(response); + $scope.newtravel._id=response.data._id; + $scope.travels.push($scope.newtravel); + $scope.newtravel={}; + if(response.data.success==false){ + + $ionicLoading.show({ template: 'failed to generate new travel', noBackdrop: true, duration: 2000 }); + } + }, + function(response) { // optional + // failed + }); + + // Simulate a login delay. Remove this and replace with your login + // code if using a login system + $timeout(function() { + $scope.closeNewOfferingTravel(); + }, 1000); + }; + + $scope.doNewAskingTravel = function() { + console.log('Doing new travel', $scope.newtravel); + $scope.newtravel.icon="lorry"; + $scope.newtravel.generateddate=$scope.newtravel.date; + $scope.newtravel.owner=localStorage.getItem("c_username"); + + $scope.newtravel.modality="asking"; + console.log($scope.newtravel); + $http({ + url: urlapi + 'travels', + method: "POST", + data: $scope.newtravel + }) + .then(function(response) { + // success + console.log("response: "); + console.log(response); + $scope.newtravel._id=response.data._id; + $scope.travels.push($scope.newtravel); + if(response.data.success==false){ + + $ionicLoading.show({ template: 'failed to generate new asking travel', noBackdrop: true, duration: 2000 }); + } + }, + function(response) { // optional + // failed + }); + + // Simulate a login delay. Remove this and replace with your login + // code if using a login system + $timeout(function() { + $scope.closeNewAskingTravel(); + }, 1000); + }; + + $scope.doNewAskingPackage = function() { + console.log('Doing new package', $scope.newtravel); + $scope.newtravel.icon="lorry"; + $scope.newtravel.generateddate=$scope.newtravel.date; + $scope.newtravel.owner=localStorage.getItem("c_username"); + $scope.newtravel.package=true; + + $scope.newtravel.modality="package"; + console.log($scope.newtravel); + $http({ + url: urlapi + 'travels', + method: "POST", + data: $scope.newtravel + }) + .then(function(response) { + // success + console.log("response: "); + console.log(response); + $scope.newtravel._id=response.data._id; + $scope.travels.push($scope.newtravel); + if(response.data.success==false){ + + $ionicLoading.show({ template: 'failed to generate new asking package', noBackdrop: true, duration: 2000 }); + } + }, + function(response) { // optional + // failed + }); + + // Simulate a login delay. Remove this and replace with your login + // code if using a login system + $timeout(function() { + $scope.closeNewAskingPackage(); + }, 1000); + }; +}) + +.controller('TravelCtrl', function($scope, $stateParams, $http) { + $scope.storageusername=localStorage.getItem("c_username"); + $scope.travel=""; + console.log($stateParams.travelId); + $http.get(urlapi + 'travels/'+$stateParams.travelId) + .success(function(data, status, headers,config){ + console.log('data success'); + console.log(data); // for browser console + $scope.travel = data; // for UI + }) + .error(function(data, status, headers,config){ + console.log('data error'); + }) + .then(function(result){ + travels = result.data; + }); +}) + +.controller('UsersCtrl', function($scope, $http, $ionicModal, $timeout) { + $scope.users=""; + + $scope.users=JSON.parse(localStorage.getItem('c_users')); + + $scope.doRefresh = function() { + $http.get(urlapi + 'users') + .success(function(data, status, headers, config){ + console.log('data success'); + console.log(data); // for browser console + $scope.users = data; // for UI + localStorage.setItem('c_users', JSON.stringify($scope.users)); + $scope.$broadcast('scroll.refreshComplete');//refresher stop + }) + .error(function(data, status, headers,config){ + console.log('data error'); + $scope.$broadcast('scroll.refreshComplete');//refresher stop + }) + .then(function(result){ + users = result.data; + }); + }; +}) + +.controller('UserCtrl', function($scope, $stateParams, $http) { + //$scope.user=""; + console.log($stateParams.username); + $http.get(urlapi + 'users/byusername/'+$stateParams.username) + .success(function(data, status, headers,config){ + console.log('data success'); + console.log(data); // for browser console + $scope.user = data; // for UI + }) + .error(function(data, status, headers,config){ + console.log('data error'); + }) + .then(function(result){ + user = result.data; + }); + + $http.get(urlapi + 'travels/user/'+$stateParams.username) + .success(function(data, status, headers,config){ + console.log('data success'); + console.log(data); // for browser console + $scope.travels = data; // for UI + }) + .error(function(data, status, headers,config){ + console.log('data error'); + }) + .then(function(result){ + travels = result.data; + }); +}); diff --git a/www/lib/ionic/css/ionic.css b/www/lib/ionic/css/ionic.css new file mode 100644 index 0000000..9dd5268 --- /dev/null +++ b/www/lib/ionic/css/ionic.css @@ -0,0 +1,9813 @@ +@charset "UTF-8"; +/*! + * Copyright 2015 Drifty Co. + * http://drifty.com/ + * + * Ionic, v1.3.1 + * A powerful HTML5 mobile app framework. + * http://ionicframework.com/ + * + * By @maxlynch, @benjsperry, @adamdbradley <3 + * + * Licensed under the MIT license. Please see LICENSE for more information. + * + */ +/*! + Ionicons, v2.0.1 + Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ + https://twitter.com/benjsperry https://twitter.com/ionicframework + MIT License: https://github.com/driftyco/ionicons + + Android-style icons originally built by Google’s + Material Design Icons: https://github.com/google/material-design-icons + used under CC BY http://creativecommons.org/licenses/by/4.0/ + Modified icons to fit ionicon’s grid from original. +*/ +@font-face { + font-family: "Ionicons"; + src: url("../fonts/ionicons.eot?v=2.0.1"); + src: url("../fonts/ionicons.eot?v=2.0.1#iefix") format("embedded-opentype"), url("../fonts/ionicons.ttf?v=2.0.1") format("truetype"), url("../fonts/ionicons.woff?v=2.0.1") format("woff"), url("../fonts/ionicons.woff") format("woff"), url("../fonts/ionicons.svg?v=2.0.1#Ionicons") format("svg"); + font-weight: normal; + font-style: normal; } + +.ion, .ionicons, +.ion-alert:before, +.ion-alert-circled:before, +.ion-android-add:before, +.ion-android-add-circle:before, +.ion-android-alarm-clock:before, +.ion-android-alert:before, +.ion-android-apps:before, +.ion-android-archive:before, +.ion-android-arrow-back:before, +.ion-android-arrow-down:before, +.ion-android-arrow-dropdown:before, +.ion-android-arrow-dropdown-circle:before, +.ion-android-arrow-dropleft:before, +.ion-android-arrow-dropleft-circle:before, +.ion-android-arrow-dropright:before, +.ion-android-arrow-dropright-circle:before, +.ion-android-arrow-dropup:before, +.ion-android-arrow-dropup-circle:before, +.ion-android-arrow-forward:before, +.ion-android-arrow-up:before, +.ion-android-attach:before, +.ion-android-bar:before, +.ion-android-bicycle:before, +.ion-android-boat:before, +.ion-android-bookmark:before, +.ion-android-bulb:before, +.ion-android-bus:before, +.ion-android-calendar:before, +.ion-android-call:before, +.ion-android-camera:before, +.ion-android-cancel:before, +.ion-android-car:before, +.ion-android-cart:before, +.ion-android-chat:before, +.ion-android-checkbox:before, +.ion-android-checkbox-blank:before, +.ion-android-checkbox-outline:before, +.ion-android-checkbox-outline-blank:before, +.ion-android-checkmark-circle:before, +.ion-android-clipboard:before, +.ion-android-close:before, +.ion-android-cloud:before, +.ion-android-cloud-circle:before, +.ion-android-cloud-done:before, +.ion-android-cloud-outline:before, +.ion-android-color-palette:before, +.ion-android-compass:before, +.ion-android-contact:before, +.ion-android-contacts:before, +.ion-android-contract:before, +.ion-android-create:before, +.ion-android-delete:before, +.ion-android-desktop:before, +.ion-android-document:before, +.ion-android-done:before, +.ion-android-done-all:before, +.ion-android-download:before, +.ion-android-drafts:before, +.ion-android-exit:before, +.ion-android-expand:before, +.ion-android-favorite:before, +.ion-android-favorite-outline:before, +.ion-android-film:before, +.ion-android-folder:before, +.ion-android-folder-open:before, +.ion-android-funnel:before, +.ion-android-globe:before, +.ion-android-hand:before, +.ion-android-hangout:before, +.ion-android-happy:before, +.ion-android-home:before, +.ion-android-image:before, +.ion-android-laptop:before, +.ion-android-list:before, +.ion-android-locate:before, +.ion-android-lock:before, +.ion-android-mail:before, +.ion-android-map:before, +.ion-android-menu:before, +.ion-android-microphone:before, +.ion-android-microphone-off:before, +.ion-android-more-horizontal:before, +.ion-android-more-vertical:before, +.ion-android-navigate:before, +.ion-android-notifications:before, +.ion-android-notifications-none:before, +.ion-android-notifications-off:before, +.ion-android-open:before, +.ion-android-options:before, +.ion-android-people:before, +.ion-android-person:before, +.ion-android-person-add:before, +.ion-android-phone-landscape:before, +.ion-android-phone-portrait:before, +.ion-android-pin:before, +.ion-android-plane:before, +.ion-android-playstore:before, +.ion-android-print:before, +.ion-android-radio-button-off:before, +.ion-android-radio-button-on:before, +.ion-android-refresh:before, +.ion-android-remove:before, +.ion-android-remove-circle:before, +.ion-android-restaurant:before, +.ion-android-sad:before, +.ion-android-search:before, +.ion-android-send:before, +.ion-android-settings:before, +.ion-android-share:before, +.ion-android-share-alt:before, +.ion-android-star:before, +.ion-android-star-half:before, +.ion-android-star-outline:before, +.ion-android-stopwatch:before, +.ion-android-subway:before, +.ion-android-sunny:before, +.ion-android-sync:before, +.ion-android-textsms:before, +.ion-android-time:before, +.ion-android-train:before, +.ion-android-unlock:before, +.ion-android-upload:before, +.ion-android-volume-down:before, +.ion-android-volume-mute:before, +.ion-android-volume-off:before, +.ion-android-volume-up:before, +.ion-android-walk:before, +.ion-android-warning:before, +.ion-android-watch:before, +.ion-android-wifi:before, +.ion-aperture:before, +.ion-archive:before, +.ion-arrow-down-a:before, +.ion-arrow-down-b:before, +.ion-arrow-down-c:before, +.ion-arrow-expand:before, +.ion-arrow-graph-down-left:before, +.ion-arrow-graph-down-right:before, +.ion-arrow-graph-up-left:before, +.ion-arrow-graph-up-right:before, +.ion-arrow-left-a:before, +.ion-arrow-left-b:before, +.ion-arrow-left-c:before, +.ion-arrow-move:before, +.ion-arrow-resize:before, +.ion-arrow-return-left:before, +.ion-arrow-return-right:before, +.ion-arrow-right-a:before, +.ion-arrow-right-b:before, +.ion-arrow-right-c:before, +.ion-arrow-shrink:before, +.ion-arrow-swap:before, +.ion-arrow-up-a:before, +.ion-arrow-up-b:before, +.ion-arrow-up-c:before, +.ion-asterisk:before, +.ion-at:before, +.ion-backspace:before, +.ion-backspace-outline:before, +.ion-bag:before, +.ion-battery-charging:before, +.ion-battery-empty:before, +.ion-battery-full:before, +.ion-battery-half:before, +.ion-battery-low:before, +.ion-beaker:before, +.ion-beer:before, +.ion-bluetooth:before, +.ion-bonfire:before, +.ion-bookmark:before, +.ion-bowtie:before, +.ion-briefcase:before, +.ion-bug:before, +.ion-calculator:before, +.ion-calendar:before, +.ion-camera:before, +.ion-card:before, +.ion-cash:before, +.ion-chatbox:before, +.ion-chatbox-working:before, +.ion-chatboxes:before, +.ion-chatbubble:before, +.ion-chatbubble-working:before, +.ion-chatbubbles:before, +.ion-checkmark:before, +.ion-checkmark-circled:before, +.ion-checkmark-round:before, +.ion-chevron-down:before, +.ion-chevron-left:before, +.ion-chevron-right:before, +.ion-chevron-up:before, +.ion-clipboard:before, +.ion-clock:before, +.ion-close:before, +.ion-close-circled:before, +.ion-close-round:before, +.ion-closed-captioning:before, +.ion-cloud:before, +.ion-code:before, +.ion-code-download:before, +.ion-code-working:before, +.ion-coffee:before, +.ion-compass:before, +.ion-compose:before, +.ion-connection-bars:before, +.ion-contrast:before, +.ion-crop:before, +.ion-cube:before, +.ion-disc:before, +.ion-document:before, +.ion-document-text:before, +.ion-drag:before, +.ion-earth:before, +.ion-easel:before, +.ion-edit:before, +.ion-egg:before, +.ion-eject:before, +.ion-email:before, +.ion-email-unread:before, +.ion-erlenmeyer-flask:before, +.ion-erlenmeyer-flask-bubbles:before, +.ion-eye:before, +.ion-eye-disabled:before, +.ion-female:before, +.ion-filing:before, +.ion-film-marker:before, +.ion-fireball:before, +.ion-flag:before, +.ion-flame:before, +.ion-flash:before, +.ion-flash-off:before, +.ion-folder:before, +.ion-fork:before, +.ion-fork-repo:before, +.ion-forward:before, +.ion-funnel:before, +.ion-gear-a:before, +.ion-gear-b:before, +.ion-grid:before, +.ion-hammer:before, +.ion-happy:before, +.ion-happy-outline:before, +.ion-headphone:before, +.ion-heart:before, +.ion-heart-broken:before, +.ion-help:before, +.ion-help-buoy:before, +.ion-help-circled:before, +.ion-home:before, +.ion-icecream:before, +.ion-image:before, +.ion-images:before, +.ion-information:before, +.ion-information-circled:before, +.ion-ionic:before, +.ion-ios-alarm:before, +.ion-ios-alarm-outline:before, +.ion-ios-albums:before, +.ion-ios-albums-outline:before, +.ion-ios-americanfootball:before, +.ion-ios-americanfootball-outline:before, +.ion-ios-analytics:before, +.ion-ios-analytics-outline:before, +.ion-ios-arrow-back:before, +.ion-ios-arrow-down:before, +.ion-ios-arrow-forward:before, +.ion-ios-arrow-left:before, +.ion-ios-arrow-right:before, +.ion-ios-arrow-thin-down:before, +.ion-ios-arrow-thin-left:before, +.ion-ios-arrow-thin-right:before, +.ion-ios-arrow-thin-up:before, +.ion-ios-arrow-up:before, +.ion-ios-at:before, +.ion-ios-at-outline:before, +.ion-ios-barcode:before, +.ion-ios-barcode-outline:before, +.ion-ios-baseball:before, +.ion-ios-baseball-outline:before, +.ion-ios-basketball:before, +.ion-ios-basketball-outline:before, +.ion-ios-bell:before, +.ion-ios-bell-outline:before, +.ion-ios-body:before, +.ion-ios-body-outline:before, +.ion-ios-bolt:before, +.ion-ios-bolt-outline:before, +.ion-ios-book:before, +.ion-ios-book-outline:before, +.ion-ios-bookmarks:before, +.ion-ios-bookmarks-outline:before, +.ion-ios-box:before, +.ion-ios-box-outline:before, +.ion-ios-briefcase:before, +.ion-ios-briefcase-outline:before, +.ion-ios-browsers:before, +.ion-ios-browsers-outline:before, +.ion-ios-calculator:before, +.ion-ios-calculator-outline:before, +.ion-ios-calendar:before, +.ion-ios-calendar-outline:before, +.ion-ios-camera:before, +.ion-ios-camera-outline:before, +.ion-ios-cart:before, +.ion-ios-cart-outline:before, +.ion-ios-chatboxes:before, +.ion-ios-chatboxes-outline:before, +.ion-ios-chatbubble:before, +.ion-ios-chatbubble-outline:before, +.ion-ios-checkmark:before, +.ion-ios-checkmark-empty:before, +.ion-ios-checkmark-outline:before, +.ion-ios-circle-filled:before, +.ion-ios-circle-outline:before, +.ion-ios-clock:before, +.ion-ios-clock-outline:before, +.ion-ios-close:before, +.ion-ios-close-empty:before, +.ion-ios-close-outline:before, +.ion-ios-cloud:before, +.ion-ios-cloud-download:before, +.ion-ios-cloud-download-outline:before, +.ion-ios-cloud-outline:before, +.ion-ios-cloud-upload:before, +.ion-ios-cloud-upload-outline:before, +.ion-ios-cloudy:before, +.ion-ios-cloudy-night:before, +.ion-ios-cloudy-night-outline:before, +.ion-ios-cloudy-outline:before, +.ion-ios-cog:before, +.ion-ios-cog-outline:before, +.ion-ios-color-filter:before, +.ion-ios-color-filter-outline:before, +.ion-ios-color-wand:before, +.ion-ios-color-wand-outline:before, +.ion-ios-compose:before, +.ion-ios-compose-outline:before, +.ion-ios-contact:before, +.ion-ios-contact-outline:before, +.ion-ios-copy:before, +.ion-ios-copy-outline:before, +.ion-ios-crop:before, +.ion-ios-crop-strong:before, +.ion-ios-download:before, +.ion-ios-download-outline:before, +.ion-ios-drag:before, +.ion-ios-email:before, +.ion-ios-email-outline:before, +.ion-ios-eye:before, +.ion-ios-eye-outline:before, +.ion-ios-fastforward:before, +.ion-ios-fastforward-outline:before, +.ion-ios-filing:before, +.ion-ios-filing-outline:before, +.ion-ios-film:before, +.ion-ios-film-outline:before, +.ion-ios-flag:before, +.ion-ios-flag-outline:before, +.ion-ios-flame:before, +.ion-ios-flame-outline:before, +.ion-ios-flask:before, +.ion-ios-flask-outline:before, +.ion-ios-flower:before, +.ion-ios-flower-outline:before, +.ion-ios-folder:before, +.ion-ios-folder-outline:before, +.ion-ios-football:before, +.ion-ios-football-outline:before, +.ion-ios-game-controller-a:before, +.ion-ios-game-controller-a-outline:before, +.ion-ios-game-controller-b:before, +.ion-ios-game-controller-b-outline:before, +.ion-ios-gear:before, +.ion-ios-gear-outline:before, +.ion-ios-glasses:before, +.ion-ios-glasses-outline:before, +.ion-ios-grid-view:before, +.ion-ios-grid-view-outline:before, +.ion-ios-heart:before, +.ion-ios-heart-outline:before, +.ion-ios-help:before, +.ion-ios-help-empty:before, +.ion-ios-help-outline:before, +.ion-ios-home:before, +.ion-ios-home-outline:before, +.ion-ios-infinite:before, +.ion-ios-infinite-outline:before, +.ion-ios-information:before, +.ion-ios-information-empty:before, +.ion-ios-information-outline:before, +.ion-ios-ionic-outline:before, +.ion-ios-keypad:before, +.ion-ios-keypad-outline:before, +.ion-ios-lightbulb:before, +.ion-ios-lightbulb-outline:before, +.ion-ios-list:before, +.ion-ios-list-outline:before, +.ion-ios-location:before, +.ion-ios-location-outline:before, +.ion-ios-locked:before, +.ion-ios-locked-outline:before, +.ion-ios-loop:before, +.ion-ios-loop-strong:before, +.ion-ios-medical:before, +.ion-ios-medical-outline:before, +.ion-ios-medkit:before, +.ion-ios-medkit-outline:before, +.ion-ios-mic:before, +.ion-ios-mic-off:before, +.ion-ios-mic-outline:before, +.ion-ios-minus:before, +.ion-ios-minus-empty:before, +.ion-ios-minus-outline:before, +.ion-ios-monitor:before, +.ion-ios-monitor-outline:before, +.ion-ios-moon:before, +.ion-ios-moon-outline:before, +.ion-ios-more:before, +.ion-ios-more-outline:before, +.ion-ios-musical-note:before, +.ion-ios-musical-notes:before, +.ion-ios-navigate:before, +.ion-ios-navigate-outline:before, +.ion-ios-nutrition:before, +.ion-ios-nutrition-outline:before, +.ion-ios-paper:before, +.ion-ios-paper-outline:before, +.ion-ios-paperplane:before, +.ion-ios-paperplane-outline:before, +.ion-ios-partlysunny:before, +.ion-ios-partlysunny-outline:before, +.ion-ios-pause:before, +.ion-ios-pause-outline:before, +.ion-ios-paw:before, +.ion-ios-paw-outline:before, +.ion-ios-people:before, +.ion-ios-people-outline:before, +.ion-ios-person:before, +.ion-ios-person-outline:before, +.ion-ios-personadd:before, +.ion-ios-personadd-outline:before, +.ion-ios-photos:before, +.ion-ios-photos-outline:before, +.ion-ios-pie:before, +.ion-ios-pie-outline:before, +.ion-ios-pint:before, +.ion-ios-pint-outline:before, +.ion-ios-play:before, +.ion-ios-play-outline:before, +.ion-ios-plus:before, +.ion-ios-plus-empty:before, +.ion-ios-plus-outline:before, +.ion-ios-pricetag:before, +.ion-ios-pricetag-outline:before, +.ion-ios-pricetags:before, +.ion-ios-pricetags-outline:before, +.ion-ios-printer:before, +.ion-ios-printer-outline:before, +.ion-ios-pulse:before, +.ion-ios-pulse-strong:before, +.ion-ios-rainy:before, +.ion-ios-rainy-outline:before, +.ion-ios-recording:before, +.ion-ios-recording-outline:before, +.ion-ios-redo:before, +.ion-ios-redo-outline:before, +.ion-ios-refresh:before, +.ion-ios-refresh-empty:before, +.ion-ios-refresh-outline:before, +.ion-ios-reload:before, +.ion-ios-reverse-camera:before, +.ion-ios-reverse-camera-outline:before, +.ion-ios-rewind:before, +.ion-ios-rewind-outline:before, +.ion-ios-rose:before, +.ion-ios-rose-outline:before, +.ion-ios-search:before, +.ion-ios-search-strong:before, +.ion-ios-settings:before, +.ion-ios-settings-strong:before, +.ion-ios-shuffle:before, +.ion-ios-shuffle-strong:before, +.ion-ios-skipbackward:before, +.ion-ios-skipbackward-outline:before, +.ion-ios-skipforward:before, +.ion-ios-skipforward-outline:before, +.ion-ios-snowy:before, +.ion-ios-speedometer:before, +.ion-ios-speedometer-outline:before, +.ion-ios-star:before, +.ion-ios-star-half:before, +.ion-ios-star-outline:before, +.ion-ios-stopwatch:before, +.ion-ios-stopwatch-outline:before, +.ion-ios-sunny:before, +.ion-ios-sunny-outline:before, +.ion-ios-telephone:before, +.ion-ios-telephone-outline:before, +.ion-ios-tennisball:before, +.ion-ios-tennisball-outline:before, +.ion-ios-thunderstorm:before, +.ion-ios-thunderstorm-outline:before, +.ion-ios-time:before, +.ion-ios-time-outline:before, +.ion-ios-timer:before, +.ion-ios-timer-outline:before, +.ion-ios-toggle:before, +.ion-ios-toggle-outline:before, +.ion-ios-trash:before, +.ion-ios-trash-outline:before, +.ion-ios-undo:before, +.ion-ios-undo-outline:before, +.ion-ios-unlocked:before, +.ion-ios-unlocked-outline:before, +.ion-ios-upload:before, +.ion-ios-upload-outline:before, +.ion-ios-videocam:before, +.ion-ios-videocam-outline:before, +.ion-ios-volume-high:before, +.ion-ios-volume-low:before, +.ion-ios-wineglass:before, +.ion-ios-wineglass-outline:before, +.ion-ios-world:before, +.ion-ios-world-outline:before, +.ion-ipad:before, +.ion-iphone:before, +.ion-ipod:before, +.ion-jet:before, +.ion-key:before, +.ion-knife:before, +.ion-laptop:before, +.ion-leaf:before, +.ion-levels:before, +.ion-lightbulb:before, +.ion-link:before, +.ion-load-a:before, +.ion-load-b:before, +.ion-load-c:before, +.ion-load-d:before, +.ion-location:before, +.ion-lock-combination:before, +.ion-locked:before, +.ion-log-in:before, +.ion-log-out:before, +.ion-loop:before, +.ion-magnet:before, +.ion-male:before, +.ion-man:before, +.ion-map:before, +.ion-medkit:before, +.ion-merge:before, +.ion-mic-a:before, +.ion-mic-b:before, +.ion-mic-c:before, +.ion-minus:before, +.ion-minus-circled:before, +.ion-minus-round:before, +.ion-model-s:before, +.ion-monitor:before, +.ion-more:before, +.ion-mouse:before, +.ion-music-note:before, +.ion-navicon:before, +.ion-navicon-round:before, +.ion-navigate:before, +.ion-network:before, +.ion-no-smoking:before, +.ion-nuclear:before, +.ion-outlet:before, +.ion-paintbrush:before, +.ion-paintbucket:before, +.ion-paper-airplane:before, +.ion-paperclip:before, +.ion-pause:before, +.ion-person:before, +.ion-person-add:before, +.ion-person-stalker:before, +.ion-pie-graph:before, +.ion-pin:before, +.ion-pinpoint:before, +.ion-pizza:before, +.ion-plane:before, +.ion-planet:before, +.ion-play:before, +.ion-playstation:before, +.ion-plus:before, +.ion-plus-circled:before, +.ion-plus-round:before, +.ion-podium:before, +.ion-pound:before, +.ion-power:before, +.ion-pricetag:before, +.ion-pricetags:before, +.ion-printer:before, +.ion-pull-request:before, +.ion-qr-scanner:before, +.ion-quote:before, +.ion-radio-waves:before, +.ion-record:before, +.ion-refresh:before, +.ion-reply:before, +.ion-reply-all:before, +.ion-ribbon-a:before, +.ion-ribbon-b:before, +.ion-sad:before, +.ion-sad-outline:before, +.ion-scissors:before, +.ion-search:before, +.ion-settings:before, +.ion-share:before, +.ion-shuffle:before, +.ion-skip-backward:before, +.ion-skip-forward:before, +.ion-social-android:before, +.ion-social-android-outline:before, +.ion-social-angular:before, +.ion-social-angular-outline:before, +.ion-social-apple:before, +.ion-social-apple-outline:before, +.ion-social-bitcoin:before, +.ion-social-bitcoin-outline:before, +.ion-social-buffer:before, +.ion-social-buffer-outline:before, +.ion-social-chrome:before, +.ion-social-chrome-outline:before, +.ion-social-codepen:before, +.ion-social-codepen-outline:before, +.ion-social-css3:before, +.ion-social-css3-outline:before, +.ion-social-designernews:before, +.ion-social-designernews-outline:before, +.ion-social-dribbble:before, +.ion-social-dribbble-outline:before, +.ion-social-dropbox:before, +.ion-social-dropbox-outline:before, +.ion-social-euro:before, +.ion-social-euro-outline:before, +.ion-social-facebook:before, +.ion-social-facebook-outline:before, +.ion-social-foursquare:before, +.ion-social-foursquare-outline:before, +.ion-social-freebsd-devil:before, +.ion-social-github:before, +.ion-social-github-outline:before, +.ion-social-google:before, +.ion-social-google-outline:before, +.ion-social-googleplus:before, +.ion-social-googleplus-outline:before, +.ion-social-hackernews:before, +.ion-social-hackernews-outline:before, +.ion-social-html5:before, +.ion-social-html5-outline:before, +.ion-social-instagram:before, +.ion-social-instagram-outline:before, +.ion-social-javascript:before, +.ion-social-javascript-outline:before, +.ion-social-linkedin:before, +.ion-social-linkedin-outline:before, +.ion-social-markdown:before, +.ion-social-nodejs:before, +.ion-social-octocat:before, +.ion-social-pinterest:before, +.ion-social-pinterest-outline:before, +.ion-social-python:before, +.ion-social-reddit:before, +.ion-social-reddit-outline:before, +.ion-social-rss:before, +.ion-social-rss-outline:before, +.ion-social-sass:before, +.ion-social-skype:before, +.ion-social-skype-outline:before, +.ion-social-snapchat:before, +.ion-social-snapchat-outline:before, +.ion-social-tumblr:before, +.ion-social-tumblr-outline:before, +.ion-social-tux:before, +.ion-social-twitch:before, +.ion-social-twitch-outline:before, +.ion-social-twitter:before, +.ion-social-twitter-outline:before, +.ion-social-usd:before, +.ion-social-usd-outline:before, +.ion-social-vimeo:before, +.ion-social-vimeo-outline:before, +.ion-social-whatsapp:before, +.ion-social-whatsapp-outline:before, +.ion-social-windows:before, +.ion-social-windows-outline:before, +.ion-social-wordpress:before, +.ion-social-wordpress-outline:before, +.ion-social-yahoo:before, +.ion-social-yahoo-outline:before, +.ion-social-yen:before, +.ion-social-yen-outline:before, +.ion-social-youtube:before, +.ion-social-youtube-outline:before, +.ion-soup-can:before, +.ion-soup-can-outline:before, +.ion-speakerphone:before, +.ion-speedometer:before, +.ion-spoon:before, +.ion-star:before, +.ion-stats-bars:before, +.ion-steam:before, +.ion-stop:before, +.ion-thermometer:before, +.ion-thumbsdown:before, +.ion-thumbsup:before, +.ion-toggle:before, +.ion-toggle-filled:before, +.ion-transgender:before, +.ion-trash-a:before, +.ion-trash-b:before, +.ion-trophy:before, +.ion-tshirt:before, +.ion-tshirt-outline:before, +.ion-umbrella:before, +.ion-university:before, +.ion-unlocked:before, +.ion-upload:before, +.ion-usb:before, +.ion-videocamera:before, +.ion-volume-high:before, +.ion-volume-low:before, +.ion-volume-medium:before, +.ion-volume-mute:before, +.ion-wand:before, +.ion-waterdrop:before, +.ion-wifi:before, +.ion-wineglass:before, +.ion-woman:before, +.ion-wrench:before, +.ion-xbox:before { + display: inline-block; + font-family: "Ionicons"; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + text-rendering: auto; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } + +.ion-alert:before { + content: ""; } + +.ion-alert-circled:before { + content: ""; } + +.ion-android-add:before { + content: ""; } + +.ion-android-add-circle:before { + content: ""; } + +.ion-android-alarm-clock:before { + content: ""; } + +.ion-android-alert:before { + content: ""; } + +.ion-android-apps:before { + content: ""; } + +.ion-android-archive:before { + content: ""; } + +.ion-android-arrow-back:before { + content: ""; } + +.ion-android-arrow-down:before { + content: ""; } + +.ion-android-arrow-dropdown:before { + content: ""; } + +.ion-android-arrow-dropdown-circle:before { + content: ""; } + +.ion-android-arrow-dropleft:before { + content: ""; } + +.ion-android-arrow-dropleft-circle:before { + content: ""; } + +.ion-android-arrow-dropright:before { + content: ""; } + +.ion-android-arrow-dropright-circle:before { + content: ""; } + +.ion-android-arrow-dropup:before { + content: ""; } + +.ion-android-arrow-dropup-circle:before { + content: ""; } + +.ion-android-arrow-forward:before { + content: ""; } + +.ion-android-arrow-up:before { + content: ""; } + +.ion-android-attach:before { + content: ""; } + +.ion-android-bar:before { + content: ""; } + +.ion-android-bicycle:before { + content: ""; } + +.ion-android-boat:before { + content: ""; } + +.ion-android-bookmark:before { + content: ""; } + +.ion-android-bulb:before { + content: ""; } + +.ion-android-bus:before { + content: ""; } + +.ion-android-calendar:before { + content: ""; } + +.ion-android-call:before { + content: ""; } + +.ion-android-camera:before { + content: ""; } + +.ion-android-cancel:before { + content: ""; } + +.ion-android-car:before { + content: ""; } + +.ion-android-cart:before { + content: ""; } + +.ion-android-chat:before { + content: ""; } + +.ion-android-checkbox:before { + content: ""; } + +.ion-android-checkbox-blank:before { + content: ""; } + +.ion-android-checkbox-outline:before { + content: ""; } + +.ion-android-checkbox-outline-blank:before { + content: ""; } + +.ion-android-checkmark-circle:before { + content: ""; } + +.ion-android-clipboard:before { + content: ""; } + +.ion-android-close:before { + content: ""; } + +.ion-android-cloud:before { + content: ""; } + +.ion-android-cloud-circle:before { + content: ""; } + +.ion-android-cloud-done:before { + content: ""; } + +.ion-android-cloud-outline:before { + content: ""; } + +.ion-android-color-palette:before { + content: ""; } + +.ion-android-compass:before { + content: ""; } + +.ion-android-contact:before { + content: ""; } + +.ion-android-contacts:before { + content: ""; } + +.ion-android-contract:before { + content: ""; } + +.ion-android-create:before { + content: ""; } + +.ion-android-delete:before { + content: ""; } + +.ion-android-desktop:before { + content: ""; } + +.ion-android-document:before { + content: ""; } + +.ion-android-done:before { + content: ""; } + +.ion-android-done-all:before { + content: ""; } + +.ion-android-download:before { + content: ""; } + +.ion-android-drafts:before { + content: ""; } + +.ion-android-exit:before { + content: ""; } + +.ion-android-expand:before { + content: ""; } + +.ion-android-favorite:before { + content: ""; } + +.ion-android-favorite-outline:before { + content: ""; } + +.ion-android-film:before { + content: ""; } + +.ion-android-folder:before { + content: ""; } + +.ion-android-folder-open:before { + content: ""; } + +.ion-android-funnel:before { + content: ""; } + +.ion-android-globe:before { + content: ""; } + +.ion-android-hand:before { + content: ""; } + +.ion-android-hangout:before { + content: ""; } + +.ion-android-happy:before { + content: ""; } + +.ion-android-home:before { + content: ""; } + +.ion-android-image:before { + content: ""; } + +.ion-android-laptop:before { + content: ""; } + +.ion-android-list:before { + content: ""; } + +.ion-android-locate:before { + content: ""; } + +.ion-android-lock:before { + content: ""; } + +.ion-android-mail:before { + content: ""; } + +.ion-android-map:before { + content: ""; } + +.ion-android-menu:before { + content: ""; } + +.ion-android-microphone:before { + content: ""; } + +.ion-android-microphone-off:before { + content: ""; } + +.ion-android-more-horizontal:before { + content: ""; } + +.ion-android-more-vertical:before { + content: ""; } + +.ion-android-navigate:before { + content: ""; } + +.ion-android-notifications:before { + content: ""; } + +.ion-android-notifications-none:before { + content: ""; } + +.ion-android-notifications-off:before { + content: ""; } + +.ion-android-open:before { + content: ""; } + +.ion-android-options:before { + content: ""; } + +.ion-android-people:before { + content: ""; } + +.ion-android-person:before { + content: ""; } + +.ion-android-person-add:before { + content: ""; } + +.ion-android-phone-landscape:before { + content: ""; } + +.ion-android-phone-portrait:before { + content: ""; } + +.ion-android-pin:before { + content: ""; } + +.ion-android-plane:before { + content: ""; } + +.ion-android-playstore:before { + content: ""; } + +.ion-android-print:before { + content: ""; } + +.ion-android-radio-button-off:before { + content: ""; } + +.ion-android-radio-button-on:before { + content: ""; } + +.ion-android-refresh:before { + content: ""; } + +.ion-android-remove:before { + content: ""; } + +.ion-android-remove-circle:before { + content: ""; } + +.ion-android-restaurant:before { + content: ""; } + +.ion-android-sad:before { + content: ""; } + +.ion-android-search:before { + content: ""; } + +.ion-android-send:before { + content: ""; } + +.ion-android-settings:before { + content: ""; } + +.ion-android-share:before { + content: ""; } + +.ion-android-share-alt:before { + content: ""; } + +.ion-android-star:before { + content: ""; } + +.ion-android-star-half:before { + content: ""; } + +.ion-android-star-outline:before { + content: ""; } + +.ion-android-stopwatch:before { + content: ""; } + +.ion-android-subway:before { + content: ""; } + +.ion-android-sunny:before { + content: ""; } + +.ion-android-sync:before { + content: ""; } + +.ion-android-textsms:before { + content: ""; } + +.ion-android-time:before { + content: ""; } + +.ion-android-train:before { + content: ""; } + +.ion-android-unlock:before { + content: ""; } + +.ion-android-upload:before { + content: ""; } + +.ion-android-volume-down:before { + content: ""; } + +.ion-android-volume-mute:before { + content: ""; } + +.ion-android-volume-off:before { + content: ""; } + +.ion-android-volume-up:before { + content: ""; } + +.ion-android-walk:before { + content: ""; } + +.ion-android-warning:before { + content: ""; } + +.ion-android-watch:before { + content: ""; } + +.ion-android-wifi:before { + content: ""; } + +.ion-aperture:before { + content: ""; } + +.ion-archive:before { + content: ""; } + +.ion-arrow-down-a:before { + content: ""; } + +.ion-arrow-down-b:before { + content: ""; } + +.ion-arrow-down-c:before { + content: ""; } + +.ion-arrow-expand:before { + content: ""; } + +.ion-arrow-graph-down-left:before { + content: ""; } + +.ion-arrow-graph-down-right:before { + content: ""; } + +.ion-arrow-graph-up-left:before { + content: ""; } + +.ion-arrow-graph-up-right:before { + content: ""; } + +.ion-arrow-left-a:before { + content: ""; } + +.ion-arrow-left-b:before { + content: ""; } + +.ion-arrow-left-c:before { + content: ""; } + +.ion-arrow-move:before { + content: ""; } + +.ion-arrow-resize:before { + content: ""; } + +.ion-arrow-return-left:before { + content: ""; } + +.ion-arrow-return-right:before { + content: ""; } + +.ion-arrow-right-a:before { + content: ""; } + +.ion-arrow-right-b:before { + content: ""; } + +.ion-arrow-right-c:before { + content: ""; } + +.ion-arrow-shrink:before { + content: ""; } + +.ion-arrow-swap:before { + content: ""; } + +.ion-arrow-up-a:before { + content: ""; } + +.ion-arrow-up-b:before { + content: ""; } + +.ion-arrow-up-c:before { + content: ""; } + +.ion-asterisk:before { + content: ""; } + +.ion-at:before { + content: ""; } + +.ion-backspace:before { + content: ""; } + +.ion-backspace-outline:before { + content: ""; } + +.ion-bag:before { + content: ""; } + +.ion-battery-charging:before { + content: ""; } + +.ion-battery-empty:before { + content: ""; } + +.ion-battery-full:before { + content: ""; } + +.ion-battery-half:before { + content: ""; } + +.ion-battery-low:before { + content: ""; } + +.ion-beaker:before { + content: ""; } + +.ion-beer:before { + content: ""; } + +.ion-bluetooth:before { + content: ""; } + +.ion-bonfire:before { + content: ""; } + +.ion-bookmark:before { + content: ""; } + +.ion-bowtie:before { + content: ""; } + +.ion-briefcase:before { + content: ""; } + +.ion-bug:before { + content: ""; } + +.ion-calculator:before { + content: ""; } + +.ion-calendar:before { + content: ""; } + +.ion-camera:before { + content: ""; } + +.ion-card:before { + content: ""; } + +.ion-cash:before { + content: ""; } + +.ion-chatbox:before { + content: ""; } + +.ion-chatbox-working:before { + content: ""; } + +.ion-chatboxes:before { + content: ""; } + +.ion-chatbubble:before { + content: ""; } + +.ion-chatbubble-working:before { + content: ""; } + +.ion-chatbubbles:before { + content: ""; } + +.ion-checkmark:before { + content: ""; } + +.ion-checkmark-circled:before { + content: ""; } + +.ion-checkmark-round:before { + content: ""; } + +.ion-chevron-down:before { + content: ""; } + +.ion-chevron-left:before { + content: ""; } + +.ion-chevron-right:before { + content: ""; } + +.ion-chevron-up:before { + content: ""; } + +.ion-clipboard:before { + content: ""; } + +.ion-clock:before { + content: ""; } + +.ion-close:before { + content: ""; } + +.ion-close-circled:before { + content: ""; } + +.ion-close-round:before { + content: ""; } + +.ion-closed-captioning:before { + content: ""; } + +.ion-cloud:before { + content: ""; } + +.ion-code:before { + content: ""; } + +.ion-code-download:before { + content: ""; } + +.ion-code-working:before { + content: ""; } + +.ion-coffee:before { + content: ""; } + +.ion-compass:before { + content: ""; } + +.ion-compose:before { + content: ""; } + +.ion-connection-bars:before { + content: ""; } + +.ion-contrast:before { + content: ""; } + +.ion-crop:before { + content: ""; } + +.ion-cube:before { + content: ""; } + +.ion-disc:before { + content: ""; } + +.ion-document:before { + content: ""; } + +.ion-document-text:before { + content: ""; } + +.ion-drag:before { + content: ""; } + +.ion-earth:before { + content: ""; } + +.ion-easel:before { + content: ""; } + +.ion-edit:before { + content: ""; } + +.ion-egg:before { + content: ""; } + +.ion-eject:before { + content: ""; } + +.ion-email:before { + content: ""; } + +.ion-email-unread:before { + content: ""; } + +.ion-erlenmeyer-flask:before { + content: ""; } + +.ion-erlenmeyer-flask-bubbles:before { + content: ""; } + +.ion-eye:before { + content: ""; } + +.ion-eye-disabled:before { + content: ""; } + +.ion-female:before { + content: ""; } + +.ion-filing:before { + content: ""; } + +.ion-film-marker:before { + content: ""; } + +.ion-fireball:before { + content: ""; } + +.ion-flag:before { + content: ""; } + +.ion-flame:before { + content: ""; } + +.ion-flash:before { + content: ""; } + +.ion-flash-off:before { + content: ""; } + +.ion-folder:before { + content: ""; } + +.ion-fork:before { + content: ""; } + +.ion-fork-repo:before { + content: ""; } + +.ion-forward:before { + content: ""; } + +.ion-funnel:before { + content: ""; } + +.ion-gear-a:before { + content: ""; } + +.ion-gear-b:before { + content: ""; } + +.ion-grid:before { + content: ""; } + +.ion-hammer:before { + content: ""; } + +.ion-happy:before { + content: ""; } + +.ion-happy-outline:before { + content: ""; } + +.ion-headphone:before { + content: ""; } + +.ion-heart:before { + content: ""; } + +.ion-heart-broken:before { + content: ""; } + +.ion-help:before { + content: ""; } + +.ion-help-buoy:before { + content: ""; } + +.ion-help-circled:before { + content: ""; } + +.ion-home:before { + content: ""; } + +.ion-icecream:before { + content: ""; } + +.ion-image:before { + content: ""; } + +.ion-images:before { + content: ""; } + +.ion-information:before { + content: ""; } + +.ion-information-circled:before { + content: ""; } + +.ion-ionic:before { + content: ""; } + +.ion-ios-alarm:before { + content: ""; } + +.ion-ios-alarm-outline:before { + content: ""; } + +.ion-ios-albums:before { + content: ""; } + +.ion-ios-albums-outline:before { + content: ""; } + +.ion-ios-americanfootball:before { + content: ""; } + +.ion-ios-americanfootball-outline:before { + content: ""; } + +.ion-ios-analytics:before { + content: ""; } + +.ion-ios-analytics-outline:before { + content: ""; } + +.ion-ios-arrow-back:before { + content: ""; } + +.ion-ios-arrow-down:before { + content: ""; } + +.ion-ios-arrow-forward:before { + content: ""; } + +.ion-ios-arrow-left:before { + content: ""; } + +.ion-ios-arrow-right:before { + content: ""; } + +.ion-ios-arrow-thin-down:before { + content: ""; } + +.ion-ios-arrow-thin-left:before { + content: ""; } + +.ion-ios-arrow-thin-right:before { + content: ""; } + +.ion-ios-arrow-thin-up:before { + content: ""; } + +.ion-ios-arrow-up:before { + content: ""; } + +.ion-ios-at:before { + content: ""; } + +.ion-ios-at-outline:before { + content: ""; } + +.ion-ios-barcode:before { + content: ""; } + +.ion-ios-barcode-outline:before { + content: ""; } + +.ion-ios-baseball:before { + content: ""; } + +.ion-ios-baseball-outline:before { + content: ""; } + +.ion-ios-basketball:before { + content: ""; } + +.ion-ios-basketball-outline:before { + content: ""; } + +.ion-ios-bell:before { + content: ""; } + +.ion-ios-bell-outline:before { + content: ""; } + +.ion-ios-body:before { + content: ""; } + +.ion-ios-body-outline:before { + content: ""; } + +.ion-ios-bolt:before { + content: ""; } + +.ion-ios-bolt-outline:before { + content: ""; } + +.ion-ios-book:before { + content: ""; } + +.ion-ios-book-outline:before { + content: ""; } + +.ion-ios-bookmarks:before { + content: ""; } + +.ion-ios-bookmarks-outline:before { + content: ""; } + +.ion-ios-box:before { + content: ""; } + +.ion-ios-box-outline:before { + content: ""; } + +.ion-ios-briefcase:before { + content: ""; } + +.ion-ios-briefcase-outline:before { + content: ""; } + +.ion-ios-browsers:before { + content: ""; } + +.ion-ios-browsers-outline:before { + content: ""; } + +.ion-ios-calculator:before { + content: ""; } + +.ion-ios-calculator-outline:before { + content: ""; } + +.ion-ios-calendar:before { + content: ""; } + +.ion-ios-calendar-outline:before { + content: ""; } + +.ion-ios-camera:before { + content: ""; } + +.ion-ios-camera-outline:before { + content: ""; } + +.ion-ios-cart:before { + content: ""; } + +.ion-ios-cart-outline:before { + content: ""; } + +.ion-ios-chatboxes:before { + content: ""; } + +.ion-ios-chatboxes-outline:before { + content: ""; } + +.ion-ios-chatbubble:before { + content: ""; } + +.ion-ios-chatbubble-outline:before { + content: ""; } + +.ion-ios-checkmark:before { + content: ""; } + +.ion-ios-checkmark-empty:before { + content: ""; } + +.ion-ios-checkmark-outline:before { + content: ""; } + +.ion-ios-circle-filled:before { + content: ""; } + +.ion-ios-circle-outline:before { + content: ""; } + +.ion-ios-clock:before { + content: ""; } + +.ion-ios-clock-outline:before { + content: ""; } + +.ion-ios-close:before { + content: ""; } + +.ion-ios-close-empty:before { + content: ""; } + +.ion-ios-close-outline:before { + content: ""; } + +.ion-ios-cloud:before { + content: ""; } + +.ion-ios-cloud-download:before { + content: ""; } + +.ion-ios-cloud-download-outline:before { + content: ""; } + +.ion-ios-cloud-outline:before { + content: ""; } + +.ion-ios-cloud-upload:before { + content: ""; } + +.ion-ios-cloud-upload-outline:before { + content: ""; } + +.ion-ios-cloudy:before { + content: ""; } + +.ion-ios-cloudy-night:before { + content: ""; } + +.ion-ios-cloudy-night-outline:before { + content: ""; } + +.ion-ios-cloudy-outline:before { + content: ""; } + +.ion-ios-cog:before { + content: ""; } + +.ion-ios-cog-outline:before { + content: ""; } + +.ion-ios-color-filter:before { + content: ""; } + +.ion-ios-color-filter-outline:before { + content: ""; } + +.ion-ios-color-wand:before { + content: ""; } + +.ion-ios-color-wand-outline:before { + content: ""; } + +.ion-ios-compose:before { + content: ""; } + +.ion-ios-compose-outline:before { + content: ""; } + +.ion-ios-contact:before { + content: ""; } + +.ion-ios-contact-outline:before { + content: ""; } + +.ion-ios-copy:before { + content: ""; } + +.ion-ios-copy-outline:before { + content: ""; } + +.ion-ios-crop:before { + content: ""; } + +.ion-ios-crop-strong:before { + content: ""; } + +.ion-ios-download:before { + content: ""; } + +.ion-ios-download-outline:before { + content: ""; } + +.ion-ios-drag:before { + content: ""; } + +.ion-ios-email:before { + content: ""; } + +.ion-ios-email-outline:before { + content: ""; } + +.ion-ios-eye:before { + content: ""; } + +.ion-ios-eye-outline:before { + content: ""; } + +.ion-ios-fastforward:before { + content: ""; } + +.ion-ios-fastforward-outline:before { + content: ""; } + +.ion-ios-filing:before { + content: ""; } + +.ion-ios-filing-outline:before { + content: ""; } + +.ion-ios-film:before { + content: ""; } + +.ion-ios-film-outline:before { + content: ""; } + +.ion-ios-flag:before { + content: ""; } + +.ion-ios-flag-outline:before { + content: ""; } + +.ion-ios-flame:before { + content: ""; } + +.ion-ios-flame-outline:before { + content: ""; } + +.ion-ios-flask:before { + content: ""; } + +.ion-ios-flask-outline:before { + content: ""; } + +.ion-ios-flower:before { + content: ""; } + +.ion-ios-flower-outline:before { + content: ""; } + +.ion-ios-folder:before { + content: ""; } + +.ion-ios-folder-outline:before { + content: ""; } + +.ion-ios-football:before { + content: ""; } + +.ion-ios-football-outline:before { + content: ""; } + +.ion-ios-game-controller-a:before { + content: ""; } + +.ion-ios-game-controller-a-outline:before { + content: ""; } + +.ion-ios-game-controller-b:before { + content: ""; } + +.ion-ios-game-controller-b-outline:before { + content: ""; } + +.ion-ios-gear:before { + content: ""; } + +.ion-ios-gear-outline:before { + content: ""; } + +.ion-ios-glasses:before { + content: ""; } + +.ion-ios-glasses-outline:before { + content: ""; } + +.ion-ios-grid-view:before { + content: ""; } + +.ion-ios-grid-view-outline:before { + content: ""; } + +.ion-ios-heart:before { + content: ""; } + +.ion-ios-heart-outline:before { + content: ""; } + +.ion-ios-help:before { + content: ""; } + +.ion-ios-help-empty:before { + content: ""; } + +.ion-ios-help-outline:before { + content: ""; } + +.ion-ios-home:before { + content: ""; } + +.ion-ios-home-outline:before { + content: ""; } + +.ion-ios-infinite:before { + content: ""; } + +.ion-ios-infinite-outline:before { + content: ""; } + +.ion-ios-information:before { + content: ""; } + +.ion-ios-information-empty:before { + content: ""; } + +.ion-ios-information-outline:before { + content: ""; } + +.ion-ios-ionic-outline:before { + content: ""; } + +.ion-ios-keypad:before { + content: ""; } + +.ion-ios-keypad-outline:before { + content: ""; } + +.ion-ios-lightbulb:before { + content: ""; } + +.ion-ios-lightbulb-outline:before { + content: ""; } + +.ion-ios-list:before { + content: ""; } + +.ion-ios-list-outline:before { + content: ""; } + +.ion-ios-location:before { + content: ""; } + +.ion-ios-location-outline:before { + content: ""; } + +.ion-ios-locked:before { + content: ""; } + +.ion-ios-locked-outline:before { + content: ""; } + +.ion-ios-loop:before { + content: ""; } + +.ion-ios-loop-strong:before { + content: ""; } + +.ion-ios-medical:before { + content: ""; } + +.ion-ios-medical-outline:before { + content: ""; } + +.ion-ios-medkit:before { + content: ""; } + +.ion-ios-medkit-outline:before { + content: ""; } + +.ion-ios-mic:before { + content: ""; } + +.ion-ios-mic-off:before { + content: ""; } + +.ion-ios-mic-outline:before { + content: ""; } + +.ion-ios-minus:before { + content: ""; } + +.ion-ios-minus-empty:before { + content: ""; } + +.ion-ios-minus-outline:before { + content: ""; } + +.ion-ios-monitor:before { + content: ""; } + +.ion-ios-monitor-outline:before { + content: ""; } + +.ion-ios-moon:before { + content: ""; } + +.ion-ios-moon-outline:before { + content: ""; } + +.ion-ios-more:before { + content: ""; } + +.ion-ios-more-outline:before { + content: ""; } + +.ion-ios-musical-note:before { + content: ""; } + +.ion-ios-musical-notes:before { + content: ""; } + +.ion-ios-navigate:before { + content: ""; } + +.ion-ios-navigate-outline:before { + content: ""; } + +.ion-ios-nutrition:before { + content: ""; } + +.ion-ios-nutrition-outline:before { + content: ""; } + +.ion-ios-paper:before { + content: ""; } + +.ion-ios-paper-outline:before { + content: ""; } + +.ion-ios-paperplane:before { + content: ""; } + +.ion-ios-paperplane-outline:before { + content: ""; } + +.ion-ios-partlysunny:before { + content: ""; } + +.ion-ios-partlysunny-outline:before { + content: ""; } + +.ion-ios-pause:before { + content: ""; } + +.ion-ios-pause-outline:before { + content: ""; } + +.ion-ios-paw:before { + content: ""; } + +.ion-ios-paw-outline:before { + content: ""; } + +.ion-ios-people:before { + content: ""; } + +.ion-ios-people-outline:before { + content: ""; } + +.ion-ios-person:before { + content: ""; } + +.ion-ios-person-outline:before { + content: ""; } + +.ion-ios-personadd:before { + content: ""; } + +.ion-ios-personadd-outline:before { + content: ""; } + +.ion-ios-photos:before { + content: ""; } + +.ion-ios-photos-outline:before { + content: ""; } + +.ion-ios-pie:before { + content: ""; } + +.ion-ios-pie-outline:before { + content: ""; } + +.ion-ios-pint:before { + content: ""; } + +.ion-ios-pint-outline:before { + content: ""; } + +.ion-ios-play:before { + content: ""; } + +.ion-ios-play-outline:before { + content: ""; } + +.ion-ios-plus:before { + content: ""; } + +.ion-ios-plus-empty:before { + content: ""; } + +.ion-ios-plus-outline:before { + content: ""; } + +.ion-ios-pricetag:before { + content: ""; } + +.ion-ios-pricetag-outline:before { + content: ""; } + +.ion-ios-pricetags:before { + content: ""; } + +.ion-ios-pricetags-outline:before { + content: ""; } + +.ion-ios-printer:before { + content: ""; } + +.ion-ios-printer-outline:before { + content: ""; } + +.ion-ios-pulse:before { + content: ""; } + +.ion-ios-pulse-strong:before { + content: ""; } + +.ion-ios-rainy:before { + content: ""; } + +.ion-ios-rainy-outline:before { + content: ""; } + +.ion-ios-recording:before { + content: ""; } + +.ion-ios-recording-outline:before { + content: ""; } + +.ion-ios-redo:before { + content: ""; } + +.ion-ios-redo-outline:before { + content: ""; } + +.ion-ios-refresh:before { + content: ""; } + +.ion-ios-refresh-empty:before { + content: ""; } + +.ion-ios-refresh-outline:before { + content: ""; } + +.ion-ios-reload:before { + content: ""; } + +.ion-ios-reverse-camera:before { + content: ""; } + +.ion-ios-reverse-camera-outline:before { + content: ""; } + +.ion-ios-rewind:before { + content: ""; } + +.ion-ios-rewind-outline:before { + content: ""; } + +.ion-ios-rose:before { + content: ""; } + +.ion-ios-rose-outline:before { + content: ""; } + +.ion-ios-search:before { + content: ""; } + +.ion-ios-search-strong:before { + content: ""; } + +.ion-ios-settings:before { + content: ""; } + +.ion-ios-settings-strong:before { + content: ""; } + +.ion-ios-shuffle:before { + content: ""; } + +.ion-ios-shuffle-strong:before { + content: ""; } + +.ion-ios-skipbackward:before { + content: ""; } + +.ion-ios-skipbackward-outline:before { + content: ""; } + +.ion-ios-skipforward:before { + content: ""; } + +.ion-ios-skipforward-outline:before { + content: ""; } + +.ion-ios-snowy:before { + content: ""; } + +.ion-ios-speedometer:before { + content: ""; } + +.ion-ios-speedometer-outline:before { + content: ""; } + +.ion-ios-star:before { + content: ""; } + +.ion-ios-star-half:before { + content: ""; } + +.ion-ios-star-outline:before { + content: ""; } + +.ion-ios-stopwatch:before { + content: ""; } + +.ion-ios-stopwatch-outline:before { + content: ""; } + +.ion-ios-sunny:before { + content: ""; } + +.ion-ios-sunny-outline:before { + content: ""; } + +.ion-ios-telephone:before { + content: ""; } + +.ion-ios-telephone-outline:before { + content: ""; } + +.ion-ios-tennisball:before { + content: ""; } + +.ion-ios-tennisball-outline:before { + content: ""; } + +.ion-ios-thunderstorm:before { + content: ""; } + +.ion-ios-thunderstorm-outline:before { + content: ""; } + +.ion-ios-time:before { + content: ""; } + +.ion-ios-time-outline:before { + content: ""; } + +.ion-ios-timer:before { + content: ""; } + +.ion-ios-timer-outline:before { + content: ""; } + +.ion-ios-toggle:before { + content: ""; } + +.ion-ios-toggle-outline:before { + content: ""; } + +.ion-ios-trash:before { + content: ""; } + +.ion-ios-trash-outline:before { + content: ""; } + +.ion-ios-undo:before { + content: ""; } + +.ion-ios-undo-outline:before { + content: ""; } + +.ion-ios-unlocked:before { + content: ""; } + +.ion-ios-unlocked-outline:before { + content: ""; } + +.ion-ios-upload:before { + content: ""; } + +.ion-ios-upload-outline:before { + content: ""; } + +.ion-ios-videocam:before { + content: ""; } + +.ion-ios-videocam-outline:before { + content: ""; } + +.ion-ios-volume-high:before { + content: ""; } + +.ion-ios-volume-low:before { + content: ""; } + +.ion-ios-wineglass:before { + content: ""; } + +.ion-ios-wineglass-outline:before { + content: ""; } + +.ion-ios-world:before { + content: ""; } + +.ion-ios-world-outline:before { + content: ""; } + +.ion-ipad:before { + content: ""; } + +.ion-iphone:before { + content: ""; } + +.ion-ipod:before { + content: ""; } + +.ion-jet:before { + content: ""; } + +.ion-key:before { + content: ""; } + +.ion-knife:before { + content: ""; } + +.ion-laptop:before { + content: ""; } + +.ion-leaf:before { + content: ""; } + +.ion-levels:before { + content: ""; } + +.ion-lightbulb:before { + content: ""; } + +.ion-link:before { + content: ""; } + +.ion-load-a:before { + content: ""; } + +.ion-load-b:before { + content: ""; } + +.ion-load-c:before { + content: ""; } + +.ion-load-d:before { + content: ""; } + +.ion-location:before { + content: ""; } + +.ion-lock-combination:before { + content: ""; } + +.ion-locked:before { + content: ""; } + +.ion-log-in:before { + content: ""; } + +.ion-log-out:before { + content: ""; } + +.ion-loop:before { + content: ""; } + +.ion-magnet:before { + content: ""; } + +.ion-male:before { + content: ""; } + +.ion-man:before { + content: ""; } + +.ion-map:before { + content: ""; } + +.ion-medkit:before { + content: ""; } + +.ion-merge:before { + content: ""; } + +.ion-mic-a:before { + content: ""; } + +.ion-mic-b:before { + content: ""; } + +.ion-mic-c:before { + content: ""; } + +.ion-minus:before { + content: ""; } + +.ion-minus-circled:before { + content: ""; } + +.ion-minus-round:before { + content: ""; } + +.ion-model-s:before { + content: ""; } + +.ion-monitor:before { + content: ""; } + +.ion-more:before { + content: ""; } + +.ion-mouse:before { + content: ""; } + +.ion-music-note:before { + content: ""; } + +.ion-navicon:before { + content: ""; } + +.ion-navicon-round:before { + content: ""; } + +.ion-navigate:before { + content: ""; } + +.ion-network:before { + content: ""; } + +.ion-no-smoking:before { + content: ""; } + +.ion-nuclear:before { + content: ""; } + +.ion-outlet:before { + content: ""; } + +.ion-paintbrush:before { + content: ""; } + +.ion-paintbucket:before { + content: ""; } + +.ion-paper-airplane:before { + content: ""; } + +.ion-paperclip:before { + content: ""; } + +.ion-pause:before { + content: ""; } + +.ion-person:before { + content: ""; } + +.ion-person-add:before { + content: ""; } + +.ion-person-stalker:before { + content: ""; } + +.ion-pie-graph:before { + content: ""; } + +.ion-pin:before { + content: ""; } + +.ion-pinpoint:before { + content: ""; } + +.ion-pizza:before { + content: ""; } + +.ion-plane:before { + content: ""; } + +.ion-planet:before { + content: ""; } + +.ion-play:before { + content: ""; } + +.ion-playstation:before { + content: ""; } + +.ion-plus:before { + content: ""; } + +.ion-plus-circled:before { + content: ""; } + +.ion-plus-round:before { + content: ""; } + +.ion-podium:before { + content: ""; } + +.ion-pound:before { + content: ""; } + +.ion-power:before { + content: ""; } + +.ion-pricetag:before { + content: ""; } + +.ion-pricetags:before { + content: ""; } + +.ion-printer:before { + content: ""; } + +.ion-pull-request:before { + content: ""; } + +.ion-qr-scanner:before { + content: ""; } + +.ion-quote:before { + content: ""; } + +.ion-radio-waves:before { + content: ""; } + +.ion-record:before { + content: ""; } + +.ion-refresh:before { + content: ""; } + +.ion-reply:before { + content: ""; } + +.ion-reply-all:before { + content: ""; } + +.ion-ribbon-a:before { + content: ""; } + +.ion-ribbon-b:before { + content: ""; } + +.ion-sad:before { + content: ""; } + +.ion-sad-outline:before { + content: ""; } + +.ion-scissors:before { + content: ""; } + +.ion-search:before { + content: ""; } + +.ion-settings:before { + content: ""; } + +.ion-share:before { + content: ""; } + +.ion-shuffle:before { + content: ""; } + +.ion-skip-backward:before { + content: ""; } + +.ion-skip-forward:before { + content: ""; } + +.ion-social-android:before { + content: ""; } + +.ion-social-android-outline:before { + content: ""; } + +.ion-social-angular:before { + content: ""; } + +.ion-social-angular-outline:before { + content: ""; } + +.ion-social-apple:before { + content: ""; } + +.ion-social-apple-outline:before { + content: ""; } + +.ion-social-bitcoin:before { + content: ""; } + +.ion-social-bitcoin-outline:before { + content: ""; } + +.ion-social-buffer:before { + content: ""; } + +.ion-social-buffer-outline:before { + content: ""; } + +.ion-social-chrome:before { + content: ""; } + +.ion-social-chrome-outline:before { + content: ""; } + +.ion-social-codepen:before { + content: ""; } + +.ion-social-codepen-outline:before { + content: ""; } + +.ion-social-css3:before { + content: ""; } + +.ion-social-css3-outline:before { + content: ""; } + +.ion-social-designernews:before { + content: ""; } + +.ion-social-designernews-outline:before { + content: ""; } + +.ion-social-dribbble:before { + content: ""; } + +.ion-social-dribbble-outline:before { + content: ""; } + +.ion-social-dropbox:before { + content: ""; } + +.ion-social-dropbox-outline:before { + content: ""; } + +.ion-social-euro:before { + content: ""; } + +.ion-social-euro-outline:before { + content: ""; } + +.ion-social-facebook:before { + content: ""; } + +.ion-social-facebook-outline:before { + content: ""; } + +.ion-social-foursquare:before { + content: ""; } + +.ion-social-foursquare-outline:before { + content: ""; } + +.ion-social-freebsd-devil:before { + content: ""; } + +.ion-social-github:before { + content: ""; } + +.ion-social-github-outline:before { + content: ""; } + +.ion-social-google:before { + content: ""; } + +.ion-social-google-outline:before { + content: ""; } + +.ion-social-googleplus:before { + content: ""; } + +.ion-social-googleplus-outline:before { + content: ""; } + +.ion-social-hackernews:before { + content: ""; } + +.ion-social-hackernews-outline:before { + content: ""; } + +.ion-social-html5:before { + content: ""; } + +.ion-social-html5-outline:before { + content: ""; } + +.ion-social-instagram:before { + content: ""; } + +.ion-social-instagram-outline:before { + content: ""; } + +.ion-social-javascript:before { + content: ""; } + +.ion-social-javascript-outline:before { + content: ""; } + +.ion-social-linkedin:before { + content: ""; } + +.ion-social-linkedin-outline:before { + content: ""; } + +.ion-social-markdown:before { + content: ""; } + +.ion-social-nodejs:before { + content: ""; } + +.ion-social-octocat:before { + content: ""; } + +.ion-social-pinterest:before { + content: ""; } + +.ion-social-pinterest-outline:before { + content: ""; } + +.ion-social-python:before { + content: ""; } + +.ion-social-reddit:before { + content: ""; } + +.ion-social-reddit-outline:before { + content: ""; } + +.ion-social-rss:before { + content: ""; } + +.ion-social-rss-outline:before { + content: ""; } + +.ion-social-sass:before { + content: ""; } + +.ion-social-skype:before { + content: ""; } + +.ion-social-skype-outline:before { + content: ""; } + +.ion-social-snapchat:before { + content: ""; } + +.ion-social-snapchat-outline:before { + content: ""; } + +.ion-social-tumblr:before { + content: ""; } + +.ion-social-tumblr-outline:before { + content: ""; } + +.ion-social-tux:before { + content: ""; } + +.ion-social-twitch:before { + content: ""; } + +.ion-social-twitch-outline:before { + content: ""; } + +.ion-social-twitter:before { + content: ""; } + +.ion-social-twitter-outline:before { + content: ""; } + +.ion-social-usd:before { + content: ""; } + +.ion-social-usd-outline:before { + content: ""; } + +.ion-social-vimeo:before { + content: ""; } + +.ion-social-vimeo-outline:before { + content: ""; } + +.ion-social-whatsapp:before { + content: ""; } + +.ion-social-whatsapp-outline:before { + content: ""; } + +.ion-social-windows:before { + content: ""; } + +.ion-social-windows-outline:before { + content: ""; } + +.ion-social-wordpress:before { + content: ""; } + +.ion-social-wordpress-outline:before { + content: ""; } + +.ion-social-yahoo:before { + content: ""; } + +.ion-social-yahoo-outline:before { + content: ""; } + +.ion-social-yen:before { + content: ""; } + +.ion-social-yen-outline:before { + content: ""; } + +.ion-social-youtube:before { + content: ""; } + +.ion-social-youtube-outline:before { + content: ""; } + +.ion-soup-can:before { + content: ""; } + +.ion-soup-can-outline:before { + content: ""; } + +.ion-speakerphone:before { + content: ""; } + +.ion-speedometer:before { + content: ""; } + +.ion-spoon:before { + content: ""; } + +.ion-star:before { + content: ""; } + +.ion-stats-bars:before { + content: ""; } + +.ion-steam:before { + content: ""; } + +.ion-stop:before { + content: ""; } + +.ion-thermometer:before { + content: ""; } + +.ion-thumbsdown:before { + content: ""; } + +.ion-thumbsup:before { + content: ""; } + +.ion-toggle:before { + content: ""; } + +.ion-toggle-filled:before { + content: ""; } + +.ion-transgender:before { + content: ""; } + +.ion-trash-a:before { + content: ""; } + +.ion-trash-b:before { + content: ""; } + +.ion-trophy:before { + content: ""; } + +.ion-tshirt:before { + content: ""; } + +.ion-tshirt-outline:before { + content: ""; } + +.ion-umbrella:before { + content: ""; } + +.ion-university:before { + content: ""; } + +.ion-unlocked:before { + content: ""; } + +.ion-upload:before { + content: ""; } + +.ion-usb:before { + content: ""; } + +.ion-videocamera:before { + content: ""; } + +.ion-volume-high:before { + content: ""; } + +.ion-volume-low:before { + content: ""; } + +.ion-volume-medium:before { + content: ""; } + +.ion-volume-mute:before { + content: ""; } + +.ion-wand:before { + content: ""; } + +.ion-waterdrop:before { + content: ""; } + +.ion-wifi:before { + content: ""; } + +.ion-wineglass:before { + content: ""; } + +.ion-woman:before { + content: ""; } + +.ion-wrench:before { + content: ""; } + +.ion-xbox:before { + content: ""; } + +/** + * Resets + * -------------------------------------------------- + * Adapted from normalize.css and some reset.css. We don't care even one + * bit about old IE, so we don't need any hacks for that in here. + * + * There are probably other things we could remove here, as well. + * + * normalize.css v2.1.2 | MIT License | git.io/normalize + + * Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/) + * http://cssreset.com + */ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, i, u, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, fieldset, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + vertical-align: baseline; + font: inherit; + font-size: 100%; } + +ol, ul { + list-style: none; } + +blockquote, q { + quotes: none; } + +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; } + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ +audio:not([controls]) { + display: none; + height: 0; } + +/** + * Hide the `template` element in IE, Safari, and Firefox < 22. + */ +[hidden], +template { + display: none; } + +script { + display: none !important; } + +/* ========================================================================== + Base + ========================================================================== */ +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ +html { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + font-family: sans-serif; + /* 1 */ + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + /* 2 */ + -webkit-text-size-adjust: 100%; + /* 2 */ } + +/** + * Remove default margin. + */ +body { + margin: 0; + line-height: 1; } + +/** + * Remove default outlines. + */ +a, +button, +:focus, +a:focus, +button:focus, +a:active, +a:hover { + outline: 0; } + +/* * + * Remove tap highlight color + */ +a { + -webkit-user-drag: none; + -webkit-tap-highlight-color: transparent; + -webkit-tap-highlight-color: transparent; } + a[href]:hover { + cursor: pointer; } + +/* ========================================================================== + Typography + ========================================================================== */ +/** + * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. + */ +b, +strong { + font-weight: bold; } + +/** + * Address styling not present in Safari 5 and Chrome. + */ +dfn { + font-style: italic; } + +/** + * Address differences between Firefox and other browsers. + */ +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; } + +/** + * Correct font family set oddly in Safari 5 and Chrome. + */ +code, +kbd, +pre, +samp { + font-size: 1em; + font-family: monospace, serif; } + +/** + * Improve readability of pre-formatted text in all browsers. + */ +pre { + white-space: pre-wrap; } + +/** + * Set consistent quote types. + */ +q { + quotes: "\201C" "\201D" "\2018" "\2019"; } + +/** + * Address inconsistent and variable font size in all browsers. + */ +small { + font-size: 80%; } + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ +sub, +sup { + position: relative; + vertical-align: baseline; + font-size: 75%; + line-height: 0; } + +sup { + top: -0.5em; } + +sub { + bottom: -0.25em; } + +/** + * Define consistent border, margin, and padding. + */ +fieldset { + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; + border: 1px solid #c0c0c0; } + +/** + * 1. Correct `color` not being inherited in IE 8/9. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ +legend { + padding: 0; + /* 2 */ + border: 0; + /* 1 */ } + +/** + * 1. Correct font family not being inherited in all browsers. + * 2. Correct font size not being inherited in all browsers. + * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. + * 4. Remove any default :focus styles + * 5. Make sure webkit font smoothing is being inherited + * 6. Remove default gradient in Android Firefox / FirefoxOS + */ +button, +input, +select, +textarea { + margin: 0; + /* 3 */ + font-size: 100%; + /* 2 */ + font-family: inherit; + /* 1 */ + outline-offset: 0; + /* 4 */ + outline-style: none; + /* 4 */ + outline-width: 0; + /* 4 */ + -webkit-font-smoothing: inherit; + /* 5 */ + background-image: none; + /* 6 */ } + +/** + * Address Firefox 4+ setting `line-height` on `input` using `importnt` in + * the UA stylesheet. + */ +button, +input { + line-height: normal; } + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. + * Correct `select` style inheritance in Firefox 4+ and Opera. + */ +button, +select { + text-transform: none; } + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + /* 3 */ + -webkit-appearance: button; + /* 2 */ } + +/** + * Re-set default cursor for disabled elements. + */ +button[disabled], +html input[disabled] { + cursor: default; } + +/** + * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome + * (include `-moz` to future-proof). + */ +input[type="search"] { + -webkit-box-sizing: content-box; + /* 2 */ + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; + /* 1 */ } + +/** + * Remove inner padding and search cancel button in Safari 5 and Chrome + * on OS X. + */ +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +/** + * Remove inner padding and border in Firefox 4+. + */ +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; } + +/** + * 1. Remove default vertical scrollbar in IE 8/9. + * 2. Improve readability and alignment in all browsers. + */ +textarea { + overflow: auto; + /* 1 */ + vertical-align: top; + /* 2 */ } + +img { + -webkit-user-drag: none; } + +/* ========================================================================== + Tables + ========================================================================== */ +/** + * Remove most spacing between table cells. + */ +table { + border-spacing: 0; + border-collapse: collapse; } + +/** + * Scaffolding + * -------------------------------------------------- + */ +*, +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + +html { + overflow: hidden; + -ms-touch-action: pan-y; + touch-action: pan-y; } + +body, +.ionic-body { + -webkit-touch-callout: none; + -webkit-font-smoothing: antialiased; + font-smoothing: antialiased; + -webkit-text-size-adjust: none; + -moz-text-size-adjust: none; + text-size-adjust: none; + -webkit-tap-highlight-color: transparent; + -webkit-tap-highlight-color: transparent; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + top: 0; + right: 0; + bottom: 0; + left: 0; + overflow: hidden; + margin: 0; + padding: 0; + color: #000; + word-wrap: break-word; + font-size: 14px; + font-family: -apple-system; + font-family: "-apple-system", "Helvetica Neue", "Roboto", "Segoe UI", sans-serif; + line-height: 20px; + text-rendering: optimizeLegibility; + -webkit-backface-visibility: hidden; + -webkit-user-drag: none; + -ms-content-zooming: none; } + +body.grade-b, +body.grade-c { + text-rendering: auto; } + +.content { + position: relative; } + +.scroll-content { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + overflow: hidden; + margin-top: -1px; + padding-top: 1px; + margin-bottom: -1px; + width: auto; + height: auto; } + +.menu .scroll-content.scroll-content-false { + z-index: 11; } + +.scroll-view { + position: relative; + display: block; + overflow: hidden; + margin-top: -1px; } + .scroll-view.overflow-scroll { + position: relative; } + .scroll-view.scroll-x { + overflow-x: scroll; + overflow-y: hidden; } + .scroll-view.scroll-y { + overflow-x: hidden; + overflow-y: scroll; } + .scroll-view.scroll-xy { + overflow-x: scroll; + overflow-y: scroll; } + +/** + * Scroll is the scroll view component available for complex and custom + * scroll view functionality. + */ +.scroll { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-touch-callout: none; + -webkit-text-size-adjust: none; + -moz-text-size-adjust: none; + text-size-adjust: none; + -webkit-transform-origin: left top; + transform-origin: left top; } + +/** + * Set ms-viewport to prevent MS "page squish" and allow fluid scrolling + * https://msdn.microsoft.com/en-us/library/ie/hh869615(v=vs.85).aspx + */ +@-ms-viewport { + width: device-width; } + +.scroll-bar { + position: absolute; + z-index: 9999; } + +.ng-animate .scroll-bar { + visibility: hidden; } + +.scroll-bar-h { + right: 2px; + bottom: 3px; + left: 2px; + height: 3px; } + .scroll-bar-h .scroll-bar-indicator { + height: 100%; } + +.scroll-bar-v { + top: 2px; + right: 3px; + bottom: 2px; + width: 3px; } + .scroll-bar-v .scroll-bar-indicator { + width: 100%; } + +.scroll-bar-indicator { + position: absolute; + border-radius: 4px; + background: rgba(0, 0, 0, 0.3); + opacity: 1; + -webkit-transition: opacity 0.3s linear; + transition: opacity 0.3s linear; } + .scroll-bar-indicator.scroll-bar-fade-out { + opacity: 0; } + +.platform-android .scroll-bar-indicator { + border-radius: 0; } + +.grade-b .scroll-bar-indicator, +.grade-c .scroll-bar-indicator { + background: #aaa; } + .grade-b .scroll-bar-indicator.scroll-bar-fade-out, + .grade-c .scroll-bar-indicator.scroll-bar-fade-out { + -webkit-transition: none; + transition: none; } + +ion-infinite-scroll { + height: 60px; + width: 100%; + display: block; + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-direction: normal; + -webkit-box-orient: horizontal; + -webkit-flex-direction: row; + -moz-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + -moz-justify-content: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + -moz-align-items: center; + align-items: center; } + ion-infinite-scroll .icon { + color: #666666; + font-size: 30px; + color: #666666; } + ion-infinite-scroll:not(.active) .spinner, + ion-infinite-scroll:not(.active) .icon:before { + display: none; } + +.overflow-scroll { + overflow-x: hidden; + overflow-y: scroll; + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; + top: 0; + right: 0; + bottom: 0; + left: 0; + position: absolute; } + .overflow-scroll.pane { + overflow-x: hidden; + overflow-y: scroll; } + .overflow-scroll .scroll { + position: static; + height: 100%; + -webkit-transform: translate3d(0, 0, 0); } + +/* If you change these, change platform.scss as well */ +.has-header { + top: 44px; } + +.no-header { + top: 0; } + +.has-subheader { + top: 88px; } + +.has-tabs-top { + top: 93px; } + +.has-header.has-subheader.has-tabs-top { + top: 137px; } + +.has-footer { + bottom: 44px; } + +.has-subfooter { + bottom: 88px; } + +.has-tabs, +.bar-footer.has-tabs { + bottom: 49px; } + .has-tabs.pane, + .bar-footer.has-tabs.pane { + bottom: 49px; + height: auto; } + +.bar-subfooter.has-tabs { + bottom: 93px; } + +.has-footer.has-tabs { + bottom: 93px; } + +.pane { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + -webkit-transition-duration: 0; + transition-duration: 0; + z-index: 1; } + +.view { + z-index: 1; } + +.pane, +.view { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + background-color: #fff; + overflow: hidden; } + +.view-container { + position: absolute; + display: block; + width: 100%; + height: 100%; } + +/** + * Typography + * -------------------------------------------------- + */ +p { + margin: 0 0 10px; } + +small { + font-size: 85%; } + +cite { + font-style: normal; } + +.text-left { + text-align: left; } + +.text-right { + text-align: right; } + +.text-center { + text-align: center; } + +h1, h2, h3, h4, h5, h6, +.h1, .h2, .h3, .h4, .h5, .h6 { + color: #000; + font-weight: 500; + font-family: "-apple-system", "Helvetica Neue", "Roboto", "Segoe UI", sans-serif; + line-height: 1.2; } + 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; } + +h1, .h1, +h2, .h2, +h3, .h3 { + margin-top: 20px; + margin-bottom: 10px; } + h1:first-child, .h1:first-child, + h2:first-child, .h2:first-child, + h3:first-child, .h3:first-child { + margin-top: 0; } + h1 + h1, h1 + .h1, + h1 + h2, h1 + .h2, + h1 + h3, h1 + .h3, .h1 + h1, .h1 + .h1, + .h1 + h2, .h1 + .h2, + .h1 + h3, .h1 + .h3, + h2 + h1, + h2 + .h1, + h2 + h2, + h2 + .h2, + h2 + h3, + h2 + .h3, .h2 + h1, .h2 + .h1, + .h2 + h2, .h2 + .h2, + .h2 + h3, .h2 + .h3, + h3 + h1, + h3 + .h1, + h3 + h2, + h3 + .h2, + h3 + h3, + h3 + .h3, .h3 + h1, .h3 + .h1, + .h3 + h2, .h3 + .h2, + .h3 + h3, .h3 + .h3 { + margin-top: 10px; } + +h4, .h4, +h5, .h5, +h6, .h6 { + margin-top: 10px; + margin-bottom: 10px; } + +h1, .h1 { + font-size: 36px; } + +h2, .h2 { + font-size: 30px; } + +h3, .h3 { + font-size: 24px; } + +h4, .h4 { + font-size: 18px; } + +h5, .h5 { + font-size: 14px; } + +h6, .h6 { + font-size: 12px; } + +h1 small, .h1 small { + font-size: 24px; } + +h2 small, .h2 small { + font-size: 18px; } + +h3 small, .h3 small, +h4 small, .h4 small { + font-size: 14px; } + +dl { + margin-bottom: 20px; } + +dt, +dd { + line-height: 1.42857; } + +dt { + font-weight: bold; } + +blockquote { + margin: 0 0 20px; + padding: 10px 20px; + border-left: 5px solid gray; } + blockquote p { + font-weight: 300; + font-size: 17.5px; + line-height: 1.25; } + blockquote p:last-child { + margin-bottom: 0; } + blockquote small { + display: block; + line-height: 1.42857; } + blockquote small:before { + content: '\2014 \00A0'; } + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; } + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857; } + +a { + color: #387ef5; } + +a.subdued { + padding-right: 10px; + color: #888; + text-decoration: none; } + a.subdued:hover { + text-decoration: none; } + a.subdued:last-child { + padding-right: 0; } + +/** + * Action Sheets + * -------------------------------------------------- + */ +.action-sheet-backdrop { + -webkit-transition: background-color 150ms ease-in-out; + transition: background-color 150ms ease-in-out; + position: fixed; + top: 0; + left: 0; + z-index: 11; + width: 100%; + height: 100%; + background-color: transparent; } + .action-sheet-backdrop.active { + background-color: rgba(0, 0, 0, 0.4); } + +.action-sheet-wrapper { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + -webkit-transition: all cubic-bezier(0.36, 0.66, 0.04, 1) 500ms; + transition: all cubic-bezier(0.36, 0.66, 0.04, 1) 500ms; + position: absolute; + bottom: 0; + left: 0; + right: 0; + width: 100%; + max-width: 500px; + margin: auto; } + +.action-sheet-up { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + +.action-sheet { + margin-left: 8px; + margin-right: 8px; + width: auto; + z-index: 11; + overflow: hidden; } + .action-sheet .button { + display: block; + padding: 1px; + width: 100%; + border-radius: 0; + border-color: #d1d3d6; + background-color: transparent; + color: #007aff; + font-size: 21px; } + .action-sheet .button:hover { + color: #007aff; } + .action-sheet .button.destructive { + color: #ff3b30; } + .action-sheet .button.destructive:hover { + color: #ff3b30; } + .action-sheet .button.active, .action-sheet .button.activated { + box-shadow: none; + border-color: #d1d3d6; + color: #007aff; + background: #e4e5e7; } + +.action-sheet-has-icons .icon { + position: absolute; + left: 16px; } + +.action-sheet-title { + padding: 16px; + color: #8f8f8f; + text-align: center; + font-size: 13px; } + +.action-sheet-group { + margin-bottom: 8px; + border-radius: 4px; + background-color: #fff; + overflow: hidden; } + .action-sheet-group .button { + border-width: 1px 0px 0px 0px; } + .action-sheet-group .button:first-child:last-child { + border-width: 0; } + +.action-sheet-options { + background: #f1f2f3; } + +.action-sheet-cancel .button { + font-weight: 500; } + +.action-sheet-open { + pointer-events: none; } + .action-sheet-open.modal-open .modal { + pointer-events: none; } + .action-sheet-open .action-sheet-backdrop { + pointer-events: auto; } + +.platform-android .action-sheet-backdrop.active { + background-color: rgba(0, 0, 0, 0.2); } + +.platform-android .action-sheet { + margin: 0; } + .platform-android .action-sheet .action-sheet-title, + .platform-android .action-sheet .button { + text-align: left; + border-color: transparent; + font-size: 16px; + color: inherit; } + .platform-android .action-sheet .action-sheet-title { + font-size: 14px; + padding: 16px; + color: #666; } + .platform-android .action-sheet .button.active, + .platform-android .action-sheet .button.activated { + background: #e8e8e8; } + +.platform-android .action-sheet-group { + margin: 0; + border-radius: 0; + background-color: #fafafa; } + +.platform-android .action-sheet-cancel { + display: none; } + +.platform-android .action-sheet-has-icons .button { + padding-left: 56px; } + +.backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 11; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.4); + visibility: hidden; + opacity: 0; + -webkit-transition: 0.1s opacity linear; + transition: 0.1s opacity linear; } + .backdrop.visible { + visibility: visible; } + .backdrop.active { + opacity: 1; } + +/** + * Bar (Headers and Footers) + * -------------------------------------------------- + */ +.bar { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + position: absolute; + right: 0; + left: 0; + z-index: 9; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 5px; + width: 100%; + height: 44px; + border-width: 0; + border-style: solid; + border-top: 1px solid transparent; + border-bottom: 1px solid #ddd; + background-color: white; + /* border-width: 1px will actually create 2 device pixels on retina */ + /* this nifty trick sets an actual 1px border on hi-res displays */ + background-size: 0; } + @media (min--moz-device-pixel-ratio: 1.5), (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5), (min-resolution: 144dpi), (min-resolution: 1.5dppx) { + .bar { + border: none; + background-image: linear-gradient(0deg, #ddd, #ddd 50%, transparent 50%); + background-position: bottom; + background-size: 100% 1px; + background-repeat: no-repeat; } } + .bar.bar-clear { + border: none; + background: none; + color: #fff; } + .bar.bar-clear .button { + color: #fff; } + .bar.bar-clear .title { + color: #fff; } + .bar.item-input-inset .item-input-wrapper { + margin-top: -1px; } + .bar.item-input-inset .item-input-wrapper input { + padding-left: 8px; + width: 94%; + height: 28px; + background: transparent; } + .bar.bar-light { + border-color: #ddd; + background-color: white; + background-image: linear-gradient(0deg, #ddd, #ddd 50%, transparent 50%); + color: #444; } + .bar.bar-light .title { + color: #444; } + .bar.bar-light.bar-footer { + background-image: linear-gradient(180deg, #ddd, #ddd 50%, transparent 50%); } + .bar.bar-stable { + border-color: #b2b2b2; + background-color: #f8f8f8; + background-image: linear-gradient(0deg, #b2b2b2, #b2b2b2 50%, transparent 50%); + color: #444; } + .bar.bar-stable .title { + color: #444; } + .bar.bar-stable.bar-footer { + background-image: linear-gradient(180deg, #b2b2b2, #b2b2b2 50%, transparent 50%); } + .bar.bar-positive { + border-color: #0c60ee; + background-color: #387ef5; + background-image: linear-gradient(0deg, #0c60ee, #0c60ee 50%, transparent 50%); + color: #fff; } + .bar.bar-positive .title { + color: #fff; } + .bar.bar-positive.bar-footer { + background-image: linear-gradient(180deg, #0c60ee, #0c60ee 50%, transparent 50%); } + .bar.bar-calm { + border-color: #0a9dc7; + background-color: #11c1f3; + background-image: linear-gradient(0deg, #0a9dc7, #0a9dc7 50%, transparent 50%); + color: #fff; } + .bar.bar-calm .title { + color: #fff; } + .bar.bar-calm.bar-footer { + background-image: linear-gradient(180deg, #0a9dc7, #0a9dc7 50%, transparent 50%); } + .bar.bar-assertive { + border-color: #e42112; + background-color: #ef473a; + background-image: linear-gradient(0deg, #e42112, #e42112 50%, transparent 50%); + color: #fff; } + .bar.bar-assertive .title { + color: #fff; } + .bar.bar-assertive.bar-footer { + background-image: linear-gradient(180deg, #e42112, #e42112 50%, transparent 50%); } + .bar.bar-balanced { + border-color: #28a54c; + background-color: #33cd5f; + background-image: linear-gradient(0deg, #28a54c, #28a54c 50%, transparent 50%); + color: #fff; } + .bar.bar-balanced .title { + color: #fff; } + .bar.bar-balanced.bar-footer { + background-image: linear-gradient(180deg, #28a54c, #28a54c 50%, transparent 50%); } + .bar.bar-energized { + border-color: #e6b500; + background-color: #ffc900; + background-image: linear-gradient(0deg, #e6b500, #e6b500 50%, transparent 50%); + color: #fff; } + .bar.bar-energized .title { + color: #fff; } + .bar.bar-energized.bar-footer { + background-image: linear-gradient(180deg, #e6b500, #e6b500 50%, transparent 50%); } + .bar.bar-royal { + border-color: #6b46e5; + background-color: #886aea; + background-image: linear-gradient(0deg, #6b46e5, #6b46e5 50%, transparent 50%); + color: #fff; } + .bar.bar-royal .title { + color: #fff; } + .bar.bar-royal.bar-footer { + background-image: linear-gradient(180deg, #6b46e5, #6b46e5 50%, transparent 50%); } + .bar.bar-dark { + border-color: #111; + background-color: #444444; + background-image: linear-gradient(0deg, #111, #111 50%, transparent 50%); + color: #fff; } + .bar.bar-dark .title { + color: #fff; } + .bar.bar-dark.bar-footer { + background-image: linear-gradient(180deg, #111, #111 50%, transparent 50%); } + .bar .title { + display: block; + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 0; + overflow: hidden; + margin: 0 10px; + min-width: 30px; + height: 43px; + text-align: center; + text-overflow: ellipsis; + white-space: nowrap; + font-size: 17px; + font-weight: 500; + line-height: 44px; } + .bar .title.title-left { + text-align: left; } + .bar .title.title-right { + text-align: right; } + .bar .title a { + color: inherit; } + .bar .button, .bar button { + z-index: 1; + padding: 0 8px; + min-width: initial; + min-height: 31px; + font-weight: 400; + font-size: 13px; + line-height: 32px; } + .bar .button.button-icon:before, + .bar .button .icon:before, .bar .button.icon:before, .bar .button.icon-left:before, .bar .button.icon-right:before, .bar button.button-icon:before, + .bar button .icon:before, .bar button.icon:before, .bar button.icon-left:before, .bar button.icon-right:before { + padding-right: 2px; + padding-left: 2px; + font-size: 20px; + line-height: 32px; } + .bar .button.button-icon, .bar button.button-icon { + font-size: 17px; } + .bar .button.button-icon .icon:before, .bar .button.button-icon:before, .bar .button.button-icon.icon-left:before, .bar .button.button-icon.icon-right:before, .bar button.button-icon .icon:before, .bar button.button-icon:before, .bar button.button-icon.icon-left:before, .bar button.button-icon.icon-right:before { + vertical-align: top; + font-size: 32px; + line-height: 32px; } + .bar .button.button-clear, .bar button.button-clear { + padding-right: 2px; + padding-left: 2px; + font-weight: 300; + font-size: 17px; } + .bar .button.button-clear .icon:before, .bar .button.button-clear.icon:before, .bar .button.button-clear.icon-left:before, .bar .button.button-clear.icon-right:before, .bar button.button-clear .icon:before, .bar button.button-clear.icon:before, .bar button.button-clear.icon-left:before, .bar button.button-clear.icon-right:before { + font-size: 32px; + line-height: 32px; } + .bar .button.back-button, .bar button.back-button { + display: block; + margin-right: 5px; + padding: 0; + white-space: nowrap; + font-weight: 400; } + .bar .button.back-button.active, .bar .button.back-button.activated, .bar button.back-button.active, .bar button.back-button.activated { + opacity: 0.2; } + .bar .button-bar > .button, + .bar .buttons > .button { + min-height: 31px; + line-height: 32px; } + .bar .button-bar + .button, + .bar .button + .button-bar { + margin-left: 5px; } + .bar .buttons, + .bar .buttons.primary-buttons, + .bar .buttons.secondary-buttons { + display: inherit; } + .bar .buttons span { + display: inline-block; } + .bar .buttons-left span { + margin-right: 5px; + display: inherit; } + .bar .buttons-right span { + margin-left: 5px; + display: inherit; } + .bar .title + .button:last-child, + .bar > .button + .button:last-child, + .bar > .button.pull-right, + .bar .buttons.pull-right, + .bar .title + .buttons { + position: absolute; + top: 5px; + right: 5px; + bottom: 5px; } + +.platform-android .nav-bar-has-subheader .bar { + background-image: none; } + +.platform-android .bar .back-button .icon:before { + font-size: 24px; } + +.platform-android .bar .title { + font-size: 19px; + line-height: 44px; } + +.bar-light .button { + border-color: #ddd; + background-color: white; + color: #444; } + .bar-light .button:hover { + color: #444; + text-decoration: none; } + .bar-light .button.active, .bar-light .button.activated { + border-color: #ccc; + background-color: #fafafa; } + .bar-light .button.button-clear { + border-color: transparent; + background: none; + box-shadow: none; + color: #444; + font-size: 17px; } + .bar-light .button.button-icon { + border-color: transparent; + background: none; } + +.bar-stable .button { + border-color: #b2b2b2; + background-color: #f8f8f8; + color: #444; } + .bar-stable .button:hover { + color: #444; + text-decoration: none; } + .bar-stable .button.active, .bar-stable .button.activated { + border-color: #a2a2a2; + background-color: #e5e5e5; } + .bar-stable .button.button-clear { + border-color: transparent; + background: none; + box-shadow: none; + color: #444; + font-size: 17px; } + .bar-stable .button.button-icon { + border-color: transparent; + background: none; } + +.bar-positive .button { + border-color: #0c60ee; + background-color: #387ef5; + color: #fff; } + .bar-positive .button:hover { + color: #fff; + text-decoration: none; } + .bar-positive .button.active, .bar-positive .button.activated { + border-color: #0c60ee; + background-color: #0c60ee; } + .bar-positive .button.button-clear { + border-color: transparent; + background: none; + box-shadow: none; + color: #fff; + font-size: 17px; } + .bar-positive .button.button-icon { + border-color: transparent; + background: none; } + +.bar-calm .button { + border-color: #0a9dc7; + background-color: #11c1f3; + color: #fff; } + .bar-calm .button:hover { + color: #fff; + text-decoration: none; } + .bar-calm .button.active, .bar-calm .button.activated { + border-color: #0a9dc7; + background-color: #0a9dc7; } + .bar-calm .button.button-clear { + border-color: transparent; + background: none; + box-shadow: none; + color: #fff; + font-size: 17px; } + .bar-calm .button.button-icon { + border-color: transparent; + background: none; } + +.bar-assertive .button { + border-color: #e42112; + background-color: #ef473a; + color: #fff; } + .bar-assertive .button:hover { + color: #fff; + text-decoration: none; } + .bar-assertive .button.active, .bar-assertive .button.activated { + border-color: #e42112; + background-color: #e42112; } + .bar-assertive .button.button-clear { + border-color: transparent; + background: none; + box-shadow: none; + color: #fff; + font-size: 17px; } + .bar-assertive .button.button-icon { + border-color: transparent; + background: none; } + +.bar-balanced .button { + border-color: #28a54c; + background-color: #33cd5f; + color: #fff; } + .bar-balanced .button:hover { + color: #fff; + text-decoration: none; } + .bar-balanced .button.active, .bar-balanced .button.activated { + border-color: #28a54c; + background-color: #28a54c; } + .bar-balanced .button.button-clear { + border-color: transparent; + background: none; + box-shadow: none; + color: #fff; + font-size: 17px; } + .bar-balanced .button.button-icon { + border-color: transparent; + background: none; } + +.bar-energized .button { + border-color: #e6b500; + background-color: #ffc900; + color: #fff; } + .bar-energized .button:hover { + color: #fff; + text-decoration: none; } + .bar-energized .button.active, .bar-energized .button.activated { + border-color: #e6b500; + background-color: #e6b500; } + .bar-energized .button.button-clear { + border-color: transparent; + background: none; + box-shadow: none; + color: #fff; + font-size: 17px; } + .bar-energized .button.button-icon { + border-color: transparent; + background: none; } + +.bar-royal .button { + border-color: #6b46e5; + background-color: #886aea; + color: #fff; } + .bar-royal .button:hover { + color: #fff; + text-decoration: none; } + .bar-royal .button.active, .bar-royal .button.activated { + border-color: #6b46e5; + background-color: #6b46e5; } + .bar-royal .button.button-clear { + border-color: transparent; + background: none; + box-shadow: none; + color: #fff; + font-size: 17px; } + .bar-royal .button.button-icon { + border-color: transparent; + background: none; } + +.bar-dark .button { + border-color: #111; + background-color: #444444; + color: #fff; } + .bar-dark .button:hover { + color: #fff; + text-decoration: none; } + .bar-dark .button.active, .bar-dark .button.activated { + border-color: #000; + background-color: #262626; } + .bar-dark .button.button-clear { + border-color: transparent; + background: none; + box-shadow: none; + color: #fff; + font-size: 17px; } + .bar-dark .button.button-icon { + border-color: transparent; + background: none; } + +.bar-header { + top: 0; + border-top-width: 0; + border-bottom-width: 1px; } + .bar-header.has-tabs-top { + border-bottom-width: 0px; + background-image: none; } + +.tabs-top .bar-header { + border-bottom-width: 0px; + background-image: none; } + +.bar-footer { + bottom: 0; + border-top-width: 1px; + border-bottom-width: 0; + background-position: top; + height: 44px; } + .bar-footer.item-input-inset { + position: absolute; } + .bar-footer .title { + height: 43px; + line-height: 44px; } + +.bar-tabs { + padding: 0; } + +.bar-subheader { + top: 44px; + height: 44px; } + .bar-subheader .title { + height: 43px; + line-height: 44px; } + +.bar-subfooter { + bottom: 44px; + height: 44px; } + .bar-subfooter .title { + height: 43px; + line-height: 44px; } + +.nav-bar-block { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 9; } + +.bar .back-button.hide, +.bar .buttons .hide { + display: none; } + +.nav-bar-tabs-top .bar { + background-image: none; } + +/** + * Tabs + * -------------------------------------------------- + * A navigation bar with any number of tab items supported. + */ +.tabs { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-direction: normal; + -webkit-box-orient: horizontal; + -webkit-flex-direction: horizontal; + -moz-flex-direction: horizontal; + -ms-flex-direction: horizontal; + flex-direction: horizontal; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + -moz-justify-content: center; + justify-content: center; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + border-color: #b2b2b2; + background-color: #f8f8f8; + background-image: linear-gradient(0deg, #b2b2b2, #b2b2b2 50%, transparent 50%); + color: #444; + position: absolute; + bottom: 0; + z-index: 5; + width: 100%; + height: 49px; + border-style: solid; + border-top-width: 1px; + background-size: 0; + line-height: 49px; } + .tabs .tab-item .badge { + background-color: #444; + color: #f8f8f8; } + @media (min--moz-device-pixel-ratio: 1.5), (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5), (min-resolution: 144dpi), (min-resolution: 1.5dppx) { + .tabs { + padding-top: 2px; + border-top: none !important; + border-bottom: none; + background-position: top; + background-size: 100% 1px; + background-repeat: no-repeat; } } + +/* Allow parent element of tabs to define color, or just the tab itself */ +.tabs-light > .tabs, +.tabs.tabs-light { + border-color: #ddd; + background-color: #fff; + background-image: linear-gradient(0deg, #ddd, #ddd 50%, transparent 50%); + color: #444; } + .tabs-light > .tabs .tab-item .badge, + .tabs.tabs-light .tab-item .badge { + background-color: #444; + color: #fff; } + +.tabs-stable > .tabs, +.tabs.tabs-stable { + border-color: #b2b2b2; + background-color: #f8f8f8; + background-image: linear-gradient(0deg, #b2b2b2, #b2b2b2 50%, transparent 50%); + color: #444; } + .tabs-stable > .tabs .tab-item .badge, + .tabs.tabs-stable .tab-item .badge { + background-color: #444; + color: #f8f8f8; } + +.tabs-positive > .tabs, +.tabs.tabs-positive { + border-color: #0c60ee; + background-color: #387ef5; + background-image: linear-gradient(0deg, #0c60ee, #0c60ee 50%, transparent 50%); + color: #fff; } + .tabs-positive > .tabs .tab-item .badge, + .tabs.tabs-positive .tab-item .badge { + background-color: #fff; + color: #387ef5; } + +.tabs-calm > .tabs, +.tabs.tabs-calm { + border-color: #0a9dc7; + background-color: #11c1f3; + background-image: linear-gradient(0deg, #0a9dc7, #0a9dc7 50%, transparent 50%); + color: #fff; } + .tabs-calm > .tabs .tab-item .badge, + .tabs.tabs-calm .tab-item .badge { + background-color: #fff; + color: #11c1f3; } + +.tabs-assertive > .tabs, +.tabs.tabs-assertive { + border-color: #e42112; + background-color: #ef473a; + background-image: linear-gradient(0deg, #e42112, #e42112 50%, transparent 50%); + color: #fff; } + .tabs-assertive > .tabs .tab-item .badge, + .tabs.tabs-assertive .tab-item .badge { + background-color: #fff; + color: #ef473a; } + +.tabs-balanced > .tabs, +.tabs.tabs-balanced { + border-color: #28a54c; + background-color: #33cd5f; + background-image: linear-gradient(0deg, #28a54c, #28a54c 50%, transparent 50%); + color: #fff; } + .tabs-balanced > .tabs .tab-item .badge, + .tabs.tabs-balanced .tab-item .badge { + background-color: #fff; + color: #33cd5f; } + +.tabs-energized > .tabs, +.tabs.tabs-energized { + border-color: #e6b500; + background-color: #ffc900; + background-image: linear-gradient(0deg, #e6b500, #e6b500 50%, transparent 50%); + color: #fff; } + .tabs-energized > .tabs .tab-item .badge, + .tabs.tabs-energized .tab-item .badge { + background-color: #fff; + color: #ffc900; } + +.tabs-royal > .tabs, +.tabs.tabs-royal { + border-color: #6b46e5; + background-color: #886aea; + background-image: linear-gradient(0deg, #6b46e5, #6b46e5 50%, transparent 50%); + color: #fff; } + .tabs-royal > .tabs .tab-item .badge, + .tabs.tabs-royal .tab-item .badge { + background-color: #fff; + color: #886aea; } + +.tabs-dark > .tabs, +.tabs.tabs-dark { + border-color: #111; + background-color: #444; + background-image: linear-gradient(0deg, #111, #111 50%, transparent 50%); + color: #fff; } + .tabs-dark > .tabs .tab-item .badge, + .tabs.tabs-dark .tab-item .badge { + background-color: #fff; + color: #444; } + +.tabs-striped .tabs { + background-color: white; + background-image: none; + border: none; + border-bottom: 1px solid #ddd; + padding-top: 2px; } + +.tabs-striped .tab-item.tab-item-active, .tabs-striped .tab-item.active, .tabs-striped .tab-item.activated { + margin-top: -2px; + border-style: solid; + border-width: 2px 0 0 0; + border-color: #444; } + .tabs-striped .tab-item.tab-item-active .badge, .tabs-striped .tab-item.active .badge, .tabs-striped .tab-item.activated .badge { + top: 2px; + opacity: 1; } + +.tabs-striped.tabs-light .tabs { + background-color: #fff; } + +.tabs-striped.tabs-light .tab-item { + color: rgba(68, 68, 68, 0.4); + opacity: 1; } + .tabs-striped.tabs-light .tab-item .badge { + opacity: 0.4; } + .tabs-striped.tabs-light .tab-item.tab-item-active, .tabs-striped.tabs-light .tab-item.active, .tabs-striped.tabs-light .tab-item.activated { + margin-top: -2px; + color: #444; + border-style: solid; + border-width: 2px 0 0 0; + border-color: #444; } + +.tabs-striped.tabs-top .tab-item.tab-item-active .badge, .tabs-striped.tabs-top .tab-item.active .badge, .tabs-striped.tabs-top .tab-item.activated .badge { + top: 4%; } + +.tabs-striped.tabs-stable .tabs { + background-color: #f8f8f8; } + +.tabs-striped.tabs-stable .tab-item { + color: rgba(68, 68, 68, 0.4); + opacity: 1; } + .tabs-striped.tabs-stable .tab-item .badge { + opacity: 0.4; } + .tabs-striped.tabs-stable .tab-item.tab-item-active, .tabs-striped.tabs-stable .tab-item.active, .tabs-striped.tabs-stable .tab-item.activated { + margin-top: -2px; + color: #444; + border-style: solid; + border-width: 2px 0 0 0; + border-color: #444; } + +.tabs-striped.tabs-top .tab-item.tab-item-active .badge, .tabs-striped.tabs-top .tab-item.active .badge, .tabs-striped.tabs-top .tab-item.activated .badge { + top: 4%; } + +.tabs-striped.tabs-positive .tabs { + background-color: #387ef5; } + +.tabs-striped.tabs-positive .tab-item { + color: rgba(255, 255, 255, 0.4); + opacity: 1; } + .tabs-striped.tabs-positive .tab-item .badge { + opacity: 0.4; } + .tabs-striped.tabs-positive .tab-item.tab-item-active, .tabs-striped.tabs-positive .tab-item.active, .tabs-striped.tabs-positive .tab-item.activated { + margin-top: -2px; + color: #fff; + border-style: solid; + border-width: 2px 0 0 0; + border-color: #fff; } + +.tabs-striped.tabs-top .tab-item.tab-item-active .badge, .tabs-striped.tabs-top .tab-item.active .badge, .tabs-striped.tabs-top .tab-item.activated .badge { + top: 4%; } + +.tabs-striped.tabs-calm .tabs { + background-color: #11c1f3; } + +.tabs-striped.tabs-calm .tab-item { + color: rgba(255, 255, 255, 0.4); + opacity: 1; } + .tabs-striped.tabs-calm .tab-item .badge { + opacity: 0.4; } + .tabs-striped.tabs-calm .tab-item.tab-item-active, .tabs-striped.tabs-calm .tab-item.active, .tabs-striped.tabs-calm .tab-item.activated { + margin-top: -2px; + color: #fff; + border-style: solid; + border-width: 2px 0 0 0; + border-color: #fff; } + +.tabs-striped.tabs-top .tab-item.tab-item-active .badge, .tabs-striped.tabs-top .tab-item.active .badge, .tabs-striped.tabs-top .tab-item.activated .badge { + top: 4%; } + +.tabs-striped.tabs-assertive .tabs { + background-color: #ef473a; } + +.tabs-striped.tabs-assertive .tab-item { + color: rgba(255, 255, 255, 0.4); + opacity: 1; } + .tabs-striped.tabs-assertive .tab-item .badge { + opacity: 0.4; } + .tabs-striped.tabs-assertive .tab-item.tab-item-active, .tabs-striped.tabs-assertive .tab-item.active, .tabs-striped.tabs-assertive .tab-item.activated { + margin-top: -2px; + color: #fff; + border-style: solid; + border-width: 2px 0 0 0; + border-color: #fff; } + +.tabs-striped.tabs-top .tab-item.tab-item-active .badge, .tabs-striped.tabs-top .tab-item.active .badge, .tabs-striped.tabs-top .tab-item.activated .badge { + top: 4%; } + +.tabs-striped.tabs-balanced .tabs { + background-color: #33cd5f; } + +.tabs-striped.tabs-balanced .tab-item { + color: rgba(255, 255, 255, 0.4); + opacity: 1; } + .tabs-striped.tabs-balanced .tab-item .badge { + opacity: 0.4; } + .tabs-striped.tabs-balanced .tab-item.tab-item-active, .tabs-striped.tabs-balanced .tab-item.active, .tabs-striped.tabs-balanced .tab-item.activated { + margin-top: -2px; + color: #fff; + border-style: solid; + border-width: 2px 0 0 0; + border-color: #fff; } + +.tabs-striped.tabs-top .tab-item.tab-item-active .badge, .tabs-striped.tabs-top .tab-item.active .badge, .tabs-striped.tabs-top .tab-item.activated .badge { + top: 4%; } + +.tabs-striped.tabs-energized .tabs { + background-color: #ffc900; } + +.tabs-striped.tabs-energized .tab-item { + color: rgba(255, 255, 255, 0.4); + opacity: 1; } + .tabs-striped.tabs-energized .tab-item .badge { + opacity: 0.4; } + .tabs-striped.tabs-energized .tab-item.tab-item-active, .tabs-striped.tabs-energized .tab-item.active, .tabs-striped.tabs-energized .tab-item.activated { + margin-top: -2px; + color: #fff; + border-style: solid; + border-width: 2px 0 0 0; + border-color: #fff; } + +.tabs-striped.tabs-top .tab-item.tab-item-active .badge, .tabs-striped.tabs-top .tab-item.active .badge, .tabs-striped.tabs-top .tab-item.activated .badge { + top: 4%; } + +.tabs-striped.tabs-royal .tabs { + background-color: #886aea; } + +.tabs-striped.tabs-royal .tab-item { + color: rgba(255, 255, 255, 0.4); + opacity: 1; } + .tabs-striped.tabs-royal .tab-item .badge { + opacity: 0.4; } + .tabs-striped.tabs-royal .tab-item.tab-item-active, .tabs-striped.tabs-royal .tab-item.active, .tabs-striped.tabs-royal .tab-item.activated { + margin-top: -2px; + color: #fff; + border-style: solid; + border-width: 2px 0 0 0; + border-color: #fff; } + +.tabs-striped.tabs-top .tab-item.tab-item-active .badge, .tabs-striped.tabs-top .tab-item.active .badge, .tabs-striped.tabs-top .tab-item.activated .badge { + top: 4%; } + +.tabs-striped.tabs-dark .tabs { + background-color: #444; } + +.tabs-striped.tabs-dark .tab-item { + color: rgba(255, 255, 255, 0.4); + opacity: 1; } + .tabs-striped.tabs-dark .tab-item .badge { + opacity: 0.4; } + .tabs-striped.tabs-dark .tab-item.tab-item-active, .tabs-striped.tabs-dark .tab-item.active, .tabs-striped.tabs-dark .tab-item.activated { + margin-top: -2px; + color: #fff; + border-style: solid; + border-width: 2px 0 0 0; + border-color: #fff; } + +.tabs-striped.tabs-top .tab-item.tab-item-active .badge, .tabs-striped.tabs-top .tab-item.active .badge, .tabs-striped.tabs-top .tab-item.activated .badge { + top: 4%; } + +.tabs-striped.tabs-background-light .tabs { + background-color: #fff; + background-image: none; } + +.tabs-striped.tabs-background-stable .tabs { + background-color: #f8f8f8; + background-image: none; } + +.tabs-striped.tabs-background-positive .tabs { + background-color: #387ef5; + background-image: none; } + +.tabs-striped.tabs-background-calm .tabs { + background-color: #11c1f3; + background-image: none; } + +.tabs-striped.tabs-background-assertive .tabs { + background-color: #ef473a; + background-image: none; } + +.tabs-striped.tabs-background-balanced .tabs { + background-color: #33cd5f; + background-image: none; } + +.tabs-striped.tabs-background-energized .tabs { + background-color: #ffc900; + background-image: none; } + +.tabs-striped.tabs-background-royal .tabs { + background-color: #886aea; + background-image: none; } + +.tabs-striped.tabs-background-dark .tabs { + background-color: #444; + background-image: none; } + +.tabs-striped.tabs-color-light .tab-item { + color: rgba(255, 255, 255, 0.4); + opacity: 1; } + .tabs-striped.tabs-color-light .tab-item .badge { + opacity: 0.4; } + .tabs-striped.tabs-color-light .tab-item.tab-item-active, .tabs-striped.tabs-color-light .tab-item.active, .tabs-striped.tabs-color-light .tab-item.activated { + margin-top: -2px; + color: #fff; + border: 0 solid #fff; + border-top-width: 2px; } + .tabs-striped.tabs-color-light .tab-item.tab-item-active .badge, .tabs-striped.tabs-color-light .tab-item.active .badge, .tabs-striped.tabs-color-light .tab-item.activated .badge { + top: 2px; + opacity: 1; } + +.tabs-striped.tabs-color-stable .tab-item { + color: rgba(248, 248, 248, 0.4); + opacity: 1; } + .tabs-striped.tabs-color-stable .tab-item .badge { + opacity: 0.4; } + .tabs-striped.tabs-color-stable .tab-item.tab-item-active, .tabs-striped.tabs-color-stable .tab-item.active, .tabs-striped.tabs-color-stable .tab-item.activated { + margin-top: -2px; + color: #f8f8f8; + border: 0 solid #f8f8f8; + border-top-width: 2px; } + .tabs-striped.tabs-color-stable .tab-item.tab-item-active .badge, .tabs-striped.tabs-color-stable .tab-item.active .badge, .tabs-striped.tabs-color-stable .tab-item.activated .badge { + top: 2px; + opacity: 1; } + +.tabs-striped.tabs-color-positive .tab-item { + color: rgba(56, 126, 245, 0.4); + opacity: 1; } + .tabs-striped.tabs-color-positive .tab-item .badge { + opacity: 0.4; } + .tabs-striped.tabs-color-positive .tab-item.tab-item-active, .tabs-striped.tabs-color-positive .tab-item.active, .tabs-striped.tabs-color-positive .tab-item.activated { + margin-top: -2px; + color: #387ef5; + border: 0 solid #387ef5; + border-top-width: 2px; } + .tabs-striped.tabs-color-positive .tab-item.tab-item-active .badge, .tabs-striped.tabs-color-positive .tab-item.active .badge, .tabs-striped.tabs-color-positive .tab-item.activated .badge { + top: 2px; + opacity: 1; } + +.tabs-striped.tabs-color-calm .tab-item { + color: rgba(17, 193, 243, 0.4); + opacity: 1; } + .tabs-striped.tabs-color-calm .tab-item .badge { + opacity: 0.4; } + .tabs-striped.tabs-color-calm .tab-item.tab-item-active, .tabs-striped.tabs-color-calm .tab-item.active, .tabs-striped.tabs-color-calm .tab-item.activated { + margin-top: -2px; + color: #11c1f3; + border: 0 solid #11c1f3; + border-top-width: 2px; } + .tabs-striped.tabs-color-calm .tab-item.tab-item-active .badge, .tabs-striped.tabs-color-calm .tab-item.active .badge, .tabs-striped.tabs-color-calm .tab-item.activated .badge { + top: 2px; + opacity: 1; } + +.tabs-striped.tabs-color-assertive .tab-item { + color: rgba(239, 71, 58, 0.4); + opacity: 1; } + .tabs-striped.tabs-color-assertive .tab-item .badge { + opacity: 0.4; } + .tabs-striped.tabs-color-assertive .tab-item.tab-item-active, .tabs-striped.tabs-color-assertive .tab-item.active, .tabs-striped.tabs-color-assertive .tab-item.activated { + margin-top: -2px; + color: #ef473a; + border: 0 solid #ef473a; + border-top-width: 2px; } + .tabs-striped.tabs-color-assertive .tab-item.tab-item-active .badge, .tabs-striped.tabs-color-assertive .tab-item.active .badge, .tabs-striped.tabs-color-assertive .tab-item.activated .badge { + top: 2px; + opacity: 1; } + +.tabs-striped.tabs-color-balanced .tab-item { + color: rgba(51, 205, 95, 0.4); + opacity: 1; } + .tabs-striped.tabs-color-balanced .tab-item .badge { + opacity: 0.4; } + .tabs-striped.tabs-color-balanced .tab-item.tab-item-active, .tabs-striped.tabs-color-balanced .tab-item.active, .tabs-striped.tabs-color-balanced .tab-item.activated { + margin-top: -2px; + color: #33cd5f; + border: 0 solid #33cd5f; + border-top-width: 2px; } + .tabs-striped.tabs-color-balanced .tab-item.tab-item-active .badge, .tabs-striped.tabs-color-balanced .tab-item.active .badge, .tabs-striped.tabs-color-balanced .tab-item.activated .badge { + top: 2px; + opacity: 1; } + +.tabs-striped.tabs-color-energized .tab-item { + color: rgba(255, 201, 0, 0.4); + opacity: 1; } + .tabs-striped.tabs-color-energized .tab-item .badge { + opacity: 0.4; } + .tabs-striped.tabs-color-energized .tab-item.tab-item-active, .tabs-striped.tabs-color-energized .tab-item.active, .tabs-striped.tabs-color-energized .tab-item.activated { + margin-top: -2px; + color: #ffc900; + border: 0 solid #ffc900; + border-top-width: 2px; } + .tabs-striped.tabs-color-energized .tab-item.tab-item-active .badge, .tabs-striped.tabs-color-energized .tab-item.active .badge, .tabs-striped.tabs-color-energized .tab-item.activated .badge { + top: 2px; + opacity: 1; } + +.tabs-striped.tabs-color-royal .tab-item { + color: rgba(136, 106, 234, 0.4); + opacity: 1; } + .tabs-striped.tabs-color-royal .tab-item .badge { + opacity: 0.4; } + .tabs-striped.tabs-color-royal .tab-item.tab-item-active, .tabs-striped.tabs-color-royal .tab-item.active, .tabs-striped.tabs-color-royal .tab-item.activated { + margin-top: -2px; + color: #886aea; + border: 0 solid #886aea; + border-top-width: 2px; } + .tabs-striped.tabs-color-royal .tab-item.tab-item-active .badge, .tabs-striped.tabs-color-royal .tab-item.active .badge, .tabs-striped.tabs-color-royal .tab-item.activated .badge { + top: 2px; + opacity: 1; } + +.tabs-striped.tabs-color-dark .tab-item { + color: rgba(68, 68, 68, 0.4); + opacity: 1; } + .tabs-striped.tabs-color-dark .tab-item .badge { + opacity: 0.4; } + .tabs-striped.tabs-color-dark .tab-item.tab-item-active, .tabs-striped.tabs-color-dark .tab-item.active, .tabs-striped.tabs-color-dark .tab-item.activated { + margin-top: -2px; + color: #444; + border: 0 solid #444; + border-top-width: 2px; } + .tabs-striped.tabs-color-dark .tab-item.tab-item-active .badge, .tabs-striped.tabs-color-dark .tab-item.active .badge, .tabs-striped.tabs-color-dark .tab-item.activated .badge { + top: 2px; + opacity: 1; } + +.tabs-background-light .tabs, +.tabs-background-light > .tabs { + background-color: #fff; + background-image: linear-gradient(0deg, #ddd, #ddd 50%, transparent 50%); + border-color: #ddd; } + +.tabs-background-stable .tabs, +.tabs-background-stable > .tabs { + background-color: #f8f8f8; + background-image: linear-gradient(0deg, #b2b2b2, #b2b2b2 50%, transparent 50%); + border-color: #b2b2b2; } + +.tabs-background-positive .tabs, +.tabs-background-positive > .tabs { + background-color: #387ef5; + background-image: linear-gradient(0deg, #0c60ee, #0c60ee 50%, transparent 50%); + border-color: #0c60ee; } + +.tabs-background-calm .tabs, +.tabs-background-calm > .tabs { + background-color: #11c1f3; + background-image: linear-gradient(0deg, #0a9dc7, #0a9dc7 50%, transparent 50%); + border-color: #0a9dc7; } + +.tabs-background-assertive .tabs, +.tabs-background-assertive > .tabs { + background-color: #ef473a; + background-image: linear-gradient(0deg, #e42112, #e42112 50%, transparent 50%); + border-color: #e42112; } + +.tabs-background-balanced .tabs, +.tabs-background-balanced > .tabs { + background-color: #33cd5f; + background-image: linear-gradient(0deg, #28a54c, #28a54c 50%, transparent 50%); + border-color: #28a54c; } + +.tabs-background-energized .tabs, +.tabs-background-energized > .tabs { + background-color: #ffc900; + background-image: linear-gradient(0deg, #e6b500, #e6b500 50%, transparent 50%); + border-color: #e6b500; } + +.tabs-background-royal .tabs, +.tabs-background-royal > .tabs { + background-color: #886aea; + background-image: linear-gradient(0deg, #6b46e5, #6b46e5 50%, transparent 50%); + border-color: #6b46e5; } + +.tabs-background-dark .tabs, +.tabs-background-dark > .tabs { + background-color: #444; + background-image: linear-gradient(0deg, #111, #111 50%, transparent 50%); + border-color: #111; } + +.tabs-color-light .tab-item { + color: rgba(255, 255, 255, 0.4); + opacity: 1; } + .tabs-color-light .tab-item .badge { + opacity: 0.4; } + .tabs-color-light .tab-item.tab-item-active, .tabs-color-light .tab-item.active, .tabs-color-light .tab-item.activated { + color: #fff; + border: 0 solid #fff; } + .tabs-color-light .tab-item.tab-item-active .badge, .tabs-color-light .tab-item.active .badge, .tabs-color-light .tab-item.activated .badge { + opacity: 1; } + +.tabs-color-stable .tab-item { + color: rgba(248, 248, 248, 0.4); + opacity: 1; } + .tabs-color-stable .tab-item .badge { + opacity: 0.4; } + .tabs-color-stable .tab-item.tab-item-active, .tabs-color-stable .tab-item.active, .tabs-color-stable .tab-item.activated { + color: #f8f8f8; + border: 0 solid #f8f8f8; } + .tabs-color-stable .tab-item.tab-item-active .badge, .tabs-color-stable .tab-item.active .badge, .tabs-color-stable .tab-item.activated .badge { + opacity: 1; } + +.tabs-color-positive .tab-item { + color: rgba(56, 126, 245, 0.4); + opacity: 1; } + .tabs-color-positive .tab-item .badge { + opacity: 0.4; } + .tabs-color-positive .tab-item.tab-item-active, .tabs-color-positive .tab-item.active, .tabs-color-positive .tab-item.activated { + color: #387ef5; + border: 0 solid #387ef5; } + .tabs-color-positive .tab-item.tab-item-active .badge, .tabs-color-positive .tab-item.active .badge, .tabs-color-positive .tab-item.activated .badge { + opacity: 1; } + +.tabs-color-calm .tab-item { + color: rgba(17, 193, 243, 0.4); + opacity: 1; } + .tabs-color-calm .tab-item .badge { + opacity: 0.4; } + .tabs-color-calm .tab-item.tab-item-active, .tabs-color-calm .tab-item.active, .tabs-color-calm .tab-item.activated { + color: #11c1f3; + border: 0 solid #11c1f3; } + .tabs-color-calm .tab-item.tab-item-active .badge, .tabs-color-calm .tab-item.active .badge, .tabs-color-calm .tab-item.activated .badge { + opacity: 1; } + +.tabs-color-assertive .tab-item { + color: rgba(239, 71, 58, 0.4); + opacity: 1; } + .tabs-color-assertive .tab-item .badge { + opacity: 0.4; } + .tabs-color-assertive .tab-item.tab-item-active, .tabs-color-assertive .tab-item.active, .tabs-color-assertive .tab-item.activated { + color: #ef473a; + border: 0 solid #ef473a; } + .tabs-color-assertive .tab-item.tab-item-active .badge, .tabs-color-assertive .tab-item.active .badge, .tabs-color-assertive .tab-item.activated .badge { + opacity: 1; } + +.tabs-color-balanced .tab-item { + color: rgba(51, 205, 95, 0.4); + opacity: 1; } + .tabs-color-balanced .tab-item .badge { + opacity: 0.4; } + .tabs-color-balanced .tab-item.tab-item-active, .tabs-color-balanced .tab-item.active, .tabs-color-balanced .tab-item.activated { + color: #33cd5f; + border: 0 solid #33cd5f; } + .tabs-color-balanced .tab-item.tab-item-active .badge, .tabs-color-balanced .tab-item.active .badge, .tabs-color-balanced .tab-item.activated .badge { + opacity: 1; } + +.tabs-color-energized .tab-item { + color: rgba(255, 201, 0, 0.4); + opacity: 1; } + .tabs-color-energized .tab-item .badge { + opacity: 0.4; } + .tabs-color-energized .tab-item.tab-item-active, .tabs-color-energized .tab-item.active, .tabs-color-energized .tab-item.activated { + color: #ffc900; + border: 0 solid #ffc900; } + .tabs-color-energized .tab-item.tab-item-active .badge, .tabs-color-energized .tab-item.active .badge, .tabs-color-energized .tab-item.activated .badge { + opacity: 1; } + +.tabs-color-royal .tab-item { + color: rgba(136, 106, 234, 0.4); + opacity: 1; } + .tabs-color-royal .tab-item .badge { + opacity: 0.4; } + .tabs-color-royal .tab-item.tab-item-active, .tabs-color-royal .tab-item.active, .tabs-color-royal .tab-item.activated { + color: #886aea; + border: 0 solid #886aea; } + .tabs-color-royal .tab-item.tab-item-active .badge, .tabs-color-royal .tab-item.active .badge, .tabs-color-royal .tab-item.activated .badge { + opacity: 1; } + +.tabs-color-dark .tab-item { + color: rgba(68, 68, 68, 0.4); + opacity: 1; } + .tabs-color-dark .tab-item .badge { + opacity: 0.4; } + .tabs-color-dark .tab-item.tab-item-active, .tabs-color-dark .tab-item.active, .tabs-color-dark .tab-item.activated { + color: #444; + border: 0 solid #444; } + .tabs-color-dark .tab-item.tab-item-active .badge, .tabs-color-dark .tab-item.active .badge, .tabs-color-dark .tab-item.activated .badge { + opacity: 1; } + +ion-tabs.tabs-color-active-light .tab-item { + color: #444; } + ion-tabs.tabs-color-active-light .tab-item.tab-item-active, ion-tabs.tabs-color-active-light .tab-item.active, ion-tabs.tabs-color-active-light .tab-item.activated { + color: #fff; } + +ion-tabs.tabs-striped.tabs-color-active-light .tab-item.tab-item-active, ion-tabs.tabs-striped.tabs-color-active-light .tab-item.active, ion-tabs.tabs-striped.tabs-color-active-light .tab-item.activated { + border-color: #fff; + color: #fff; } + +ion-tabs.tabs-color-active-stable .tab-item { + color: #444; } + ion-tabs.tabs-color-active-stable .tab-item.tab-item-active, ion-tabs.tabs-color-active-stable .tab-item.active, ion-tabs.tabs-color-active-stable .tab-item.activated { + color: #f8f8f8; } + +ion-tabs.tabs-striped.tabs-color-active-stable .tab-item.tab-item-active, ion-tabs.tabs-striped.tabs-color-active-stable .tab-item.active, ion-tabs.tabs-striped.tabs-color-active-stable .tab-item.activated { + border-color: #f8f8f8; + color: #f8f8f8; } + +ion-tabs.tabs-color-active-positive .tab-item { + color: #444; } + ion-tabs.tabs-color-active-positive .tab-item.tab-item-active, ion-tabs.tabs-color-active-positive .tab-item.active, ion-tabs.tabs-color-active-positive .tab-item.activated { + color: #387ef5; } + +ion-tabs.tabs-striped.tabs-color-active-positive .tab-item.tab-item-active, ion-tabs.tabs-striped.tabs-color-active-positive .tab-item.active, ion-tabs.tabs-striped.tabs-color-active-positive .tab-item.activated { + border-color: #387ef5; + color: #387ef5; } + +ion-tabs.tabs-color-active-calm .tab-item { + color: #444; } + ion-tabs.tabs-color-active-calm .tab-item.tab-item-active, ion-tabs.tabs-color-active-calm .tab-item.active, ion-tabs.tabs-color-active-calm .tab-item.activated { + color: #11c1f3; } + +ion-tabs.tabs-striped.tabs-color-active-calm .tab-item.tab-item-active, ion-tabs.tabs-striped.tabs-color-active-calm .tab-item.active, ion-tabs.tabs-striped.tabs-color-active-calm .tab-item.activated { + border-color: #11c1f3; + color: #11c1f3; } + +ion-tabs.tabs-color-active-assertive .tab-item { + color: #444; } + ion-tabs.tabs-color-active-assertive .tab-item.tab-item-active, ion-tabs.tabs-color-active-assertive .tab-item.active, ion-tabs.tabs-color-active-assertive .tab-item.activated { + color: #ef473a; } + +ion-tabs.tabs-striped.tabs-color-active-assertive .tab-item.tab-item-active, ion-tabs.tabs-striped.tabs-color-active-assertive .tab-item.active, ion-tabs.tabs-striped.tabs-color-active-assertive .tab-item.activated { + border-color: #ef473a; + color: #ef473a; } + +ion-tabs.tabs-color-active-balanced .tab-item { + color: #444; } + ion-tabs.tabs-color-active-balanced .tab-item.tab-item-active, ion-tabs.tabs-color-active-balanced .tab-item.active, ion-tabs.tabs-color-active-balanced .tab-item.activated { + color: #33cd5f; } + +ion-tabs.tabs-striped.tabs-color-active-balanced .tab-item.tab-item-active, ion-tabs.tabs-striped.tabs-color-active-balanced .tab-item.active, ion-tabs.tabs-striped.tabs-color-active-balanced .tab-item.activated { + border-color: #33cd5f; + color: #33cd5f; } + +ion-tabs.tabs-color-active-energized .tab-item { + color: #444; } + ion-tabs.tabs-color-active-energized .tab-item.tab-item-active, ion-tabs.tabs-color-active-energized .tab-item.active, ion-tabs.tabs-color-active-energized .tab-item.activated { + color: #ffc900; } + +ion-tabs.tabs-striped.tabs-color-active-energized .tab-item.tab-item-active, ion-tabs.tabs-striped.tabs-color-active-energized .tab-item.active, ion-tabs.tabs-striped.tabs-color-active-energized .tab-item.activated { + border-color: #ffc900; + color: #ffc900; } + +ion-tabs.tabs-color-active-royal .tab-item { + color: #444; } + ion-tabs.tabs-color-active-royal .tab-item.tab-item-active, ion-tabs.tabs-color-active-royal .tab-item.active, ion-tabs.tabs-color-active-royal .tab-item.activated { + color: #886aea; } + +ion-tabs.tabs-striped.tabs-color-active-royal .tab-item.tab-item-active, ion-tabs.tabs-striped.tabs-color-active-royal .tab-item.active, ion-tabs.tabs-striped.tabs-color-active-royal .tab-item.activated { + border-color: #886aea; + color: #886aea; } + +ion-tabs.tabs-color-active-dark .tab-item { + color: #fff; } + ion-tabs.tabs-color-active-dark .tab-item.tab-item-active, ion-tabs.tabs-color-active-dark .tab-item.active, ion-tabs.tabs-color-active-dark .tab-item.activated { + color: #444; } + +ion-tabs.tabs-striped.tabs-color-active-dark .tab-item.tab-item-active, ion-tabs.tabs-striped.tabs-color-active-dark .tab-item.active, ion-tabs.tabs-striped.tabs-color-active-dark .tab-item.activated { + border-color: #444; + color: #444; } + +.tabs-top.tabs-striped { + padding-bottom: 0; } + .tabs-top.tabs-striped .tab-item { + background: transparent; + -webkit-transition: color .1s ease; + -moz-transition: color .1s ease; + -ms-transition: color .1s ease; + -o-transition: color .1s ease; + transition: color .1s ease; } + .tabs-top.tabs-striped .tab-item.tab-item-active, .tabs-top.tabs-striped .tab-item.active, .tabs-top.tabs-striped .tab-item.activated { + margin-top: 1px; + border-width: 0px 0px 2px 0px !important; + border-style: solid; } + .tabs-top.tabs-striped .tab-item.tab-item-active > .badge, .tabs-top.tabs-striped .tab-item.tab-item-active > i, .tabs-top.tabs-striped .tab-item.active > .badge, .tabs-top.tabs-striped .tab-item.active > i, .tabs-top.tabs-striped .tab-item.activated > .badge, .tabs-top.tabs-striped .tab-item.activated > i { + margin-top: -1px; } + .tabs-top.tabs-striped .tab-item .badge { + -webkit-transition: color .2s ease; + -moz-transition: color .2s ease; + -ms-transition: color .2s ease; + -o-transition: color .2s ease; + transition: color .2s ease; } + .tabs-top.tabs-striped:not(.tabs-icon-left):not(.tabs-icon-top) .tab-item.tab-item-active .tab-title, .tabs-top.tabs-striped:not(.tabs-icon-left):not(.tabs-icon-top) .tab-item.tab-item-active i, .tabs-top.tabs-striped:not(.tabs-icon-left):not(.tabs-icon-top) .tab-item.active .tab-title, .tabs-top.tabs-striped:not(.tabs-icon-left):not(.tabs-icon-top) .tab-item.active i, .tabs-top.tabs-striped:not(.tabs-icon-left):not(.tabs-icon-top) .tab-item.activated .tab-title, .tabs-top.tabs-striped:not(.tabs-icon-left):not(.tabs-icon-top) .tab-item.activated i { + display: block; + margin-top: -1px; } + .tabs-top.tabs-striped.tabs-icon-left .tab-item { + margin-top: 1px; } + .tabs-top.tabs-striped.tabs-icon-left .tab-item.tab-item-active .tab-title, .tabs-top.tabs-striped.tabs-icon-left .tab-item.tab-item-active i, .tabs-top.tabs-striped.tabs-icon-left .tab-item.active .tab-title, .tabs-top.tabs-striped.tabs-icon-left .tab-item.active i, .tabs-top.tabs-striped.tabs-icon-left .tab-item.activated .tab-title, .tabs-top.tabs-striped.tabs-icon-left .tab-item.activated i { + margin-top: -0.1em; } + +/* Allow parent element to have tabs-top */ +/* If you change this, change platform.scss as well */ +.tabs-top > .tabs, +.tabs.tabs-top { + top: 44px; + padding-top: 0; + background-position: bottom; + border-top-width: 0; + border-bottom-width: 1px; } + .tabs-top > .tabs .tab-item.tab-item-active .badge, .tabs-top > .tabs .tab-item.active .badge, .tabs-top > .tabs .tab-item.activated .badge, + .tabs.tabs-top .tab-item.tab-item-active .badge, + .tabs.tabs-top .tab-item.active .badge, + .tabs.tabs-top .tab-item.activated .badge { + top: 4%; } + +.tabs-top ~ .bar-header { + border-bottom-width: 0; } + +.tab-item { + -webkit-box-flex: 1; + -webkit-flex: 1; + -moz-box-flex: 1; + -moz-flex: 1; + -ms-flex: 1; + flex: 1; + display: block; + overflow: hidden; + max-width: 150px; + height: 100%; + color: inherit; + text-align: center; + text-decoration: none; + text-overflow: ellipsis; + white-space: nowrap; + font-weight: 400; + font-size: 14px; + font-family: "-apple-system", "Helvetica Neue", "Roboto", "Segoe UI", sans-serif; + opacity: 0.7; } + .tab-item:hover { + cursor: pointer; } + .tab-item.tab-hidden { + display: none; } + +.tabs-item-hide > .tabs, +.tabs.tabs-item-hide { + display: none; } + +.tabs-icon-top > .tabs .tab-item, +.tabs-icon-top.tabs .tab-item, +.tabs-icon-bottom > .tabs .tab-item, +.tabs-icon-bottom.tabs .tab-item { + font-size: 10px; + line-height: 14px; } + +.tab-item .icon { + display: block; + margin: 0 auto; + height: 32px; + font-size: 32px; } + +.tabs-icon-left.tabs .tab-item, +.tabs-icon-left > .tabs .tab-item, +.tabs-icon-right.tabs .tab-item, +.tabs-icon-right > .tabs .tab-item { + font-size: 10px; } + .tabs-icon-left.tabs .tab-item .icon, .tabs-icon-left.tabs .tab-item .tab-title, + .tabs-icon-left > .tabs .tab-item .icon, + .tabs-icon-left > .tabs .tab-item .tab-title, + .tabs-icon-right.tabs .tab-item .icon, + .tabs-icon-right.tabs .tab-item .tab-title, + .tabs-icon-right > .tabs .tab-item .icon, + .tabs-icon-right > .tabs .tab-item .tab-title { + display: inline-block; + vertical-align: top; + margin-top: -.1em; } + .tabs-icon-left.tabs .tab-item .icon:before, .tabs-icon-left.tabs .tab-item .tab-title:before, + .tabs-icon-left > .tabs .tab-item .icon:before, + .tabs-icon-left > .tabs .tab-item .tab-title:before, + .tabs-icon-right.tabs .tab-item .icon:before, + .tabs-icon-right.tabs .tab-item .tab-title:before, + .tabs-icon-right > .tabs .tab-item .icon:before, + .tabs-icon-right > .tabs .tab-item .tab-title:before { + font-size: 24px; + line-height: 49px; } + +.tabs-icon-left > .tabs .tab-item .icon, +.tabs-icon-left.tabs .tab-item .icon { + padding-right: 3px; } + +.tabs-icon-right > .tabs .tab-item .icon, +.tabs-icon-right.tabs .tab-item .icon { + padding-left: 3px; } + +.tabs-icon-only > .tabs .icon, +.tabs-icon-only.tabs .icon { + line-height: inherit; } + +.tab-item.has-badge { + position: relative; } + +.tab-item .badge { + position: absolute; + top: 4%; + right: 33%; + right: calc(50% - 26px); + padding: 1px 6px; + height: auto; + font-size: 12px; + line-height: 16px; } + +/* Navigational tab */ +/* Active state for tab */ +.tab-item.tab-item-active, +.tab-item.active, +.tab-item.activated { + opacity: 1; } + .tab-item.tab-item-active.tab-item-light, + .tab-item.active.tab-item-light, + .tab-item.activated.tab-item-light { + color: #fff; } + .tab-item.tab-item-active.tab-item-stable, + .tab-item.active.tab-item-stable, + .tab-item.activated.tab-item-stable { + color: #f8f8f8; } + .tab-item.tab-item-active.tab-item-positive, + .tab-item.active.tab-item-positive, + .tab-item.activated.tab-item-positive { + color: #387ef5; } + .tab-item.tab-item-active.tab-item-calm, + .tab-item.active.tab-item-calm, + .tab-item.activated.tab-item-calm { + color: #11c1f3; } + .tab-item.tab-item-active.tab-item-assertive, + .tab-item.active.tab-item-assertive, + .tab-item.activated.tab-item-assertive { + color: #ef473a; } + .tab-item.tab-item-active.tab-item-balanced, + .tab-item.active.tab-item-balanced, + .tab-item.activated.tab-item-balanced { + color: #33cd5f; } + .tab-item.tab-item-active.tab-item-energized, + .tab-item.active.tab-item-energized, + .tab-item.activated.tab-item-energized { + color: #ffc900; } + .tab-item.tab-item-active.tab-item-royal, + .tab-item.active.tab-item-royal, + .tab-item.activated.tab-item-royal { + color: #886aea; } + .tab-item.tab-item-active.tab-item-dark, + .tab-item.active.tab-item-dark, + .tab-item.activated.tab-item-dark { + color: #444; } + +.item.tabs { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + padding: 0; } + .item.tabs .icon:before { + position: relative; } + +.tab-item.disabled, +.tab-item[disabled] { + opacity: .4; + cursor: default; + pointer-events: none; } + +.nav-bar-tabs-top.hide ~ .view-container .tabs-top .tabs { + top: 0; } + +.pane[hide-nav-bar="true"] .has-tabs-top { + top: 49px; } + +/** + * Menus + * -------------------------------------------------- + * Side panel structure + */ +.menu { + position: absolute; + top: 0; + bottom: 0; + z-index: 0; + overflow: hidden; + min-height: 100%; + max-height: 100%; + width: 275px; + background-color: #fff; } + .menu .scroll-content { + z-index: 10; } + .menu .bar-header { + z-index: 11; } + +.menu-content { + -webkit-transform: none; + transform: none; + box-shadow: -1px 0px 2px rgba(0, 0, 0, 0.2), 1px 0px 2px rgba(0, 0, 0, 0.2); } + +.menu-open .menu-content .pane, +.menu-open .menu-content .scroll-content { + pointer-events: none; } + +.menu-open .menu-content .scroll-content .scroll { + pointer-events: none; } + +.menu-open .menu-content .scroll-content:not(.overflow-scroll) { + overflow: hidden; } + +.grade-b .menu-content, +.grade-c .menu-content { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + right: -1px; + left: -1px; + border-right: 1px solid #ccc; + border-left: 1px solid #ccc; + box-shadow: none; } + +.menu-left { + left: 0; } + +.menu-right { + right: 0; } + +.aside-open.aside-resizing .menu-right { + display: none; } + +.menu-animated { + -webkit-transition: -webkit-transform 200ms ease; + transition: transform 200ms ease; } + +/** + * Modals + * -------------------------------------------------- + * Modals are independent windows that slide in from off-screen. + */ +.modal-backdrop, +.modal-backdrop-bg { + position: fixed; + top: 0; + left: 0; + z-index: 10; + width: 100%; + height: 100%; } + +.modal-backdrop-bg { + pointer-events: none; } + +.modal { + display: block; + position: absolute; + top: 0; + z-index: 10; + overflow: hidden; + min-height: 100%; + width: 100%; + background-color: #fff; } + +@media (min-width: 680px) { + .modal { + top: 20%; + right: 20%; + bottom: 20%; + left: 20%; + min-height: 240px; + width: 60%; } + .modal.ng-leave-active { + bottom: 0; } + .platform-ios.platform-cordova .modal-wrapper .modal .bar-header:not(.bar-subheader) { + height: 44px; } + .platform-ios.platform-cordova .modal-wrapper .modal .bar-header:not(.bar-subheader) > * { + margin-top: 0; } + .platform-ios.platform-cordova .modal-wrapper .modal .tabs-top > .tabs, + .platform-ios.platform-cordova .modal-wrapper .modal .tabs.tabs-top { + top: 44px; } + .platform-ios.platform-cordova .modal-wrapper .modal .has-header, + .platform-ios.platform-cordova .modal-wrapper .modal .bar-subheader { + top: 44px; } + .platform-ios.platform-cordova .modal-wrapper .modal .has-subheader { + top: 88px; } + .platform-ios.platform-cordova .modal-wrapper .modal .has-header.has-tabs-top { + top: 93px; } + .platform-ios.platform-cordova .modal-wrapper .modal .has-header.has-subheader.has-tabs-top { + top: 137px; } + .modal-backdrop-bg { + -webkit-transition: opacity 300ms ease-in-out; + transition: opacity 300ms ease-in-out; + background-color: #000; + opacity: 0; } + .active .modal-backdrop-bg { + opacity: 0.5; } } + +.modal-open { + pointer-events: none; } + .modal-open .modal, + .modal-open .modal-backdrop { + pointer-events: auto; } + .modal-open.loading-active .modal, + .modal-open.loading-active .modal-backdrop { + pointer-events: none; } + +/** + * Popovers + * -------------------------------------------------- + * Popovers are independent views which float over content + */ +.popover-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 10; + width: 100%; + height: 100%; + background-color: transparent; } + .popover-backdrop.active { + background-color: rgba(0, 0, 0, 0.1); } + +.popover { + position: absolute; + top: 25%; + left: 50%; + z-index: 10; + display: block; + margin-top: 12px; + margin-left: -110px; + height: 280px; + width: 220px; + background-color: #fff; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); + opacity: 0; } + .popover .item:first-child { + border-top: 0; } + .popover .item:last-child { + border-bottom: 0; } + .popover.popover-bottom { + margin-top: -12px; } + +.popover, +.popover .bar-header { + border-radius: 2px; } + +.popover .scroll-content { + z-index: 1; + margin: 2px 0; } + +.popover .bar-header { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; } + +.popover .has-header { + border-top-right-radius: 0; + border-top-left-radius: 0; } + +.popover-arrow { + display: none; } + +.platform-ios .popover { + box-shadow: 0 0 40px rgba(0, 0, 0, 0.08); + border-radius: 10px; } + +.platform-ios .popover .bar-header { + -webkit-border-top-right-radius: 10px; + border-top-right-radius: 10px; + -webkit-border-top-left-radius: 10px; + border-top-left-radius: 10px; } + +.platform-ios .popover .scroll-content { + margin: 8px 0; + border-radius: 10px; } + +.platform-ios .popover .scroll-content.has-header { + margin-top: 0; } + +.platform-ios .popover-arrow { + position: absolute; + display: block; + top: -17px; + width: 30px; + height: 19px; + overflow: hidden; } + .platform-ios .popover-arrow:after { + position: absolute; + top: 12px; + left: 5px; + width: 20px; + height: 20px; + background-color: #fff; + border-radius: 3px; + content: ''; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); } + +.platform-ios .popover-bottom .popover-arrow { + top: auto; + bottom: -10px; } + .platform-ios .popover-bottom .popover-arrow:after { + top: -6px; } + +.platform-android .popover { + margin-top: -32px; + background-color: #fafafa; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.35); } + .platform-android .popover .item { + border-color: #fafafa; + background-color: #fafafa; + color: #4d4d4d; } + .platform-android .popover.popover-bottom { + margin-top: 32px; } + +.platform-android .popover-backdrop, +.platform-android .popover-backdrop.active { + background-color: transparent; } + +.popover-open { + pointer-events: none; } + .popover-open .popover, + .popover-open .popover-backdrop { + pointer-events: auto; } + .popover-open.loading-active .popover, + .popover-open.loading-active .popover-backdrop { + pointer-events: none; } + +@media (min-width: 680px) { + .popover { + width: 360px; + margin-left: -180px; } } + +/** + * Popups + * -------------------------------------------------- + */ +.popup-container { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + background: transparent; + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + -moz-justify-content: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + -moz-align-items: center; + align-items: center; + z-index: 12; + visibility: hidden; } + .popup-container.popup-showing { + visibility: visible; } + .popup-container.popup-hidden .popup { + -webkit-animation-name: scaleOut; + animation-name: scaleOut; + -webkit-animation-duration: 0.1s; + animation-duration: 0.1s; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; } + .popup-container.active .popup { + -webkit-animation-name: superScaleIn; + animation-name: superScaleIn; + -webkit-animation-duration: 0.2s; + animation-duration: 0.2s; + -webkit-animation-timing-function: ease-in-out; + animation-timing-function: ease-in-out; + -webkit-animation-fill-mode: both; + animation-fill-mode: both; } + .popup-container .popup { + width: 250px; + max-width: 100%; + max-height: 90%; + border-radius: 0px; + background-color: rgba(255, 255, 255, 0.9); + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-direction: normal; + -webkit-box-orient: vertical; + -webkit-flex-direction: column; + -moz-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } + .popup-container input, + .popup-container textarea { + width: 100%; } + +.popup-head { + padding: 15px 10px; + border-bottom: 1px solid #eee; + text-align: center; } + +.popup-title { + margin: 0; + padding: 0; + font-size: 15px; } + +.popup-sub-title { + margin: 5px 0 0 0; + padding: 0; + font-weight: normal; + font-size: 11px; } + +.popup-body { + padding: 10px; + overflow: auto; } + +.popup-buttons { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-direction: normal; + -webkit-box-orient: horizontal; + -webkit-flex-direction: row; + -moz-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + padding: 10px; + min-height: 65px; } + .popup-buttons .button { + -webkit-box-flex: 1; + -webkit-flex: 1; + -moz-box-flex: 1; + -moz-flex: 1; + -ms-flex: 1; + flex: 1; + display: block; + min-height: 45px; + border-radius: 2px; + line-height: 20px; + margin-right: 5px; } + .popup-buttons .button:last-child { + margin-right: 0px; } + +.popup-open { + pointer-events: none; } + .popup-open.modal-open .modal { + pointer-events: none; } + .popup-open .popup-backdrop, .popup-open .popup { + pointer-events: auto; } + +/** + * Loading + * -------------------------------------------------- + */ +.loading-container { + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + z-index: 13; + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + -webkit-justify-content: center; + -moz-justify-content: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + -moz-align-items: center; + align-items: center; + -webkit-transition: 0.2s opacity linear; + transition: 0.2s opacity linear; + visibility: hidden; + opacity: 0; } + .loading-container:not(.visible) .icon, + .loading-container:not(.visible) .spinner { + display: none; } + .loading-container.visible { + visibility: visible; } + .loading-container.active { + opacity: 1; } + .loading-container .loading { + padding: 20px; + border-radius: 5px; + background-color: rgba(0, 0, 0, 0.7); + color: #fff; + text-align: center; + text-overflow: ellipsis; + font-size: 15px; } + .loading-container .loading h1, .loading-container .loading h2, .loading-container .loading h3, .loading-container .loading h4, .loading-container .loading h5, .loading-container .loading h6 { + color: #fff; } + +/** + * Items + * -------------------------------------------------- + */ +.item { + border-color: #ddd; + background-color: #fff; + color: #444; + position: relative; + z-index: 2; + display: block; + margin: -1px; + padding: 16px; + border-width: 1px; + border-style: solid; + font-size: 16px; } + .item h2 { + margin: 0 0 2px 0; + font-size: 16px; + font-weight: normal; } + .item h3 { + margin: 0 0 4px 0; + font-size: 14px; } + .item h4 { + margin: 0 0 4px 0; + font-size: 12px; } + .item h5, .item h6 { + margin: 0 0 3px 0; + font-size: 10px; } + .item p { + color: #666; + font-size: 14px; + margin-bottom: 2px; } + .item h1:last-child, + .item h2:last-child, + .item h3:last-child, + .item h4:last-child, + .item h5:last-child, + .item h6:last-child, + .item p:last-child { + margin-bottom: 0; } + .item .badge { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + position: absolute; + top: 16px; + right: 32px; } + .item.item-button-right .badge { + right: 67px; } + .item.item-divider .badge { + top: 8px; } + .item .badge + .badge { + margin-right: 5px; } + .item.item-light { + border-color: #ddd; + background-color: #fff; + color: #444; } + .item.item-stable { + border-color: #b2b2b2; + background-color: #f8f8f8; + color: #444; } + .item.item-positive { + border-color: #0c60ee; + background-color: #387ef5; + color: #fff; } + .item.item-calm { + border-color: #0a9dc7; + background-color: #11c1f3; + color: #fff; } + .item.item-assertive { + border-color: #e42112; + background-color: #ef473a; + color: #fff; } + .item.item-balanced { + border-color: #28a54c; + background-color: #33cd5f; + color: #fff; } + .item.item-energized { + border-color: #e6b500; + background-color: #ffc900; + color: #fff; } + .item.item-royal { + border-color: #6b46e5; + background-color: #886aea; + color: #fff; } + .item.item-dark { + border-color: #111; + background-color: #444; + color: #fff; } + .item[ng-click]:hover { + cursor: pointer; } + +.list-borderless .item, +.item-borderless { + border-width: 0; } + +.item.active, +.item.activated, +.item-complex.active .item-content, +.item-complex.activated .item-content, +.item .item-content.active, +.item .item-content.activated { + border-color: #ccc; + background-color: #D9D9D9; } + .item.active.item-complex > .item-content, + .item.activated.item-complex > .item-content, + .item-complex.active .item-content.item-complex > .item-content, + .item-complex.activated .item-content.item-complex > .item-content, + .item .item-content.active.item-complex > .item-content, + .item .item-content.activated.item-complex > .item-content { + border-color: #ccc; + background-color: #D9D9D9; } + .item.active.item-light, + .item.activated.item-light, + .item-complex.active .item-content.item-light, + .item-complex.activated .item-content.item-light, + .item .item-content.active.item-light, + .item .item-content.activated.item-light { + border-color: #ccc; + background-color: #fafafa; } + .item.active.item-light.item-complex > .item-content, + .item.activated.item-light.item-complex > .item-content, + .item-complex.active .item-content.item-light.item-complex > .item-content, + .item-complex.activated .item-content.item-light.item-complex > .item-content, + .item .item-content.active.item-light.item-complex > .item-content, + .item .item-content.activated.item-light.item-complex > .item-content { + border-color: #ccc; + background-color: #fafafa; } + .item.active.item-stable, + .item.activated.item-stable, + .item-complex.active .item-content.item-stable, + .item-complex.activated .item-content.item-stable, + .item .item-content.active.item-stable, + .item .item-content.activated.item-stable { + border-color: #a2a2a2; + background-color: #e5e5e5; } + .item.active.item-stable.item-complex > .item-content, + .item.activated.item-stable.item-complex > .item-content, + .item-complex.active .item-content.item-stable.item-complex > .item-content, + .item-complex.activated .item-content.item-stable.item-complex > .item-content, + .item .item-content.active.item-stable.item-complex > .item-content, + .item .item-content.activated.item-stable.item-complex > .item-content { + border-color: #a2a2a2; + background-color: #e5e5e5; } + .item.active.item-positive, + .item.activated.item-positive, + .item-complex.active .item-content.item-positive, + .item-complex.activated .item-content.item-positive, + .item .item-content.active.item-positive, + .item .item-content.activated.item-positive { + border-color: #0c60ee; + background-color: #0c60ee; } + .item.active.item-positive.item-complex > .item-content, + .item.activated.item-positive.item-complex > .item-content, + .item-complex.active .item-content.item-positive.item-complex > .item-content, + .item-complex.activated .item-content.item-positive.item-complex > .item-content, + .item .item-content.active.item-positive.item-complex > .item-content, + .item .item-content.activated.item-positive.item-complex > .item-content { + border-color: #0c60ee; + background-color: #0c60ee; } + .item.active.item-calm, + .item.activated.item-calm, + .item-complex.active .item-content.item-calm, + .item-complex.activated .item-content.item-calm, + .item .item-content.active.item-calm, + .item .item-content.activated.item-calm { + border-color: #0a9dc7; + background-color: #0a9dc7; } + .item.active.item-calm.item-complex > .item-content, + .item.activated.item-calm.item-complex > .item-content, + .item-complex.active .item-content.item-calm.item-complex > .item-content, + .item-complex.activated .item-content.item-calm.item-complex > .item-content, + .item .item-content.active.item-calm.item-complex > .item-content, + .item .item-content.activated.item-calm.item-complex > .item-content { + border-color: #0a9dc7; + background-color: #0a9dc7; } + .item.active.item-assertive, + .item.activated.item-assertive, + .item-complex.active .item-content.item-assertive, + .item-complex.activated .item-content.item-assertive, + .item .item-content.active.item-assertive, + .item .item-content.activated.item-assertive { + border-color: #e42112; + background-color: #e42112; } + .item.active.item-assertive.item-complex > .item-content, + .item.activated.item-assertive.item-complex > .item-content, + .item-complex.active .item-content.item-assertive.item-complex > .item-content, + .item-complex.activated .item-content.item-assertive.item-complex > .item-content, + .item .item-content.active.item-assertive.item-complex > .item-content, + .item .item-content.activated.item-assertive.item-complex > .item-content { + border-color: #e42112; + background-color: #e42112; } + .item.active.item-balanced, + .item.activated.item-balanced, + .item-complex.active .item-content.item-balanced, + .item-complex.activated .item-content.item-balanced, + .item .item-content.active.item-balanced, + .item .item-content.activated.item-balanced { + border-color: #28a54c; + background-color: #28a54c; } + .item.active.item-balanced.item-complex > .item-content, + .item.activated.item-balanced.item-complex > .item-content, + .item-complex.active .item-content.item-balanced.item-complex > .item-content, + .item-complex.activated .item-content.item-balanced.item-complex > .item-content, + .item .item-content.active.item-balanced.item-complex > .item-content, + .item .item-content.activated.item-balanced.item-complex > .item-content { + border-color: #28a54c; + background-color: #28a54c; } + .item.active.item-energized, + .item.activated.item-energized, + .item-complex.active .item-content.item-energized, + .item-complex.activated .item-content.item-energized, + .item .item-content.active.item-energized, + .item .item-content.activated.item-energized { + border-color: #e6b500; + background-color: #e6b500; } + .item.active.item-energized.item-complex > .item-content, + .item.activated.item-energized.item-complex > .item-content, + .item-complex.active .item-content.item-energized.item-complex > .item-content, + .item-complex.activated .item-content.item-energized.item-complex > .item-content, + .item .item-content.active.item-energized.item-complex > .item-content, + .item .item-content.activated.item-energized.item-complex > .item-content { + border-color: #e6b500; + background-color: #e6b500; } + .item.active.item-royal, + .item.activated.item-royal, + .item-complex.active .item-content.item-royal, + .item-complex.activated .item-content.item-royal, + .item .item-content.active.item-royal, + .item .item-content.activated.item-royal { + border-color: #6b46e5; + background-color: #6b46e5; } + .item.active.item-royal.item-complex > .item-content, + .item.activated.item-royal.item-complex > .item-content, + .item-complex.active .item-content.item-royal.item-complex > .item-content, + .item-complex.activated .item-content.item-royal.item-complex > .item-content, + .item .item-content.active.item-royal.item-complex > .item-content, + .item .item-content.activated.item-royal.item-complex > .item-content { + border-color: #6b46e5; + background-color: #6b46e5; } + .item.active.item-dark, + .item.activated.item-dark, + .item-complex.active .item-content.item-dark, + .item-complex.activated .item-content.item-dark, + .item .item-content.active.item-dark, + .item .item-content.activated.item-dark { + border-color: #000; + background-color: #262626; } + .item.active.item-dark.item-complex > .item-content, + .item.activated.item-dark.item-complex > .item-content, + .item-complex.active .item-content.item-dark.item-complex > .item-content, + .item-complex.activated .item-content.item-dark.item-complex > .item-content, + .item .item-content.active.item-dark.item-complex > .item-content, + .item .item-content.activated.item-dark.item-complex > .item-content { + border-color: #000; + background-color: #262626; } + +.item, +.item h1, +.item h2, +.item h3, +.item h4, +.item h5, +.item h6, +.item p, +.item-content, +.item-content h1, +.item-content h2, +.item-content h3, +.item-content h4, +.item-content h5, +.item-content h6, +.item-content p { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } + +a.item { + color: inherit; + text-decoration: none; } + a.item:hover, a.item:focus { + text-decoration: none; } + +/** + * Complex Items + * -------------------------------------------------- + * Adding .item-complex allows the .item to be slidable and + * have options underneath the button, but also requires an + * additional .item-content element inside .item. + * Basically .item-complex removes any default settings which + * .item added, so that .item-content looks them as just .item. + */ +.item-complex, +a.item.item-complex, +button.item.item-complex { + padding: 0; } + +.item-complex .item-content, +.item-radio .item-content { + position: relative; + z-index: 2; + padding: 16px 49px 16px 16px; + border: none; + background-color: #fff; } + +a.item-content { + display: block; + color: inherit; + text-decoration: none; } + +.item-text-wrap .item, +.item-text-wrap .item-content, +.item-text-wrap, +.item-text-wrap h1, +.item-text-wrap h2, +.item-text-wrap h3, +.item-text-wrap h4, +.item-text-wrap h5, +.item-text-wrap h6, +.item-text-wrap p, +.item-complex.item-text-wrap .item-content, +.item-body h1, +.item-body h2, +.item-body h3, +.item-body h4, +.item-body h5, +.item-body h6, +.item-body p { + overflow: visible; + white-space: normal; } + +.item-complex.item-text-wrap, +.item-complex.item-text-wrap h1, +.item-complex.item-text-wrap h2, +.item-complex.item-text-wrap h3, +.item-complex.item-text-wrap h4, +.item-complex.item-text-wrap h5, +.item-complex.item-text-wrap h6, +.item-complex.item-text-wrap p { + overflow: visible; + white-space: normal; } + +.item-complex.item-light > .item-content { + border-color: #ddd; + background-color: #fff; + color: #444; } + .item-complex.item-light > .item-content.active, .item-complex.item-light > .item-content:active { + border-color: #ccc; + background-color: #fafafa; } + .item-complex.item-light > .item-content.active.item-complex > .item-content, .item-complex.item-light > .item-content:active.item-complex > .item-content { + border-color: #ccc; + background-color: #fafafa; } + +.item-complex.item-stable > .item-content { + border-color: #b2b2b2; + background-color: #f8f8f8; + color: #444; } + .item-complex.item-stable > .item-content.active, .item-complex.item-stable > .item-content:active { + border-color: #a2a2a2; + background-color: #e5e5e5; } + .item-complex.item-stable > .item-content.active.item-complex > .item-content, .item-complex.item-stable > .item-content:active.item-complex > .item-content { + border-color: #a2a2a2; + background-color: #e5e5e5; } + +.item-complex.item-positive > .item-content { + border-color: #0c60ee; + background-color: #387ef5; + color: #fff; } + .item-complex.item-positive > .item-content.active, .item-complex.item-positive > .item-content:active { + border-color: #0c60ee; + background-color: #0c60ee; } + .item-complex.item-positive > .item-content.active.item-complex > .item-content, .item-complex.item-positive > .item-content:active.item-complex > .item-content { + border-color: #0c60ee; + background-color: #0c60ee; } + +.item-complex.item-calm > .item-content { + border-color: #0a9dc7; + background-color: #11c1f3; + color: #fff; } + .item-complex.item-calm > .item-content.active, .item-complex.item-calm > .item-content:active { + border-color: #0a9dc7; + background-color: #0a9dc7; } + .item-complex.item-calm > .item-content.active.item-complex > .item-content, .item-complex.item-calm > .item-content:active.item-complex > .item-content { + border-color: #0a9dc7; + background-color: #0a9dc7; } + +.item-complex.item-assertive > .item-content { + border-color: #e42112; + background-color: #ef473a; + color: #fff; } + .item-complex.item-assertive > .item-content.active, .item-complex.item-assertive > .item-content:active { + border-color: #e42112; + background-color: #e42112; } + .item-complex.item-assertive > .item-content.active.item-complex > .item-content, .item-complex.item-assertive > .item-content:active.item-complex > .item-content { + border-color: #e42112; + background-color: #e42112; } + +.item-complex.item-balanced > .item-content { + border-color: #28a54c; + background-color: #33cd5f; + color: #fff; } + .item-complex.item-balanced > .item-content.active, .item-complex.item-balanced > .item-content:active { + border-color: #28a54c; + background-color: #28a54c; } + .item-complex.item-balanced > .item-content.active.item-complex > .item-content, .item-complex.item-balanced > .item-content:active.item-complex > .item-content { + border-color: #28a54c; + background-color: #28a54c; } + +.item-complex.item-energized > .item-content { + border-color: #e6b500; + background-color: #ffc900; + color: #fff; } + .item-complex.item-energized > .item-content.active, .item-complex.item-energized > .item-content:active { + border-color: #e6b500; + background-color: #e6b500; } + .item-complex.item-energized > .item-content.active.item-complex > .item-content, .item-complex.item-energized > .item-content:active.item-complex > .item-content { + border-color: #e6b500; + background-color: #e6b500; } + +.item-complex.item-royal > .item-content { + border-color: #6b46e5; + background-color: #886aea; + color: #fff; } + .item-complex.item-royal > .item-content.active, .item-complex.item-royal > .item-content:active { + border-color: #6b46e5; + background-color: #6b46e5; } + .item-complex.item-royal > .item-content.active.item-complex > .item-content, .item-complex.item-royal > .item-content:active.item-complex > .item-content { + border-color: #6b46e5; + background-color: #6b46e5; } + +.item-complex.item-dark > .item-content { + border-color: #111; + background-color: #444; + color: #fff; } + .item-complex.item-dark > .item-content.active, .item-complex.item-dark > .item-content:active { + border-color: #000; + background-color: #262626; } + .item-complex.item-dark > .item-content.active.item-complex > .item-content, .item-complex.item-dark > .item-content:active.item-complex > .item-content { + border-color: #000; + background-color: #262626; } + +/** + * Item Icons + * -------------------------------------------------- + */ +.item-icon-left .icon, +.item-icon-right .icon { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + -moz-align-items: center; + align-items: center; + position: absolute; + top: 0; + height: 100%; + font-size: 32px; } + .item-icon-left .icon:before, + .item-icon-right .icon:before { + display: block; + width: 32px; + text-align: center; } + +.item .fill-icon { + min-width: 30px; + min-height: 30px; + font-size: 28px; } + +.item-icon-left { + padding-left: 54px; } + .item-icon-left .icon { + left: 11px; } + +.item-complex.item-icon-left { + padding-left: 0; } + .item-complex.item-icon-left .item-content { + padding-left: 54px; } + +.item-icon-right { + padding-right: 54px; } + .item-icon-right .icon { + right: 11px; } + +.item-complex.item-icon-right { + padding-right: 0; } + .item-complex.item-icon-right .item-content { + padding-right: 54px; } + +.item-icon-left.item-icon-right .icon:first-child { + right: auto; } + +.item-icon-left.item-icon-right .icon:last-child, +.item-icon-left .item-delete .icon { + left: auto; } + +.item-icon-left .icon-accessory, +.item-icon-right .icon-accessory { + color: #ccc; + font-size: 16px; } + +.item-icon-left .icon-accessory { + left: 3px; } + +.item-icon-right .icon-accessory { + right: 3px; } + +/** + * Item Button + * -------------------------------------------------- + * An item button is a child button inside an .item (not the entire .item) + */ +.item-button-left { + padding-left: 72px; } + +.item-button-left > .button, +.item-button-left .item-content > .button { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + -moz-align-items: center; + align-items: center; + position: absolute; + top: 8px; + left: 11px; + min-width: 34px; + min-height: 34px; + font-size: 18px; + line-height: 32px; } + .item-button-left > .button .icon:before, + .item-button-left .item-content > .button .icon:before { + position: relative; + left: auto; + width: auto; + line-height: 31px; } + .item-button-left > .button > .button, + .item-button-left .item-content > .button > .button { + margin: 0px 2px; + min-height: 34px; + font-size: 18px; + line-height: 32px; } + +.item-button-right, +a.item.item-button-right, +button.item.item-button-right { + padding-right: 80px; } + +.item-button-right > .button, +.item-button-right .item-content > .button, +.item-button-right > .buttons, +.item-button-right .item-content > .buttons { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + -moz-align-items: center; + align-items: center; + position: absolute; + top: 8px; + right: 16px; + min-width: 34px; + min-height: 34px; + font-size: 18px; + line-height: 32px; } + .item-button-right > .button .icon:before, + .item-button-right .item-content > .button .icon:before, + .item-button-right > .buttons .icon:before, + .item-button-right .item-content > .buttons .icon:before { + position: relative; + left: auto; + width: auto; + line-height: 31px; } + .item-button-right > .button > .button, + .item-button-right .item-content > .button > .button, + .item-button-right > .buttons > .button, + .item-button-right .item-content > .buttons > .button { + margin: 0px 2px; + min-width: 34px; + min-height: 34px; + font-size: 18px; + line-height: 32px; } + +.item-button-left.item-button-right .button:first-child { + right: auto; } + +.item-button-left.item-button-right .button:last-child { + left: auto; } + +.item-avatar, +.item-avatar .item-content, +.item-avatar-left, +.item-avatar-left .item-content { + padding-left: 72px; + min-height: 72px; } + .item-avatar > img:first-child, + .item-avatar .item-image, + .item-avatar .item-content > img:first-child, + .item-avatar .item-content .item-image, + .item-avatar-left > img:first-child, + .item-avatar-left .item-image, + .item-avatar-left .item-content > img:first-child, + .item-avatar-left .item-content .item-image { + position: absolute; + top: 16px; + left: 16px; + max-width: 40px; + max-height: 40px; + width: 100%; + height: 100%; + border-radius: 50%; } + +.item-avatar-right, +.item-avatar-right .item-content { + padding-right: 72px; + min-height: 72px; } + .item-avatar-right > img:first-child, + .item-avatar-right .item-image, + .item-avatar-right .item-content > img:first-child, + .item-avatar-right .item-content .item-image { + position: absolute; + top: 16px; + right: 16px; + max-width: 40px; + max-height: 40px; + width: 100%; + height: 100%; + border-radius: 50%; } + +.item-thumbnail-left, +.item-thumbnail-left .item-content { + padding-top: 8px; + padding-left: 106px; + min-height: 100px; } + .item-thumbnail-left > img:first-child, + .item-thumbnail-left .item-image, + .item-thumbnail-left .item-content > img:first-child, + .item-thumbnail-left .item-content .item-image { + position: absolute; + top: 10px; + left: 10px; + max-width: 80px; + max-height: 80px; + width: 100%; + height: 100%; } + +.item-avatar.item-complex, +.item-avatar-left.item-complex, +.item-thumbnail-left.item-complex { + padding-top: 0; + padding-left: 0; } + +.item-thumbnail-right, +.item-thumbnail-right .item-content { + padding-top: 8px; + padding-right: 106px; + min-height: 100px; } + .item-thumbnail-right > img:first-child, + .item-thumbnail-right .item-image, + .item-thumbnail-right .item-content > img:first-child, + .item-thumbnail-right .item-content .item-image { + position: absolute; + top: 10px; + right: 10px; + max-width: 80px; + max-height: 80px; + width: 100%; + height: 100%; } + +.item-avatar-right.item-complex, +.item-thumbnail-right.item-complex { + padding-top: 0; + padding-right: 0; } + +.item-image { + padding: 0; + text-align: center; } + .item-image img:first-child, .item-image .list-img { + width: 100%; + vertical-align: middle; } + +.item-body { + overflow: auto; + padding: 16px; + text-overflow: inherit; + white-space: normal; } + .item-body h1, .item-body h2, .item-body h3, .item-body h4, .item-body h5, .item-body h6, .item-body p { + margin-top: 16px; + margin-bottom: 16px; } + +.item-divider { + padding-top: 8px; + padding-bottom: 8px; + min-height: 30px; + background-color: #f5f5f5; + color: #222; + font-weight: 500; } + +.platform-ios .item-divider-platform, +.item-divider-ios { + padding-top: 26px; + text-transform: uppercase; + font-weight: 300; + font-size: 13px; + background-color: #efeff4; + color: #555; } + +.platform-android .item-divider-platform, +.item-divider-android { + font-weight: 300; + font-size: 13px; } + +.item-note { + float: right; + color: #aaa; + font-size: 14px; } + +.item-left-editable .item-content, +.item-right-editable .item-content { + -webkit-transition-duration: 250ms; + transition-duration: 250ms; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; + -webkit-transition-property: -webkit-transform; + -moz-transition-property: -moz-transform; + transition-property: transform; } + +.list-left-editing .item-left-editable .item-content, +.item-left-editing.item-left-editable .item-content { + -webkit-transform: translate3d(50px, 0, 0); + transform: translate3d(50px, 0, 0); } + +.item-remove-animate.ng-leave { + -webkit-transition-duration: 300ms; + transition-duration: 300ms; } + +.item-remove-animate.ng-leave .item-content, .item-remove-animate.ng-leave:last-of-type { + -webkit-transition-duration: 300ms; + transition-duration: 300ms; + -webkit-transition-timing-function: ease-in; + transition-timing-function: ease-in; + -webkit-transition-property: all; + transition-property: all; } + +.item-remove-animate.ng-leave.ng-leave-active .item-content { + opacity: 0; + -webkit-transform: translate3d(-100%, 0, 0) !important; + transform: translate3d(-100%, 0, 0) !important; } + +.item-remove-animate.ng-leave.ng-leave-active:last-of-type { + opacity: 0; } + +.item-remove-animate.ng-leave.ng-leave-active ~ ion-item:not(.ng-leave) { + -webkit-transform: translate3d(0, -webkit-calc(-100% + 1px), 0); + transform: translate3d(0, calc(-100% + 1px), 0); + -webkit-transition-duration: 300ms; + transition-duration: 300ms; + -webkit-transition-timing-function: cubic-bezier(0.25, 0.81, 0.24, 1); + transition-timing-function: cubic-bezier(0.25, 0.81, 0.24, 1); + -webkit-transition-property: all; + transition-property: all; } + +.item-left-edit { + -webkit-transition: all ease-in-out 125ms; + transition: all ease-in-out 125ms; + position: absolute; + top: 0; + left: 0; + z-index: 0; + width: 50px; + height: 100%; + line-height: 100%; + display: none; + opacity: 0; + -webkit-transform: translate3d(-21px, 0, 0); + transform: translate3d(-21px, 0, 0); } + .item-left-edit .button { + height: 100%; } + .item-left-edit .button.icon { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + -moz-align-items: center; + align-items: center; + position: absolute; + top: 0; + height: 100%; } + .item-left-edit.visible { + display: block; } + .item-left-edit.visible.active { + opacity: 1; + -webkit-transform: translate3d(8px, 0, 0); + transform: translate3d(8px, 0, 0); } + +.list-left-editing .item-left-edit { + -webkit-transition-delay: 125ms; + transition-delay: 125ms; } + +.item-delete .button.icon { + color: #ef473a; + font-size: 24px; } + .item-delete .button.icon:hover { + opacity: .7; } + +.item-right-edit { + -webkit-transition: all ease-in-out 250ms; + transition: all ease-in-out 250ms; + position: absolute; + top: 0; + right: 0; + z-index: 3; + width: 75px; + height: 100%; + background: inherit; + padding-left: 20px; + display: block; + opacity: 0; + -webkit-transform: translate3d(75px, 0, 0); + transform: translate3d(75px, 0, 0); } + .item-right-edit .button { + min-width: 50px; + height: 100%; } + .item-right-edit .button.icon { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + -moz-align-items: center; + align-items: center; + position: absolute; + top: 0; + height: 100%; + font-size: 32px; } + .item-right-edit.visible { + display: block; } + .item-right-edit.visible.active { + opacity: 1; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + +.item-reorder .button.icon { + color: #444; + font-size: 32px; } + +.item-reordering { + position: absolute; + left: 0; + top: 0; + z-index: 9; + width: 100%; + box-shadow: 0px 0px 10px 0px #aaa; } + .item-reordering .item-reorder { + z-index: 9; } + +.item-placeholder { + opacity: 0.7; } + +/** + * The hidden right-side buttons that can be exposed under a list item + * with dragging. + */ +.item-options { + position: absolute; + top: 0; + right: 0; + z-index: 1; + height: 100%; } + .item-options .button { + height: 100%; + border: none; + border-radius: 0; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -moz-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; + -webkit-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + -moz-align-items: center; + align-items: center; } + .item-options .button:before { + margin: 0 auto; } + +/** + * Lists + * -------------------------------------------------- + */ +.list { + position: relative; + padding-top: 1px; + padding-bottom: 1px; + padding-left: 0; + margin-bottom: 20px; } + +.list:last-child { + margin-bottom: 0px; } + .list:last-child.card { + margin-bottom: 40px; } + +/** + * List Header + * -------------------------------------------------- + */ +.list-header { + margin-top: 20px; + padding: 5px 15px; + background-color: transparent; + color: #222; + font-weight: bold; } + +.card.list .list-item { + padding-right: 1px; + padding-left: 1px; } + +/** + * Cards and Inset Lists + * -------------------------------------------------- + * A card and list-inset are close to the same thing, except a card as a box shadow. + */ +.card, +.list-inset { + overflow: hidden; + margin: 20px 10px; + border-radius: 2px; + background-color: #fff; } + +.card { + padding-top: 1px; + padding-bottom: 1px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); } + .card .item { + border-left: 0; + border-right: 0; } + .card .item:first-child { + border-top: 0; } + .card .item:last-child { + border-bottom: 0; } + +.padding .card, .padding .list-inset { + margin-left: 0; + margin-right: 0; } + +.card .item:first-child, +.list-inset .item:first-child, +.padding > .list .item:first-child { + border-top-left-radius: 2px; + border-top-right-radius: 2px; } + .card .item:first-child .item-content, + .list-inset .item:first-child .item-content, + .padding > .list .item:first-child .item-content { + border-top-left-radius: 2px; + border-top-right-radius: 2px; } + +.card .item:last-child, +.list-inset .item:last-child, +.padding > .list .item:last-child { + border-bottom-right-radius: 2px; + border-bottom-left-radius: 2px; } + .card .item:last-child .item-content, + .list-inset .item:last-child .item-content, + .padding > .list .item:last-child .item-content { + border-bottom-right-radius: 2px; + border-bottom-left-radius: 2px; } + +.card .item:last-child, +.list-inset .item:last-child { + margin-bottom: -1px; } + +.card .item, +.list-inset .item, +.padding > .list .item, +.padding-horizontal > .list .item { + margin-right: 0; + margin-left: 0; } + .card .item.item-input input, + .list-inset .item.item-input input, + .padding > .list .item.item-input input, + .padding-horizontal > .list .item.item-input input { + padding-right: 44px; } + +.padding-left > .list .item { + margin-left: 0; } + +.padding-right > .list .item { + margin-right: 0; } + +/** + * Badges + * -------------------------------------------------- + */ +.badge { + background-color: transparent; + color: #AAAAAA; + z-index: 1; + display: inline-block; + padding: 3px 8px; + min-width: 10px; + border-radius: 10px; + vertical-align: baseline; + text-align: center; + white-space: nowrap; + font-weight: bold; + font-size: 14px; + line-height: 16px; } + .badge:empty { + display: none; } + +.tabs .tab-item .badge.badge-light, +.badge.badge-light { + background-color: #fff; + color: #444; } + +.tabs .tab-item .badge.badge-stable, +.badge.badge-stable { + background-color: #f8f8f8; + color: #444; } + +.tabs .tab-item .badge.badge-positive, +.badge.badge-positive { + background-color: #387ef5; + color: #fff; } + +.tabs .tab-item .badge.badge-calm, +.badge.badge-calm { + background-color: #11c1f3; + color: #fff; } + +.tabs .tab-item .badge.badge-assertive, +.badge.badge-assertive { + background-color: #ef473a; + color: #fff; } + +.tabs .tab-item .badge.badge-balanced, +.badge.badge-balanced { + background-color: #33cd5f; + color: #fff; } + +.tabs .tab-item .badge.badge-energized, +.badge.badge-energized { + background-color: #ffc900; + color: #fff; } + +.tabs .tab-item .badge.badge-royal, +.badge.badge-royal { + background-color: #886aea; + color: #fff; } + +.tabs .tab-item .badge.badge-dark, +.badge.badge-dark { + background-color: #444; + color: #fff; } + +.button .badge { + position: relative; + top: -1px; } + +/** + * Slide Box + * -------------------------------------------------- + */ +.slider { + position: relative; + visibility: hidden; + overflow: hidden; } + +.slider-slides { + position: relative; + height: 100%; } + +.slider-slide { + position: relative; + display: block; + float: left; + width: 100%; + height: 100%; + vertical-align: top; } + +.slider-slide-image > img { + width: 100%; } + +.slider-pager { + position: absolute; + bottom: 20px; + z-index: 1; + width: 100%; + height: 15px; + text-align: center; } + .slider-pager .slider-pager-page { + display: inline-block; + margin: 0px 3px; + width: 15px; + color: #000; + text-decoration: none; + opacity: 0.3; } + .slider-pager .slider-pager-page.active { + -webkit-transition: opacity 0.4s ease-in; + transition: opacity 0.4s ease-in; + opacity: 1; } + +.slider-slide.ng-enter, .slider-slide.ng-leave, .slider-slide.ng-animate, +.slider-pager-page.ng-enter, +.slider-pager-page.ng-leave, +.slider-pager-page.ng-animate { + -webkit-transition: none !important; + transition: none !important; } + +.slider-slide.ng-animate, +.slider-pager-page.ng-animate { + -webkit-animation: none 0s; + animation: none 0s; } + +/** + * Swiper 3.2.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * + * http://www.idangero.us/swiper/ + * + * Copyright 2015, Vladimir Kharlampidi + * The iDangero.us + * http://www.idangero.us/ + * + * Licensed under MIT + * + * Released on: December 7, 2015 + */ +.swiper-container { + margin: 0 auto; + position: relative; + overflow: hidden; + /* Fix of Webkit flickering */ + z-index: 1; } + +.swiper-container-no-flexbox .swiper-slide { + float: left; } + +.swiper-container-vertical > .swiper-wrapper { + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -ms-flex-direction: column; + -webkit-flex-direction: column; + flex-direction: column; } + +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-transition-property: -webkit-transform; + -moz-transition-property: -moz-transform; + -o-transition-property: -o-transform; + -ms-transition-property: -ms-transform; + transition-property: transform; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; } + +.swiper-container-android .swiper-slide, +.swiper-wrapper { + -webkit-transform: translate3d(0px, 0, 0); + -moz-transform: translate3d(0px, 0, 0); + -o-transform: translate(0px, 0px); + -ms-transform: translate3d(0px, 0, 0); + transform: translate3d(0px, 0, 0); } + +.swiper-container-multirow > .swiper-wrapper { + -webkit-box-lines: multiple; + -moz-box-lines: multiple; + -ms-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + flex-wrap: wrap; } + +.swiper-container-free-mode > .swiper-wrapper { + -webkit-transition-timing-function: ease-out; + -moz-transition-timing-function: ease-out; + -ms-transition-timing-function: ease-out; + -o-transition-timing-function: ease-out; + transition-timing-function: ease-out; + margin: 0 auto; } + +.swiper-slide { + display: block; + -webkit-flex-shrink: 0; + -ms-flex: 0 0 auto; + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; } + +/* Auto Height */ +.swiper-container-autoheight, +.swiper-container-autoheight .swiper-slide { + height: auto; } + +.swiper-container-autoheight .swiper-wrapper { + -webkit-box-align: start; + -ms-flex-align: start; + -webkit-align-items: flex-start; + align-items: flex-start; + -webkit-transition-property: -webkit-transform, height; + -moz-transition-property: -moz-transform; + -o-transition-property: -o-transform; + -ms-transition-property: -ms-transform; + transition-property: transform, height; } + +/* a11y */ +.swiper-container .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; } + +/* IE10 Windows Phone 8 Fixes */ +.swiper-wp8-horizontal { + -ms-touch-action: pan-y; + touch-action: pan-y; } + +.swiper-wp8-vertical { + -ms-touch-action: pan-x; + touch-action: pan-x; } + +/* Arrows */ +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: 50%; + width: 27px; + height: 44px; + margin-top: -22px; + z-index: 10; + cursor: pointer; + -moz-background-size: 27px 44px; + -webkit-background-size: 27px 44px; + background-size: 27px 44px; + background-position: center; + background-repeat: no-repeat; } + +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; } + +.swiper-button-prev, +.swiper-container-rtl .swiper-button-next { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E"); + left: 10px; + right: auto; } + +.swiper-button-prev.swiper-button-black, +.swiper-container-rtl .swiper-button-next.swiper-button-black { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E"); } + +.swiper-button-prev.swiper-button-white, +.swiper-container-rtl .swiper-button-next.swiper-button-white { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E"); } + +.swiper-button-next, +.swiper-container-rtl .swiper-button-prev { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E"); + right: 10px; + left: auto; } + +.swiper-button-next.swiper-button-black, +.swiper-container-rtl .swiper-button-prev.swiper-button-black { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E"); } + +.swiper-button-next.swiper-button-white, +.swiper-container-rtl .swiper-button-prev.swiper-button-white { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E"); } + +/* Pagination Styles */ +.swiper-pagination { + position: absolute; + text-align: center; + -webkit-transition: 300ms; + -moz-transition: 300ms; + -o-transition: 300ms; + transition: 300ms; + -webkit-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + z-index: 10; } + +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; } + +.swiper-pagination-bullet { + width: 8px; + height: 8px; + display: inline-block; + border-radius: 100%; + background: #000; + opacity: 0.2; } + +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -moz-appearance: none; + -ms-appearance: none; + -webkit-appearance: none; + appearance: none; } + +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; } + +.swiper-pagination-white .swiper-pagination-bullet { + background: #fff; } + +.swiper-pagination-bullet-active { + opacity: 1; } + +.swiper-pagination-white .swiper-pagination-bullet-active { + background: #fff; } + +.swiper-pagination-black .swiper-pagination-bullet-active { + background: #000; } + +.swiper-container-vertical > .swiper-pagination { + right: 10px; + top: 50%; + -webkit-transform: translate3d(0px, -50%, 0); + -moz-transform: translate3d(0px, -50%, 0); + -o-transform: translate(0px, -50%); + -ms-transform: translate3d(0px, -50%, 0); + transform: translate3d(0px, -50%, 0); } + +.swiper-container-vertical > .swiper-pagination .swiper-pagination-bullet { + margin: 5px 0; + display: block; } + +.swiper-container-horizontal > .swiper-pagination { + bottom: 10px; + left: 0; + width: 100%; } + +.swiper-container-horizontal > .swiper-pagination .swiper-pagination-bullet { + margin: 0 5px; } + +/* 3D Container */ +.swiper-container-3d { + -webkit-perspective: 1200px; + -moz-perspective: 1200px; + -o-perspective: 1200px; + perspective: 1200px; } + +.swiper-container-3d .swiper-wrapper, +.swiper-container-3d .swiper-slide, +.swiper-container-3d .swiper-slide-shadow-left, +.swiper-container-3d .swiper-slide-shadow-right, +.swiper-container-3d .swiper-slide-shadow-top, +.swiper-container-3d .swiper-slide-shadow-bottom, +.swiper-container-3d .swiper-cube-shadow { + -webkit-transform-style: preserve-3d; + -moz-transform-style: preserve-3d; + -ms-transform-style: preserve-3d; + transform-style: preserve-3d; } + +.swiper-container-3d .swiper-slide-shadow-left, +.swiper-container-3d .swiper-slide-shadow-right, +.swiper-container-3d .swiper-slide-shadow-top, +.swiper-container-3d .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; } + +.swiper-container-3d .swiper-slide-shadow-left { + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0.5)), to(transparent)); + /* Safari 4+, Chrome */ + background-image: -webkit-linear-gradient(right, rgba(0, 0, 0, 0.5), transparent); + /* Chrome 10+, Safari 5.1+, iOS 5+ */ + background-image: -moz-linear-gradient(right, rgba(0, 0, 0, 0.5), transparent); + /* Firefox 3.6-15 */ + background-image: -o-linear-gradient(right, rgba(0, 0, 0, 0.5), transparent); + /* Opera 11.10-12.00 */ + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), transparent); + /* Firefox 16+, IE10, Opera 12.50+ */ } + +.swiper-container-3d .swiper-slide-shadow-right { + background-image: -webkit-gradient(linear, right top, left top, from(rgba(0, 0, 0, 0.5)), to(transparent)); + /* Safari 4+, Chrome */ + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5), transparent); + /* Chrome 10+, Safari 5.1+, iOS 5+ */ + background-image: -moz-linear-gradient(left, rgba(0, 0, 0, 0.5), transparent); + /* Firefox 3.6-15 */ + background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5), transparent); + /* Opera 11.10-12.00 */ + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), transparent); + /* Firefox 16+, IE10, Opera 12.50+ */ } + +.swiper-container-3d .swiper-slide-shadow-top { + background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.5)), to(transparent)); + /* Safari 4+, Chrome */ + background-image: -webkit-linear-gradient(bottom, rgba(0, 0, 0, 0.5), transparent); + /* Chrome 10+, Safari 5.1+, iOS 5+ */ + background-image: -moz-linear-gradient(bottom, rgba(0, 0, 0, 0.5), transparent); + /* Firefox 3.6-15 */ + background-image: -o-linear-gradient(bottom, rgba(0, 0, 0, 0.5), transparent); + /* Opera 11.10-12.00 */ + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), transparent); + /* Firefox 16+, IE10, Opera 12.50+ */ } + +.swiper-container-3d .swiper-slide-shadow-bottom { + background-image: -webkit-gradient(linear, left bottom, left top, from(rgba(0, 0, 0, 0.5)), to(transparent)); + /* Safari 4+, Chrome */ + background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0.5), transparent); + /* Chrome 10+, Safari 5.1+, iOS 5+ */ + background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0.5), transparent); + /* Firefox 3.6-15 */ + background-image: -o-linear-gradient(top, rgba(0, 0, 0, 0.5), transparent); + /* Opera 11.10-12.00 */ + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), transparent); + /* Firefox 16+, IE10, Opera 12.50+ */ } + +/* Coverflow */ +.swiper-container-coverflow .swiper-wrapper { + /* Windows 8 IE 10 fix */ + -ms-perspective: 1200px; } + +/* Fade */ +.swiper-container-fade.swiper-container-free-mode .swiper-slide { + -webkit-transition-timing-function: ease-out; + -moz-transition-timing-function: ease-out; + -ms-transition-timing-function: ease-out; + -o-transition-timing-function: ease-out; + transition-timing-function: ease-out; } + +.swiper-container-fade .swiper-slide { + pointer-events: none; } + +.swiper-container-fade .swiper-slide .swiper-slide { + pointer-events: none; } + +.swiper-container-fade .swiper-slide-active, +.swiper-container-fade .swiper-slide-active .swiper-slide-active { + pointer-events: auto; } + +/* Cube */ +.swiper-container-cube { + overflow: visible; } + +.swiper-container-cube .swiper-slide { + pointer-events: none; + visibility: hidden; + -webkit-transform-origin: 0 0; + -moz-transform-origin: 0 0; + -ms-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + width: 100%; + height: 100%; + z-index: 1; } + +.swiper-container-cube.swiper-container-rtl .swiper-slide { + -webkit-transform-origin: 100% 0; + -moz-transform-origin: 100% 0; + -ms-transform-origin: 100% 0; + transform-origin: 100% 0; } + +.swiper-container-cube .swiper-slide-active, +.swiper-container-cube .swiper-slide-next, +.swiper-container-cube .swiper-slide-prev, +.swiper-container-cube .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; } + +.swiper-container-cube .swiper-slide-shadow-top, +.swiper-container-cube .swiper-slide-shadow-bottom, +.swiper-container-cube .swiper-slide-shadow-left, +.swiper-container-cube .swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + -moz-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; } + +.swiper-container-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + background: #000; + opacity: 0.6; + -webkit-filter: blur(50px); + filter: blur(50px); + z-index: 0; } + +/* Scrollbar */ +.swiper-scrollbar { + border-radius: 10px; + position: relative; + -ms-touch-action: none; + background: rgba(0, 0, 0, 0.1); } + +.swiper-container-horizontal > .swiper-scrollbar { + position: absolute; + left: 1%; + bottom: 3px; + z-index: 50; + height: 5px; + width: 98%; } + +.swiper-container-vertical > .swiper-scrollbar { + position: absolute; + right: 3px; + top: 1%; + z-index: 50; + width: 5px; + height: 98%; } + +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: rgba(0, 0, 0, 0.5); + border-radius: 10px; + left: 0; + top: 0; } + +.swiper-scrollbar-cursor-drag { + cursor: move; } + +/* Preloader */ +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + -webkit-transform-origin: 50%; + -moz-transform-origin: 50%; + transform-origin: 50%; + -webkit-animation: swiper-preloader-spin 1s steps(12, end) infinite; + -moz-animation: swiper-preloader-spin 1s steps(12, end) infinite; + animation: swiper-preloader-spin 1s steps(12, end) infinite; } + +.swiper-lazy-preloader:after { + display: block; + content: ""; + width: 100%; + height: 100%; + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); + background-position: 50%; + -webkit-background-size: 100%; + background-size: 100%; + background-repeat: no-repeat; } + +.swiper-lazy-preloader-white:after { + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"); } + +@-webkit-keyframes swiper-preloader-spin { + 100% { + -webkit-transform: rotate(360deg); } } + +@keyframes swiper-preloader-spin { + 100% { + transform: rotate(360deg); } } + +ion-slides { + width: 100%; + height: 100%; + display: block; } + +.slide-zoom { + display: block; + width: 100%; + text-align: center; } + +.swiper-container { + width: 100%; + height: 100%; + padding: 0; + overflow: hidden; } + +.swiper-wrapper { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + padding: 0; } + +.swiper-slide { + width: 100%; + height: 100%; + box-sizing: border-box; + /* Center slide text vertically */ } + .swiper-slide img { + width: auto; + height: auto; + max-width: 100%; + max-height: 100%; } + +.scroll-refresher { + position: absolute; + top: -60px; + right: 0; + left: 0; + overflow: hidden; + margin: auto; + height: 60px; } + .scroll-refresher .ionic-refresher-content { + position: absolute; + bottom: 15px; + left: 0; + width: 100%; + color: #666666; + text-align: center; + font-size: 30px; } + .scroll-refresher .ionic-refresher-content .text-refreshing, + .scroll-refresher .ionic-refresher-content .text-pulling { + font-size: 16px; + line-height: 16px; } + .scroll-refresher .ionic-refresher-content.ionic-refresher-with-text { + bottom: 10px; } + .scroll-refresher .icon-refreshing, + .scroll-refresher .icon-pulling { + width: 100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transform-style: preserve-3d; + transform-style: preserve-3d; } + .scroll-refresher .icon-pulling { + -webkit-animation-name: refresh-spin-back; + animation-name: refresh-spin-back; + -webkit-animation-duration: 200ms; + animation-duration: 200ms; + -webkit-animation-timing-function: linear; + animation-timing-function: linear; + -webkit-animation-fill-mode: none; + animation-fill-mode: none; + -webkit-transform: translate3d(0, 0, 0) rotate(0deg); + transform: translate3d(0, 0, 0) rotate(0deg); } + .scroll-refresher .icon-refreshing, + .scroll-refresher .text-refreshing { + display: none; } + .scroll-refresher .icon-refreshing { + -webkit-animation-duration: 1.5s; + animation-duration: 1.5s; } + .scroll-refresher.active .icon-pulling:not(.pulling-rotation-disabled) { + -webkit-animation-name: refresh-spin; + animation-name: refresh-spin; + -webkit-transform: translate3d(0, 0, 0) rotate(-180deg); + transform: translate3d(0, 0, 0) rotate(-180deg); } + .scroll-refresher.active.refreshing { + -webkit-transition: -webkit-transform 0.2s; + transition: -webkit-transform 0.2s; + -webkit-transition: transform 0.2s; + transition: transform 0.2s; + -webkit-transform: scale(1, 1); + transform: scale(1, 1); } + .scroll-refresher.active.refreshing .icon-pulling, + .scroll-refresher.active.refreshing .text-pulling { + display: none; } + .scroll-refresher.active.refreshing .icon-refreshing, + .scroll-refresher.active.refreshing .text-refreshing { + display: block; } + .scroll-refresher.active.refreshing.refreshing-tail { + -webkit-transform: scale(0, 0); + transform: scale(0, 0); } + +.overflow-scroll > .scroll { + -webkit-overflow-scrolling: touch; + width: 100%; } + .overflow-scroll > .scroll.overscroll { + position: fixed; + right: 0; + left: 0; } + +.overflow-scroll.padding > .scroll.overscroll { + padding: 10px; } + +@-webkit-keyframes refresh-spin { + 0% { + -webkit-transform: translate3d(0, 0, 0) rotate(0); } + 100% { + -webkit-transform: translate3d(0, 0, 0) rotate(180deg); } } + +@keyframes refresh-spin { + 0% { + transform: translate3d(0, 0, 0) rotate(0); } + 100% { + transform: translate3d(0, 0, 0) rotate(180deg); } } + +@-webkit-keyframes refresh-spin-back { + 0% { + -webkit-transform: translate3d(0, 0, 0) rotate(180deg); } + 100% { + -webkit-transform: translate3d(0, 0, 0) rotate(0); } } + +@keyframes refresh-spin-back { + 0% { + transform: translate3d(0, 0, 0) rotate(180deg); } + 100% { + transform: translate3d(0, 0, 0) rotate(0); } } + +/** + * Spinners + * -------------------------------------------------- + */ +.spinner { + stroke: #444; + fill: #444; } + .spinner svg { + width: 28px; + height: 28px; } + .spinner.spinner-light { + stroke: #fff; + fill: #fff; } + .spinner.spinner-stable { + stroke: #f8f8f8; + fill: #f8f8f8; } + .spinner.spinner-positive { + stroke: #387ef5; + fill: #387ef5; } + .spinner.spinner-calm { + stroke: #11c1f3; + fill: #11c1f3; } + .spinner.spinner-balanced { + stroke: #33cd5f; + fill: #33cd5f; } + .spinner.spinner-assertive { + stroke: #ef473a; + fill: #ef473a; } + .spinner.spinner-energized { + stroke: #ffc900; + fill: #ffc900; } + .spinner.spinner-royal { + stroke: #886aea; + fill: #886aea; } + .spinner.spinner-dark { + stroke: #444; + fill: #444; } + +.spinner-android { + stroke: #4b8bf4; } + +.spinner-ios, +.spinner-ios-small { + stroke: #69717d; } + +.spinner-spiral .stop1 { + stop-color: #fff; + stop-opacity: 0; } + +.spinner-spiral.spinner-light .stop1 { + stop-color: #444; } + +.spinner-spiral.spinner-light .stop2 { + stop-color: #fff; } + +.spinner-spiral.spinner-stable .stop2 { + stop-color: #f8f8f8; } + +.spinner-spiral.spinner-positive .stop2 { + stop-color: #387ef5; } + +.spinner-spiral.spinner-calm .stop2 { + stop-color: #11c1f3; } + +.spinner-spiral.spinner-balanced .stop2 { + stop-color: #33cd5f; } + +.spinner-spiral.spinner-assertive .stop2 { + stop-color: #ef473a; } + +.spinner-spiral.spinner-energized .stop2 { + stop-color: #ffc900; } + +.spinner-spiral.spinner-royal .stop2 { + stop-color: #886aea; } + +.spinner-spiral.spinner-dark .stop2 { + stop-color: #444; } + +/** + * Forms + * -------------------------------------------------- + */ +form { + margin: 0 0 1.42857; } + +legend { + display: block; + margin-bottom: 1.42857; + padding: 0; + width: 100%; + border: 1px solid #ddd; + color: #444; + font-size: 21px; + line-height: 2.85714; } + legend small { + color: #f8f8f8; + font-size: 1.07143; } + +label, +input, +button, +select, +textarea { + font-weight: normal; + font-size: 14px; + line-height: 1.42857; } + +input, +button, +select, +textarea { + font-family: "-apple-system", "Helvetica Neue", "Roboto", "Segoe UI", sans-serif; } + +.item-input { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + -moz-align-items: center; + align-items: center; + position: relative; + overflow: hidden; + padding: 6px 0 5px 16px; } + .item-input input { + -webkit-border-radius: 0; + border-radius: 0; + -webkit-box-flex: 1; + -webkit-flex: 1 220px; + -moz-box-flex: 1; + -moz-flex: 1 220px; + -ms-flex: 1 220px; + flex: 1 220px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + margin: 0; + padding-right: 24px; + background-color: transparent; } + .item-input .button .icon { + -webkit-box-flex: 0; + -webkit-flex: 0 0 24px; + -moz-box-flex: 0; + -moz-flex: 0 0 24px; + -ms-flex: 0 0 24px; + flex: 0 0 24px; + position: static; + display: inline-block; + height: auto; + text-align: center; + font-size: 16px; } + .item-input .button-bar { + -webkit-border-radius: 0; + border-radius: 0; + -webkit-box-flex: 1; + -webkit-flex: 1 0 220px; + -moz-box-flex: 1; + -moz-flex: 1 0 220px; + -ms-flex: 1 0 220px; + flex: 1 0 220px; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; } + .item-input .icon { + min-width: 14px; } + +.platform-windowsphone .item-input input { + flex-shrink: 1; } + +.item-input-inset { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + -moz-align-items: center; + align-items: center; + position: relative; + overflow: hidden; + padding: 10.66667px; } + +.item-input-wrapper { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -webkit-flex: 1 0; + -moz-box-flex: 1; + -moz-flex: 1 0; + -ms-flex: 1 0; + flex: 1 0; + -webkit-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + -moz-align-items: center; + align-items: center; + -webkit-border-radius: 4px; + border-radius: 4px; + padding-right: 8px; + padding-left: 8px; + background: #eee; } + +.item-input-inset .item-input-wrapper input { + padding-left: 4px; + height: 29px; + background: transparent; + line-height: 18px; } + +.item-input-wrapper ~ .button { + margin-left: 10.66667px; } + +.input-label { + display: table; + padding: 7px 10px 7px 0px; + max-width: 200px; + width: 35%; + color: #444; + font-size: 16px; } + +.placeholder-icon { + color: #aaa; } + .placeholder-icon:first-child { + padding-right: 6px; } + .placeholder-icon:last-child { + padding-left: 6px; } + +.item-stacked-label { + display: block; + background-color: transparent; + box-shadow: none; } + .item-stacked-label .input-label, .item-stacked-label .icon { + display: inline-block; + padding: 4px 0 0 0px; + vertical-align: middle; } + +.item-stacked-label input, +.item-stacked-label textarea { + -webkit-border-radius: 2px; + border-radius: 2px; + padding: 4px 8px 3px 0; + border: none; + background-color: #fff; } + +.item-stacked-label input { + overflow: hidden; + height: 46px; } + +.item-select.item-stacked-label select { + position: relative; + padding: 0px; + max-width: 90%; + direction: ltr; + white-space: pre-wrap; + margin: -3px; } + +.item-floating-label { + display: block; + background-color: transparent; + box-shadow: none; } + .item-floating-label .input-label { + position: relative; + padding: 5px 0 0 0; + opacity: 0; + top: 10px; + -webkit-transition: opacity 0.15s ease-in, top 0.2s linear; + transition: opacity 0.15s ease-in, top 0.2s linear; } + .item-floating-label .input-label.has-input { + opacity: 1; + top: 0; + -webkit-transition: opacity 0.15s ease-in, top 0.2s linear; + transition: opacity 0.15s ease-in, top 0.2s linear; } + +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"] { + display: block; + padding-top: 2px; + padding-left: 0; + height: 34px; + color: #111; + vertical-align: middle; + font-size: 14px; + line-height: 16px; } + +.platform-ios input[type="datetime-local"], +.platform-ios input[type="date"], +.platform-ios input[type="month"], +.platform-ios input[type="time"], +.platform-ios input[type="week"], +.platform-android input[type="datetime-local"], +.platform-android input[type="date"], +.platform-android input[type="month"], +.platform-android input[type="time"], +.platform-android input[type="week"] { + padding-top: 8px; } + +.item-input input, +.item-input textarea { + width: 100%; } + +textarea { + padding-left: 0; } + textarea::-moz-placeholder { + color: #aaaaaa; } + textarea:-ms-input-placeholder { + color: #aaaaaa; } + textarea::-webkit-input-placeholder { + color: #aaaaaa; + text-indent: -3px; } + +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"] { + border: 0; } + +input[type="radio"], +input[type="checkbox"] { + margin: 0; + line-height: normal; } + +.item-input input[type="file"], +.item-input input[type="image"], +.item-input input[type="submit"], +.item-input input[type="reset"], +.item-input input[type="button"], +.item-input input[type="radio"], +.item-input input[type="checkbox"] { + width: auto; } + +input[type="file"] { + line-height: 34px; } + +.previous-input-focus, +.cloned-text-input + input, +.cloned-text-input + textarea { + position: absolute !important; + left: -9999px; + width: 200px; } + +input::-moz-placeholder, +textarea::-moz-placeholder { + color: #aaaaaa; } + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #aaaaaa; } + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #aaaaaa; + text-indent: 0; } + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly]:not(.cloned-text-input), +textarea[readonly]:not(.cloned-text-input), +select[readonly] { + background-color: #f8f8f8; + cursor: not-allowed; } + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; } + +/** + * Checkbox + * -------------------------------------------------- + */ +.checkbox { + position: relative; + display: inline-block; + padding: 7px 7px; + cursor: pointer; } + .checkbox input:before, + .checkbox .checkbox-icon:before { + border-color: #ddd; } + .checkbox input:checked:before, + .checkbox input:checked + .checkbox-icon:before { + background: #387ef5; + border-color: #387ef5; } + +.checkbox-light input:before, +.checkbox-light .checkbox-icon:before { + border-color: #ddd; } + +.checkbox-light input:checked:before, +.checkbox-light input:checked + .checkbox-icon:before { + background: #ddd; + border-color: #ddd; } + +.checkbox-stable input:before, +.checkbox-stable .checkbox-icon:before { + border-color: #b2b2b2; } + +.checkbox-stable input:checked:before, +.checkbox-stable input:checked + .checkbox-icon:before { + background: #b2b2b2; + border-color: #b2b2b2; } + +.checkbox-positive input:before, +.checkbox-positive .checkbox-icon:before { + border-color: #387ef5; } + +.checkbox-positive input:checked:before, +.checkbox-positive input:checked + .checkbox-icon:before { + background: #387ef5; + border-color: #387ef5; } + +.checkbox-calm input:before, +.checkbox-calm .checkbox-icon:before { + border-color: #11c1f3; } + +.checkbox-calm input:checked:before, +.checkbox-calm input:checked + .checkbox-icon:before { + background: #11c1f3; + border-color: #11c1f3; } + +.checkbox-assertive input:before, +.checkbox-assertive .checkbox-icon:before { + border-color: #ef473a; } + +.checkbox-assertive input:checked:before, +.checkbox-assertive input:checked + .checkbox-icon:before { + background: #ef473a; + border-color: #ef473a; } + +.checkbox-balanced input:before, +.checkbox-balanced .checkbox-icon:before { + border-color: #33cd5f; } + +.checkbox-balanced input:checked:before, +.checkbox-balanced input:checked + .checkbox-icon:before { + background: #33cd5f; + border-color: #33cd5f; } + +.checkbox-energized input:before, +.checkbox-energized .checkbox-icon:before { + border-color: #ffc900; } + +.checkbox-energized input:checked:before, +.checkbox-energized input:checked + .checkbox-icon:before { + background: #ffc900; + border-color: #ffc900; } + +.checkbox-royal input:before, +.checkbox-royal .checkbox-icon:before { + border-color: #886aea; } + +.checkbox-royal input:checked:before, +.checkbox-royal input:checked + .checkbox-icon:before { + background: #886aea; + border-color: #886aea; } + +.checkbox-dark input:before, +.checkbox-dark .checkbox-icon:before { + border-color: #444; } + +.checkbox-dark input:checked:before, +.checkbox-dark input:checked + .checkbox-icon:before { + background: #444; + border-color: #444; } + +.checkbox input:disabled:before, +.checkbox input:disabled + .checkbox-icon:before { + border-color: #ddd; } + +.checkbox input:disabled:checked:before, +.checkbox input:disabled:checked + .checkbox-icon:before { + background: #ddd; } + +.checkbox.checkbox-input-hidden input { + display: none !important; } + +.checkbox input, +.checkbox-icon { + position: relative; + width: 28px; + height: 28px; + display: block; + border: 0; + background: transparent; + cursor: pointer; + -webkit-appearance: none; } + .checkbox input:before, + .checkbox-icon:before { + display: table; + width: 100%; + height: 100%; + border-width: 1px; + border-style: solid; + border-radius: 28px; + background: #fff; + content: ' '; + -webkit-transition: background-color 20ms ease-in-out; + transition: background-color 20ms ease-in-out; } + +.checkbox input:checked:before, +input:checked + .checkbox-icon:before { + border-width: 2px; } + +.checkbox input:after, +.checkbox-icon:after { + -webkit-transition: opacity 0.05s ease-in-out; + transition: opacity 0.05s ease-in-out; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + position: absolute; + top: 33%; + left: 25%; + display: table; + width: 14px; + height: 6px; + border: 1px solid #fff; + border-top: 0; + border-right: 0; + content: ' '; + opacity: 0; } + +.platform-android .checkbox-platform input:before, +.platform-android .checkbox-platform .checkbox-icon:before, +.checkbox-square input:before, +.checkbox-square .checkbox-icon:before { + border-radius: 2px; + width: 72%; + height: 72%; + margin-top: 14%; + margin-left: 14%; + border-width: 2px; } + +.platform-android .checkbox-platform input:after, +.platform-android .checkbox-platform .checkbox-icon:after, +.checkbox-square input:after, +.checkbox-square .checkbox-icon:after { + border-width: 2px; + top: 19%; + left: 25%; + width: 13px; + height: 7px; } + +.platform-android .item-checkbox-right .checkbox-square .checkbox-icon::after { + top: 31%; } + +.grade-c .checkbox input:after, +.grade-c .checkbox-icon:after { + -webkit-transform: rotate(0); + transform: rotate(0); + top: 3px; + left: 4px; + border: none; + color: #fff; + content: '\2713'; + font-weight: bold; + font-size: 20px; } + +.checkbox input:checked:after, +input:checked + .checkbox-icon:after { + opacity: 1; } + +.item-checkbox { + padding-left: 60px; } + .item-checkbox.active { + box-shadow: none; } + +.item-checkbox .checkbox { + position: absolute; + top: 50%; + right: 8px; + left: 8px; + z-index: 3; + margin-top: -21px; } + +.item-checkbox.item-checkbox-right { + padding-right: 60px; + padding-left: 16px; } + +.item-checkbox-right .checkbox input, +.item-checkbox-right .checkbox-icon { + float: right; } + +/** + * Toggle + * -------------------------------------------------- + */ +.item-toggle { + pointer-events: none; } + +.toggle { + position: relative; + display: inline-block; + pointer-events: auto; + margin: -5px; + padding: 5px; } + .toggle input:checked + .track { + border-color: #4cd964; + background-color: #4cd964; } + .toggle.dragging .handle { + background-color: #f2f2f2 !important; } + +.toggle.toggle-light input:checked + .track { + border-color: #ddd; + background-color: #ddd; } + +.toggle.toggle-stable input:checked + .track { + border-color: #b2b2b2; + background-color: #b2b2b2; } + +.toggle.toggle-positive input:checked + .track { + border-color: #387ef5; + background-color: #387ef5; } + +.toggle.toggle-calm input:checked + .track { + border-color: #11c1f3; + background-color: #11c1f3; } + +.toggle.toggle-assertive input:checked + .track { + border-color: #ef473a; + background-color: #ef473a; } + +.toggle.toggle-balanced input:checked + .track { + border-color: #33cd5f; + background-color: #33cd5f; } + +.toggle.toggle-energized input:checked + .track { + border-color: #ffc900; + background-color: #ffc900; } + +.toggle.toggle-royal input:checked + .track { + border-color: #886aea; + background-color: #886aea; } + +.toggle.toggle-dark input:checked + .track { + border-color: #444; + background-color: #444; } + +.toggle input { + display: none; } + +/* the track appearance when the toggle is "off" */ +.toggle .track { + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; + -webkit-transition-duration: 0.3s; + transition-duration: 0.3s; + -webkit-transition-property: background-color, border; + transition-property: background-color, border; + display: inline-block; + box-sizing: border-box; + width: 51px; + height: 31px; + border: solid 2px #e6e6e6; + border-radius: 20px; + background-color: #fff; + content: ' '; + cursor: pointer; + pointer-events: none; } + +/* Fix to avoid background color bleeding */ +/* (occurred on (at least) Android 4.2, Asus MeMO Pad HD7 ME173X) */ +.platform-android4_2 .toggle .track { + -webkit-background-clip: padding-box; } + +/* the handle (circle) thats inside the toggle's track area */ +/* also the handle's appearance when it is "off" */ +.toggle .handle { + -webkit-transition: 0.3s cubic-bezier(0, 1.1, 1, 1.1); + transition: 0.3s cubic-bezier(0, 1.1, 1, 1.1); + -webkit-transition-property: background-color, transform; + transition-property: background-color, transform; + position: absolute; + display: block; + width: 27px; + height: 27px; + border-radius: 27px; + background-color: #fff; + top: 7px; + left: 7px; + box-shadow: 0 2px 7px rgba(0, 0, 0, 0.35), 0 1px 1px rgba(0, 0, 0, 0.15); } + .toggle .handle:before { + position: absolute; + top: -4px; + left: -21.5px; + padding: 18.5px 34px; + content: " "; } + +.toggle input:checked + .track .handle { + -webkit-transform: translate3d(20px, 0, 0); + transform: translate3d(20px, 0, 0); + background-color: #fff; } + +.item-toggle.active { + box-shadow: none; } + +.item-toggle, +.item-toggle.item-complex .item-content { + padding-right: 99px; } + +.item-toggle.item-complex { + padding-right: 0; } + +.item-toggle .toggle { + position: absolute; + top: 10px; + right: 16px; + z-index: 3; } + +.toggle input:disabled + .track { + opacity: .6; } + +.toggle-small .track { + border: 0; + width: 34px; + height: 15px; + background: #9e9e9e; } + +.toggle-small input:checked + .track { + background: rgba(0, 150, 137, 0.5); } + +.toggle-small .handle { + top: 2px; + left: 4px; + width: 21px; + height: 21px; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25); } + +.toggle-small input:checked + .track .handle { + -webkit-transform: translate3d(16px, 0, 0); + transform: translate3d(16px, 0, 0); + background: #009689; } + +.toggle-small.item-toggle .toggle { + top: 19px; } + +.toggle-small .toggle-light input:checked + .track { + background-color: rgba(221, 221, 221, 0.5); } + +.toggle-small .toggle-light input:checked + .track .handle { + background-color: #ddd; } + +.toggle-small .toggle-stable input:checked + .track { + background-color: rgba(178, 178, 178, 0.5); } + +.toggle-small .toggle-stable input:checked + .track .handle { + background-color: #b2b2b2; } + +.toggle-small .toggle-positive input:checked + .track { + background-color: rgba(56, 126, 245, 0.5); } + +.toggle-small .toggle-positive input:checked + .track .handle { + background-color: #387ef5; } + +.toggle-small .toggle-calm input:checked + .track { + background-color: rgba(17, 193, 243, 0.5); } + +.toggle-small .toggle-calm input:checked + .track .handle { + background-color: #11c1f3; } + +.toggle-small .toggle-assertive input:checked + .track { + background-color: rgba(239, 71, 58, 0.5); } + +.toggle-small .toggle-assertive input:checked + .track .handle { + background-color: #ef473a; } + +.toggle-small .toggle-balanced input:checked + .track { + background-color: rgba(51, 205, 95, 0.5); } + +.toggle-small .toggle-balanced input:checked + .track .handle { + background-color: #33cd5f; } + +.toggle-small .toggle-energized input:checked + .track { + background-color: rgba(255, 201, 0, 0.5); } + +.toggle-small .toggle-energized input:checked + .track .handle { + background-color: #ffc900; } + +.toggle-small .toggle-royal input:checked + .track { + background-color: rgba(136, 106, 234, 0.5); } + +.toggle-small .toggle-royal input:checked + .track .handle { + background-color: #886aea; } + +.toggle-small .toggle-dark input:checked + .track { + background-color: rgba(68, 68, 68, 0.5); } + +.toggle-small .toggle-dark input:checked + .track .handle { + background-color: #444; } + +/** + * Radio Button Inputs + * -------------------------------------------------- + */ +.item-radio { + padding: 0; } + .item-radio:hover { + cursor: pointer; } + +.item-radio .item-content { + /* give some room to the right for the checkmark icon */ + padding-right: 64px; } + +.item-radio .radio-icon { + /* checkmark icon will be hidden by default */ + position: absolute; + top: 0; + right: 0; + z-index: 3; + visibility: hidden; + padding: 14px; + height: 100%; + font-size: 24px; } + +.item-radio input { + /* hide any radio button inputs elements (the ugly circles) */ + position: absolute; + left: -9999px; } + .item-radio input:checked + .radio-content .item-content { + /* style the item content when its checked */ + background: #f7f7f7; } + .item-radio input:checked + .radio-content .radio-icon { + /* show the checkmark icon when its checked */ + visibility: visible; } + +/** + * Range + * -------------------------------------------------- + */ +.range input { + display: inline-block; + overflow: hidden; + margin-top: 5px; + margin-bottom: 5px; + padding-right: 2px; + padding-left: 1px; + width: auto; + height: 43px; + outline: none; + background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #ccc), color-stop(100%, #ccc)); + background: linear-gradient(to right, #ccc 0%, #ccc 100%); + background-position: center; + background-size: 99% 2px; + background-repeat: no-repeat; + -webkit-appearance: none; + /* + &::-ms-track{ + background: transparent; + border-color: transparent; + border-width: 11px 0 16px; + color:transparent; + margin-top:20px; + } + &::-ms-thumb { + width: $range-slider-width; + height: $range-slider-height; + border-radius: $range-slider-border-radius; + background-color: $toggle-handle-off-bg-color; + border-color:$toggle-handle-off-bg-color; + box-shadow: $range-slider-box-shadow; + margin-left:1px; + margin-right:1px; + outline:none; + } + &::-ms-fill-upper { + height: $range-track-height; + background:$range-default-track-bg; + } + */ } + .range input::-moz-focus-outer { + /* hide the focus outline in Firefox */ + border: 0; } + .range input::-webkit-slider-thumb { + position: relative; + width: 28px; + height: 28px; + border-radius: 50%; + background-color: #fff; + box-shadow: 0 0 2px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2); + cursor: pointer; + -webkit-appearance: none; + border: 0; } + .range input::-webkit-slider-thumb:before { + /* what creates the colorful line on the left side of the slider */ + position: absolute; + top: 13px; + left: -2001px; + width: 2000px; + height: 2px; + background: #444; + content: ' '; } + .range input::-webkit-slider-thumb:after { + /* create a larger (but hidden) hit area */ + position: absolute; + top: -15px; + left: -15px; + padding: 30px; + content: ' '; } + .range input::-ms-fill-lower { + height: 2px; + background: #444; } + +.range { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + -moz-align-items: center; + align-items: center; + padding: 2px 11px; } + .range.range-light input::-webkit-slider-thumb:before { + background: #ddd; } + .range.range-light input::-ms-fill-lower { + background: #ddd; } + .range.range-stable input::-webkit-slider-thumb:before { + background: #b2b2b2; } + .range.range-stable input::-ms-fill-lower { + background: #b2b2b2; } + .range.range-positive input::-webkit-slider-thumb:before { + background: #387ef5; } + .range.range-positive input::-ms-fill-lower { + background: #387ef5; } + .range.range-calm input::-webkit-slider-thumb:before { + background: #11c1f3; } + .range.range-calm input::-ms-fill-lower { + background: #11c1f3; } + .range.range-balanced input::-webkit-slider-thumb:before { + background: #33cd5f; } + .range.range-balanced input::-ms-fill-lower { + background: #33cd5f; } + .range.range-assertive input::-webkit-slider-thumb:before { + background: #ef473a; } + .range.range-assertive input::-ms-fill-lower { + background: #ef473a; } + .range.range-energized input::-webkit-slider-thumb:before { + background: #ffc900; } + .range.range-energized input::-ms-fill-lower { + background: #ffc900; } + .range.range-royal input::-webkit-slider-thumb:before { + background: #886aea; } + .range.range-royal input::-ms-fill-lower { + background: #886aea; } + .range.range-dark input::-webkit-slider-thumb:before { + background: #444; } + .range.range-dark input::-ms-fill-lower { + background: #444; } + +.range .icon { + -webkit-box-flex: 0; + -webkit-flex: 0; + -moz-box-flex: 0; + -moz-flex: 0; + -ms-flex: 0; + flex: 0; + display: block; + min-width: 24px; + text-align: center; + font-size: 24px; } + +.range input { + -webkit-box-flex: 1; + -webkit-flex: 1; + -moz-box-flex: 1; + -moz-flex: 1; + -ms-flex: 1; + flex: 1; + display: block; + margin-right: 10px; + margin-left: 10px; } + +.range-label { + -webkit-box-flex: 0; + -webkit-flex: 0 0 auto; + -moz-box-flex: 0; + -moz-flex: 0 0 auto; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + display: block; + white-space: nowrap; } + +.range-label:first-child { + padding-left: 5px; } + +.range input + .range-label { + padding-right: 5px; + padding-left: 0; } + +.platform-windowsphone .range input { + height: auto; } + +/** + * Select + * -------------------------------------------------- + */ +.item-select { + position: relative; } + .item-select select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + position: absolute; + top: 0; + bottom: 0; + right: 0; + padding: 0 48px 0 16px; + max-width: 65%; + border: none; + background: #fff; + color: #333; + text-indent: .01px; + text-overflow: ''; + white-space: nowrap; + font-size: 14px; + cursor: pointer; + direction: rtl; } + .item-select select::-ms-expand { + display: none; } + .item-select option { + direction: ltr; } + .item-select:after { + position: absolute; + top: 50%; + right: 16px; + margin-top: -3px; + width: 0; + height: 0; + border-top: 5px solid; + border-right: 5px solid transparent; + border-left: 5px solid transparent; + color: #999; + content: ""; + pointer-events: none; } + .item-select.item-light select { + background: #fff; + color: #444; } + .item-select.item-stable select { + background: #f8f8f8; + color: #444; } + .item-select.item-stable:after, .item-select.item-stable .input-label { + color: #666666; } + .item-select.item-positive select { + background: #387ef5; + color: #fff; } + .item-select.item-positive:after, .item-select.item-positive .input-label { + color: #fff; } + .item-select.item-calm select { + background: #11c1f3; + color: #fff; } + .item-select.item-calm:after, .item-select.item-calm .input-label { + color: #fff; } + .item-select.item-assertive select { + background: #ef473a; + color: #fff; } + .item-select.item-assertive:after, .item-select.item-assertive .input-label { + color: #fff; } + .item-select.item-balanced select { + background: #33cd5f; + color: #fff; } + .item-select.item-balanced:after, .item-select.item-balanced .input-label { + color: #fff; } + .item-select.item-energized select { + background: #ffc900; + color: #fff; } + .item-select.item-energized:after, .item-select.item-energized .input-label { + color: #fff; } + .item-select.item-royal select { + background: #886aea; + color: #fff; } + .item-select.item-royal:after, .item-select.item-royal .input-label { + color: #fff; } + .item-select.item-dark select { + background: #444; + color: #fff; } + .item-select.item-dark:after, .item-select.item-dark .input-label { + color: #fff; } + +select[multiple], select[size] { + height: auto; } + +/** + * Progress + * -------------------------------------------------- + */ +progress { + display: block; + margin: 15px auto; + width: 100%; } + +/** + * Buttons + * -------------------------------------------------- + */ +.button { + border-color: transparent; + background-color: #f8f8f8; + color: #444; + position: relative; + display: inline-block; + margin: 0; + padding: 0 12px; + min-width: 52px; + min-height: 47px; + border-width: 1px; + border-style: solid; + border-radius: 4px; + vertical-align: top; + text-align: center; + text-overflow: ellipsis; + font-size: 16px; + line-height: 42px; + cursor: pointer; } + .button:hover { + color: #444; + text-decoration: none; } + .button.active, .button.activated { + border-color: #a2a2a2; + background-color: #e5e5e5; } + .button:after { + position: absolute; + top: -6px; + right: -6px; + bottom: -6px; + left: -6px; + content: ' '; } + .button .icon { + vertical-align: top; + pointer-events: none; } + .button .icon:before, .button.icon:before, .button.icon-left:before, .button.icon-right:before { + display: inline-block; + padding: 0 0 1px 0; + vertical-align: inherit; + font-size: 24px; + line-height: 41px; + pointer-events: none; } + .button.icon-left:before { + float: left; + padding-right: .2em; + padding-left: 0; } + .button.icon-right:before { + float: right; + padding-right: 0; + padding-left: .2em; } + .button.button-block, .button.button-full { + margin-top: 10px; + margin-bottom: 10px; } + .button.button-light { + border-color: transparent; + background-color: #fff; + color: #444; } + .button.button-light:hover { + color: #444; + text-decoration: none; } + .button.button-light.active, .button.button-light.activated { + border-color: #a2a2a2; + background-color: #fafafa; } + .button.button-light.button-clear { + border-color: transparent; + background: none; + box-shadow: none; + color: #ddd; } + .button.button-light.button-icon { + border-color: transparent; + background: none; } + .button.button-light.button-outline { + border-color: #ddd; + background: transparent; + color: #ddd; } + .button.button-light.button-outline.active, .button.button-light.button-outline.activated { + background-color: #ddd; + box-shadow: none; + color: #fff; } + .button.button-stable { + border-color: transparent; + background-color: #f8f8f8; + color: #444; } + .button.button-stable:hover { + color: #444; + text-decoration: none; } + .button.button-stable.active, .button.button-stable.activated { + border-color: #a2a2a2; + background-color: #e5e5e5; } + .button.button-stable.button-clear { + border-color: transparent; + background: none; + box-shadow: none; + color: #b2b2b2; } + .button.button-stable.button-icon { + border-color: transparent; + background: none; } + .button.button-stable.button-outline { + border-color: #b2b2b2; + background: transparent; + color: #b2b2b2; } + .button.button-stable.button-outline.active, .button.button-stable.button-outline.activated { + background-color: #b2b2b2; + box-shadow: none; + color: #fff; } + .button.button-positive { + border-color: transparent; + background-color: #387ef5; + color: #fff; } + .button.button-positive:hover { + color: #fff; + text-decoration: none; } + .button.button-positive.active, .button.button-positive.activated { + border-color: #a2a2a2; + background-color: #0c60ee; } + .button.button-positive.button-clear { + border-color: transparent; + background: none; + box-shadow: none; + color: #387ef5; } + .button.button-positive.button-icon { + border-color: transparent; + background: none; } + .button.button-positive.button-outline { + border-color: #387ef5; + background: transparent; + color: #387ef5; } + .button.button-positive.button-outline.active, .button.button-positive.button-outline.activated { + background-color: #387ef5; + box-shadow: none; + color: #fff; } + .button.button-calm { + border-color: transparent; + background-color: #11c1f3; + color: #fff; } + .button.button-calm:hover { + color: #fff; + text-decoration: none; } + .button.button-calm.active, .button.button-calm.activated { + border-color: #a2a2a2; + background-color: #0a9dc7; } + .button.button-calm.button-clear { + border-color: transparent; + background: none; + box-shadow: none; + color: #11c1f3; } + .button.button-calm.button-icon { + border-color: transparent; + background: none; } + .button.button-calm.button-outline { + border-color: #11c1f3; + background: transparent; + color: #11c1f3; } + .button.button-calm.button-outline.active, .button.button-calm.button-outline.activated { + background-color: #11c1f3; + box-shadow: none; + color: #fff; } + .button.button-assertive { + border-color: transparent; + background-color: #ef473a; + color: #fff; } + .button.button-assertive:hover { + color: #fff; + text-decoration: none; } + .button.button-assertive.active, .button.button-assertive.activated { + border-color: #a2a2a2; + background-color: #e42112; } + .button.button-assertive.button-clear { + border-color: transparent; + background: none; + box-shadow: none; + color: #ef473a; } + .button.button-assertive.button-icon { + border-color: transparent; + background: none; } + .button.button-assertive.button-outline { + border-color: #ef473a; + background: transparent; + color: #ef473a; } + .button.button-assertive.button-outline.active, .button.button-assertive.button-outline.activated { + background-color: #ef473a; + box-shadow: none; + color: #fff; } + .button.button-balanced { + border-color: transparent; + background-color: #33cd5f; + color: #fff; } + .button.button-balanced:hover { + color: #fff; + text-decoration: none; } + .button.button-balanced.active, .button.button-balanced.activated { + border-color: #a2a2a2; + background-color: #28a54c; } + .button.button-balanced.button-clear { + border-color: transparent; + background: none; + box-shadow: none; + color: #33cd5f; } + .button.button-balanced.button-icon { + border-color: transparent; + background: none; } + .button.button-balanced.button-outline { + border-color: #33cd5f; + background: transparent; + color: #33cd5f; } + .button.button-balanced.button-outline.active, .button.button-balanced.button-outline.activated { + background-color: #33cd5f; + box-shadow: none; + color: #fff; } + .button.button-energized { + border-color: transparent; + background-color: #ffc900; + color: #fff; } + .button.button-energized:hover { + color: #fff; + text-decoration: none; } + .button.button-energized.active, .button.button-energized.activated { + border-color: #a2a2a2; + background-color: #e6b500; } + .button.button-energized.button-clear { + border-color: transparent; + background: none; + box-shadow: none; + color: #ffc900; } + .button.button-energized.button-icon { + border-color: transparent; + background: none; } + .button.button-energized.button-outline { + border-color: #ffc900; + background: transparent; + color: #ffc900; } + .button.button-energized.button-outline.active, .button.button-energized.button-outline.activated { + background-color: #ffc900; + box-shadow: none; + color: #fff; } + .button.button-royal { + border-color: transparent; + background-color: #886aea; + color: #fff; } + .button.button-royal:hover { + color: #fff; + text-decoration: none; } + .button.button-royal.active, .button.button-royal.activated { + border-color: #a2a2a2; + background-color: #6b46e5; } + .button.button-royal.button-clear { + border-color: transparent; + background: none; + box-shadow: none; + color: #886aea; } + .button.button-royal.button-icon { + border-color: transparent; + background: none; } + .button.button-royal.button-outline { + border-color: #886aea; + background: transparent; + color: #886aea; } + .button.button-royal.button-outline.active, .button.button-royal.button-outline.activated { + background-color: #886aea; + box-shadow: none; + color: #fff; } + .button.button-dark { + border-color: transparent; + background-color: #444; + color: #fff; } + .button.button-dark:hover { + color: #fff; + text-decoration: none; } + .button.button-dark.active, .button.button-dark.activated { + border-color: #a2a2a2; + background-color: #262626; } + .button.button-dark.button-clear { + border-color: transparent; + background: none; + box-shadow: none; + color: #444; } + .button.button-dark.button-icon { + border-color: transparent; + background: none; } + .button.button-dark.button-outline { + border-color: #444; + background: transparent; + color: #444; } + .button.button-dark.button-outline.active, .button.button-dark.button-outline.activated { + background-color: #444; + box-shadow: none; + color: #fff; } + +.button-small { + padding: 2px 4px 1px; + min-width: 28px; + min-height: 30px; + font-size: 12px; + line-height: 26px; } + .button-small .icon:before, .button-small.icon:before, .button-small.icon-left:before, .button-small.icon-right:before { + font-size: 16px; + line-height: 19px; + margin-top: 3px; } + +.button-large { + padding: 0 16px; + min-width: 68px; + min-height: 59px; + font-size: 20px; + line-height: 53px; } + .button-large .icon:before, .button-large.icon:before, .button-large.icon-left:before, .button-large.icon-right:before { + padding-bottom: 2px; + font-size: 32px; + line-height: 51px; } + +.button-icon { + -webkit-transition: opacity 0.1s; + transition: opacity 0.1s; + padding: 0 6px; + min-width: initial; + border-color: transparent; + background: none; } + .button-icon.button.active, .button-icon.button.activated { + border-color: transparent; + background: none; + box-shadow: none; + opacity: 0.3; } + .button-icon .icon:before, .button-icon.icon:before { + font-size: 32px; } + +.button-clear { + -webkit-transition: opacity 0.1s; + transition: opacity 0.1s; + padding: 0 6px; + max-height: 42px; + border-color: transparent; + background: none; + box-shadow: none; } + .button-clear.button-clear { + border-color: transparent; + background: none; + box-shadow: none; + color: transparent; } + .button-clear.button-icon { + border-color: transparent; + background: none; } + .button-clear.active, .button-clear.activated { + opacity: 0.3; } + +.button-outline { + -webkit-transition: opacity 0.1s; + transition: opacity 0.1s; + background: none; + box-shadow: none; } + .button-outline.button-outline { + border-color: transparent; + background: transparent; + color: transparent; } + .button-outline.button-outline.active, .button-outline.button-outline.activated { + background-color: transparent; + box-shadow: none; + color: #fff; } + +.padding > .button.button-block:first-child { + margin-top: 0; } + +.button-block { + display: block; + clear: both; } + .button-block:after { + clear: both; } + +.button-full, +.button-full > .button { + display: block; + margin-right: 0; + margin-left: 0; + border-right-width: 0; + border-left-width: 0; + border-radius: 0; } + +button.button-block, +button.button-full, +.button-full > button.button, +input.button.button-block { + width: 100%; } + +a.button { + text-decoration: none; } + a.button .icon:before, a.button.icon:before, a.button.icon-left:before, a.button.icon-right:before { + margin-top: 2px; } + +.button.disabled, +.button[disabled] { + opacity: .4; + cursor: default !important; + pointer-events: none; } + +/** + * Button Bar + * -------------------------------------------------- + */ +.button-bar { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -webkit-flex: 1; + -moz-box-flex: 1; + -moz-flex: 1; + -ms-flex: 1; + flex: 1; + width: 100%; } + .button-bar.button-bar-inline { + display: block; + width: auto; + *zoom: 1; } + .button-bar.button-bar-inline:before, .button-bar.button-bar-inline:after { + display: table; + content: ""; + line-height: 0; } + .button-bar.button-bar-inline:after { + clear: both; } + .button-bar.button-bar-inline > .button { + width: auto; + display: inline-block; + float: left; } + .button-bar.bar-light > .button { + border-color: #ddd; } + .button-bar.bar-stable > .button { + border-color: #b2b2b2; } + .button-bar.bar-positive > .button { + border-color: #0c60ee; } + .button-bar.bar-calm > .button { + border-color: #0a9dc7; } + .button-bar.bar-assertive > .button { + border-color: #e42112; } + .button-bar.bar-balanced > .button { + border-color: #28a54c; } + .button-bar.bar-energized > .button { + border-color: #e6b500; } + .button-bar.bar-royal > .button { + border-color: #6b46e5; } + .button-bar.bar-dark > .button { + border-color: #111; } + +.button-bar > .button { + -webkit-box-flex: 1; + -webkit-flex: 1; + -moz-box-flex: 1; + -moz-flex: 1; + -ms-flex: 1; + flex: 1; + display: block; + overflow: hidden; + padding: 0 16px; + width: 0; + border-width: 1px 0px 1px 1px; + border-radius: 0; + text-align: center; + text-overflow: ellipsis; + white-space: nowrap; } + .button-bar > .button:before, + .button-bar > .button .icon:before { + line-height: 44px; } + .button-bar > .button:first-child { + border-radius: 4px 0px 0px 4px; } + .button-bar > .button:last-child { + border-right-width: 1px; + border-radius: 0px 4px 4px 0px; } + .button-bar > .button:only-child { + border-radius: 4px; } + +.button-bar > .button-small:before, +.button-bar > .button-small .icon:before { + line-height: 28px; } + +/** + * Grid + * -------------------------------------------------- + * Using flexbox for the grid, inspired by Philip Walton: + * http://philipwalton.github.io/solved-by-flexbox/demos/grids/ + * By default each .col within a .row will evenly take up + * available width, and the height of each .col with take + * up the height of the tallest .col in the same .row. + */ +.row { + display: -webkit-box; + display: -webkit-flex; + display: -moz-box; + display: -moz-flex; + display: -ms-flexbox; + display: flex; + padding: 5px; + width: 100%; } + +.row-wrap { + -webkit-flex-wrap: wrap; + -moz-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + +.row-no-padding { + padding: 0; } + .row-no-padding > .col { + padding: 0; } + +.row + .row { + margin-top: -5px; + padding-top: 0; } + +.col { + -webkit-box-flex: 1; + -webkit-flex: 1; + -moz-box-flex: 1; + -moz-flex: 1; + -ms-flex: 1; + flex: 1; + display: block; + padding: 5px; + width: 100%; } + +/* Vertically Align Columns */ +/* .row-* vertically aligns every .col in the .row */ +.row-top { + -webkit-box-align: start; + -ms-flex-align: start; + -webkit-align-items: flex-start; + -moz-align-items: flex-start; + align-items: flex-start; } + +.row-bottom { + -webkit-box-align: end; + -ms-flex-align: end; + -webkit-align-items: flex-end; + -moz-align-items: flex-end; + align-items: flex-end; } + +.row-center { + -webkit-box-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + -moz-align-items: center; + align-items: center; } + +.row-stretch { + -webkit-box-align: stretch; + -ms-flex-align: stretch; + -webkit-align-items: stretch; + -moz-align-items: stretch; + align-items: stretch; } + +.row-baseline { + -webkit-box-align: baseline; + -ms-flex-align: baseline; + -webkit-align-items: baseline; + -moz-align-items: baseline; + align-items: baseline; } + +/* .col-* vertically aligns an individual .col */ +.col-top { + -webkit-align-self: flex-start; + -moz-align-self: flex-start; + -ms-flex-item-align: start; + align-self: flex-start; } + +.col-bottom { + -webkit-align-self: flex-end; + -moz-align-self: flex-end; + -ms-flex-item-align: end; + align-self: flex-end; } + +.col-center { + -webkit-align-self: center; + -moz-align-self: center; + -ms-flex-item-align: center; + align-self: center; } + +/* Column Offsets */ +.col-offset-10 { + margin-left: 10%; } + +.col-offset-20 { + margin-left: 20%; } + +.col-offset-25 { + margin-left: 25%; } + +.col-offset-33, .col-offset-34 { + margin-left: 33.3333%; } + +.col-offset-50 { + margin-left: 50%; } + +.col-offset-66, .col-offset-67 { + margin-left: 66.6666%; } + +.col-offset-75 { + margin-left: 75%; } + +.col-offset-80 { + margin-left: 80%; } + +.col-offset-90 { + margin-left: 90%; } + +/* Explicit Column Percent Sizes */ +/* By default each grid column will evenly distribute */ +/* across the grid. However, you can specify individual */ +/* columns to take up a certain size of the available area */ +.col-10 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 10%; + -moz-box-flex: 0; + -moz-flex: 0 0 10%; + -ms-flex: 0 0 10%; + flex: 0 0 10%; + max-width: 10%; } + +.col-20 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 20%; + -moz-box-flex: 0; + -moz-flex: 0 0 20%; + -ms-flex: 0 0 20%; + flex: 0 0 20%; + max-width: 20%; } + +.col-25 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 25%; + -moz-box-flex: 0; + -moz-flex: 0 0 25%; + -ms-flex: 0 0 25%; + flex: 0 0 25%; + max-width: 25%; } + +.col-33, .col-34 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 33.3333%; + -moz-box-flex: 0; + -moz-flex: 0 0 33.3333%; + -ms-flex: 0 0 33.3333%; + flex: 0 0 33.3333%; + max-width: 33.3333%; } + +.col-40 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 40%; + -moz-box-flex: 0; + -moz-flex: 0 0 40%; + -ms-flex: 0 0 40%; + flex: 0 0 40%; + max-width: 40%; } + +.col-50 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 50%; + -moz-box-flex: 0; + -moz-flex: 0 0 50%; + -ms-flex: 0 0 50%; + flex: 0 0 50%; + max-width: 50%; } + +.col-60 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 60%; + -moz-box-flex: 0; + -moz-flex: 0 0 60%; + -ms-flex: 0 0 60%; + flex: 0 0 60%; + max-width: 60%; } + +.col-66, .col-67 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 66.6666%; + -moz-box-flex: 0; + -moz-flex: 0 0 66.6666%; + -ms-flex: 0 0 66.6666%; + flex: 0 0 66.6666%; + max-width: 66.6666%; } + +.col-75 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 75%; + -moz-box-flex: 0; + -moz-flex: 0 0 75%; + -ms-flex: 0 0 75%; + flex: 0 0 75%; + max-width: 75%; } + +.col-80 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 80%; + -moz-box-flex: 0; + -moz-flex: 0 0 80%; + -ms-flex: 0 0 80%; + flex: 0 0 80%; + max-width: 80%; } + +.col-90 { + -webkit-box-flex: 0; + -webkit-flex: 0 0 90%; + -moz-box-flex: 0; + -moz-flex: 0 0 90%; + -ms-flex: 0 0 90%; + flex: 0 0 90%; + max-width: 90%; } + +/* Responsive Grid Classes */ +/* Adding a class of responsive-X to a row */ +/* will trigger the flex-direction to */ +/* change to column and add some margin */ +/* to any columns in the row for clearity */ +@media (max-width: 567px) { + .responsive-sm { + -webkit-box-direction: normal; + -moz-box-direction: normal; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } + .responsive-sm .col, .responsive-sm .col-10, .responsive-sm .col-20, .responsive-sm .col-25, .responsive-sm .col-33, .responsive-sm .col-34, .responsive-sm .col-50, .responsive-sm .col-66, .responsive-sm .col-67, .responsive-sm .col-75, .responsive-sm .col-80, .responsive-sm .col-90 { + -webkit-box-flex: 1; + -webkit-flex: 1; + -moz-box-flex: 1; + -moz-flex: 1; + -ms-flex: 1; + flex: 1; + margin-bottom: 15px; + margin-left: 0; + max-width: 100%; + width: 100%; } } + +@media (max-width: 767px) { + .responsive-md { + -webkit-box-direction: normal; + -moz-box-direction: normal; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } + .responsive-md .col, .responsive-md .col-10, .responsive-md .col-20, .responsive-md .col-25, .responsive-md .col-33, .responsive-md .col-34, .responsive-md .col-50, .responsive-md .col-66, .responsive-md .col-67, .responsive-md .col-75, .responsive-md .col-80, .responsive-md .col-90 { + -webkit-box-flex: 1; + -webkit-flex: 1; + -moz-box-flex: 1; + -moz-flex: 1; + -ms-flex: 1; + flex: 1; + margin-bottom: 15px; + margin-left: 0; + max-width: 100%; + width: 100%; } } + +@media (max-width: 1023px) { + .responsive-lg { + -webkit-box-direction: normal; + -moz-box-direction: normal; + -webkit-box-orient: vertical; + -moz-box-orient: vertical; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; } + .responsive-lg .col, .responsive-lg .col-10, .responsive-lg .col-20, .responsive-lg .col-25, .responsive-lg .col-33, .responsive-lg .col-34, .responsive-lg .col-50, .responsive-lg .col-66, .responsive-lg .col-67, .responsive-lg .col-75, .responsive-lg .col-80, .responsive-lg .col-90 { + -webkit-box-flex: 1; + -webkit-flex: 1; + -moz-box-flex: 1; + -moz-flex: 1; + -ms-flex: 1; + flex: 1; + margin-bottom: 15px; + margin-left: 0; + max-width: 100%; + width: 100%; } } + +/** + * Utility Classes + * -------------------------------------------------- + */ +.hide { + display: none; } + +.opacity-hide { + opacity: 0; } + +.grade-b .opacity-hide, +.grade-c .opacity-hide { + opacity: 1; + display: none; } + +.show { + display: block; } + +.opacity-show { + opacity: 1; } + +.invisible { + visibility: hidden; } + +.keyboard-open .hide-on-keyboard-open { + display: none; } + +.keyboard-open .tabs.hide-on-keyboard-open + .pane .has-tabs, +.keyboard-open .bar-footer.hide-on-keyboard-open + .pane .has-footer { + bottom: 0; } + +.inline { + display: inline-block; } + +.disable-pointer-events { + pointer-events: none; } + +.enable-pointer-events { + pointer-events: auto; } + +.disable-user-behavior { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-touch-callout: none; + -webkit-tap-highlight-color: transparent; + -webkit-tap-highlight-color: transparent; + -webkit-user-drag: none; + -ms-touch-action: none; + -ms-content-zooming: none; } + +.click-block { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + opacity: 0; + z-index: 99999; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + overflow: hidden; } + +.click-block-hide { + -webkit-transform: translate3d(-9999px, 0, 0); + transform: translate3d(-9999px, 0, 0); } + +.no-resize { + resize: none; } + +.block { + display: block; + clear: both; } + .block:after { + display: block; + visibility: hidden; + clear: both; + height: 0; + content: "."; } + +.full-image { + width: 100%; } + +.clearfix { + *zoom: 1; } + .clearfix:before, .clearfix:after { + display: table; + content: ""; + line-height: 0; } + .clearfix:after { + clear: both; } + +/** + * Content Padding + * -------------------------------------------------- + */ +.padding { + padding: 10px; } + +.padding-top, +.padding-vertical { + padding-top: 10px; } + +.padding-right, +.padding-horizontal { + padding-right: 10px; } + +.padding-bottom, +.padding-vertical { + padding-bottom: 10px; } + +.padding-left, +.padding-horizontal { + padding-left: 10px; } + +/** + * Scrollable iFrames + * -------------------------------------------------- + */ +.iframe-wrapper { + position: fixed; + -webkit-overflow-scrolling: touch; + overflow: scroll; } + .iframe-wrapper iframe { + height: 100%; + width: 100%; } + +/** + * Rounded + * -------------------------------------------------- + */ +.rounded { + border-radius: 4px; } + +/** + * Utility Colors + * -------------------------------------------------- + * Utility colors are added to help set a naming convention. You'll + * notice we purposely do not use words like "red" or "blue", but + * instead have colors which represent an emotion or generic theme. + */ +.light, a.light { + color: #fff; } + +.light-bg { + background-color: #fff; } + +.light-border { + border-color: #ddd; } + +.stable, a.stable { + color: #f8f8f8; } + +.stable-bg { + background-color: #f8f8f8; } + +.stable-border { + border-color: #b2b2b2; } + +.positive, a.positive { + color: #387ef5; } + +.positive-bg { + background-color: #387ef5; } + +.positive-border { + border-color: #0c60ee; } + +.calm, a.calm { + color: #11c1f3; } + +.calm-bg { + background-color: #11c1f3; } + +.calm-border { + border-color: #0a9dc7; } + +.assertive, a.assertive { + color: #ef473a; } + +.assertive-bg { + background-color: #ef473a; } + +.assertive-border { + border-color: #e42112; } + +.balanced, a.balanced { + color: #33cd5f; } + +.balanced-bg { + background-color: #33cd5f; } + +.balanced-border { + border-color: #28a54c; } + +.energized, a.energized { + color: #ffc900; } + +.energized-bg { + background-color: #ffc900; } + +.energized-border { + border-color: #e6b500; } + +.royal, a.royal { + color: #886aea; } + +.royal-bg { + background-color: #886aea; } + +.royal-border { + border-color: #6b46e5; } + +.dark, a.dark { + color: #444; } + +.dark-bg { + background-color: #444; } + +.dark-border { + border-color: #111; } + +[collection-repeat] { + /* Position is set by transforms */ + left: 0 !important; + top: 0 !important; + position: absolute !important; + z-index: 1; } + +.collection-repeat-container { + position: relative; + z-index: 1; } + +.collection-repeat-after-container { + z-index: 0; + display: block; + /* when scrolling horizontally, make sure the after container doesn't take up 100% width */ } + .collection-repeat-after-container.horizontal { + display: inline-block; } + +[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, +.x-ng-cloak, .ng-hide:not(.ng-hide-animate) { + display: none !important; } + +/** + * Platform + * -------------------------------------------------- + * Platform specific tweaks + */ +.platform-ios.platform-cordova:not(.fullscreen) .bar-header:not(.bar-subheader) { + height: 64px; } + .platform-ios.platform-cordova:not(.fullscreen) .bar-header:not(.bar-subheader).item-input-inset .item-input-wrapper { + margin-top: 19px !important; } + .platform-ios.platform-cordova:not(.fullscreen) .bar-header:not(.bar-subheader) > * { + margin-top: 20px; } + +.platform-ios.platform-cordova:not(.fullscreen) .tabs-top > .tabs, +.platform-ios.platform-cordova:not(.fullscreen) .tabs.tabs-top { + top: 64px; } + +.platform-ios.platform-cordova:not(.fullscreen) .has-header, +.platform-ios.platform-cordova:not(.fullscreen) .bar-subheader { + top: 64px; } + +.platform-ios.platform-cordova:not(.fullscreen) .has-subheader { + top: 108px; } + +.platform-ios.platform-cordova:not(.fullscreen) .has-header.has-tabs-top { + top: 113px; } + +.platform-ios.platform-cordova:not(.fullscreen) .has-header.has-subheader.has-tabs-top { + top: 157px; } + +.platform-ios.platform-cordova .popover .bar-header:not(.bar-subheader) { + height: 44px; } + .platform-ios.platform-cordova .popover .bar-header:not(.bar-subheader).item-input-inset .item-input-wrapper { + margin-top: -1px; } + .platform-ios.platform-cordova .popover .bar-header:not(.bar-subheader) > * { + margin-top: 0; } + +.platform-ios.platform-cordova .popover .has-header, +.platform-ios.platform-cordova .popover .bar-subheader { + top: 44px; } + +.platform-ios.platform-cordova .popover .has-subheader { + top: 88px; } + +.platform-ios.platform-cordova.status-bar-hide { + margin-bottom: 20px; } + +@media (orientation: landscape) { + .platform-ios.platform-browser.platform-ipad { + position: fixed; } } + +.platform-c:not(.enable-transitions) * { + -webkit-transition: none !important; + transition: none !important; } + +.slide-in-up { + -webkit-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); } + +.slide-in-up.ng-enter, +.slide-in-up > .ng-enter { + -webkit-transition: all cubic-bezier(0.1, 0.7, 0.1, 1) 400ms; + transition: all cubic-bezier(0.1, 0.7, 0.1, 1) 400ms; } + +.slide-in-up.ng-enter-active, +.slide-in-up > .ng-enter-active { + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); } + +.slide-in-up.ng-leave, +.slide-in-up > .ng-leave { + -webkit-transition: all ease-in-out 250ms; + transition: all ease-in-out 250ms; } + +@-webkit-keyframes scaleOut { + from { + -webkit-transform: scale(1); + opacity: 1; } + to { + -webkit-transform: scale(0.8); + opacity: 0; } } + +@keyframes scaleOut { + from { + transform: scale(1); + opacity: 1; } + to { + transform: scale(0.8); + opacity: 0; } } + +@-webkit-keyframes superScaleIn { + from { + -webkit-transform: scale(1.2); + opacity: 0; } + to { + -webkit-transform: scale(1); + opacity: 1; } } + +@keyframes superScaleIn { + from { + transform: scale(1.2); + opacity: 0; } + to { + transform: scale(1); + opacity: 1; } } + +[nav-view-transition="ios"] [nav-view="entering"], +[nav-view-transition="ios"] [nav-view="leaving"] { + -webkit-transition-duration: 500ms; + transition-duration: 500ms; + -webkit-transition-timing-function: cubic-bezier(0.36, 0.66, 0.04, 1); + transition-timing-function: cubic-bezier(0.36, 0.66, 0.04, 1); + -webkit-transition-property: opacity, -webkit-transform, box-shadow; + transition-property: opacity, transform, box-shadow; } + +[nav-view-transition="ios"][nav-view-direction="forward"], [nav-view-transition="ios"][nav-view-direction="back"] { + background-color: #000; } + +[nav-view-transition="ios"] [nav-view="active"], +[nav-view-transition="ios"][nav-view-direction="forward"] [nav-view="entering"], +[nav-view-transition="ios"][nav-view-direction="back"] [nav-view="leaving"] { + z-index: 3; } + +[nav-view-transition="ios"][nav-view-direction="back"] [nav-view="entering"], +[nav-view-transition="ios"][nav-view-direction="forward"] [nav-view="leaving"] { + z-index: 2; } + +[nav-bar-transition="ios"] .title, +[nav-bar-transition="ios"] .buttons, +[nav-bar-transition="ios"] .back-text { + -webkit-transition-duration: 500ms; + transition-duration: 500ms; + -webkit-transition-timing-function: cubic-bezier(0.36, 0.66, 0.04, 1); + transition-timing-function: cubic-bezier(0.36, 0.66, 0.04, 1); + -webkit-transition-property: opacity, -webkit-transform; + transition-property: opacity, transform; } + +[nav-bar-transition="ios"] [nav-bar="active"], +[nav-bar-transition="ios"] [nav-bar="entering"] { + z-index: 10; } + [nav-bar-transition="ios"] [nav-bar="active"] .bar, + [nav-bar-transition="ios"] [nav-bar="entering"] .bar { + background: transparent; } + +[nav-bar-transition="ios"] [nav-bar="cached"] { + display: block; } + [nav-bar-transition="ios"] [nav-bar="cached"] .header-item { + display: none; } + +[nav-view-transition="android"] [nav-view="entering"], +[nav-view-transition="android"] [nav-view="leaving"] { + -webkit-transition-duration: 200ms; + transition-duration: 200ms; + -webkit-transition-timing-function: cubic-bezier(0.4, 0.6, 0.2, 1); + transition-timing-function: cubic-bezier(0.4, 0.6, 0.2, 1); + -webkit-transition-property: -webkit-transform; + transition-property: transform; } + +[nav-view-transition="android"] [nav-view="active"], +[nav-view-transition="android"][nav-view-direction="forward"] [nav-view="entering"], +[nav-view-transition="android"][nav-view-direction="back"] [nav-view="leaving"] { + z-index: 3; } + +[nav-view-transition="android"][nav-view-direction="back"] [nav-view="entering"], +[nav-view-transition="android"][nav-view-direction="forward"] [nav-view="leaving"] { + z-index: 2; } + +[nav-bar-transition="android"] .title, +[nav-bar-transition="android"] .buttons { + -webkit-transition-duration: 200ms; + transition-duration: 200ms; + -webkit-transition-timing-function: cubic-bezier(0.4, 0.6, 0.2, 1); + transition-timing-function: cubic-bezier(0.4, 0.6, 0.2, 1); + -webkit-transition-property: opacity; + transition-property: opacity; } + +[nav-bar-transition="android"] [nav-bar="active"], +[nav-bar-transition="android"] [nav-bar="entering"] { + z-index: 10; } + [nav-bar-transition="android"] [nav-bar="active"] .bar, + [nav-bar-transition="android"] [nav-bar="entering"] .bar { + background: transparent; } + +[nav-bar-transition="android"] [nav-bar="cached"] { + display: block; } + [nav-bar-transition="android"] [nav-bar="cached"] .header-item { + display: none; } + +[nav-swipe="fast"] [nav-view], +[nav-swipe="fast"] .title, +[nav-swipe="fast"] .buttons, +[nav-swipe="fast"] .back-text { + -webkit-transition-duration: 50ms; + transition-duration: 50ms; + -webkit-transition-timing-function: linear; + transition-timing-function: linear; } + +[nav-swipe="slow"] [nav-view], +[nav-swipe="slow"] .title, +[nav-swipe="slow"] .buttons, +[nav-swipe="slow"] .back-text { + -webkit-transition-duration: 160ms; + transition-duration: 160ms; + -webkit-transition-timing-function: linear; + transition-timing-function: linear; } + +[nav-view="cached"], +[nav-bar="cached"] { + display: none; } + +[nav-view="stage"] { + opacity: 0; + -webkit-transition-duration: 0; + transition-duration: 0; } + +[nav-bar="stage"] .title, +[nav-bar="stage"] .buttons, +[nav-bar="stage"] .back-text { + position: absolute; + opacity: 0; + -webkit-transition-duration: 0s; + transition-duration: 0s; } diff --git a/www/lib/ionic/css/ionic.min.css b/www/lib/ionic/css/ionic.min.css new file mode 100644 index 0000000..5dddf27 --- /dev/null +++ b/www/lib/ionic/css/ionic.min.css @@ -0,0 +1,23 @@ +@charset "UTF-8";/*! + * Copyright 2015 Drifty Co. + * http://drifty.com/ + * + * Ionic, v1.3.1 + * A powerful HTML5 mobile app framework. + * http://ionicframework.com/ + * + * By @maxlynch, @benjsperry, @adamdbradley <3 + * + * Licensed under the MIT license. Please see LICENSE for more information. + * + *//*! + Ionicons, v2.0.1 + Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ + https://twitter.com/benjsperry https://twitter.com/ionicframework + MIT License: https://github.com/driftyco/ionicons + + Android-style icons originally built by Google’s + Material Design Icons: https://github.com/google/material-design-icons + used under CC BY http://creativecommons.org/licenses/by/4.0/ + Modified icons to fit ionicon’s grid from original. +*/@font-face{font-family:Ionicons;src:url(../fonts/ionicons.eot?v=2.0.1);src:url(../fonts/ionicons.eot?v=2.0.1#iefix) format("embedded-opentype"),url(../fonts/ionicons.ttf?v=2.0.1) format("truetype"),url(../fonts/ionicons.woff?v=2.0.1) format("woff"),url(../fonts/ionicons.woff) format("woff"),url(../fonts/ionicons.svg?v=2.0.1#Ionicons) format("svg");font-weight:400;font-style:normal}.ion,.ion-alert-circled:before,.ion-alert:before,.ion-android-add-circle:before,.ion-android-add:before,.ion-android-alarm-clock:before,.ion-android-alert:before,.ion-android-apps:before,.ion-android-archive:before,.ion-android-arrow-back:before,.ion-android-arrow-down:before,.ion-android-arrow-dropdown-circle:before,.ion-android-arrow-dropdown:before,.ion-android-arrow-dropleft-circle:before,.ion-android-arrow-dropleft:before,.ion-android-arrow-dropright-circle:before,.ion-android-arrow-dropright:before,.ion-android-arrow-dropup-circle:before,.ion-android-arrow-dropup:before,.ion-android-arrow-forward:before,.ion-android-arrow-up:before,.ion-android-attach:before,.ion-android-bar:before,.ion-android-bicycle:before,.ion-android-boat:before,.ion-android-bookmark:before,.ion-android-bulb:before,.ion-android-bus:before,.ion-android-calendar:before,.ion-android-call:before,.ion-android-camera:before,.ion-android-cancel:before,.ion-android-car:before,.ion-android-cart:before,.ion-android-chat:before,.ion-android-checkbox-blank:before,.ion-android-checkbox-outline-blank:before,.ion-android-checkbox-outline:before,.ion-android-checkbox:before,.ion-android-checkmark-circle:before,.ion-android-clipboard:before,.ion-android-close:before,.ion-android-cloud-circle:before,.ion-android-cloud-done:before,.ion-android-cloud-outline:before,.ion-android-cloud:before,.ion-android-color-palette:before,.ion-android-compass:before,.ion-android-contact:before,.ion-android-contacts:before,.ion-android-contract:before,.ion-android-create:before,.ion-android-delete:before,.ion-android-desktop:before,.ion-android-document:before,.ion-android-done-all:before,.ion-android-done:before,.ion-android-download:before,.ion-android-drafts:before,.ion-android-exit:before,.ion-android-expand:before,.ion-android-favorite-outline:before,.ion-android-favorite:before,.ion-android-film:before,.ion-android-folder-open:before,.ion-android-folder:before,.ion-android-funnel:before,.ion-android-globe:before,.ion-android-hand:before,.ion-android-hangout:before,.ion-android-happy:before,.ion-android-home:before,.ion-android-image:before,.ion-android-laptop:before,.ion-android-list:before,.ion-android-locate:before,.ion-android-lock:before,.ion-android-mail:before,.ion-android-map:before,.ion-android-menu:before,.ion-android-microphone-off:before,.ion-android-microphone:before,.ion-android-more-horizontal:before,.ion-android-more-vertical:before,.ion-android-navigate:before,.ion-android-notifications-none:before,.ion-android-notifications-off:before,.ion-android-notifications:before,.ion-android-open:before,.ion-android-options:before,.ion-android-people:before,.ion-android-person-add:before,.ion-android-person:before,.ion-android-phone-landscape:before,.ion-android-phone-portrait:before,.ion-android-pin:before,.ion-android-plane:before,.ion-android-playstore:before,.ion-android-print:before,.ion-android-radio-button-off:before,.ion-android-radio-button-on:before,.ion-android-refresh:before,.ion-android-remove-circle:before,.ion-android-remove:before,.ion-android-restaurant:before,.ion-android-sad:before,.ion-android-search:before,.ion-android-send:before,.ion-android-settings:before,.ion-android-share-alt:before,.ion-android-share:before,.ion-android-star-half:before,.ion-android-star-outline:before,.ion-android-star:before,.ion-android-stopwatch:before,.ion-android-subway:before,.ion-android-sunny:before,.ion-android-sync:before,.ion-android-textsms:before,.ion-android-time:before,.ion-android-train:before,.ion-android-unlock:before,.ion-android-upload:before,.ion-android-volume-down:before,.ion-android-volume-mute:before,.ion-android-volume-off:before,.ion-android-volume-up:before,.ion-android-walk:before,.ion-android-warning:before,.ion-android-watch:before,.ion-android-wifi:before,.ion-aperture:before,.ion-archive:before,.ion-arrow-down-a:before,.ion-arrow-down-b:before,.ion-arrow-down-c:before,.ion-arrow-expand:before,.ion-arrow-graph-down-left:before,.ion-arrow-graph-down-right:before,.ion-arrow-graph-up-left:before,.ion-arrow-graph-up-right:before,.ion-arrow-left-a:before,.ion-arrow-left-b:before,.ion-arrow-left-c:before,.ion-arrow-move:before,.ion-arrow-resize:before,.ion-arrow-return-left:before,.ion-arrow-return-right:before,.ion-arrow-right-a:before,.ion-arrow-right-b:before,.ion-arrow-right-c:before,.ion-arrow-shrink:before,.ion-arrow-swap:before,.ion-arrow-up-a:before,.ion-arrow-up-b:before,.ion-arrow-up-c:before,.ion-asterisk:before,.ion-at:before,.ion-backspace-outline:before,.ion-backspace:before,.ion-bag:before,.ion-battery-charging:before,.ion-battery-empty:before,.ion-battery-full:before,.ion-battery-half:before,.ion-battery-low:before,.ion-beaker:before,.ion-beer:before,.ion-bluetooth:before,.ion-bonfire:before,.ion-bookmark:before,.ion-bowtie:before,.ion-briefcase:before,.ion-bug:before,.ion-calculator:before,.ion-calendar:before,.ion-camera:before,.ion-card:before,.ion-cash:before,.ion-chatbox-working:before,.ion-chatbox:before,.ion-chatboxes:before,.ion-chatbubble-working:before,.ion-chatbubble:before,.ion-chatbubbles:before,.ion-checkmark-circled:before,.ion-checkmark-round:before,.ion-checkmark:before,.ion-chevron-down:before,.ion-chevron-left:before,.ion-chevron-right:before,.ion-chevron-up:before,.ion-clipboard:before,.ion-clock:before,.ion-close-circled:before,.ion-close-round:before,.ion-close:before,.ion-closed-captioning:before,.ion-cloud:before,.ion-code-download:before,.ion-code-working:before,.ion-code:before,.ion-coffee:before,.ion-compass:before,.ion-compose:before,.ion-connection-bars:before,.ion-contrast:before,.ion-crop:before,.ion-cube:before,.ion-disc:before,.ion-document-text:before,.ion-document:before,.ion-drag:before,.ion-earth:before,.ion-easel:before,.ion-edit:before,.ion-egg:before,.ion-eject:before,.ion-email-unread:before,.ion-email:before,.ion-erlenmeyer-flask-bubbles:before,.ion-erlenmeyer-flask:before,.ion-eye-disabled:before,.ion-eye:before,.ion-female:before,.ion-filing:before,.ion-film-marker:before,.ion-fireball:before,.ion-flag:before,.ion-flame:before,.ion-flash-off:before,.ion-flash:before,.ion-folder:before,.ion-fork-repo:before,.ion-fork:before,.ion-forward:before,.ion-funnel:before,.ion-gear-a:before,.ion-gear-b:before,.ion-grid:before,.ion-hammer:before,.ion-happy-outline:before,.ion-happy:before,.ion-headphone:before,.ion-heart-broken:before,.ion-heart:before,.ion-help-buoy:before,.ion-help-circled:before,.ion-help:before,.ion-home:before,.ion-icecream:before,.ion-image:before,.ion-images:before,.ion-information-circled:before,.ion-information:before,.ion-ionic:before,.ion-ios-alarm-outline:before,.ion-ios-alarm:before,.ion-ios-albums-outline:before,.ion-ios-albums:before,.ion-ios-americanfootball-outline:before,.ion-ios-americanfootball:before,.ion-ios-analytics-outline:before,.ion-ios-analytics:before,.ion-ios-arrow-back:before,.ion-ios-arrow-down:before,.ion-ios-arrow-forward:before,.ion-ios-arrow-left:before,.ion-ios-arrow-right:before,.ion-ios-arrow-thin-down:before,.ion-ios-arrow-thin-left:before,.ion-ios-arrow-thin-right:before,.ion-ios-arrow-thin-up:before,.ion-ios-arrow-up:before,.ion-ios-at-outline:before,.ion-ios-at:before,.ion-ios-barcode-outline:before,.ion-ios-barcode:before,.ion-ios-baseball-outline:before,.ion-ios-baseball:before,.ion-ios-basketball-outline:before,.ion-ios-basketball:before,.ion-ios-bell-outline:before,.ion-ios-bell:before,.ion-ios-body-outline:before,.ion-ios-body:before,.ion-ios-bolt-outline:before,.ion-ios-bolt:before,.ion-ios-book-outline:before,.ion-ios-book:before,.ion-ios-bookmarks-outline:before,.ion-ios-bookmarks:before,.ion-ios-box-outline:before,.ion-ios-box:before,.ion-ios-briefcase-outline:before,.ion-ios-briefcase:before,.ion-ios-browsers-outline:before,.ion-ios-browsers:before,.ion-ios-calculator-outline:before,.ion-ios-calculator:before,.ion-ios-calendar-outline:before,.ion-ios-calendar:before,.ion-ios-camera-outline:before,.ion-ios-camera:before,.ion-ios-cart-outline:before,.ion-ios-cart:before,.ion-ios-chatboxes-outline:before,.ion-ios-chatboxes:before,.ion-ios-chatbubble-outline:before,.ion-ios-chatbubble:before,.ion-ios-checkmark-empty:before,.ion-ios-checkmark-outline:before,.ion-ios-checkmark:before,.ion-ios-circle-filled:before,.ion-ios-circle-outline:before,.ion-ios-clock-outline:before,.ion-ios-clock:before,.ion-ios-close-empty:before,.ion-ios-close-outline:before,.ion-ios-close:before,.ion-ios-cloud-download-outline:before,.ion-ios-cloud-download:before,.ion-ios-cloud-outline:before,.ion-ios-cloud-upload-outline:before,.ion-ios-cloud-upload:before,.ion-ios-cloud:before,.ion-ios-cloudy-night-outline:before,.ion-ios-cloudy-night:before,.ion-ios-cloudy-outline:before,.ion-ios-cloudy:before,.ion-ios-cog-outline:before,.ion-ios-cog:before,.ion-ios-color-filter-outline:before,.ion-ios-color-filter:before,.ion-ios-color-wand-outline:before,.ion-ios-color-wand:before,.ion-ios-compose-outline:before,.ion-ios-compose:before,.ion-ios-contact-outline:before,.ion-ios-contact:before,.ion-ios-copy-outline:before,.ion-ios-copy:before,.ion-ios-crop-strong:before,.ion-ios-crop:before,.ion-ios-download-outline:before,.ion-ios-download:before,.ion-ios-drag:before,.ion-ios-email-outline:before,.ion-ios-email:before,.ion-ios-eye-outline:before,.ion-ios-eye:before,.ion-ios-fastforward-outline:before,.ion-ios-fastforward:before,.ion-ios-filing-outline:before,.ion-ios-filing:before,.ion-ios-film-outline:before,.ion-ios-film:before,.ion-ios-flag-outline:before,.ion-ios-flag:before,.ion-ios-flame-outline:before,.ion-ios-flame:before,.ion-ios-flask-outline:before,.ion-ios-flask:before,.ion-ios-flower-outline:before,.ion-ios-flower:before,.ion-ios-folder-outline:before,.ion-ios-folder:before,.ion-ios-football-outline:before,.ion-ios-football:before,.ion-ios-game-controller-a-outline:before,.ion-ios-game-controller-a:before,.ion-ios-game-controller-b-outline:before,.ion-ios-game-controller-b:before,.ion-ios-gear-outline:before,.ion-ios-gear:before,.ion-ios-glasses-outline:before,.ion-ios-glasses:before,.ion-ios-grid-view-outline:before,.ion-ios-grid-view:before,.ion-ios-heart-outline:before,.ion-ios-heart:before,.ion-ios-help-empty:before,.ion-ios-help-outline:before,.ion-ios-help:before,.ion-ios-home-outline:before,.ion-ios-home:before,.ion-ios-infinite-outline:before,.ion-ios-infinite:before,.ion-ios-information-empty:before,.ion-ios-information-outline:before,.ion-ios-information:before,.ion-ios-ionic-outline:before,.ion-ios-keypad-outline:before,.ion-ios-keypad:before,.ion-ios-lightbulb-outline:before,.ion-ios-lightbulb:before,.ion-ios-list-outline:before,.ion-ios-list:before,.ion-ios-location-outline:before,.ion-ios-location:before,.ion-ios-locked-outline:before,.ion-ios-locked:before,.ion-ios-loop-strong:before,.ion-ios-loop:before,.ion-ios-medical-outline:before,.ion-ios-medical:before,.ion-ios-medkit-outline:before,.ion-ios-medkit:before,.ion-ios-mic-off:before,.ion-ios-mic-outline:before,.ion-ios-mic:before,.ion-ios-minus-empty:before,.ion-ios-minus-outline:before,.ion-ios-minus:before,.ion-ios-monitor-outline:before,.ion-ios-monitor:before,.ion-ios-moon-outline:before,.ion-ios-moon:before,.ion-ios-more-outline:before,.ion-ios-more:before,.ion-ios-musical-note:before,.ion-ios-musical-notes:before,.ion-ios-navigate-outline:before,.ion-ios-navigate:before,.ion-ios-nutrition-outline:before,.ion-ios-nutrition:before,.ion-ios-paper-outline:before,.ion-ios-paper:before,.ion-ios-paperplane-outline:before,.ion-ios-paperplane:before,.ion-ios-partlysunny-outline:before,.ion-ios-partlysunny:before,.ion-ios-pause-outline:before,.ion-ios-pause:before,.ion-ios-paw-outline:before,.ion-ios-paw:before,.ion-ios-people-outline:before,.ion-ios-people:before,.ion-ios-person-outline:before,.ion-ios-person:before,.ion-ios-personadd-outline:before,.ion-ios-personadd:before,.ion-ios-photos-outline:before,.ion-ios-photos:before,.ion-ios-pie-outline:before,.ion-ios-pie:before,.ion-ios-pint-outline:before,.ion-ios-pint:before,.ion-ios-play-outline:before,.ion-ios-play:before,.ion-ios-plus-empty:before,.ion-ios-plus-outline:before,.ion-ios-plus:before,.ion-ios-pricetag-outline:before,.ion-ios-pricetag:before,.ion-ios-pricetags-outline:before,.ion-ios-pricetags:before,.ion-ios-printer-outline:before,.ion-ios-printer:before,.ion-ios-pulse-strong:before,.ion-ios-pulse:before,.ion-ios-rainy-outline:before,.ion-ios-rainy:before,.ion-ios-recording-outline:before,.ion-ios-recording:before,.ion-ios-redo-outline:before,.ion-ios-redo:before,.ion-ios-refresh-empty:before,.ion-ios-refresh-outline:before,.ion-ios-refresh:before,.ion-ios-reload:before,.ion-ios-reverse-camera-outline:before,.ion-ios-reverse-camera:before,.ion-ios-rewind-outline:before,.ion-ios-rewind:before,.ion-ios-rose-outline:before,.ion-ios-rose:before,.ion-ios-search-strong:before,.ion-ios-search:before,.ion-ios-settings-strong:before,.ion-ios-settings:before,.ion-ios-shuffle-strong:before,.ion-ios-shuffle:before,.ion-ios-skipbackward-outline:before,.ion-ios-skipbackward:before,.ion-ios-skipforward-outline:before,.ion-ios-skipforward:before,.ion-ios-snowy:before,.ion-ios-speedometer-outline:before,.ion-ios-speedometer:before,.ion-ios-star-half:before,.ion-ios-star-outline:before,.ion-ios-star:before,.ion-ios-stopwatch-outline:before,.ion-ios-stopwatch:before,.ion-ios-sunny-outline:before,.ion-ios-sunny:before,.ion-ios-telephone-outline:before,.ion-ios-telephone:before,.ion-ios-tennisball-outline:before,.ion-ios-tennisball:before,.ion-ios-thunderstorm-outline:before,.ion-ios-thunderstorm:before,.ion-ios-time-outline:before,.ion-ios-time:before,.ion-ios-timer-outline:before,.ion-ios-timer:before,.ion-ios-toggle-outline:before,.ion-ios-toggle:before,.ion-ios-trash-outline:before,.ion-ios-trash:before,.ion-ios-undo-outline:before,.ion-ios-undo:before,.ion-ios-unlocked-outline:before,.ion-ios-unlocked:before,.ion-ios-upload-outline:before,.ion-ios-upload:before,.ion-ios-videocam-outline:before,.ion-ios-videocam:before,.ion-ios-volume-high:before,.ion-ios-volume-low:before,.ion-ios-wineglass-outline:before,.ion-ios-wineglass:before,.ion-ios-world-outline:before,.ion-ios-world:before,.ion-ipad:before,.ion-iphone:before,.ion-ipod:before,.ion-jet:before,.ion-key:before,.ion-knife:before,.ion-laptop:before,.ion-leaf:before,.ion-levels:before,.ion-lightbulb:before,.ion-link:before,.ion-load-a:before,.ion-load-b:before,.ion-load-c:before,.ion-load-d:before,.ion-location:before,.ion-lock-combination:before,.ion-locked:before,.ion-log-in:before,.ion-log-out:before,.ion-loop:before,.ion-magnet:before,.ion-male:before,.ion-man:before,.ion-map:before,.ion-medkit:before,.ion-merge:before,.ion-mic-a:before,.ion-mic-b:before,.ion-mic-c:before,.ion-minus-circled:before,.ion-minus-round:before,.ion-minus:before,.ion-model-s:before,.ion-monitor:before,.ion-more:before,.ion-mouse:before,.ion-music-note:before,.ion-navicon-round:before,.ion-navicon:before,.ion-navigate:before,.ion-network:before,.ion-no-smoking:before,.ion-nuclear:before,.ion-outlet:before,.ion-paintbrush:before,.ion-paintbucket:before,.ion-paper-airplane:before,.ion-paperclip:before,.ion-pause:before,.ion-person-add:before,.ion-person-stalker:before,.ion-person:before,.ion-pie-graph:before,.ion-pin:before,.ion-pinpoint:before,.ion-pizza:before,.ion-plane:before,.ion-planet:before,.ion-play:before,.ion-playstation:before,.ion-plus-circled:before,.ion-plus-round:before,.ion-plus:before,.ion-podium:before,.ion-pound:before,.ion-power:before,.ion-pricetag:before,.ion-pricetags:before,.ion-printer:before,.ion-pull-request:before,.ion-qr-scanner:before,.ion-quote:before,.ion-radio-waves:before,.ion-record:before,.ion-refresh:before,.ion-reply-all:before,.ion-reply:before,.ion-ribbon-a:before,.ion-ribbon-b:before,.ion-sad-outline:before,.ion-sad:before,.ion-scissors:before,.ion-search:before,.ion-settings:before,.ion-share:before,.ion-shuffle:before,.ion-skip-backward:before,.ion-skip-forward:before,.ion-social-android-outline:before,.ion-social-android:before,.ion-social-angular-outline:before,.ion-social-angular:before,.ion-social-apple-outline:before,.ion-social-apple:before,.ion-social-bitcoin-outline:before,.ion-social-bitcoin:before,.ion-social-buffer-outline:before,.ion-social-buffer:before,.ion-social-chrome-outline:before,.ion-social-chrome:before,.ion-social-codepen-outline:before,.ion-social-codepen:before,.ion-social-css3-outline:before,.ion-social-css3:before,.ion-social-designernews-outline:before,.ion-social-designernews:before,.ion-social-dribbble-outline:before,.ion-social-dribbble:before,.ion-social-dropbox-outline:before,.ion-social-dropbox:before,.ion-social-euro-outline:before,.ion-social-euro:before,.ion-social-facebook-outline:before,.ion-social-facebook:before,.ion-social-foursquare-outline:before,.ion-social-foursquare:before,.ion-social-freebsd-devil:before,.ion-social-github-outline:before,.ion-social-github:before,.ion-social-google-outline:before,.ion-social-google:before,.ion-social-googleplus-outline:before,.ion-social-googleplus:before,.ion-social-hackernews-outline:before,.ion-social-hackernews:before,.ion-social-html5-outline:before,.ion-social-html5:before,.ion-social-instagram-outline:before,.ion-social-instagram:before,.ion-social-javascript-outline:before,.ion-social-javascript:before,.ion-social-linkedin-outline:before,.ion-social-linkedin:before,.ion-social-markdown:before,.ion-social-nodejs:before,.ion-social-octocat:before,.ion-social-pinterest-outline:before,.ion-social-pinterest:before,.ion-social-python:before,.ion-social-reddit-outline:before,.ion-social-reddit:before,.ion-social-rss-outline:before,.ion-social-rss:before,.ion-social-sass:before,.ion-social-skype-outline:before,.ion-social-skype:before,.ion-social-snapchat-outline:before,.ion-social-snapchat:before,.ion-social-tumblr-outline:before,.ion-social-tumblr:before,.ion-social-tux:before,.ion-social-twitch-outline:before,.ion-social-twitch:before,.ion-social-twitter-outline:before,.ion-social-twitter:before,.ion-social-usd-outline:before,.ion-social-usd:before,.ion-social-vimeo-outline:before,.ion-social-vimeo:before,.ion-social-whatsapp-outline:before,.ion-social-whatsapp:before,.ion-social-windows-outline:before,.ion-social-windows:before,.ion-social-wordpress-outline:before,.ion-social-wordpress:before,.ion-social-yahoo-outline:before,.ion-social-yahoo:before,.ion-social-yen-outline:before,.ion-social-yen:before,.ion-social-youtube-outline:before,.ion-social-youtube:before,.ion-soup-can-outline:before,.ion-soup-can:before,.ion-speakerphone:before,.ion-speedometer:before,.ion-spoon:before,.ion-star:before,.ion-stats-bars:before,.ion-steam:before,.ion-stop:before,.ion-thermometer:before,.ion-thumbsdown:before,.ion-thumbsup:before,.ion-toggle-filled:before,.ion-toggle:before,.ion-transgender:before,.ion-trash-a:before,.ion-trash-b:before,.ion-trophy:before,.ion-tshirt-outline:before,.ion-tshirt:before,.ion-umbrella:before,.ion-university:before,.ion-unlocked:before,.ion-upload:before,.ion-usb:before,.ion-videocamera:before,.ion-volume-high:before,.ion-volume-low:before,.ion-volume-medium:before,.ion-volume-mute:before,.ion-wand:before,.ion-waterdrop:before,.ion-wifi:before,.ion-wineglass:before,.ion-woman:before,.ion-wrench:before,.ion-xbox:before,.ionicons{display:inline-block;font-family:Ionicons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ion-alert:before{content:""}.ion-alert-circled:before{content:""}.ion-android-add:before{content:""}.ion-android-add-circle:before{content:""}.ion-android-alarm-clock:before{content:""}.ion-android-alert:before{content:""}.ion-android-apps:before{content:""}.ion-android-archive:before{content:""}.ion-android-arrow-back:before{content:""}.ion-android-arrow-down:before{content:""}.ion-android-arrow-dropdown:before{content:""}.ion-android-arrow-dropdown-circle:before{content:""}.ion-android-arrow-dropleft:before{content:""}.ion-android-arrow-dropleft-circle:before{content:""}.ion-android-arrow-dropright:before{content:""}.ion-android-arrow-dropright-circle:before{content:""}.ion-android-arrow-dropup:before{content:""}.ion-android-arrow-dropup-circle:before{content:""}.ion-android-arrow-forward:before{content:""}.ion-android-arrow-up:before{content:""}.ion-android-attach:before{content:""}.ion-android-bar:before{content:""}.ion-android-bicycle:before{content:""}.ion-android-boat:before{content:""}.ion-android-bookmark:before{content:""}.ion-android-bulb:before{content:""}.ion-android-bus:before{content:""}.ion-android-calendar:before{content:""}.ion-android-call:before{content:""}.ion-android-camera:before{content:""}.ion-android-cancel:before{content:""}.ion-android-car:before{content:""}.ion-android-cart:before{content:""}.ion-android-chat:before{content:""}.ion-android-checkbox:before{content:""}.ion-android-checkbox-blank:before{content:""}.ion-android-checkbox-outline:before{content:""}.ion-android-checkbox-outline-blank:before{content:""}.ion-android-checkmark-circle:before{content:""}.ion-android-clipboard:before{content:""}.ion-android-close:before{content:""}.ion-android-cloud:before{content:""}.ion-android-cloud-circle:before{content:""}.ion-android-cloud-done:before{content:""}.ion-android-cloud-outline:before{content:""}.ion-android-color-palette:before{content:""}.ion-android-compass:before{content:""}.ion-android-contact:before{content:""}.ion-android-contacts:before{content:""}.ion-android-contract:before{content:""}.ion-android-create:before{content:""}.ion-android-delete:before{content:""}.ion-android-desktop:before{content:""}.ion-android-document:before{content:""}.ion-android-done:before{content:""}.ion-android-done-all:before{content:""}.ion-android-download:before{content:""}.ion-android-drafts:before{content:""}.ion-android-exit:before{content:""}.ion-android-expand:before{content:""}.ion-android-favorite:before{content:""}.ion-android-favorite-outline:before{content:""}.ion-android-film:before{content:""}.ion-android-folder:before{content:""}.ion-android-folder-open:before{content:""}.ion-android-funnel:before{content:""}.ion-android-globe:before{content:""}.ion-android-hand:before{content:""}.ion-android-hangout:before{content:""}.ion-android-happy:before{content:""}.ion-android-home:before{content:""}.ion-android-image:before{content:""}.ion-android-laptop:before{content:""}.ion-android-list:before{content:""}.ion-android-locate:before{content:""}.ion-android-lock:before{content:""}.ion-android-mail:before{content:""}.ion-android-map:before{content:""}.ion-android-menu:before{content:""}.ion-android-microphone:before{content:""}.ion-android-microphone-off:before{content:""}.ion-android-more-horizontal:before{content:""}.ion-android-more-vertical:before{content:""}.ion-android-navigate:before{content:""}.ion-android-notifications:before{content:""}.ion-android-notifications-none:before{content:""}.ion-android-notifications-off:before{content:""}.ion-android-open:before{content:""}.ion-android-options:before{content:""}.ion-android-people:before{content:""}.ion-android-person:before{content:""}.ion-android-person-add:before{content:""}.ion-android-phone-landscape:before{content:""}.ion-android-phone-portrait:before{content:""}.ion-android-pin:before{content:""}.ion-android-plane:before{content:""}.ion-android-playstore:before{content:""}.ion-android-print:before{content:""}.ion-android-radio-button-off:before{content:""}.ion-android-radio-button-on:before{content:""}.ion-android-refresh:before{content:""}.ion-android-remove:before{content:""}.ion-android-remove-circle:before{content:""}.ion-android-restaurant:before{content:""}.ion-android-sad:before{content:""}.ion-android-search:before{content:""}.ion-android-send:before{content:""}.ion-android-settings:before{content:""}.ion-android-share:before{content:""}.ion-android-share-alt:before{content:""}.ion-android-star:before{content:""}.ion-android-star-half:before{content:""}.ion-android-star-outline:before{content:""}.ion-android-stopwatch:before{content:""}.ion-android-subway:before{content:""}.ion-android-sunny:before{content:""}.ion-android-sync:before{content:""}.ion-android-textsms:before{content:""}.ion-android-time:before{content:""}.ion-android-train:before{content:""}.ion-android-unlock:before{content:""}.ion-android-upload:before{content:""}.ion-android-volume-down:before{content:""}.ion-android-volume-mute:before{content:""}.ion-android-volume-off:before{content:""}.ion-android-volume-up:before{content:""}.ion-android-walk:before{content:""}.ion-android-warning:before{content:""}.ion-android-watch:before{content:""}.ion-android-wifi:before{content:""}.ion-aperture:before{content:""}.ion-archive:before{content:""}.ion-arrow-down-a:before{content:""}.ion-arrow-down-b:before{content:""}.ion-arrow-down-c:before{content:""}.ion-arrow-expand:before{content:""}.ion-arrow-graph-down-left:before{content:""}.ion-arrow-graph-down-right:before{content:""}.ion-arrow-graph-up-left:before{content:""}.ion-arrow-graph-up-right:before{content:""}.ion-arrow-left-a:before{content:""}.ion-arrow-left-b:before{content:""}.ion-arrow-left-c:before{content:""}.ion-arrow-move:before{content:""}.ion-arrow-resize:before{content:""}.ion-arrow-return-left:before{content:""}.ion-arrow-return-right:before{content:""}.ion-arrow-right-a:before{content:""}.ion-arrow-right-b:before{content:""}.ion-arrow-right-c:before{content:""}.ion-arrow-shrink:before{content:""}.ion-arrow-swap:before{content:""}.ion-arrow-up-a:before{content:""}.ion-arrow-up-b:before{content:""}.ion-arrow-up-c:before{content:""}.ion-asterisk:before{content:""}.ion-at:before{content:""}.ion-backspace:before{content:""}.ion-backspace-outline:before{content:""}.ion-bag:before{content:""}.ion-battery-charging:before{content:""}.ion-battery-empty:before{content:""}.ion-battery-full:before{content:""}.ion-battery-half:before{content:""}.ion-battery-low:before{content:""}.ion-beaker:before{content:""}.ion-beer:before{content:""}.ion-bluetooth:before{content:""}.ion-bonfire:before{content:""}.ion-bookmark:before{content:""}.ion-bowtie:before{content:""}.ion-briefcase:before{content:""}.ion-bug:before{content:""}.ion-calculator:before{content:""}.ion-calendar:before{content:""}.ion-camera:before{content:""}.ion-card:before{content:""}.ion-cash:before{content:""}.ion-chatbox:before{content:""}.ion-chatbox-working:before{content:""}.ion-chatboxes:before{content:""}.ion-chatbubble:before{content:""}.ion-chatbubble-working:before{content:""}.ion-chatbubbles:before{content:""}.ion-checkmark:before{content:""}.ion-checkmark-circled:before{content:""}.ion-checkmark-round:before{content:""}.ion-chevron-down:before{content:""}.ion-chevron-left:before{content:""}.ion-chevron-right:before{content:""}.ion-chevron-up:before{content:""}.ion-clipboard:before{content:""}.ion-clock:before{content:""}.ion-close:before{content:""}.ion-close-circled:before{content:""}.ion-close-round:before{content:""}.ion-closed-captioning:before{content:""}.ion-cloud:before{content:""}.ion-code:before{content:""}.ion-code-download:before{content:""}.ion-code-working:before{content:""}.ion-coffee:before{content:""}.ion-compass:before{content:""}.ion-compose:before{content:""}.ion-connection-bars:before{content:""}.ion-contrast:before{content:""}.ion-crop:before{content:""}.ion-cube:before{content:""}.ion-disc:before{content:""}.ion-document:before{content:""}.ion-document-text:before{content:""}.ion-drag:before{content:""}.ion-earth:before{content:""}.ion-easel:before{content:""}.ion-edit:before{content:""}.ion-egg:before{content:""}.ion-eject:before{content:""}.ion-email:before{content:""}.ion-email-unread:before{content:""}.ion-erlenmeyer-flask:before{content:""}.ion-erlenmeyer-flask-bubbles:before{content:""}.ion-eye:before{content:""}.ion-eye-disabled:before{content:""}.ion-female:before{content:""}.ion-filing:before{content:""}.ion-film-marker:before{content:""}.ion-fireball:before{content:""}.ion-flag:before{content:""}.ion-flame:before{content:""}.ion-flash:before{content:""}.ion-flash-off:before{content:""}.ion-folder:before{content:""}.ion-fork:before{content:""}.ion-fork-repo:before{content:""}.ion-forward:before{content:""}.ion-funnel:before{content:""}.ion-gear-a:before{content:""}.ion-gear-b:before{content:""}.ion-grid:before{content:""}.ion-hammer:before{content:""}.ion-happy:before{content:""}.ion-happy-outline:before{content:""}.ion-headphone:before{content:""}.ion-heart:before{content:""}.ion-heart-broken:before{content:""}.ion-help:before{content:""}.ion-help-buoy:before{content:""}.ion-help-circled:before{content:""}.ion-home:before{content:""}.ion-icecream:before{content:""}.ion-image:before{content:""}.ion-images:before{content:""}.ion-information:before{content:""}.ion-information-circled:before{content:""}.ion-ionic:before{content:""}.ion-ios-alarm:before{content:""}.ion-ios-alarm-outline:before{content:""}.ion-ios-albums:before{content:""}.ion-ios-albums-outline:before{content:""}.ion-ios-americanfootball:before{content:""}.ion-ios-americanfootball-outline:before{content:""}.ion-ios-analytics:before{content:""}.ion-ios-analytics-outline:before{content:""}.ion-ios-arrow-back:before{content:""}.ion-ios-arrow-down:before{content:""}.ion-ios-arrow-forward:before{content:""}.ion-ios-arrow-left:before{content:""}.ion-ios-arrow-right:before{content:""}.ion-ios-arrow-thin-down:before{content:""}.ion-ios-arrow-thin-left:before{content:""}.ion-ios-arrow-thin-right:before{content:""}.ion-ios-arrow-thin-up:before{content:""}.ion-ios-arrow-up:before{content:""}.ion-ios-at:before{content:""}.ion-ios-at-outline:before{content:""}.ion-ios-barcode:before{content:""}.ion-ios-barcode-outline:before{content:""}.ion-ios-baseball:before{content:""}.ion-ios-baseball-outline:before{content:""}.ion-ios-basketball:before{content:""}.ion-ios-basketball-outline:before{content:""}.ion-ios-bell:before{content:""}.ion-ios-bell-outline:before{content:""}.ion-ios-body:before{content:""}.ion-ios-body-outline:before{content:""}.ion-ios-bolt:before{content:""}.ion-ios-bolt-outline:before{content:""}.ion-ios-book:before{content:""}.ion-ios-book-outline:before{content:""}.ion-ios-bookmarks:before{content:""}.ion-ios-bookmarks-outline:before{content:""}.ion-ios-box:before{content:""}.ion-ios-box-outline:before{content:""}.ion-ios-briefcase:before{content:""}.ion-ios-briefcase-outline:before{content:""}.ion-ios-browsers:before{content:""}.ion-ios-browsers-outline:before{content:""}.ion-ios-calculator:before{content:""}.ion-ios-calculator-outline:before{content:""}.ion-ios-calendar:before{content:""}.ion-ios-calendar-outline:before{content:""}.ion-ios-camera:before{content:""}.ion-ios-camera-outline:before{content:""}.ion-ios-cart:before{content:""}.ion-ios-cart-outline:before{content:""}.ion-ios-chatboxes:before{content:""}.ion-ios-chatboxes-outline:before{content:""}.ion-ios-chatbubble:before{content:""}.ion-ios-chatbubble-outline:before{content:""}.ion-ios-checkmark:before{content:""}.ion-ios-checkmark-empty:before{content:""}.ion-ios-checkmark-outline:before{content:""}.ion-ios-circle-filled:before{content:""}.ion-ios-circle-outline:before{content:""}.ion-ios-clock:before{content:""}.ion-ios-clock-outline:before{content:""}.ion-ios-close:before{content:""}.ion-ios-close-empty:before{content:""}.ion-ios-close-outline:before{content:""}.ion-ios-cloud:before{content:""}.ion-ios-cloud-download:before{content:""}.ion-ios-cloud-download-outline:before{content:""}.ion-ios-cloud-outline:before{content:""}.ion-ios-cloud-upload:before{content:""}.ion-ios-cloud-upload-outline:before{content:""}.ion-ios-cloudy:before{content:""}.ion-ios-cloudy-night:before{content:""}.ion-ios-cloudy-night-outline:before{content:""}.ion-ios-cloudy-outline:before{content:""}.ion-ios-cog:before{content:""}.ion-ios-cog-outline:before{content:""}.ion-ios-color-filter:before{content:""}.ion-ios-color-filter-outline:before{content:""}.ion-ios-color-wand:before{content:""}.ion-ios-color-wand-outline:before{content:""}.ion-ios-compose:before{content:""}.ion-ios-compose-outline:before{content:""}.ion-ios-contact:before{content:""}.ion-ios-contact-outline:before{content:""}.ion-ios-copy:before{content:""}.ion-ios-copy-outline:before{content:""}.ion-ios-crop:before{content:""}.ion-ios-crop-strong:before{content:""}.ion-ios-download:before{content:""}.ion-ios-download-outline:before{content:""}.ion-ios-drag:before{content:""}.ion-ios-email:before{content:""}.ion-ios-email-outline:before{content:""}.ion-ios-eye:before{content:""}.ion-ios-eye-outline:before{content:""}.ion-ios-fastforward:before{content:""}.ion-ios-fastforward-outline:before{content:""}.ion-ios-filing:before{content:""}.ion-ios-filing-outline:before{content:""}.ion-ios-film:before{content:""}.ion-ios-film-outline:before{content:""}.ion-ios-flag:before{content:""}.ion-ios-flag-outline:before{content:""}.ion-ios-flame:before{content:""}.ion-ios-flame-outline:before{content:""}.ion-ios-flask:before{content:""}.ion-ios-flask-outline:before{content:""}.ion-ios-flower:before{content:""}.ion-ios-flower-outline:before{content:""}.ion-ios-folder:before{content:""}.ion-ios-folder-outline:before{content:""}.ion-ios-football:before{content:""}.ion-ios-football-outline:before{content:""}.ion-ios-game-controller-a:before{content:""}.ion-ios-game-controller-a-outline:before{content:""}.ion-ios-game-controller-b:before{content:""}.ion-ios-game-controller-b-outline:before{content:""}.ion-ios-gear:before{content:""}.ion-ios-gear-outline:before{content:""}.ion-ios-glasses:before{content:""}.ion-ios-glasses-outline:before{content:""}.ion-ios-grid-view:before{content:""}.ion-ios-grid-view-outline:before{content:""}.ion-ios-heart:before{content:""}.ion-ios-heart-outline:before{content:""}.ion-ios-help:before{content:""}.ion-ios-help-empty:before{content:""}.ion-ios-help-outline:before{content:""}.ion-ios-home:before{content:""}.ion-ios-home-outline:before{content:""}.ion-ios-infinite:before{content:""}.ion-ios-infinite-outline:before{content:""}.ion-ios-information:before{content:""}.ion-ios-information-empty:before{content:""}.ion-ios-information-outline:before{content:""}.ion-ios-ionic-outline:before{content:""}.ion-ios-keypad:before{content:""}.ion-ios-keypad-outline:before{content:""}.ion-ios-lightbulb:before{content:""}.ion-ios-lightbulb-outline:before{content:""}.ion-ios-list:before{content:""}.ion-ios-list-outline:before{content:""}.ion-ios-location:before{content:""}.ion-ios-location-outline:before{content:""}.ion-ios-locked:before{content:""}.ion-ios-locked-outline:before{content:""}.ion-ios-loop:before{content:""}.ion-ios-loop-strong:before{content:""}.ion-ios-medical:before{content:""}.ion-ios-medical-outline:before{content:""}.ion-ios-medkit:before{content:""}.ion-ios-medkit-outline:before{content:""}.ion-ios-mic:before{content:""}.ion-ios-mic-off:before{content:""}.ion-ios-mic-outline:before{content:""}.ion-ios-minus:before{content:""}.ion-ios-minus-empty:before{content:""}.ion-ios-minus-outline:before{content:""}.ion-ios-monitor:before{content:""}.ion-ios-monitor-outline:before{content:""}.ion-ios-moon:before{content:""}.ion-ios-moon-outline:before{content:""}.ion-ios-more:before{content:""}.ion-ios-more-outline:before{content:""}.ion-ios-musical-note:before{content:""}.ion-ios-musical-notes:before{content:""}.ion-ios-navigate:before{content:""}.ion-ios-navigate-outline:before{content:""}.ion-ios-nutrition:before{content:""}.ion-ios-nutrition-outline:before{content:""}.ion-ios-paper:before{content:""}.ion-ios-paper-outline:before{content:""}.ion-ios-paperplane:before{content:""}.ion-ios-paperplane-outline:before{content:""}.ion-ios-partlysunny:before{content:""}.ion-ios-partlysunny-outline:before{content:""}.ion-ios-pause:before{content:""}.ion-ios-pause-outline:before{content:""}.ion-ios-paw:before{content:""}.ion-ios-paw-outline:before{content:""}.ion-ios-people:before{content:""}.ion-ios-people-outline:before{content:""}.ion-ios-person:before{content:""}.ion-ios-person-outline:before{content:""}.ion-ios-personadd:before{content:""}.ion-ios-personadd-outline:before{content:""}.ion-ios-photos:before{content:""}.ion-ios-photos-outline:before{content:""}.ion-ios-pie:before{content:""}.ion-ios-pie-outline:before{content:""}.ion-ios-pint:before{content:""}.ion-ios-pint-outline:before{content:""}.ion-ios-play:before{content:""}.ion-ios-play-outline:before{content:""}.ion-ios-plus:before{content:""}.ion-ios-plus-empty:before{content:""}.ion-ios-plus-outline:before{content:""}.ion-ios-pricetag:before{content:""}.ion-ios-pricetag-outline:before{content:""}.ion-ios-pricetags:before{content:""}.ion-ios-pricetags-outline:before{content:""}.ion-ios-printer:before{content:""}.ion-ios-printer-outline:before{content:""}.ion-ios-pulse:before{content:""}.ion-ios-pulse-strong:before{content:""}.ion-ios-rainy:before{content:""}.ion-ios-rainy-outline:before{content:""}.ion-ios-recording:before{content:""}.ion-ios-recording-outline:before{content:""}.ion-ios-redo:before{content:""}.ion-ios-redo-outline:before{content:""}.ion-ios-refresh:before{content:""}.ion-ios-refresh-empty:before{content:""}.ion-ios-refresh-outline:before{content:""}.ion-ios-reload:before{content:""}.ion-ios-reverse-camera:before{content:""}.ion-ios-reverse-camera-outline:before{content:""}.ion-ios-rewind:before{content:""}.ion-ios-rewind-outline:before{content:""}.ion-ios-rose:before{content:""}.ion-ios-rose-outline:before{content:""}.ion-ios-search:before{content:""}.ion-ios-search-strong:before{content:""}.ion-ios-settings:before{content:""}.ion-ios-settings-strong:before{content:""}.ion-ios-shuffle:before{content:""}.ion-ios-shuffle-strong:before{content:""}.ion-ios-skipbackward:before{content:""}.ion-ios-skipbackward-outline:before{content:""}.ion-ios-skipforward:before{content:""}.ion-ios-skipforward-outline:before{content:""}.ion-ios-snowy:before{content:""}.ion-ios-speedometer:before{content:""}.ion-ios-speedometer-outline:before{content:""}.ion-ios-star:before{content:""}.ion-ios-star-half:before{content:""}.ion-ios-star-outline:before{content:""}.ion-ios-stopwatch:before{content:""}.ion-ios-stopwatch-outline:before{content:""}.ion-ios-sunny:before{content:""}.ion-ios-sunny-outline:before{content:""}.ion-ios-telephone:before{content:""}.ion-ios-telephone-outline:before{content:""}.ion-ios-tennisball:before{content:""}.ion-ios-tennisball-outline:before{content:""}.ion-ios-thunderstorm:before{content:""}.ion-ios-thunderstorm-outline:before{content:""}.ion-ios-time:before{content:""}.ion-ios-time-outline:before{content:""}.ion-ios-timer:before{content:""}.ion-ios-timer-outline:before{content:""}.ion-ios-toggle:before{content:""}.ion-ios-toggle-outline:before{content:""}.ion-ios-trash:before{content:""}.ion-ios-trash-outline:before{content:""}.ion-ios-undo:before{content:""}.ion-ios-undo-outline:before{content:""}.ion-ios-unlocked:before{content:""}.ion-ios-unlocked-outline:before{content:""}.ion-ios-upload:before{content:""}.ion-ios-upload-outline:before{content:""}.ion-ios-videocam:before{content:""}.ion-ios-videocam-outline:before{content:""}.ion-ios-volume-high:before{content:""}.ion-ios-volume-low:before{content:""}.ion-ios-wineglass:before{content:""}.ion-ios-wineglass-outline:before{content:""}.ion-ios-world:before{content:""}.ion-ios-world-outline:before{content:""}.ion-ipad:before{content:""}.ion-iphone:before{content:""}.ion-ipod:before{content:""}.ion-jet:before{content:""}.ion-key:before{content:""}.ion-knife:before{content:""}.ion-laptop:before{content:""}.ion-leaf:before{content:""}.ion-levels:before{content:""}.ion-lightbulb:before{content:""}.ion-link:before{content:""}.ion-load-a:before{content:""}.ion-load-b:before{content:""}.ion-load-c:before{content:""}.ion-load-d:before{content:""}.ion-location:before{content:""}.ion-lock-combination:before{content:""}.ion-locked:before{content:""}.ion-log-in:before{content:""}.ion-log-out:before{content:""}.ion-loop:before{content:""}.ion-magnet:before{content:""}.ion-male:before{content:""}.ion-man:before{content:""}.ion-map:before{content:""}.ion-medkit:before{content:""}.ion-merge:before{content:""}.ion-mic-a:before{content:""}.ion-mic-b:before{content:""}.ion-mic-c:before{content:""}.ion-minus:before{content:""}.ion-minus-circled:before{content:""}.ion-minus-round:before{content:""}.ion-model-s:before{content:""}.ion-monitor:before{content:""}.ion-more:before{content:""}.ion-mouse:before{content:""}.ion-music-note:before{content:""}.ion-navicon:before{content:""}.ion-navicon-round:before{content:""}.ion-navigate:before{content:""}.ion-network:before{content:""}.ion-no-smoking:before{content:""}.ion-nuclear:before{content:""}.ion-outlet:before{content:""}.ion-paintbrush:before{content:""}.ion-paintbucket:before{content:""}.ion-paper-airplane:before{content:""}.ion-paperclip:before{content:""}.ion-pause:before{content:""}.ion-person:before{content:""}.ion-person-add:before{content:""}.ion-person-stalker:before{content:""}.ion-pie-graph:before{content:""}.ion-pin:before{content:""}.ion-pinpoint:before{content:""}.ion-pizza:before{content:""}.ion-plane:before{content:""}.ion-planet:before{content:""}.ion-play:before{content:""}.ion-playstation:before{content:""}.ion-plus:before{content:""}.ion-plus-circled:before{content:""}.ion-plus-round:before{content:""}.ion-podium:before{content:""}.ion-pound:before{content:""}.ion-power:before{content:""}.ion-pricetag:before{content:""}.ion-pricetags:before{content:""}.ion-printer:before{content:""}.ion-pull-request:before{content:""}.ion-qr-scanner:before{content:""}.ion-quote:before{content:""}.ion-radio-waves:before{content:""}.ion-record:before{content:""}.ion-refresh:before{content:""}.ion-reply:before{content:""}.ion-reply-all:before{content:""}.ion-ribbon-a:before{content:""}.ion-ribbon-b:before{content:""}.ion-sad:before{content:""}.ion-sad-outline:before{content:""}.ion-scissors:before{content:""}.ion-search:before{content:""}.ion-settings:before{content:""}.ion-share:before{content:""}.ion-shuffle:before{content:""}.ion-skip-backward:before{content:""}.ion-skip-forward:before{content:""}.ion-social-android:before{content:""}.ion-social-android-outline:before{content:""}.ion-social-angular:before{content:""}.ion-social-angular-outline:before{content:""}.ion-social-apple:before{content:""}.ion-social-apple-outline:before{content:""}.ion-social-bitcoin:before{content:""}.ion-social-bitcoin-outline:before{content:""}.ion-social-buffer:before{content:""}.ion-social-buffer-outline:before{content:""}.ion-social-chrome:before{content:""}.ion-social-chrome-outline:before{content:""}.ion-social-codepen:before{content:""}.ion-social-codepen-outline:before{content:""}.ion-social-css3:before{content:""}.ion-social-css3-outline:before{content:""}.ion-social-designernews:before{content:""}.ion-social-designernews-outline:before{content:""}.ion-social-dribbble:before{content:""}.ion-social-dribbble-outline:before{content:""}.ion-social-dropbox:before{content:""}.ion-social-dropbox-outline:before{content:""}.ion-social-euro:before{content:""}.ion-social-euro-outline:before{content:""}.ion-social-facebook:before{content:""}.ion-social-facebook-outline:before{content:""}.ion-social-foursquare:before{content:""}.ion-social-foursquare-outline:before{content:""}.ion-social-freebsd-devil:before{content:""}.ion-social-github:before{content:""}.ion-social-github-outline:before{content:""}.ion-social-google:before{content:""}.ion-social-google-outline:before{content:""}.ion-social-googleplus:before{content:""}.ion-social-googleplus-outline:before{content:""}.ion-social-hackernews:before{content:""}.ion-social-hackernews-outline:before{content:""}.ion-social-html5:before{content:""}.ion-social-html5-outline:before{content:""}.ion-social-instagram:before{content:""}.ion-social-instagram-outline:before{content:""}.ion-social-javascript:before{content:""}.ion-social-javascript-outline:before{content:""}.ion-social-linkedin:before{content:""}.ion-social-linkedin-outline:before{content:""}.ion-social-markdown:before{content:""}.ion-social-nodejs:before{content:""}.ion-social-octocat:before{content:""}.ion-social-pinterest:before{content:""}.ion-social-pinterest-outline:before{content:""}.ion-social-python:before{content:""}.ion-social-reddit:before{content:""}.ion-social-reddit-outline:before{content:""}.ion-social-rss:before{content:""}.ion-social-rss-outline:before{content:""}.ion-social-sass:before{content:""}.ion-social-skype:before{content:""}.ion-social-skype-outline:before{content:""}.ion-social-snapchat:before{content:""}.ion-social-snapchat-outline:before{content:""}.ion-social-tumblr:before{content:""}.ion-social-tumblr-outline:before{content:""}.ion-social-tux:before{content:""}.ion-social-twitch:before{content:""}.ion-social-twitch-outline:before{content:""}.ion-social-twitter:before{content:""}.ion-social-twitter-outline:before{content:""}.ion-social-usd:before{content:""}.ion-social-usd-outline:before{content:""}.ion-social-vimeo:before{content:""}.ion-social-vimeo-outline:before{content:""}.ion-social-whatsapp:before{content:""}.ion-social-whatsapp-outline:before{content:""}.ion-social-windows:before{content:""}.ion-social-windows-outline:before{content:""}.ion-social-wordpress:before{content:""}.ion-social-wordpress-outline:before{content:""}.ion-social-yahoo:before{content:""}.ion-social-yahoo-outline:before{content:""}.ion-social-yen:before{content:""}.ion-social-yen-outline:before{content:""}.ion-social-youtube:before{content:""}.ion-social-youtube-outline:before{content:""}.ion-soup-can:before{content:""}.ion-soup-can-outline:before{content:""}.ion-speakerphone:before{content:""}.ion-speedometer:before{content:""}.ion-spoon:before{content:""}.ion-star:before{content:""}.ion-stats-bars:before{content:""}.ion-steam:before{content:""}.ion-stop:before{content:""}.ion-thermometer:before{content:""}.ion-thumbsdown:before{content:""}.ion-thumbsup:before{content:""}.ion-toggle:before{content:""}.ion-toggle-filled:before{content:""}.ion-transgender:before{content:""}.ion-trash-a:before{content:""}.ion-trash-b:before{content:""}.ion-trophy:before{content:""}.ion-tshirt:before{content:""}.ion-tshirt-outline:before{content:""}.ion-umbrella:before{content:""}.ion-university:before{content:""}.ion-unlocked:before{content:""}.ion-upload:before{content:""}.ion-usb:before{content:""}.ion-videocamera:before{content:""}.ion-volume-high:before{content:""}.ion-volume-low:before{content:""}.ion-volume-medium:before{content:""}.ion-volume-mute:before{content:""}.ion-wand:before{content:""}.ion-waterdrop:before{content:""}.ion-wifi:before{content:""}.ion-wineglass:before{content:""}.ion-woman:before{content:""}.ion-wrench:before{content:""}.ion-xbox:before{content:""}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;vertical-align:baseline;font:inherit;font-size:100%}ol,ul{list-style:none}blockquote,q{quotes:none}audio:not([controls]){display:none;height:0}[hidden],template{display:none}script{display:none!important}html{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}:focus,a,a:active,a:focus,a:hover,button,button:focus{outline:0}a{-webkit-user-drag:none;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent}a[href]:hover{cursor:pointer}b,strong{font-weight:700}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}code,kbd,pre,samp{font-size:1em;font-family:monospace,serif}pre{white-space:pre-wrap}q{quotes:"\201C" "\201D" "\2018" "\2019"}sub,sup{position:relative;vertical-align:baseline;font-size:75%;line-height:0}sup{top:-.5em}sub{bottom:-.25em}fieldset{margin:0 2px;padding:.35em .625em .75em;border:1px solid silver}button,input,select,textarea{margin:0;outline-offset:0;outline-style:none;outline-width:0;-webkit-font-smoothing:inherit;background-image:none}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}textarea{overflow:auto}img{-webkit-user-drag:none}table{border-spacing:0;border-collapse:collapse}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{overflow:hidden;-ms-touch-action:pan-y;touch-action:pan-y}.ionic-body,body{-webkit-touch-callout:none;-webkit-font-smoothing:antialiased;font-smoothing:antialiased;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;top:0;right:0;bottom:0;left:0;overflow:hidden;margin:0;padding:0;color:#000;word-wrap:break-word;font-size:14px;font-family:-apple-system;font-family:"-apple-system","Helvetica Neue",Roboto,"Segoe UI",sans-serif;line-height:20px;text-rendering:optimizeLegibility;-webkit-backface-visibility:hidden;-webkit-user-drag:none;-ms-content-zooming:none}body.grade-b,body.grade-c{text-rendering:auto}.content{position:relative}.scroll-content{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;margin-top:-1px;padding-top:1px;margin-bottom:-1px;width:auto;height:auto}.menu .scroll-content.scroll-content-false{z-index:11}.scroll-view{position:relative;display:block;overflow:hidden;margin-top:-1px}.scroll-view.overflow-scroll{position:relative}.scroll-view.scroll-x{overflow-x:scroll;overflow-y:hidden}.scroll-view.scroll-y{overflow-x:hidden;overflow-y:scroll}.scroll-view.scroll-xy{overflow-x:scroll;overflow-y:scroll}.scroll{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;text-size-adjust:none;-webkit-transform-origin:left top;transform-origin:left top}@-ms-viewport{width:device-width}.scroll-bar{position:absolute;z-index:9999}.ng-animate .scroll-bar{visibility:hidden}.scroll-bar-h{right:2px;bottom:3px;left:2px;height:3px}.scroll-bar-h .scroll-bar-indicator{height:100%}.scroll-bar-v{top:2px;right:3px;bottom:2px;width:3px}.scroll-bar-v .scroll-bar-indicator{width:100%}.scroll-bar-indicator{position:absolute;border-radius:4px;background:rgba(0,0,0,.3);opacity:1;-webkit-transition:opacity .3s linear;transition:opacity .3s linear}.scroll-bar-indicator.scroll-bar-fade-out{opacity:0}.platform-android .scroll-bar-indicator{border-radius:0}.grade-b .scroll-bar-indicator,.grade-c .scroll-bar-indicator{background:#aaa}.grade-b .scroll-bar-indicator.scroll-bar-fade-out,.grade-c .scroll-bar-indicator.scroll-bar-fade-out{-webkit-transition:none;transition:none}ion-infinite-scroll{height:60px;width:100%;display:block;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-direction:normal;-webkit-box-orient:horizontal;-webkit-flex-direction:row;-moz-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;-moz-justify-content:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;-moz-align-items:center;align-items:center}ion-infinite-scroll .icon{font-size:30px;color:#666}ion-infinite-scroll:not(.active) .icon:before,ion-infinite-scroll:not(.active) .spinner{display:none}.overflow-scroll{overflow-x:hidden;overflow-y:scroll;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;top:0;right:0;bottom:0;left:0;position:absolute}.overflow-scroll.pane{overflow-x:hidden;overflow-y:scroll}.overflow-scroll .scroll{position:static;height:100%;-webkit-transform:translate3d(0,0,0)}.has-header{top:44px}.no-header{top:0}.has-subheader{top:88px}.has-tabs-top{top:93px}.has-header.has-subheader.has-tabs-top{top:137px}.has-footer{bottom:44px}.has-subfooter{bottom:88px}.bar-footer.has-tabs,.has-tabs{bottom:49px}.bar-footer.has-tabs.pane,.has-tabs.pane{bottom:49px;height:auto}.bar-subfooter.has-tabs,.has-footer.has-tabs{bottom:93px}.pane{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-transition-duration:0;transition-duration:0;z-index:1}.view{z-index:1}.pane,.view{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;background-color:#fff;overflow:hidden}.view-container{position:absolute;display:block;width:100%;height:100%}p{margin:0 0 10px}small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{color:#000;font-weight:500;font-family:"-apple-system","Helvetica Neue",Roboto,"Segoe UI",sans-serif;line-height:1.2}.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:400;line-height:1}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1:first-child,.h2:first-child,.h3:first-child,h1:first-child,h2:first-child,h3:first-child{margin-top:0}.h1+.h1,.h1+.h2,.h1+.h3,.h1+h1,.h1+h2,.h1+h3,.h2+.h1,.h2+.h2,.h2+.h3,.h2+h1,.h2+h2,.h2+h3,.h3+.h1,.h3+.h2,.h3+.h3,.h3+h1,.h3+h2,.h3+h3,h1+.h1,h1+.h2,h1+.h3,h1+h1,h1+h2,h1+h3,h2+.h1,h2+.h2,h2+.h3,h2+h1,h2+h2,h2+h3,h3+.h1,h3+.h2,h3+.h3,h3+h1,h3+h2,h3+h3{margin-top:10px}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}.h1 small,h1 small{font-size:24px}.h2 small,h2 small{font-size:18px}.h3 small,.h4 small,h3 small,h4 small{font-size:14px}dl{margin-bottom:20px}dd,dt{line-height:1.42857}dt{font-weight:700}blockquote{margin:0 0 20px;padding:10px 20px;border-left:5px solid gray}blockquote p{font-weight:300;font-size:17.5px;line-height:1.25}blockquote p:last-child{margin-bottom:0}blockquote small{display:block;line-height:1.42857}blockquote small:before{content:'\2014 \00A0'}blockquote:after,blockquote:before,q:after,q:before{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:1.42857}a{color:#387ef5}a.subdued{padding-right:10px;color:#888;text-decoration:none}a.subdued:hover{text-decoration:none}a.subdued:last-child{padding-right:0}.action-sheet-backdrop{-webkit-transition:background-color 150ms ease-in-out;transition:background-color 150ms ease-in-out;position:fixed;top:0;left:0;z-index:11;width:100%;height:100%;background-color:transparent}.action-sheet-backdrop.active{background-color:rgba(0,0,0,.4)}.action-sheet-wrapper{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);-webkit-transition:all cubic-bezier(.36,.66,.04,1) 500ms;transition:all cubic-bezier(.36,.66,.04,1) 500ms;position:absolute;bottom:0;left:0;right:0;width:100%;max-width:500px;margin:auto}.action-sheet-up{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.action-sheet{margin-left:8px;margin-right:8px;width:auto;z-index:11;overflow:hidden}.action-sheet .button{display:block;padding:1px;width:100%;border-radius:0;border-color:#d1d3d6;background-color:transparent;color:#007aff;font-size:21px}.action-sheet .button:hover{color:#007aff}.action-sheet .button.destructive,.action-sheet .button.destructive:hover{color:#ff3b30}.action-sheet .button.activated,.action-sheet .button.active{box-shadow:none;border-color:#d1d3d6;color:#007aff;background:#e4e5e7}.action-sheet-has-icons .icon{position:absolute;left:16px}.action-sheet-title{padding:16px;color:#8f8f8f;text-align:center;font-size:13px}.action-sheet-group{margin-bottom:8px;border-radius:4px;background-color:#fff;overflow:hidden}.action-sheet-group .button{border-width:1px 0 0 0}.action-sheet-group .button:first-child:last-child{border-width:0}.action-sheet-options{background:#f1f2f3}.action-sheet-cancel .button{font-weight:500}.action-sheet-open,.action-sheet-open.modal-open .modal{pointer-events:none}.action-sheet-open .action-sheet-backdrop{pointer-events:auto}.platform-android .action-sheet-backdrop.active{background-color:rgba(0,0,0,.2)}.platform-android .action-sheet{margin:0}.platform-android .action-sheet .action-sheet-title,.platform-android .action-sheet .button{text-align:left;border-color:transparent;font-size:16px;color:inherit}.platform-android .action-sheet .action-sheet-title{font-size:14px;padding:16px;color:#666}.platform-android .action-sheet .button.activated,.platform-android .action-sheet .button.active{background:#e8e8e8}.platform-android .action-sheet-group{margin:0;border-radius:0;background-color:#fafafa}.platform-android .action-sheet-cancel{display:none}.platform-android .action-sheet-has-icons .button{padding-left:56px}.backdrop{position:fixed;top:0;left:0;z-index:11;width:100%;height:100%;background-color:rgba(0,0,0,.4);visibility:hidden;opacity:0;-webkit-transition:.1s opacity linear;transition:.1s opacity linear}.backdrop.visible{visibility:visible}.backdrop.active{opacity:1}.bar{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:absolute;right:0;left:0;z-index:9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:5px;width:100%;height:44px;border-width:0;border-style:solid;border-top:1px solid transparent;border-bottom:1px solid #ddd;background-color:#fff;background-size:0}@media (min--moz-device-pixel-ratio:1.5),(-webkit-min-device-pixel-ratio:1.5),(min-device-pixel-ratio:1.5),(min-resolution:144dpi),(min-resolution:1.5dppx){.bar{border:none;background-image:linear-gradient(0deg,#ddd,#ddd 50%,transparent 50%);background-position:bottom;background-size:100% 1px;background-repeat:no-repeat}}.bar.bar-clear{border:none;background:0 0;color:#fff}.bar.bar-clear .button,.bar.bar-clear .title{color:#fff}.bar.item-input-inset .item-input-wrapper{margin-top:-1px}.bar.item-input-inset .item-input-wrapper input{padding-left:8px;width:94%;height:28px;background:0 0}.bar.bar-light{border-color:#ddd;background-color:#fff;background-image:linear-gradient(0deg,#ddd,#ddd 50%,transparent 50%);color:#444}.bar.bar-light .title{color:#444}.bar.bar-light.bar-footer{background-image:linear-gradient(180deg,#ddd,#ddd 50%,transparent 50%)}.bar.bar-stable{border-color:#b2b2b2;background-color:#f8f8f8;background-image:linear-gradient(0deg,#b2b2b2,#b2b2b2 50%,transparent 50%);color:#444}.bar.bar-stable .title{color:#444}.bar.bar-stable.bar-footer{background-image:linear-gradient(180deg,#b2b2b2,#b2b2b2 50%,transparent 50%)}.bar.bar-positive{border-color:#0c60ee;background-color:#387ef5;background-image:linear-gradient(0deg,#0c60ee,#0c60ee 50%,transparent 50%);color:#fff}.bar.bar-positive .title{color:#fff}.bar.bar-positive.bar-footer{background-image:linear-gradient(180deg,#0c60ee,#0c60ee 50%,transparent 50%)}.bar.bar-calm{border-color:#0a9dc7;background-color:#11c1f3;background-image:linear-gradient(0deg,#0a9dc7,#0a9dc7 50%,transparent 50%);color:#fff}.bar.bar-calm .title{color:#fff}.bar.bar-calm.bar-footer{background-image:linear-gradient(180deg,#0a9dc7,#0a9dc7 50%,transparent 50%)}.bar.bar-assertive{border-color:#e42112;background-color:#ef473a;background-image:linear-gradient(0deg,#e42112,#e42112 50%,transparent 50%);color:#fff}.bar.bar-assertive .title{color:#fff}.bar.bar-assertive.bar-footer{background-image:linear-gradient(180deg,#e42112,#e42112 50%,transparent 50%)}.bar.bar-balanced{border-color:#28a54c;background-color:#33cd5f;background-image:linear-gradient(0deg,#28a54c,#28a54c 50%,transparent 50%);color:#fff}.bar.bar-balanced .title{color:#fff}.bar.bar-balanced.bar-footer{background-image:linear-gradient(180deg,#28a54c,#28a54c 50%,transparent 50%)}.bar.bar-energized{border-color:#e6b500;background-color:#ffc900;background-image:linear-gradient(0deg,#e6b500,#e6b500 50%,transparent 50%);color:#fff}.bar.bar-energized .title{color:#fff}.bar.bar-energized.bar-footer{background-image:linear-gradient(180deg,#e6b500,#e6b500 50%,transparent 50%)}.bar.bar-royal{border-color:#6b46e5;background-color:#886aea;background-image:linear-gradient(0deg,#6b46e5,#6b46e5 50%,transparent 50%);color:#fff}.bar.bar-royal .title{color:#fff}.bar.bar-royal.bar-footer{background-image:linear-gradient(180deg,#6b46e5,#6b46e5 50%,transparent 50%)}.bar.bar-dark{border-color:#111;background-color:#444;background-image:linear-gradient(0deg,#111,#111 50%,transparent 50%);color:#fff}.bar.bar-dark .title{color:#fff}.bar.bar-dark.bar-footer{background-image:linear-gradient(180deg,#111,#111 50%,transparent 50%)}.bar .title{display:block;position:absolute;top:0;right:0;left:0;z-index:0;overflow:hidden;margin:0 10px;min-width:30px;height:43px;text-align:center;text-overflow:ellipsis;white-space:nowrap;font-size:17px;font-weight:500;line-height:44px}.bar .title.title-left{text-align:left}.bar .title.title-right{text-align:right}.bar .title a{color:inherit}.bar .button,.bar button{z-index:1;padding:0 8px;min-width:initial;min-height:31px;font-weight:400;font-size:13px;line-height:32px}.bar .button .icon:before,.bar .button.button-icon:before,.bar .button.icon-left:before,.bar .button.icon-right:before,.bar .button.icon:before,.bar button .icon:before,.bar button.button-icon:before,.bar button.icon-left:before,.bar button.icon-right:before,.bar button.icon:before{padding-right:2px;padding-left:2px;font-size:20px;line-height:32px}.bar .button.button-icon,.bar button.button-icon{font-size:17px}.bar .button.button-icon .icon:before,.bar .button.button-icon.icon-left:before,.bar .button.button-icon.icon-right:before,.bar .button.button-icon:before,.bar button.button-icon .icon:before,.bar button.button-icon.icon-left:before,.bar button.button-icon.icon-right:before,.bar button.button-icon:before{vertical-align:top;font-size:32px;line-height:32px}.bar .button.button-clear,.bar button.button-clear{padding-right:2px;padding-left:2px;font-weight:300;font-size:17px}.bar .button.button-clear .icon:before,.bar .button.button-clear.icon-left:before,.bar .button.button-clear.icon-right:before,.bar .button.button-clear.icon:before,.bar button.button-clear .icon:before,.bar button.button-clear.icon-left:before,.bar button.button-clear.icon-right:before,.bar button.button-clear.icon:before{font-size:32px;line-height:32px}.bar .button.back-button,.bar button.back-button{display:block;margin-right:5px;padding:0;white-space:nowrap;font-weight:400}.bar .button.back-button.activated,.bar .button.back-button.active,.bar button.back-button.activated,.bar button.back-button.active{opacity:.2}.bar .button-bar>.button,.bar .buttons>.button{min-height:31px;line-height:32px}.bar .button+.button-bar,.bar .button-bar+.button{margin-left:5px}.bar .buttons,.bar .buttons.primary-buttons,.bar .buttons.secondary-buttons{display:inherit}.bar .buttons span{display:inline-block}.bar .buttons-left span{margin-right:5px;display:inherit}.bar .buttons-right span{margin-left:5px;display:inherit}.bar .buttons.pull-right,.bar .title+.button:last-child,.bar .title+.buttons,.bar>.button+.button:last-child,.bar>.button.pull-right{position:absolute;top:5px;right:5px;bottom:5px}.platform-android .nav-bar-has-subheader .bar{background-image:none}.platform-android .bar .back-button .icon:before{font-size:24px}.platform-android .bar .title{font-size:19px;line-height:44px}.bar-light .button{border-color:#ddd;background-color:#fff;color:#444}.bar-light .button:hover{color:#444;text-decoration:none}.bar-light .button.activated,.bar-light .button.active{border-color:#ccc;background-color:#fafafa}.bar-light .button.button-clear{border-color:transparent;background:0 0;box-shadow:none;color:#444;font-size:17px}.bar-light .button.button-icon{border-color:transparent;background:0 0}.bar-stable .button{border-color:#b2b2b2;background-color:#f8f8f8;color:#444}.bar-stable .button:hover{color:#444;text-decoration:none}.bar-stable .button.activated,.bar-stable .button.active{border-color:#a2a2a2;background-color:#e5e5e5}.bar-stable .button.button-clear{border-color:transparent;background:0 0;box-shadow:none;color:#444;font-size:17px}.bar-stable .button.button-icon{border-color:transparent;background:0 0}.bar-positive .button{border-color:#0c60ee;background-color:#387ef5;color:#fff}.bar-positive .button:hover{color:#fff;text-decoration:none}.bar-positive .button.activated,.bar-positive .button.active{border-color:#0c60ee;background-color:#0c60ee}.bar-positive .button.button-clear{border-color:transparent;background:0 0;box-shadow:none;color:#fff;font-size:17px}.bar-positive .button.button-icon{border-color:transparent;background:0 0}.bar-calm .button{border-color:#0a9dc7;background-color:#11c1f3;color:#fff}.bar-calm .button:hover{color:#fff;text-decoration:none}.bar-calm .button.activated,.bar-calm .button.active{border-color:#0a9dc7;background-color:#0a9dc7}.bar-calm .button.button-clear{border-color:transparent;background:0 0;box-shadow:none;color:#fff;font-size:17px}.bar-calm .button.button-icon{border-color:transparent;background:0 0}.bar-assertive .button{border-color:#e42112;background-color:#ef473a;color:#fff}.bar-assertive .button:hover{color:#fff;text-decoration:none}.bar-assertive .button.activated,.bar-assertive .button.active{border-color:#e42112;background-color:#e42112}.bar-assertive .button.button-clear{border-color:transparent;background:0 0;box-shadow:none;color:#fff;font-size:17px}.bar-assertive .button.button-icon{border-color:transparent;background:0 0}.bar-balanced .button{border-color:#28a54c;background-color:#33cd5f;color:#fff}.bar-balanced .button:hover{color:#fff;text-decoration:none}.bar-balanced .button.activated,.bar-balanced .button.active{border-color:#28a54c;background-color:#28a54c}.bar-balanced .button.button-clear{border-color:transparent;background:0 0;box-shadow:none;color:#fff;font-size:17px}.bar-balanced .button.button-icon{border-color:transparent;background:0 0}.bar-energized .button{border-color:#e6b500;background-color:#ffc900;color:#fff}.bar-energized .button:hover{color:#fff;text-decoration:none}.bar-energized .button.activated,.bar-energized .button.active{border-color:#e6b500;background-color:#e6b500}.bar-energized .button.button-clear{border-color:transparent;background:0 0;box-shadow:none;color:#fff;font-size:17px}.bar-energized .button.button-icon{border-color:transparent;background:0 0}.bar-royal .button{border-color:#6b46e5;background-color:#886aea;color:#fff}.bar-royal .button:hover{color:#fff;text-decoration:none}.bar-royal .button.activated,.bar-royal .button.active{border-color:#6b46e5;background-color:#6b46e5}.bar-royal .button.button-clear{border-color:transparent;background:0 0;box-shadow:none;color:#fff;font-size:17px}.bar-royal .button.button-icon{border-color:transparent;background:0 0}.bar-dark .button{border-color:#111;background-color:#444;color:#fff}.bar-dark .button:hover{color:#fff;text-decoration:none}.bar-dark .button.activated,.bar-dark .button.active{border-color:#000;background-color:#262626}.bar-dark .button.button-clear{border-color:transparent;background:0 0;box-shadow:none;color:#fff;font-size:17px}.bar-dark .button.button-icon{border-color:transparent;background:0 0}.bar-header{top:0;border-top-width:0;border-bottom-width:1px}.bar-header.has-tabs-top,.tabs-top .bar-header{border-bottom-width:0;background-image:none}.bar-footer{bottom:0;border-top-width:1px;border-bottom-width:0;background-position:top;height:44px}.bar-footer.item-input-inset{position:absolute}.bar-footer .title{height:43px;line-height:44px}.bar-tabs{padding:0}.bar-subheader{top:44px;height:44px}.bar-subheader .title{height:43px;line-height:44px}.bar-subfooter{bottom:44px;height:44px}.bar-subfooter .title{height:43px;line-height:44px}.nav-bar-block{position:absolute;top:0;right:0;left:0;z-index:9}.bar .back-button.hide,.bar .buttons .hide{display:none}.nav-bar-tabs-top .bar{background-image:none}.tabs{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-direction:normal;-webkit-box-orient:horizontal;-webkit-flex-direction:horizontal;-moz-flex-direction:horizontal;-ms-flex-direction:horizontal;flex-direction:horizontal;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;-moz-justify-content:center;justify-content:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);border-color:#b2b2b2;background-color:#f8f8f8;background-image:linear-gradient(0deg,#b2b2b2,#b2b2b2 50%,transparent 50%);color:#444;position:absolute;bottom:0;z-index:5;width:100%;height:49px;border-style:solid;border-top-width:1px;background-size:0;line-height:49px}.tabs .tab-item .badge{background-color:#444;color:#f8f8f8}@media (min--moz-device-pixel-ratio:1.5),(-webkit-min-device-pixel-ratio:1.5),(min-device-pixel-ratio:1.5),(min-resolution:144dpi),(min-resolution:1.5dppx){.tabs{padding-top:2px;border-top:none!important;border-bottom:none;background-position:top;background-size:100% 1px;background-repeat:no-repeat}}.tabs-light>.tabs,.tabs.tabs-light{border-color:#ddd;background-color:#fff;background-image:linear-gradient(0deg,#ddd,#ddd 50%,transparent 50%);color:#444}.tabs-light>.tabs .tab-item .badge,.tabs.tabs-light .tab-item .badge{background-color:#444;color:#fff}.tabs-stable>.tabs,.tabs.tabs-stable{border-color:#b2b2b2;background-color:#f8f8f8;background-image:linear-gradient(0deg,#b2b2b2,#b2b2b2 50%,transparent 50%);color:#444}.tabs-stable>.tabs .tab-item .badge,.tabs.tabs-stable .tab-item .badge{background-color:#444;color:#f8f8f8}.tabs-positive>.tabs,.tabs.tabs-positive{border-color:#0c60ee;background-color:#387ef5;background-image:linear-gradient(0deg,#0c60ee,#0c60ee 50%,transparent 50%);color:#fff}.tabs-positive>.tabs .tab-item .badge,.tabs.tabs-positive .tab-item .badge{background-color:#fff;color:#387ef5}.tabs-calm>.tabs,.tabs.tabs-calm{border-color:#0a9dc7;background-color:#11c1f3;background-image:linear-gradient(0deg,#0a9dc7,#0a9dc7 50%,transparent 50%);color:#fff}.tabs-calm>.tabs .tab-item .badge,.tabs.tabs-calm .tab-item .badge{background-color:#fff;color:#11c1f3}.tabs-assertive>.tabs,.tabs.tabs-assertive{border-color:#e42112;background-color:#ef473a;background-image:linear-gradient(0deg,#e42112,#e42112 50%,transparent 50%);color:#fff}.tabs-assertive>.tabs .tab-item .badge,.tabs.tabs-assertive .tab-item .badge{background-color:#fff;color:#ef473a}.tabs-balanced>.tabs,.tabs.tabs-balanced{border-color:#28a54c;background-color:#33cd5f;background-image:linear-gradient(0deg,#28a54c,#28a54c 50%,transparent 50%);color:#fff}.tabs-balanced>.tabs .tab-item .badge,.tabs.tabs-balanced .tab-item .badge{background-color:#fff;color:#33cd5f}.tabs-energized>.tabs,.tabs.tabs-energized{border-color:#e6b500;background-color:#ffc900;background-image:linear-gradient(0deg,#e6b500,#e6b500 50%,transparent 50%);color:#fff}.tabs-energized>.tabs .tab-item .badge,.tabs.tabs-energized .tab-item .badge{background-color:#fff;color:#ffc900}.tabs-royal>.tabs,.tabs.tabs-royal{border-color:#6b46e5;background-color:#886aea;background-image:linear-gradient(0deg,#6b46e5,#6b46e5 50%,transparent 50%);color:#fff}.tabs-royal>.tabs .tab-item .badge,.tabs.tabs-royal .tab-item .badge{background-color:#fff;color:#886aea}.tabs-dark>.tabs,.tabs.tabs-dark{border-color:#111;background-color:#444;background-image:linear-gradient(0deg,#111,#111 50%,transparent 50%);color:#fff}.tabs-dark>.tabs .tab-item .badge,.tabs.tabs-dark .tab-item .badge{background-color:#fff;color:#444}.tabs-striped .tabs{background-color:#fff;background-image:none;border:none;border-bottom:1px solid #ddd;padding-top:2px}.tabs-striped .tab-item.activated,.tabs-striped .tab-item.active,.tabs-striped .tab-item.tab-item-active{margin-top:-2px;border-style:solid;border-width:2px 0 0 0;border-color:#444}.tabs-striped .tab-item.activated .badge,.tabs-striped .tab-item.active .badge,.tabs-striped .tab-item.tab-item-active .badge{top:2px;opacity:1}.tabs-striped.tabs-light .tabs{background-color:#fff}.tabs-striped.tabs-light .tab-item{color:rgba(68,68,68,.4);opacity:1}.tabs-striped.tabs-light .tab-item .badge{opacity:.4}.tabs-striped.tabs-light .tab-item.activated,.tabs-striped.tabs-light .tab-item.active,.tabs-striped.tabs-light .tab-item.tab-item-active{margin-top:-2px;color:#444;border-style:solid;border-width:2px 0 0 0;border-color:#444}.tabs-striped.tabs-stable .tabs{background-color:#f8f8f8}.tabs-striped.tabs-stable .tab-item{color:rgba(68,68,68,.4);opacity:1}.tabs-striped.tabs-stable .tab-item .badge{opacity:.4}.tabs-striped.tabs-stable .tab-item.activated,.tabs-striped.tabs-stable .tab-item.active,.tabs-striped.tabs-stable .tab-item.tab-item-active{margin-top:-2px;color:#444;border-style:solid;border-width:2px 0 0 0;border-color:#444}.tabs-striped.tabs-positive .tabs{background-color:#387ef5}.tabs-striped.tabs-positive .tab-item{color:rgba(255,255,255,.4);opacity:1}.tabs-striped.tabs-positive .tab-item .badge{opacity:.4}.tabs-striped.tabs-positive .tab-item.activated,.tabs-striped.tabs-positive .tab-item.active,.tabs-striped.tabs-positive .tab-item.tab-item-active{margin-top:-2px;color:#fff;border-style:solid;border-width:2px 0 0 0;border-color:#fff}.tabs-striped.tabs-calm .tabs{background-color:#11c1f3}.tabs-striped.tabs-calm .tab-item{color:rgba(255,255,255,.4);opacity:1}.tabs-striped.tabs-calm .tab-item .badge{opacity:.4}.tabs-striped.tabs-calm .tab-item.activated,.tabs-striped.tabs-calm .tab-item.active,.tabs-striped.tabs-calm .tab-item.tab-item-active{margin-top:-2px;color:#fff;border-style:solid;border-width:2px 0 0 0;border-color:#fff}.tabs-striped.tabs-assertive .tabs{background-color:#ef473a}.tabs-striped.tabs-assertive .tab-item{color:rgba(255,255,255,.4);opacity:1}.tabs-striped.tabs-assertive .tab-item .badge{opacity:.4}.tabs-striped.tabs-assertive .tab-item.activated,.tabs-striped.tabs-assertive .tab-item.active,.tabs-striped.tabs-assertive .tab-item.tab-item-active{margin-top:-2px;color:#fff;border-style:solid;border-width:2px 0 0 0;border-color:#fff}.tabs-striped.tabs-balanced .tabs{background-color:#33cd5f}.tabs-striped.tabs-balanced .tab-item{color:rgba(255,255,255,.4);opacity:1}.tabs-striped.tabs-balanced .tab-item .badge{opacity:.4}.tabs-striped.tabs-balanced .tab-item.activated,.tabs-striped.tabs-balanced .tab-item.active,.tabs-striped.tabs-balanced .tab-item.tab-item-active{margin-top:-2px;color:#fff;border-style:solid;border-width:2px 0 0 0;border-color:#fff}.tabs-striped.tabs-energized .tabs{background-color:#ffc900}.tabs-striped.tabs-energized .tab-item{color:rgba(255,255,255,.4);opacity:1}.tabs-striped.tabs-energized .tab-item .badge{opacity:.4}.tabs-striped.tabs-energized .tab-item.activated,.tabs-striped.tabs-energized .tab-item.active,.tabs-striped.tabs-energized .tab-item.tab-item-active{margin-top:-2px;color:#fff;border-style:solid;border-width:2px 0 0 0;border-color:#fff}.tabs-striped.tabs-royal .tabs{background-color:#886aea}.tabs-striped.tabs-royal .tab-item{color:rgba(255,255,255,.4);opacity:1}.tabs-striped.tabs-royal .tab-item .badge{opacity:.4}.tabs-striped.tabs-royal .tab-item.activated,.tabs-striped.tabs-royal .tab-item.active,.tabs-striped.tabs-royal .tab-item.tab-item-active{margin-top:-2px;color:#fff;border-style:solid;border-width:2px 0 0 0;border-color:#fff}.tabs-striped.tabs-dark .tabs{background-color:#444}.tabs-striped.tabs-dark .tab-item{color:rgba(255,255,255,.4);opacity:1}.tabs-striped.tabs-dark .tab-item .badge{opacity:.4}.tabs-striped.tabs-dark .tab-item.activated,.tabs-striped.tabs-dark .tab-item.active,.tabs-striped.tabs-dark .tab-item.tab-item-active{margin-top:-2px;color:#fff;border-style:solid;border-width:2px 0 0 0;border-color:#fff}.tabs-striped.tabs-top .tab-item.activated .badge,.tabs-striped.tabs-top .tab-item.active .badge,.tabs-striped.tabs-top .tab-item.tab-item-active .badge{top:4%}.tabs-striped.tabs-background-light .tabs{background-color:#fff;background-image:none}.tabs-striped.tabs-background-stable .tabs{background-color:#f8f8f8;background-image:none}.tabs-striped.tabs-background-positive .tabs{background-color:#387ef5;background-image:none}.tabs-striped.tabs-background-calm .tabs{background-color:#11c1f3;background-image:none}.tabs-striped.tabs-background-assertive .tabs{background-color:#ef473a;background-image:none}.tabs-striped.tabs-background-balanced .tabs{background-color:#33cd5f;background-image:none}.tabs-striped.tabs-background-energized .tabs{background-color:#ffc900;background-image:none}.tabs-striped.tabs-background-royal .tabs{background-color:#886aea;background-image:none}.tabs-striped.tabs-background-dark .tabs{background-color:#444;background-image:none}.tabs-striped.tabs-color-light .tab-item{color:rgba(255,255,255,.4);opacity:1}.tabs-striped.tabs-color-light .tab-item .badge{opacity:.4}.tabs-striped.tabs-color-light .tab-item.activated,.tabs-striped.tabs-color-light .tab-item.active,.tabs-striped.tabs-color-light .tab-item.tab-item-active{margin-top:-2px;color:#fff;border:0 solid #fff;border-top-width:2px}.tabs-striped.tabs-color-light .tab-item.activated .badge,.tabs-striped.tabs-color-light .tab-item.active .badge,.tabs-striped.tabs-color-light .tab-item.tab-item-active .badge{top:2px;opacity:1}.tabs-striped.tabs-color-stable .tab-item{color:rgba(248,248,248,.4);opacity:1}.tabs-striped.tabs-color-stable .tab-item .badge{opacity:.4}.tabs-striped.tabs-color-stable .tab-item.activated,.tabs-striped.tabs-color-stable .tab-item.active,.tabs-striped.tabs-color-stable .tab-item.tab-item-active{margin-top:-2px;color:#f8f8f8;border:0 solid #f8f8f8;border-top-width:2px}.tabs-striped.tabs-color-stable .tab-item.activated .badge,.tabs-striped.tabs-color-stable .tab-item.active .badge,.tabs-striped.tabs-color-stable .tab-item.tab-item-active .badge{top:2px;opacity:1}.tabs-striped.tabs-color-positive .tab-item{color:rgba(56,126,245,.4);opacity:1}.tabs-striped.tabs-color-positive .tab-item .badge{opacity:.4}.tabs-striped.tabs-color-positive .tab-item.activated,.tabs-striped.tabs-color-positive .tab-item.active,.tabs-striped.tabs-color-positive .tab-item.tab-item-active{margin-top:-2px;color:#387ef5;border:0 solid #387ef5;border-top-width:2px}.tabs-striped.tabs-color-positive .tab-item.activated .badge,.tabs-striped.tabs-color-positive .tab-item.active .badge,.tabs-striped.tabs-color-positive .tab-item.tab-item-active .badge{top:2px;opacity:1}.tabs-striped.tabs-color-calm .tab-item{color:rgba(17,193,243,.4);opacity:1}.tabs-striped.tabs-color-calm .tab-item .badge{opacity:.4}.tabs-striped.tabs-color-calm .tab-item.activated,.tabs-striped.tabs-color-calm .tab-item.active,.tabs-striped.tabs-color-calm .tab-item.tab-item-active{margin-top:-2px;color:#11c1f3;border:0 solid #11c1f3;border-top-width:2px}.tabs-striped.tabs-color-calm .tab-item.activated .badge,.tabs-striped.tabs-color-calm .tab-item.active .badge,.tabs-striped.tabs-color-calm .tab-item.tab-item-active .badge{top:2px;opacity:1}.tabs-striped.tabs-color-assertive .tab-item{color:rgba(239,71,58,.4);opacity:1}.tabs-striped.tabs-color-assertive .tab-item .badge{opacity:.4}.tabs-striped.tabs-color-assertive .tab-item.activated,.tabs-striped.tabs-color-assertive .tab-item.active,.tabs-striped.tabs-color-assertive .tab-item.tab-item-active{margin-top:-2px;color:#ef473a;border:0 solid #ef473a;border-top-width:2px}.tabs-striped.tabs-color-assertive .tab-item.activated .badge,.tabs-striped.tabs-color-assertive .tab-item.active .badge,.tabs-striped.tabs-color-assertive .tab-item.tab-item-active .badge{top:2px;opacity:1}.tabs-striped.tabs-color-balanced .tab-item{color:rgba(51,205,95,.4);opacity:1}.tabs-striped.tabs-color-balanced .tab-item .badge{opacity:.4}.tabs-striped.tabs-color-balanced .tab-item.activated,.tabs-striped.tabs-color-balanced .tab-item.active,.tabs-striped.tabs-color-balanced .tab-item.tab-item-active{margin-top:-2px;color:#33cd5f;border:0 solid #33cd5f;border-top-width:2px}.tabs-striped.tabs-color-balanced .tab-item.activated .badge,.tabs-striped.tabs-color-balanced .tab-item.active .badge,.tabs-striped.tabs-color-balanced .tab-item.tab-item-active .badge{top:2px;opacity:1}.tabs-striped.tabs-color-energized .tab-item{color:rgba(255,201,0,.4);opacity:1}.tabs-striped.tabs-color-energized .tab-item .badge{opacity:.4}.tabs-striped.tabs-color-energized .tab-item.activated,.tabs-striped.tabs-color-energized .tab-item.active,.tabs-striped.tabs-color-energized .tab-item.tab-item-active{margin-top:-2px;color:#ffc900;border:0 solid #ffc900;border-top-width:2px}.tabs-striped.tabs-color-energized .tab-item.activated .badge,.tabs-striped.tabs-color-energized .tab-item.active .badge,.tabs-striped.tabs-color-energized .tab-item.tab-item-active .badge{top:2px;opacity:1}.tabs-striped.tabs-color-royal .tab-item{color:rgba(136,106,234,.4);opacity:1}.tabs-striped.tabs-color-royal .tab-item .badge{opacity:.4}.tabs-striped.tabs-color-royal .tab-item.activated,.tabs-striped.tabs-color-royal .tab-item.active,.tabs-striped.tabs-color-royal .tab-item.tab-item-active{margin-top:-2px;color:#886aea;border:0 solid #886aea;border-top-width:2px}.tabs-striped.tabs-color-royal .tab-item.activated .badge,.tabs-striped.tabs-color-royal .tab-item.active .badge,.tabs-striped.tabs-color-royal .tab-item.tab-item-active .badge{top:2px;opacity:1}.tabs-striped.tabs-color-dark .tab-item{color:rgba(68,68,68,.4);opacity:1}.tabs-striped.tabs-color-dark .tab-item .badge{opacity:.4}.tabs-striped.tabs-color-dark .tab-item.activated,.tabs-striped.tabs-color-dark .tab-item.active,.tabs-striped.tabs-color-dark .tab-item.tab-item-active{margin-top:-2px;color:#444;border:0 solid #444;border-top-width:2px}.tabs-striped.tabs-color-dark .tab-item.activated .badge,.tabs-striped.tabs-color-dark .tab-item.active .badge,.tabs-striped.tabs-color-dark .tab-item.tab-item-active .badge{top:2px;opacity:1}.tabs-background-light .tabs,.tabs-background-light>.tabs{background-color:#fff;background-image:linear-gradient(0deg,#ddd,#ddd 50%,transparent 50%);border-color:#ddd}.tabs-background-stable .tabs,.tabs-background-stable>.tabs{background-color:#f8f8f8;background-image:linear-gradient(0deg,#b2b2b2,#b2b2b2 50%,transparent 50%);border-color:#b2b2b2}.tabs-background-positive .tabs,.tabs-background-positive>.tabs{background-color:#387ef5;background-image:linear-gradient(0deg,#0c60ee,#0c60ee 50%,transparent 50%);border-color:#0c60ee}.tabs-background-calm .tabs,.tabs-background-calm>.tabs{background-color:#11c1f3;background-image:linear-gradient(0deg,#0a9dc7,#0a9dc7 50%,transparent 50%);border-color:#0a9dc7}.tabs-background-assertive .tabs,.tabs-background-assertive>.tabs{background-color:#ef473a;background-image:linear-gradient(0deg,#e42112,#e42112 50%,transparent 50%);border-color:#e42112}.tabs-background-balanced .tabs,.tabs-background-balanced>.tabs{background-color:#33cd5f;background-image:linear-gradient(0deg,#28a54c,#28a54c 50%,transparent 50%);border-color:#28a54c}.tabs-background-energized .tabs,.tabs-background-energized>.tabs{background-color:#ffc900;background-image:linear-gradient(0deg,#e6b500,#e6b500 50%,transparent 50%);border-color:#e6b500}.tabs-background-royal .tabs,.tabs-background-royal>.tabs{background-color:#886aea;background-image:linear-gradient(0deg,#6b46e5,#6b46e5 50%,transparent 50%);border-color:#6b46e5}.tabs-background-dark .tabs,.tabs-background-dark>.tabs{background-color:#444;background-image:linear-gradient(0deg,#111,#111 50%,transparent 50%);border-color:#111}.tabs-color-light .tab-item{color:rgba(255,255,255,.4);opacity:1}.tabs-color-light .tab-item .badge{opacity:.4}.tabs-color-light .tab-item.activated,.tabs-color-light .tab-item.active,.tabs-color-light .tab-item.tab-item-active{color:#fff;border:0 solid #fff}.tabs-color-light .tab-item.activated .badge,.tabs-color-light .tab-item.active .badge,.tabs-color-light .tab-item.tab-item-active .badge{opacity:1}.tabs-color-stable .tab-item{color:rgba(248,248,248,.4);opacity:1}.tabs-color-stable .tab-item .badge{opacity:.4}.tabs-color-stable .tab-item.activated,.tabs-color-stable .tab-item.active,.tabs-color-stable .tab-item.tab-item-active{color:#f8f8f8;border:0 solid #f8f8f8}.tabs-color-stable .tab-item.activated .badge,.tabs-color-stable .tab-item.active .badge,.tabs-color-stable .tab-item.tab-item-active .badge{opacity:1}.tabs-color-positive .tab-item{color:rgba(56,126,245,.4);opacity:1}.tabs-color-positive .tab-item .badge{opacity:.4}.tabs-color-positive .tab-item.activated,.tabs-color-positive .tab-item.active,.tabs-color-positive .tab-item.tab-item-active{color:#387ef5;border:0 solid #387ef5}.tabs-color-positive .tab-item.activated .badge,.tabs-color-positive .tab-item.active .badge,.tabs-color-positive .tab-item.tab-item-active .badge{opacity:1}.tabs-color-calm .tab-item{color:rgba(17,193,243,.4);opacity:1}.tabs-color-calm .tab-item .badge{opacity:.4}.tabs-color-calm .tab-item.activated,.tabs-color-calm .tab-item.active,.tabs-color-calm .tab-item.tab-item-active{color:#11c1f3;border:0 solid #11c1f3}.tabs-color-calm .tab-item.activated .badge,.tabs-color-calm .tab-item.active .badge,.tabs-color-calm .tab-item.tab-item-active .badge{opacity:1}.tabs-color-assertive .tab-item{color:rgba(239,71,58,.4);opacity:1}.tabs-color-assertive .tab-item .badge{opacity:.4}.tabs-color-assertive .tab-item.activated,.tabs-color-assertive .tab-item.active,.tabs-color-assertive .tab-item.tab-item-active{color:#ef473a;border:0 solid #ef473a}.tabs-color-assertive .tab-item.activated .badge,.tabs-color-assertive .tab-item.active .badge,.tabs-color-assertive .tab-item.tab-item-active .badge{opacity:1}.tabs-color-balanced .tab-item{color:rgba(51,205,95,.4);opacity:1}.tabs-color-balanced .tab-item .badge{opacity:.4}.tabs-color-balanced .tab-item.activated,.tabs-color-balanced .tab-item.active,.tabs-color-balanced .tab-item.tab-item-active{color:#33cd5f;border:0 solid #33cd5f}.tabs-color-balanced .tab-item.activated .badge,.tabs-color-balanced .tab-item.active .badge,.tabs-color-balanced .tab-item.tab-item-active .badge{opacity:1}.tabs-color-energized .tab-item{color:rgba(255,201,0,.4);opacity:1}.tabs-color-energized .tab-item .badge{opacity:.4}.tabs-color-energized .tab-item.activated,.tabs-color-energized .tab-item.active,.tabs-color-energized .tab-item.tab-item-active{color:#ffc900;border:0 solid #ffc900}.tabs-color-energized .tab-item.activated .badge,.tabs-color-energized .tab-item.active .badge,.tabs-color-energized .tab-item.tab-item-active .badge{opacity:1}.tabs-color-royal .tab-item{color:rgba(136,106,234,.4);opacity:1}.tabs-color-royal .tab-item .badge{opacity:.4}.tabs-color-royal .tab-item.activated,.tabs-color-royal .tab-item.active,.tabs-color-royal .tab-item.tab-item-active{color:#886aea;border:0 solid #886aea}.tabs-color-royal .tab-item.activated .badge,.tabs-color-royal .tab-item.active .badge,.tabs-color-royal .tab-item.tab-item-active .badge{opacity:1}.tabs-color-dark .tab-item{color:rgba(68,68,68,.4);opacity:1}.tabs-color-dark .tab-item .badge{opacity:.4}.tabs-color-dark .tab-item.activated,.tabs-color-dark .tab-item.active,.tabs-color-dark .tab-item.tab-item-active{color:#444;border:0 solid #444}.tabs-color-dark .tab-item.activated .badge,.tabs-color-dark .tab-item.active .badge,.tabs-color-dark .tab-item.tab-item-active .badge{opacity:1}ion-tabs.tabs-color-active-light .tab-item{color:#444}ion-tabs.tabs-color-active-light .tab-item.activated,ion-tabs.tabs-color-active-light .tab-item.active,ion-tabs.tabs-color-active-light .tab-item.tab-item-active{color:#fff}ion-tabs.tabs-striped.tabs-color-active-light .tab-item.activated,ion-tabs.tabs-striped.tabs-color-active-light .tab-item.active,ion-tabs.tabs-striped.tabs-color-active-light .tab-item.tab-item-active{border-color:#fff;color:#fff}ion-tabs.tabs-color-active-stable .tab-item{color:#444}ion-tabs.tabs-color-active-stable .tab-item.activated,ion-tabs.tabs-color-active-stable .tab-item.active,ion-tabs.tabs-color-active-stable .tab-item.tab-item-active{color:#f8f8f8}ion-tabs.tabs-striped.tabs-color-active-stable .tab-item.activated,ion-tabs.tabs-striped.tabs-color-active-stable .tab-item.active,ion-tabs.tabs-striped.tabs-color-active-stable .tab-item.tab-item-active{border-color:#f8f8f8;color:#f8f8f8}ion-tabs.tabs-color-active-positive .tab-item{color:#444}ion-tabs.tabs-color-active-positive .tab-item.activated,ion-tabs.tabs-color-active-positive .tab-item.active,ion-tabs.tabs-color-active-positive .tab-item.tab-item-active{color:#387ef5}ion-tabs.tabs-striped.tabs-color-active-positive .tab-item.activated,ion-tabs.tabs-striped.tabs-color-active-positive .tab-item.active,ion-tabs.tabs-striped.tabs-color-active-positive .tab-item.tab-item-active{border-color:#387ef5;color:#387ef5}ion-tabs.tabs-color-active-calm .tab-item{color:#444}ion-tabs.tabs-color-active-calm .tab-item.activated,ion-tabs.tabs-color-active-calm .tab-item.active,ion-tabs.tabs-color-active-calm .tab-item.tab-item-active{color:#11c1f3}ion-tabs.tabs-striped.tabs-color-active-calm .tab-item.activated,ion-tabs.tabs-striped.tabs-color-active-calm .tab-item.active,ion-tabs.tabs-striped.tabs-color-active-calm .tab-item.tab-item-active{border-color:#11c1f3;color:#11c1f3}ion-tabs.tabs-color-active-assertive .tab-item{color:#444}ion-tabs.tabs-color-active-assertive .tab-item.activated,ion-tabs.tabs-color-active-assertive .tab-item.active,ion-tabs.tabs-color-active-assertive .tab-item.tab-item-active{color:#ef473a}ion-tabs.tabs-striped.tabs-color-active-assertive .tab-item.activated,ion-tabs.tabs-striped.tabs-color-active-assertive .tab-item.active,ion-tabs.tabs-striped.tabs-color-active-assertive .tab-item.tab-item-active{border-color:#ef473a;color:#ef473a}ion-tabs.tabs-color-active-balanced .tab-item{color:#444}ion-tabs.tabs-color-active-balanced .tab-item.activated,ion-tabs.tabs-color-active-balanced .tab-item.active,ion-tabs.tabs-color-active-balanced .tab-item.tab-item-active{color:#33cd5f}ion-tabs.tabs-striped.tabs-color-active-balanced .tab-item.activated,ion-tabs.tabs-striped.tabs-color-active-balanced .tab-item.active,ion-tabs.tabs-striped.tabs-color-active-balanced .tab-item.tab-item-active{border-color:#33cd5f;color:#33cd5f}ion-tabs.tabs-color-active-energized .tab-item{color:#444}ion-tabs.tabs-color-active-energized .tab-item.activated,ion-tabs.tabs-color-active-energized .tab-item.active,ion-tabs.tabs-color-active-energized .tab-item.tab-item-active{color:#ffc900}ion-tabs.tabs-striped.tabs-color-active-energized .tab-item.activated,ion-tabs.tabs-striped.tabs-color-active-energized .tab-item.active,ion-tabs.tabs-striped.tabs-color-active-energized .tab-item.tab-item-active{border-color:#ffc900;color:#ffc900}ion-tabs.tabs-color-active-royal .tab-item{color:#444}ion-tabs.tabs-color-active-royal .tab-item.activated,ion-tabs.tabs-color-active-royal .tab-item.active,ion-tabs.tabs-color-active-royal .tab-item.tab-item-active{color:#886aea}ion-tabs.tabs-striped.tabs-color-active-royal .tab-item.activated,ion-tabs.tabs-striped.tabs-color-active-royal .tab-item.active,ion-tabs.tabs-striped.tabs-color-active-royal .tab-item.tab-item-active{border-color:#886aea;color:#886aea}ion-tabs.tabs-color-active-dark .tab-item{color:#fff}ion-tabs.tabs-color-active-dark .tab-item.activated,ion-tabs.tabs-color-active-dark .tab-item.active,ion-tabs.tabs-color-active-dark .tab-item.tab-item-active{color:#444}ion-tabs.tabs-striped.tabs-color-active-dark .tab-item.activated,ion-tabs.tabs-striped.tabs-color-active-dark .tab-item.active,ion-tabs.tabs-striped.tabs-color-active-dark .tab-item.tab-item-active{border-color:#444;color:#444}.tabs-top.tabs-striped{padding-bottom:0}.tabs-top.tabs-striped .tab-item{background:0 0;-webkit-transition:color .1s ease;-moz-transition:color .1s ease;-ms-transition:color .1s ease;-o-transition:color .1s ease;transition:color .1s ease}.tabs-top.tabs-striped .tab-item.activated,.tabs-top.tabs-striped .tab-item.active,.tabs-top.tabs-striped .tab-item.tab-item-active{margin-top:1px;border-width:0 0 2px 0!important;border-style:solid}.tabs-top.tabs-striped .tab-item.activated>.badge,.tabs-top.tabs-striped .tab-item.activated>i,.tabs-top.tabs-striped .tab-item.active>.badge,.tabs-top.tabs-striped .tab-item.active>i,.tabs-top.tabs-striped .tab-item.tab-item-active>.badge,.tabs-top.tabs-striped .tab-item.tab-item-active>i{margin-top:-1px}.tabs-top.tabs-striped .tab-item .badge{-webkit-transition:color .2s ease;-moz-transition:color .2s ease;-ms-transition:color .2s ease;-o-transition:color .2s ease;transition:color .2s ease}.tabs-top.tabs-striped:not(.tabs-icon-left):not(.tabs-icon-top) .tab-item.activated .tab-title,.tabs-top.tabs-striped:not(.tabs-icon-left):not(.tabs-icon-top) .tab-item.activated i,.tabs-top.tabs-striped:not(.tabs-icon-left):not(.tabs-icon-top) .tab-item.active .tab-title,.tabs-top.tabs-striped:not(.tabs-icon-left):not(.tabs-icon-top) .tab-item.active i,.tabs-top.tabs-striped:not(.tabs-icon-left):not(.tabs-icon-top) .tab-item.tab-item-active .tab-title,.tabs-top.tabs-striped:not(.tabs-icon-left):not(.tabs-icon-top) .tab-item.tab-item-active i{display:block;margin-top:-1px}.tabs-top.tabs-striped.tabs-icon-left .tab-item{margin-top:1px}.tabs-top.tabs-striped.tabs-icon-left .tab-item.activated .tab-title,.tabs-top.tabs-striped.tabs-icon-left .tab-item.activated i,.tabs-top.tabs-striped.tabs-icon-left .tab-item.active .tab-title,.tabs-top.tabs-striped.tabs-icon-left .tab-item.active i,.tabs-top.tabs-striped.tabs-icon-left .tab-item.tab-item-active .tab-title,.tabs-top.tabs-striped.tabs-icon-left .tab-item.tab-item-active i{margin-top:-.1em}.tabs-top>.tabs,.tabs.tabs-top{top:44px;padding-top:0;background-position:bottom;border-top-width:0;border-bottom-width:1px}.tabs-top>.tabs .tab-item.activated .badge,.tabs-top>.tabs .tab-item.active .badge,.tabs-top>.tabs .tab-item.tab-item-active .badge,.tabs.tabs-top .tab-item.activated .badge,.tabs.tabs-top .tab-item.active .badge,.tabs.tabs-top .tab-item.tab-item-active .badge{top:4%}.tabs-top~.bar-header{border-bottom-width:0}.tab-item{-webkit-box-flex:1;-webkit-flex:1;-moz-box-flex:1;-moz-flex:1;-ms-flex:1;flex:1;display:block;overflow:hidden;max-width:150px;height:100%;color:inherit;text-align:center;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;font-weight:400;font-size:14px;font-family:"-apple-system","Helvetica Neue",Roboto,"Segoe UI",sans-serif;opacity:.7}.tab-item:hover{cursor:pointer}.tab-item.tab-hidden,.tabs-item-hide>.tabs,.tabs.tabs-item-hide{display:none}.tabs-icon-bottom.tabs .tab-item,.tabs-icon-bottom>.tabs .tab-item,.tabs-icon-top.tabs .tab-item,.tabs-icon-top>.tabs .tab-item{font-size:10px;line-height:14px}.tab-item .icon{display:block;margin:0 auto;height:32px;font-size:32px}.tabs-icon-left.tabs .tab-item,.tabs-icon-left>.tabs .tab-item,.tabs-icon-right.tabs .tab-item,.tabs-icon-right>.tabs .tab-item{font-size:10px}.tabs-icon-left.tabs .tab-item .icon,.tabs-icon-left.tabs .tab-item .tab-title,.tabs-icon-left>.tabs .tab-item .icon,.tabs-icon-left>.tabs .tab-item .tab-title,.tabs-icon-right.tabs .tab-item .icon,.tabs-icon-right.tabs .tab-item .tab-title,.tabs-icon-right>.tabs .tab-item .icon,.tabs-icon-right>.tabs .tab-item .tab-title{display:inline-block;vertical-align:top;margin-top:-.1em}.tabs-icon-left.tabs .tab-item .icon:before,.tabs-icon-left.tabs .tab-item .tab-title:before,.tabs-icon-left>.tabs .tab-item .icon:before,.tabs-icon-left>.tabs .tab-item .tab-title:before,.tabs-icon-right.tabs .tab-item .icon:before,.tabs-icon-right.tabs .tab-item .tab-title:before,.tabs-icon-right>.tabs .tab-item .icon:before,.tabs-icon-right>.tabs .tab-item .tab-title:before{font-size:24px;line-height:49px}.tabs-icon-left.tabs .tab-item .icon,.tabs-icon-left>.tabs .tab-item .icon{padding-right:3px}.tabs-icon-right.tabs .tab-item .icon,.tabs-icon-right>.tabs .tab-item .icon{padding-left:3px}.tabs-icon-only.tabs .icon,.tabs-icon-only>.tabs .icon{line-height:inherit}.tab-item.has-badge{position:relative}.tab-item .badge{position:absolute;top:4%;right:33%;right:calc(50% - 26px);padding:1px 6px;height:auto;font-size:12px;line-height:16px}.tab-item.activated,.tab-item.active,.tab-item.tab-item-active{opacity:1}.tab-item.activated.tab-item-light,.tab-item.active.tab-item-light,.tab-item.tab-item-active.tab-item-light{color:#fff}.tab-item.activated.tab-item-stable,.tab-item.active.tab-item-stable,.tab-item.tab-item-active.tab-item-stable{color:#f8f8f8}.tab-item.activated.tab-item-positive,.tab-item.active.tab-item-positive,.tab-item.tab-item-active.tab-item-positive{color:#387ef5}.tab-item.activated.tab-item-calm,.tab-item.active.tab-item-calm,.tab-item.tab-item-active.tab-item-calm{color:#11c1f3}.tab-item.activated.tab-item-assertive,.tab-item.active.tab-item-assertive,.tab-item.tab-item-active.tab-item-assertive{color:#ef473a}.tab-item.activated.tab-item-balanced,.tab-item.active.tab-item-balanced,.tab-item.tab-item-active.tab-item-balanced{color:#33cd5f}.tab-item.activated.tab-item-energized,.tab-item.active.tab-item-energized,.tab-item.tab-item-active.tab-item-energized{color:#ffc900}.tab-item.activated.tab-item-royal,.tab-item.active.tab-item-royal,.tab-item.tab-item-active.tab-item-royal{color:#886aea}.tab-item.activated.tab-item-dark,.tab-item.active.tab-item-dark,.tab-item.tab-item-active.tab-item-dark{color:#444}.item.tabs{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-moz-flex;display:-ms-flexbox;display:flex;padding:0}.item.tabs .icon:before{position:relative}.tab-item.disabled,.tab-item[disabled]{opacity:.4;cursor:default;pointer-events:none}.nav-bar-tabs-top.hide~.view-container .tabs-top .tabs{top:0}.pane[hide-nav-bar=true] .has-tabs-top{top:49px}.menu{position:absolute;top:0;bottom:0;z-index:0;overflow:hidden;min-height:100%;max-height:100%;width:275px;background-color:#fff}.menu .scroll-content{z-index:10}.menu .bar-header{z-index:11}.menu-content{-webkit-transform:none;transform:none;box-shadow:-1px 0 2px rgba(0,0,0,.2),1px 0 2px rgba(0,0,0,.2)}.menu-open .menu-content .pane,.menu-open .menu-content .scroll-content,.menu-open .menu-content .scroll-content .scroll{pointer-events:none}.menu-open .menu-content .scroll-content:not(.overflow-scroll){overflow:hidden}.grade-b .menu-content,.grade-c .menu-content{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;right:-1px;left:-1px;border-right:1px solid #ccc;border-left:1px solid #ccc;box-shadow:none}.menu-left{left:0}.menu-right{right:0}.aside-open.aside-resizing .menu-right{display:none}.menu-animated{-webkit-transition:-webkit-transform 200ms ease;transition:transform 200ms ease}.modal-backdrop,.modal-backdrop-bg{position:fixed;top:0;left:0;z-index:10;width:100%;height:100%}.modal-backdrop-bg{pointer-events:none}.modal{display:block;position:absolute;top:0;z-index:10;overflow:hidden;min-height:100%;width:100%;background-color:#fff}@media (min-width:680px){.modal{top:20%;right:20%;bottom:20%;left:20%;min-height:240px;width:60%}.modal.ng-leave-active{bottom:0}.platform-ios.platform-cordova .modal-wrapper .modal .bar-header:not(.bar-subheader){height:44px}.platform-ios.platform-cordova .modal-wrapper .modal .bar-header:not(.bar-subheader)>*{margin-top:0}.platform-ios.platform-cordova .modal-wrapper .modal .bar-subheader,.platform-ios.platform-cordova .modal-wrapper .modal .has-header,.platform-ios.platform-cordova .modal-wrapper .modal .tabs-top>.tabs,.platform-ios.platform-cordova .modal-wrapper .modal .tabs.tabs-top{top:44px}.platform-ios.platform-cordova .modal-wrapper .modal .has-subheader{top:88px}.platform-ios.platform-cordova .modal-wrapper .modal .has-header.has-tabs-top{top:93px}.platform-ios.platform-cordova .modal-wrapper .modal .has-header.has-subheader.has-tabs-top{top:137px}.modal-backdrop-bg{-webkit-transition:opacity 300ms ease-in-out;transition:opacity 300ms ease-in-out;background-color:#000;opacity:0}.active .modal-backdrop-bg{opacity:.5}}.modal-open{pointer-events:none}.modal-open .modal,.modal-open .modal-backdrop{pointer-events:auto}.modal-open.loading-active .modal,.modal-open.loading-active .modal-backdrop{pointer-events:none}.popover-backdrop{position:fixed;top:0;left:0;z-index:10;width:100%;height:100%;background-color:transparent}.popover-backdrop.active{background-color:rgba(0,0,0,.1)}.popover{position:absolute;top:25%;left:50%;z-index:10;display:block;margin-top:12px;margin-left:-110px;height:280px;width:220px;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.4);opacity:0}.popover .item:first-child{border-top:0}.popover .item:last-child{border-bottom:0}.popover.popover-bottom{margin-top:-12px}.popover,.popover .bar-header{border-radius:2px}.popover .scroll-content{z-index:1;margin:2px 0}.popover .bar-header{border-bottom-right-radius:0;border-bottom-left-radius:0}.popover .has-header{border-top-right-radius:0;border-top-left-radius:0}.popover-arrow{display:none}.platform-ios .popover{box-shadow:0 0 40px rgba(0,0,0,.08);border-radius:10px}.platform-ios .popover .bar-header{-webkit-border-top-right-radius:10px;border-top-right-radius:10px;-webkit-border-top-left-radius:10px;border-top-left-radius:10px}.platform-ios .popover .scroll-content{margin:8px 0;border-radius:10px}.platform-ios .popover .scroll-content.has-header{margin-top:0}.platform-ios .popover-arrow{position:absolute;display:block;top:-17px;width:30px;height:19px;overflow:hidden}.platform-ios .popover-arrow:after{position:absolute;top:12px;left:5px;width:20px;height:20px;background-color:#fff;border-radius:3px;content:'';-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.platform-ios .popover-bottom .popover-arrow{top:auto;bottom:-10px}.platform-ios .popover-bottom .popover-arrow:after{top:-6px}.platform-android .popover{margin-top:-32px;background-color:#fafafa;box-shadow:0 2px 6px rgba(0,0,0,.35)}.platform-android .popover .item{border-color:#fafafa;background-color:#fafafa;color:#4d4d4d}.platform-android .popover.popover-bottom{margin-top:32px}.platform-android .popover-backdrop,.platform-android .popover-backdrop.active{background-color:transparent}.popover-open{pointer-events:none}.popover-open .popover,.popover-open .popover-backdrop{pointer-events:auto}.popover-open.loading-active .popover,.popover-open.loading-active .popover-backdrop{pointer-events:none}@media (min-width:680px){.popover{width:360px;margin-left:-180px}}.popup-container{position:absolute;top:0;left:0;bottom:0;right:0;background:0 0;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;-moz-justify-content:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;-moz-align-items:center;align-items:center;z-index:12;visibility:hidden}.popup-container.popup-showing{visibility:visible}.popup-container.popup-hidden .popup{-webkit-animation-name:scaleOut;animation-name:scaleOut;-webkit-animation-duration:.1s;animation-duration:.1s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.popup-container.active .popup{-webkit-animation-name:superScaleIn;animation-name:superScaleIn;-webkit-animation-duration:.2s;animation-duration:.2s;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.popup-container .popup{width:250px;max-width:100%;max-height:90%;border-radius:0;background-color:rgba(255,255,255,.9);display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-direction:normal;-webkit-box-orient:vertical;-webkit-flex-direction:column;-moz-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.popup-container input,.popup-container textarea{width:100%}.popup-head{padding:15px 10px;border-bottom:1px solid #eee;text-align:center}.popup-title{margin:0;padding:0;font-size:15px}.popup-sub-title{margin:5px 0 0 0;padding:0;font-weight:400;font-size:11px}.popup-body{padding:10px;overflow:auto}.popup-buttons{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-direction:normal;-webkit-box-orient:horizontal;-webkit-flex-direction:row;-moz-flex-direction:row;-ms-flex-direction:row;flex-direction:row;padding:10px;min-height:65px}.popup-buttons .button{-webkit-box-flex:1;-webkit-flex:1;-moz-box-flex:1;-moz-flex:1;-ms-flex:1;flex:1;display:block;min-height:45px;border-radius:2px;line-height:20px;margin-right:5px}.popup-buttons .button:last-child{margin-right:0}.popup-open,.popup-open.modal-open .modal{pointer-events:none}.popup-open .popup,.popup-open .popup-backdrop{pointer-events:auto}.loading-container{position:absolute;left:0;top:0;right:0;bottom:0;z-index:13;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;-webkit-justify-content:center;-moz-justify-content:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;-moz-align-items:center;align-items:center;-webkit-transition:.2s opacity linear;transition:.2s opacity linear;visibility:hidden;opacity:0}.loading-container:not(.visible) .icon,.loading-container:not(.visible) .spinner{display:none}.loading-container.visible{visibility:visible}.loading-container.active{opacity:1}.loading-container .loading{padding:20px;border-radius:5px;background-color:rgba(0,0,0,.7);color:#fff;text-align:center;text-overflow:ellipsis;font-size:15px}.loading-container .loading h1,.loading-container .loading h2,.loading-container .loading h3,.loading-container .loading h4,.loading-container .loading h5,.loading-container .loading h6{color:#fff}.item{border-color:#ddd;background-color:#fff;color:#444;position:relative;z-index:2;display:block;margin:-1px;padding:16px;border-width:1px;border-style:solid;font-size:16px}.item h2{margin:0 0 2px 0;font-size:16px;font-weight:400}.item h3{margin:0 0 4px 0;font-size:14px}.item h4{margin:0 0 4px 0;font-size:12px}.item h5,.item h6{margin:0 0 3px 0;font-size:10px}.item p{color:#666;font-size:14px;margin-bottom:2px}.item h1:last-child,.item h2:last-child,.item h3:last-child,.item h4:last-child,.item h5:last-child,.item h6:last-child,.item p:last-child{margin-bottom:0}.item .badge{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-moz-flex;display:-ms-flexbox;display:flex;position:absolute;top:16px;right:32px}.item.item-button-right .badge{right:67px}.item.item-divider .badge{top:8px}.item .badge+.badge{margin-right:5px}.item.item-light{border-color:#ddd;background-color:#fff;color:#444}.item.item-stable{border-color:#b2b2b2;background-color:#f8f8f8;color:#444}.item.item-positive{border-color:#0c60ee;background-color:#387ef5;color:#fff}.item.item-calm{border-color:#0a9dc7;background-color:#11c1f3;color:#fff}.item.item-assertive{border-color:#e42112;background-color:#ef473a;color:#fff}.item.item-balanced{border-color:#28a54c;background-color:#33cd5f;color:#fff}.item.item-energized{border-color:#e6b500;background-color:#ffc900;color:#fff}.item.item-royal{border-color:#6b46e5;background-color:#886aea;color:#fff}.item.item-dark{border-color:#111;background-color:#444;color:#fff}.item[ng-click]:hover{cursor:pointer}.item-borderless,.list-borderless .item{border-width:0}.item .item-content.activated,.item .item-content.activated.item-complex>.item-content,.item .item-content.active,.item .item-content.active.item-complex>.item-content,.item-complex.activated .item-content,.item-complex.activated .item-content.item-complex>.item-content,.item-complex.active .item-content,.item-complex.active .item-content.item-complex>.item-content,.item.activated,.item.activated.item-complex>.item-content,.item.active,.item.active.item-complex>.item-content{border-color:#ccc;background-color:#D9D9D9}.item .item-content.activated.item-light,.item .item-content.activated.item-light.item-complex>.item-content,.item .item-content.active.item-light,.item .item-content.active.item-light.item-complex>.item-content,.item-complex.activated .item-content.item-light,.item-complex.activated .item-content.item-light.item-complex>.item-content,.item-complex.active .item-content.item-light,.item-complex.active .item-content.item-light.item-complex>.item-content,.item.activated.item-light,.item.activated.item-light.item-complex>.item-content,.item.active.item-light,.item.active.item-light.item-complex>.item-content{border-color:#ccc;background-color:#fafafa}.item .item-content.activated.item-stable,.item .item-content.activated.item-stable.item-complex>.item-content,.item .item-content.active.item-stable,.item .item-content.active.item-stable.item-complex>.item-content,.item-complex.activated .item-content.item-stable,.item-complex.activated .item-content.item-stable.item-complex>.item-content,.item-complex.active .item-content.item-stable,.item-complex.active .item-content.item-stable.item-complex>.item-content,.item.activated.item-stable,.item.activated.item-stable.item-complex>.item-content,.item.active.item-stable,.item.active.item-stable.item-complex>.item-content{border-color:#a2a2a2;background-color:#e5e5e5}.item .item-content.activated.item-positive,.item .item-content.activated.item-positive.item-complex>.item-content,.item .item-content.active.item-positive,.item .item-content.active.item-positive.item-complex>.item-content,.item-complex.activated .item-content.item-positive,.item-complex.activated .item-content.item-positive.item-complex>.item-content,.item-complex.active .item-content.item-positive,.item-complex.active .item-content.item-positive.item-complex>.item-content,.item.activated.item-positive,.item.activated.item-positive.item-complex>.item-content,.item.active.item-positive,.item.active.item-positive.item-complex>.item-content{border-color:#0c60ee;background-color:#0c60ee}.item .item-content.activated.item-calm,.item .item-content.activated.item-calm.item-complex>.item-content,.item .item-content.active.item-calm,.item .item-content.active.item-calm.item-complex>.item-content,.item-complex.activated .item-content.item-calm,.item-complex.activated .item-content.item-calm.item-complex>.item-content,.item-complex.active .item-content.item-calm,.item-complex.active .item-content.item-calm.item-complex>.item-content,.item.activated.item-calm,.item.activated.item-calm.item-complex>.item-content,.item.active.item-calm,.item.active.item-calm.item-complex>.item-content{border-color:#0a9dc7;background-color:#0a9dc7}.item .item-content.activated.item-assertive,.item .item-content.activated.item-assertive.item-complex>.item-content,.item .item-content.active.item-assertive,.item .item-content.active.item-assertive.item-complex>.item-content,.item-complex.activated .item-content.item-assertive,.item-complex.activated .item-content.item-assertive.item-complex>.item-content,.item-complex.active .item-content.item-assertive,.item-complex.active .item-content.item-assertive.item-complex>.item-content,.item.activated.item-assertive,.item.activated.item-assertive.item-complex>.item-content,.item.active.item-assertive,.item.active.item-assertive.item-complex>.item-content{border-color:#e42112;background-color:#e42112}.item .item-content.activated.item-balanced,.item .item-content.activated.item-balanced.item-complex>.item-content,.item .item-content.active.item-balanced,.item .item-content.active.item-balanced.item-complex>.item-content,.item-complex.activated .item-content.item-balanced,.item-complex.activated .item-content.item-balanced.item-complex>.item-content,.item-complex.active .item-content.item-balanced,.item-complex.active .item-content.item-balanced.item-complex>.item-content,.item.activated.item-balanced,.item.activated.item-balanced.item-complex>.item-content,.item.active.item-balanced,.item.active.item-balanced.item-complex>.item-content{border-color:#28a54c;background-color:#28a54c}.item .item-content.activated.item-energized,.item .item-content.activated.item-energized.item-complex>.item-content,.item .item-content.active.item-energized,.item .item-content.active.item-energized.item-complex>.item-content,.item-complex.activated .item-content.item-energized,.item-complex.activated .item-content.item-energized.item-complex>.item-content,.item-complex.active .item-content.item-energized,.item-complex.active .item-content.item-energized.item-complex>.item-content,.item.activated.item-energized,.item.activated.item-energized.item-complex>.item-content,.item.active.item-energized,.item.active.item-energized.item-complex>.item-content{border-color:#e6b500;background-color:#e6b500}.item .item-content.activated.item-royal,.item .item-content.activated.item-royal.item-complex>.item-content,.item .item-content.active.item-royal,.item .item-content.active.item-royal.item-complex>.item-content,.item-complex.activated .item-content.item-royal,.item-complex.activated .item-content.item-royal.item-complex>.item-content,.item-complex.active .item-content.item-royal,.item-complex.active .item-content.item-royal.item-complex>.item-content,.item.activated.item-royal,.item.activated.item-royal.item-complex>.item-content,.item.active.item-royal,.item.active.item-royal.item-complex>.item-content{border-color:#6b46e5;background-color:#6b46e5}.item .item-content.activated.item-dark,.item .item-content.activated.item-dark.item-complex>.item-content,.item .item-content.active.item-dark,.item .item-content.active.item-dark.item-complex>.item-content,.item-complex.activated .item-content.item-dark,.item-complex.activated .item-content.item-dark.item-complex>.item-content,.item-complex.active .item-content.item-dark,.item-complex.active .item-content.item-dark.item-complex>.item-content,.item.activated.item-dark,.item.activated.item-dark.item-complex>.item-content,.item.active.item-dark,.item.active.item-dark.item-complex>.item-content{border-color:#000;background-color:#262626}.item,.item h1,.item h2,.item h3,.item h4,.item h5,.item h6,.item p,.item-content,.item-content h1,.item-content h2,.item-content h3,.item-content h4,.item-content h5,.item-content h6,.item-content p{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}a.item{color:inherit;text-decoration:none}a.item:focus,a.item:hover{text-decoration:none}.item-complex,a.item.item-complex,button.item.item-complex{padding:0}.item-complex .item-content,.item-radio .item-content{position:relative;z-index:2;padding:16px 49px 16px 16px;border:none;background-color:#fff}a.item-content{display:block;color:inherit;text-decoration:none}.item-body h1,.item-body h2,.item-body h3,.item-body h4,.item-body h5,.item-body h6,.item-body p,.item-complex.item-text-wrap,.item-complex.item-text-wrap .item-content,.item-complex.item-text-wrap h1,.item-complex.item-text-wrap h2,.item-complex.item-text-wrap h3,.item-complex.item-text-wrap h4,.item-complex.item-text-wrap h5,.item-complex.item-text-wrap h6,.item-complex.item-text-wrap p,.item-text-wrap,.item-text-wrap .item,.item-text-wrap .item-content,.item-text-wrap h1,.item-text-wrap h2,.item-text-wrap h3,.item-text-wrap h4,.item-text-wrap h5,.item-text-wrap h6,.item-text-wrap p{overflow:visible;white-space:normal}.item-complex.item-light>.item-content{border-color:#ddd;background-color:#fff;color:#444}.item-complex.item-light>.item-content.active,.item-complex.item-light>.item-content.active.item-complex>.item-content,.item-complex.item-light>.item-content:active,.item-complex.item-light>.item-content:active.item-complex>.item-content{border-color:#ccc;background-color:#fafafa}.item-complex.item-stable>.item-content{border-color:#b2b2b2;background-color:#f8f8f8;color:#444}.item-complex.item-stable>.item-content.active,.item-complex.item-stable>.item-content.active.item-complex>.item-content,.item-complex.item-stable>.item-content:active,.item-complex.item-stable>.item-content:active.item-complex>.item-content{border-color:#a2a2a2;background-color:#e5e5e5}.item-complex.item-positive>.item-content{border-color:#0c60ee;background-color:#387ef5;color:#fff}.item-complex.item-positive>.item-content.active,.item-complex.item-positive>.item-content.active.item-complex>.item-content,.item-complex.item-positive>.item-content:active,.item-complex.item-positive>.item-content:active.item-complex>.item-content{border-color:#0c60ee;background-color:#0c60ee}.item-complex.item-calm>.item-content{border-color:#0a9dc7;background-color:#11c1f3;color:#fff}.item-complex.item-calm>.item-content.active,.item-complex.item-calm>.item-content.active.item-complex>.item-content,.item-complex.item-calm>.item-content:active,.item-complex.item-calm>.item-content:active.item-complex>.item-content{border-color:#0a9dc7;background-color:#0a9dc7}.item-complex.item-assertive>.item-content{border-color:#e42112;background-color:#ef473a;color:#fff}.item-complex.item-assertive>.item-content.active,.item-complex.item-assertive>.item-content.active.item-complex>.item-content,.item-complex.item-assertive>.item-content:active,.item-complex.item-assertive>.item-content:active.item-complex>.item-content{border-color:#e42112;background-color:#e42112}.item-complex.item-balanced>.item-content{border-color:#28a54c;background-color:#33cd5f;color:#fff}.item-complex.item-balanced>.item-content.active,.item-complex.item-balanced>.item-content.active.item-complex>.item-content,.item-complex.item-balanced>.item-content:active,.item-complex.item-balanced>.item-content:active.item-complex>.item-content{border-color:#28a54c;background-color:#28a54c}.item-complex.item-energized>.item-content{border-color:#e6b500;background-color:#ffc900;color:#fff}.item-complex.item-energized>.item-content.active,.item-complex.item-energized>.item-content.active.item-complex>.item-content,.item-complex.item-energized>.item-content:active,.item-complex.item-energized>.item-content:active.item-complex>.item-content{border-color:#e6b500;background-color:#e6b500}.item-complex.item-royal>.item-content{border-color:#6b46e5;background-color:#886aea;color:#fff}.item-complex.item-royal>.item-content.active,.item-complex.item-royal>.item-content.active.item-complex>.item-content,.item-complex.item-royal>.item-content:active,.item-complex.item-royal>.item-content:active.item-complex>.item-content{border-color:#6b46e5;background-color:#6b46e5}.item-complex.item-dark>.item-content{border-color:#111;background-color:#444;color:#fff}.item-complex.item-dark>.item-content.active,.item-complex.item-dark>.item-content.active.item-complex>.item-content,.item-complex.item-dark>.item-content:active,.item-complex.item-dark>.item-content:active.item-complex>.item-content{border-color:#000;background-color:#262626}.item-icon-left .icon,.item-icon-right .icon{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;-moz-align-items:center;align-items:center;position:absolute;top:0;height:100%;font-size:32px}.item-icon-left .icon:before,.item-icon-right .icon:before{display:block;width:32px;text-align:center}.item .fill-icon{min-width:30px;min-height:30px;font-size:28px}.item-icon-left{padding-left:54px}.item-icon-left .icon{left:11px}.item-complex.item-icon-left{padding-left:0}.item-complex.item-icon-left .item-content{padding-left:54px}.item-icon-right{padding-right:54px}.item-icon-right .icon{right:11px}.item-complex.item-icon-right{padding-right:0}.item-complex.item-icon-right .item-content{padding-right:54px}.item-icon-left.item-icon-right .icon:first-child{right:auto}.item-icon-left .item-delete .icon,.item-icon-left.item-icon-right .icon:last-child{left:auto}.item-icon-left .icon-accessory,.item-icon-right .icon-accessory{color:#ccc;font-size:16px}.item-icon-left .icon-accessory{left:3px}.item-icon-right .icon-accessory{right:3px}.item-button-left{padding-left:72px}.item-button-left .item-content>.button,.item-button-left>.button{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;-moz-align-items:center;align-items:center;position:absolute;top:8px;left:11px;min-width:34px;min-height:34px;font-size:18px;line-height:32px}.item-button-left .item-content>.button .icon:before,.item-button-left>.button .icon:before{position:relative;left:auto;width:auto;line-height:31px}.item-button-left .item-content>.button>.button,.item-button-left>.button>.button{margin:0 2px;min-height:34px;font-size:18px;line-height:32px}.item-button-right,a.item.item-button-right,button.item.item-button-right{padding-right:80px}.item-button-right .item-content>.button,.item-button-right .item-content>.buttons,.item-button-right>.button,.item-button-right>.buttons{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;-moz-align-items:center;align-items:center;position:absolute;top:8px;right:16px;min-width:34px;min-height:34px;font-size:18px;line-height:32px}.item-button-right .item-content>.button .icon:before,.item-button-right .item-content>.buttons .icon:before,.item-button-right>.button .icon:before,.item-button-right>.buttons .icon:before{position:relative;left:auto;width:auto;line-height:31px}.item-button-right .item-content>.button>.button,.item-button-right .item-content>.buttons>.button,.item-button-right>.button>.button,.item-button-right>.buttons>.button{margin:0 2px;min-width:34px;min-height:34px;font-size:18px;line-height:32px}.item-button-left.item-button-right .button:first-child{right:auto}.item-button-left.item-button-right .button:last-child{left:auto}.item-avatar,.item-avatar .item-content,.item-avatar-left,.item-avatar-left .item-content{padding-left:72px;min-height:72px}.item-avatar .item-content .item-image,.item-avatar .item-content>img:first-child,.item-avatar .item-image,.item-avatar-left .item-content .item-image,.item-avatar-left .item-content>img:first-child,.item-avatar-left .item-image,.item-avatar-left>img:first-child,.item-avatar>img:first-child{position:absolute;top:16px;left:16px;max-width:40px;max-height:40px;width:100%;height:100%;border-radius:50%}.item-avatar-right,.item-avatar-right .item-content{padding-right:72px;min-height:72px}.item-avatar-right .item-content .item-image,.item-avatar-right .item-content>img:first-child,.item-avatar-right .item-image,.item-avatar-right>img:first-child{position:absolute;top:16px;right:16px;max-width:40px;max-height:40px;width:100%;height:100%;border-radius:50%}.item-thumbnail-left,.item-thumbnail-left .item-content{padding-top:8px;padding-left:106px;min-height:100px}.item-thumbnail-left .item-content .item-image,.item-thumbnail-left .item-content>img:first-child,.item-thumbnail-left .item-image,.item-thumbnail-left>img:first-child{position:absolute;top:10px;left:10px;max-width:80px;max-height:80px;width:100%;height:100%}.item-avatar-left.item-complex,.item-avatar.item-complex,.item-thumbnail-left.item-complex{padding-top:0;padding-left:0}.item-thumbnail-right,.item-thumbnail-right .item-content{padding-top:8px;padding-right:106px;min-height:100px}.item-thumbnail-right .item-content .item-image,.item-thumbnail-right .item-content>img:first-child,.item-thumbnail-right .item-image,.item-thumbnail-right>img:first-child{position:absolute;top:10px;right:10px;max-width:80px;max-height:80px;width:100%;height:100%}.item-avatar-right.item-complex,.item-thumbnail-right.item-complex{padding-top:0;padding-right:0}.item-image{padding:0;text-align:center}.item-image .list-img,.item-image img:first-child{width:100%;vertical-align:middle}.item-body{overflow:auto;padding:16px;text-overflow:inherit;white-space:normal}.item-body h1,.item-body h2,.item-body h3,.item-body h4,.item-body h5,.item-body h6,.item-body p{margin-top:16px;margin-bottom:16px}.item-divider{padding-top:8px;padding-bottom:8px;min-height:30px;background-color:#f5f5f5;color:#222;font-weight:500}.item-divider-ios,.platform-ios .item-divider-platform{padding-top:26px;text-transform:uppercase;font-weight:300;font-size:13px;background-color:#efeff4;color:#555}.item-divider-android,.platform-android .item-divider-platform{font-weight:300;font-size:13px}.item-note{float:right;color:#aaa;font-size:14px}.item-left-editable .item-content,.item-right-editable .item-content{-webkit-transition-duration:250ms;transition-duration:250ms;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;-webkit-transition-property:-webkit-transform;-moz-transition-property:-moz-transform;transition-property:transform}.item-left-editing.item-left-editable .item-content,.list-left-editing .item-left-editable .item-content{-webkit-transform:translate3d(50px,0,0);transform:translate3d(50px,0,0)}.item-remove-animate.ng-leave{-webkit-transition-duration:300ms;transition-duration:300ms}.item-remove-animate.ng-leave .item-content,.item-remove-animate.ng-leave:last-of-type{-webkit-transition-duration:300ms;transition-duration:300ms;-webkit-transition-timing-function:ease-in;transition-timing-function:ease-in;-webkit-transition-property:all;transition-property:all}.item-remove-animate.ng-leave.ng-leave-active .item-content{opacity:0;-webkit-transform:translate3d(-100%,0,0)!important;transform:translate3d(-100%,0,0)!important}.item-remove-animate.ng-leave.ng-leave-active:last-of-type{opacity:0}.item-remove-animate.ng-leave.ng-leave-active~ion-item:not(.ng-leave){-webkit-transform:translate3d(0,-webkit-calc(-100% + 1px),0);transform:translate3d(0,calc(-100% + 1px),0);-webkit-transition-duration:300ms;transition-duration:300ms;-webkit-transition-timing-function:cubic-bezier(.25,.81,.24,1);transition-timing-function:cubic-bezier(.25,.81,.24,1);-webkit-transition-property:all;transition-property:all}.item-left-edit{-webkit-transition:all ease-in-out 125ms;transition:all ease-in-out 125ms;position:absolute;top:0;left:0;z-index:0;width:50px;height:100%;line-height:100%;display:none;opacity:0;-webkit-transform:translate3d(-21px,0,0);transform:translate3d(-21px,0,0)}.item-left-edit .button{height:100%}.item-left-edit .button.icon{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;-moz-align-items:center;align-items:center;position:absolute;top:0;height:100%}.item-left-edit.visible{display:block}.item-left-edit.visible.active{opacity:1;-webkit-transform:translate3d(8px,0,0);transform:translate3d(8px,0,0)}.list-left-editing .item-left-edit{-webkit-transition-delay:125ms;transition-delay:125ms}.item-delete .button.icon{color:#ef473a;font-size:24px}.item-delete .button.icon:hover{opacity:.7}.item-right-edit{-webkit-transition:all ease-in-out 250ms;transition:all ease-in-out 250ms;position:absolute;top:0;right:0;z-index:3;width:75px;height:100%;background:inherit;padding-left:20px;display:block;opacity:0;-webkit-transform:translate3d(75px,0,0);transform:translate3d(75px,0,0)}.item-right-edit .button{min-width:50px;height:100%}.item-right-edit .button.icon{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;-moz-align-items:center;align-items:center;position:absolute;top:0;height:100%;font-size:32px}.item-right-edit.visible{display:block}.item-right-edit.visible.active{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.item-reorder .button.icon{color:#444;font-size:32px}.item-reordering{position:absolute;left:0;top:0;z-index:9;width:100%;box-shadow:0 0 10px 0 #aaa}.item-reordering .item-reorder{z-index:9}.item-placeholder{opacity:.7}.item-options{position:absolute;top:0;right:0;z-index:1;height:100%}.item-options .button{height:100%;border:none;border-radius:0;display:-webkit-inline-box;display:-webkit-inline-flex;display:-moz-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;-moz-align-items:center;align-items:center}.item-options .button:before{margin:0 auto}.list{position:relative;padding-top:1px;padding-bottom:1px;padding-left:0;margin-bottom:20px}.list:last-child{margin-bottom:0}.list:last-child.card{margin-bottom:40px}.list-header{margin-top:20px;padding:5px 15px;background-color:transparent;color:#222;font-weight:700}.card.list .list-item{padding-right:1px;padding-left:1px}.card,.list-inset{overflow:hidden;margin:20px 10px;border-radius:2px;background-color:#fff}.card{padding-top:1px;padding-bottom:1px;box-shadow:0 1px 3px rgba(0,0,0,.3)}.card .item{border-left:0;border-right:0}.card .item:first-child{border-top:0}.card .item:last-child{border-bottom:0}.padding .card,.padding .list-inset{margin-left:0;margin-right:0}.card .item:first-child,.card .item:first-child .item-content,.list-inset .item:first-child,.list-inset .item:first-child .item-content,.padding>.list .item:first-child,.padding>.list .item:first-child .item-content{border-top-left-radius:2px;border-top-right-radius:2px}.card .item:last-child,.card .item:last-child .item-content,.list-inset .item:last-child,.list-inset .item:last-child .item-content,.padding>.list .item:last-child,.padding>.list .item:last-child .item-content{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.card .item:last-child,.list-inset .item:last-child{margin-bottom:-1px}.card .item,.list-inset .item,.padding-horizontal>.list .item,.padding>.list .item{margin-right:0;margin-left:0}.card .item.item-input input,.list-inset .item.item-input input,.padding-horizontal>.list .item.item-input input,.padding>.list .item.item-input input{padding-right:44px}.padding-left>.list .item{margin-left:0}.padding-right>.list .item{margin-right:0}.badge{background-color:transparent;color:#AAA;z-index:1;display:inline-block;padding:3px 8px;min-width:10px;border-radius:10px;vertical-align:baseline;text-align:center;white-space:nowrap;font-weight:700;font-size:14px;line-height:16px}.badge:empty{display:none}.badge.badge-light,.tabs .tab-item .badge.badge-light{background-color:#fff;color:#444}.badge.badge-stable,.tabs .tab-item .badge.badge-stable{background-color:#f8f8f8;color:#444}.badge.badge-positive,.tabs .tab-item .badge.badge-positive{background-color:#387ef5;color:#fff}.badge.badge-calm,.tabs .tab-item .badge.badge-calm{background-color:#11c1f3;color:#fff}.badge.badge-assertive,.tabs .tab-item .badge.badge-assertive{background-color:#ef473a;color:#fff}.badge.badge-balanced,.tabs .tab-item .badge.badge-balanced{background-color:#33cd5f;color:#fff}.badge.badge-energized,.tabs .tab-item .badge.badge-energized{background-color:#ffc900;color:#fff}.badge.badge-royal,.tabs .tab-item .badge.badge-royal{background-color:#886aea;color:#fff}.badge.badge-dark,.tabs .tab-item .badge.badge-dark{background-color:#444;color:#fff}.button .badge{position:relative;top:-1px}.slider{position:relative;visibility:hidden;overflow:hidden}.slider-slides{position:relative;height:100%}.slider-slide{position:relative;display:block;float:left;width:100%;height:100%;vertical-align:top}.slider-slide-image>img{width:100%}.slider-pager{position:absolute;bottom:20px;z-index:1;width:100%;height:15px;text-align:center}.slider-pager .slider-pager-page{display:inline-block;margin:0 3px;width:15px;color:#000;text-decoration:none;opacity:.3}.slider-pager .slider-pager-page.active{-webkit-transition:opacity .4s ease-in;transition:opacity .4s ease-in;opacity:1}.slider-pager-page.ng-animate,.slider-pager-page.ng-enter,.slider-pager-page.ng-leave,.slider-slide.ng-animate,.slider-slide.ng-enter,.slider-slide.ng-leave{-webkit-transition:none!important;transition:none!important}.slider-pager-page.ng-animate,.slider-slide.ng-animate{-webkit-animation:none 0s;animation:none 0s}.swiper-container{margin:0 auto;position:relative;z-index:1}.swiper-container-no-flexbox .swiper-slide{float:left}.swiper-container-vertical>.swiper-wrapper{-webkit-box-orient:vertical;-moz-box-orient:vertical;-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.swiper-wrapper{z-index:1;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-transition-property:-webkit-transform;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;-ms-transition-property:-ms-transform;transition-property:transform;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.swiper-container-android .swiper-slide,.swiper-wrapper{-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-o-transform:translate(0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.swiper-container-multirow>.swiper-wrapper{-webkit-box-lines:multiple;-moz-box-lines:multiple;-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap}.swiper-container-free-mode>.swiper-wrapper{-webkit-transition-timing-function:ease-out;-moz-transition-timing-function:ease-out;-ms-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out;margin:0 auto}.swiper-slide{display:block;-webkit-flex-shrink:0;-ms-flex:0 0 auto;flex-shrink:0;position:relative}.swiper-container-autoheight,.swiper-container-autoheight .swiper-slide{height:auto}.swiper-container-autoheight .swiper-wrapper{-webkit-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;align-items:flex-start;-webkit-transition-property:-webkit-transform,height;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;-ms-transition-property:-ms-transform;transition-property:transform,height}.swiper-container .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-wp8-horizontal{-ms-touch-action:pan-y;touch-action:pan-y}.swiper-wp8-vertical{-ms-touch-action:pan-x;touch-action:pan-x}.swiper-button-next,.swiper-button-prev{position:absolute;top:50%;width:27px;height:44px;margin-top:-22px;z-index:10;cursor:pointer;-moz-background-size:27px 44px;-webkit-background-size:27px 44px;background-size:27px 44px;background-position:center;background-repeat:no-repeat}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-prev,.swiper-container-rtl .swiper-button-next{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");left:10px;right:auto}.swiper-button-prev.swiper-button-black,.swiper-container-rtl .swiper-button-next.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E")}.swiper-button-prev.swiper-button-white,.swiper-container-rtl .swiper-button-next.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M0%2C22L22%2C0l2.1%2C2.1L4.2%2C22l19.9%2C19.9L22%2C44L0%2C22L0%2C22L0%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E")}.swiper-button-next,.swiper-container-rtl .swiper-button-prev{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23007aff'%2F%3E%3C%2Fsvg%3E");right:10px;left:auto}.swiper-button-next.swiper-button-black,.swiper-container-rtl .swiper-button-prev.swiper-button-black{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23000000'%2F%3E%3C%2Fsvg%3E")}.swiper-button-next.swiper-button-white,.swiper-container-rtl .swiper-button-prev.swiper-button-white{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%2027%2044'%3E%3Cpath%20d%3D'M27%2C22L27%2C22L5%2C44l-2.1-2.1L22.8%2C22L2.9%2C2.1L5%2C0L27%2C22L27%2C22z'%20fill%3D'%23ffffff'%2F%3E%3C%2Fsvg%3E")}.swiper-pagination{position:absolute;text-align:center;-webkit-transition:300ms;-moz-transition:300ms;-o-transition:300ms;transition:300ms;-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-bullet{width:8px;height:8px;display:inline-block;border-radius:100%;background:#000;opacity:.2}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-moz-appearance:none;-ms-appearance:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-white .swiper-pagination-bullet{background:#fff}.swiper-pagination-bullet-active{opacity:1}.swiper-pagination-white .swiper-pagination-bullet-active{background:#fff}.swiper-pagination-black .swiper-pagination-bullet-active{background:#000}.swiper-container-vertical>.swiper-pagination{right:10px;top:50%;-webkit-transform:translate3d(0,-50%,0);-moz-transform:translate3d(0,-50%,0);-o-transform:translate(0,-50%);-ms-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.swiper-container-vertical>.swiper-pagination .swiper-pagination-bullet{margin:5px 0;display:block}.swiper-container-horizontal>.swiper-pagination{bottom:10px;left:0;width:100%}.swiper-container-horizontal>.swiper-pagination .swiper-pagination-bullet{margin:0 5px}.swiper-container-3d{-webkit-perspective:1200px;-moz-perspective:1200px;-o-perspective:1200px;perspective:1200px}.swiper-container-3d .swiper-cube-shadow,.swiper-container-3d .swiper-slide,.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top,.swiper-container-3d .swiper-wrapper{-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;transform-style:preserve-3d}.swiper-container-3d .swiper-slide-shadow-bottom,.swiper-container-3d .swiper-slide-shadow-left,.swiper-container-3d .swiper-slide-shadow-right,.swiper-container-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-container-3d .swiper-slide-shadow-left{background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(transparent));background-image:-webkit-linear-gradient(right,rgba(0,0,0,.5),transparent);background-image:-moz-linear-gradient(right,rgba(0,0,0,.5),transparent);background-image:-o-linear-gradient(right,rgba(0,0,0,.5),transparent);background-image:linear-gradient(to left,rgba(0,0,0,.5),transparent)}.swiper-container-3d .swiper-slide-shadow-right{background-image:-webkit-gradient(linear,right top,left top,from(rgba(0,0,0,.5)),to(transparent));background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5),transparent);background-image:-moz-linear-gradient(left,rgba(0,0,0,.5),transparent);background-image:-o-linear-gradient(left,rgba(0,0,0,.5),transparent);background-image:linear-gradient(to right,rgba(0,0,0,.5),transparent)}.swiper-container-3d .swiper-slide-shadow-top{background-image:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.5)),to(transparent));background-image:-webkit-linear-gradient(bottom,rgba(0,0,0,.5),transparent);background-image:-moz-linear-gradient(bottom,rgba(0,0,0,.5),transparent);background-image:-o-linear-gradient(bottom,rgba(0,0,0,.5),transparent);background-image:linear-gradient(to top,rgba(0,0,0,.5),transparent)}.swiper-container-3d .swiper-slide-shadow-bottom{background-image:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.5)),to(transparent));background-image:-webkit-linear-gradient(top,rgba(0,0,0,.5),transparent);background-image:-moz-linear-gradient(top,rgba(0,0,0,.5),transparent);background-image:-o-linear-gradient(top,rgba(0,0,0,.5),transparent);background-image:linear-gradient(to bottom,rgba(0,0,0,.5),transparent)}.swiper-container-coverflow .swiper-wrapper{-ms-perspective:1200px}.swiper-container-fade.swiper-container-free-mode .swiper-slide{-webkit-transition-timing-function:ease-out;-moz-transition-timing-function:ease-out;-ms-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out}.swiper-container-fade .swiper-slide,.swiper-container-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-container-fade .swiper-slide-active,.swiper-container-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-container-cube{overflow:visible}.swiper-container-cube .swiper-slide{pointer-events:none;visibility:hidden;-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;width:100%;height:100%;z-index:1}.swiper-container-cube.swiper-container-rtl .swiper-slide{-webkit-transform-origin:100% 0;-moz-transform-origin:100% 0;-ms-transform-origin:100% 0;transform-origin:100% 0}.swiper-container-cube .swiper-slide-active,.swiper-container-cube .swiper-slide-next,.swiper-container-cube .swiper-slide-next+.swiper-slide,.swiper-container-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-container-cube .swiper-slide-shadow-bottom,.swiper-container-cube .swiper-slide-shadow-left,.swiper-container-cube .swiper-slide-shadow-right,.swiper-container-cube .swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden}.swiper-container-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0;width:100%;height:100%;background:#000;opacity:.6;-webkit-filter:blur(50px);filter:blur(50px);z-index:0}.swiper-scrollbar{border-radius:10px;position:relative;-ms-touch-action:none;background:rgba(0,0,0,.1)}.swiper-container-horizontal>.swiper-scrollbar{position:absolute;left:1%;bottom:3px;z-index:50;height:5px;width:98%}.swiper-container-vertical>.swiper-scrollbar{position:absolute;right:3px;top:1%;z-index:50;width:5px;height:98%}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:rgba(0,0,0,.5);border-radius:10px;left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;-webkit-transform-origin:50%;-moz-transform-origin:50%;transform-origin:50%;-webkit-animation:swiper-preloader-spin 1s steps(12,end) infinite;-moz-animation:swiper-preloader-spin 1s steps(12,end) infinite;animation:swiper-preloader-spin 1s steps(12,end) infinite}.swiper-lazy-preloader:after{display:block;content:"";width:100%;height:100%;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%236c6c6c'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");background-position:50%;-webkit-background-size:100%;background-size:100%;background-repeat:no-repeat}.swiper-lazy-preloader-white:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg%20viewBox%3D'0%200%20120%20120'%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20xmlns%3Axlink%3D'http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink'%3E%3Cdefs%3E%3Cline%20id%3D'l'%20x1%3D'60'%20x2%3D'60'%20y1%3D'7'%20y2%3D'27'%20stroke%3D'%23fff'%20stroke-width%3D'11'%20stroke-linecap%3D'round'%2F%3E%3C%2Fdefs%3E%3Cg%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(30%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(60%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(90%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(120%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.27'%20transform%3D'rotate(150%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.37'%20transform%3D'rotate(180%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.46'%20transform%3D'rotate(210%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.56'%20transform%3D'rotate(240%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.66'%20transform%3D'rotate(270%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.75'%20transform%3D'rotate(300%2060%2C60)'%2F%3E%3Cuse%20xlink%3Ahref%3D'%23l'%20opacity%3D'.85'%20transform%3D'rotate(330%2060%2C60)'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}@-webkit-keyframes swiper-preloader-spin{100%{-webkit-transform:rotate(360deg)}}@keyframes swiper-preloader-spin{100%{transform:rotate(360deg)}}ion-slides{width:100%;height:100%;display:block}.slide-zoom{display:block;width:100%;text-align:center}.swiper-container{width:100%;height:100%;padding:0;overflow:hidden}.swiper-wrapper{position:absolute;left:0;top:0;width:100%;height:100%;padding:0}.swiper-slide{width:100%;height:100%;box-sizing:border-box}.swiper-slide img{width:auto;height:auto;max-width:100%;max-height:100%}.scroll-refresher{position:absolute;top:-60px;right:0;left:0;overflow:hidden;margin:auto;height:60px}.scroll-refresher .ionic-refresher-content{position:absolute;bottom:15px;left:0;width:100%;color:#666;text-align:center;font-size:30px}.scroll-refresher .ionic-refresher-content .text-pulling,.scroll-refresher .ionic-refresher-content .text-refreshing{font-size:16px;line-height:16px}.scroll-refresher .ionic-refresher-content.ionic-refresher-with-text{bottom:10px}.scroll-refresher .icon-pulling,.scroll-refresher .icon-refreshing{width:100%;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.scroll-refresher .icon-pulling{-webkit-animation-name:refresh-spin-back;animation-name:refresh-spin-back;-webkit-animation-duration:200ms;animation-duration:200ms;-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-fill-mode:none;animation-fill-mode:none;-webkit-transform:translate3d(0,0,0) rotate(0deg);transform:translate3d(0,0,0) rotate(0deg)}.scroll-refresher .icon-refreshing,.scroll-refresher .text-refreshing{display:none}.scroll-refresher .icon-refreshing{-webkit-animation-duration:1.5s;animation-duration:1.5s}.scroll-refresher.active .icon-pulling:not(.pulling-rotation-disabled){-webkit-animation-name:refresh-spin;animation-name:refresh-spin;-webkit-transform:translate3d(0,0,0) rotate(-180deg);transform:translate3d(0,0,0) rotate(-180deg)}.scroll-refresher.active.refreshing{-webkit-transition:transform .2s;transition:transform .2s;-webkit-transform:scale(1,1);transform:scale(1,1)}.scroll-refresher.active.refreshing .icon-pulling,.scroll-refresher.active.refreshing .text-pulling{display:none}.scroll-refresher.active.refreshing .icon-refreshing,.scroll-refresher.active.refreshing .text-refreshing{display:block}.scroll-refresher.active.refreshing.refreshing-tail{-webkit-transform:scale(0,0);transform:scale(0,0)}.overflow-scroll>.scroll{-webkit-overflow-scrolling:touch;width:100%}.overflow-scroll>.scroll.overscroll{position:fixed;right:0;left:0}.overflow-scroll.padding>.scroll.overscroll{padding:10px}@-webkit-keyframes refresh-spin{0%{-webkit-transform:translate3d(0,0,0) rotate(0)}100%{-webkit-transform:translate3d(0,0,0) rotate(180deg)}}@keyframes refresh-spin{0%{transform:translate3d(0,0,0) rotate(0)}100%{transform:translate3d(0,0,0) rotate(180deg)}}@-webkit-keyframes refresh-spin-back{0%{-webkit-transform:translate3d(0,0,0) rotate(180deg)}100%{-webkit-transform:translate3d(0,0,0) rotate(0)}}@keyframes refresh-spin-back{0%{transform:translate3d(0,0,0) rotate(180deg)}100%{transform:translate3d(0,0,0) rotate(0)}}.spinner{stroke:#444;fill:#444}.spinner svg{width:28px;height:28px}.spinner.spinner-light{stroke:#fff;fill:#fff}.spinner.spinner-stable{stroke:#f8f8f8;fill:#f8f8f8}.spinner.spinner-positive{stroke:#387ef5;fill:#387ef5}.spinner.spinner-calm{stroke:#11c1f3;fill:#11c1f3}.spinner.spinner-balanced{stroke:#33cd5f;fill:#33cd5f}.spinner.spinner-assertive{stroke:#ef473a;fill:#ef473a}.spinner.spinner-energized{stroke:#ffc900;fill:#ffc900}.spinner.spinner-royal{stroke:#886aea;fill:#886aea}.spinner.spinner-dark{stroke:#444;fill:#444}.spinner-android{stroke:#4b8bf4}.spinner-ios,.spinner-ios-small{stroke:#69717d}.spinner-spiral .stop1{stop-color:#fff;stop-opacity:0}.spinner-spiral.spinner-light .stop1{stop-color:#444}.spinner-spiral.spinner-light .stop2{stop-color:#fff}.spinner-spiral.spinner-stable .stop2{stop-color:#f8f8f8}.spinner-spiral.spinner-positive .stop2{stop-color:#387ef5}.spinner-spiral.spinner-calm .stop2{stop-color:#11c1f3}.spinner-spiral.spinner-balanced .stop2{stop-color:#33cd5f}.spinner-spiral.spinner-assertive .stop2{stop-color:#ef473a}.spinner-spiral.spinner-energized .stop2{stop-color:#ffc900}.spinner-spiral.spinner-royal .stop2{stop-color:#886aea}.spinner-spiral.spinner-dark .stop2{stop-color:#444}form{margin:0 0 1.42857}legend{display:block;margin-bottom:1.42857;padding:0;width:100%;border:1px solid #ddd;color:#444;font-size:21px;line-height:2.85714}legend small{color:#f8f8f8;font-size:1.07143}button,input,label,select,textarea{font-weight:400;font-size:14px;line-height:1.42857}button,input,select,textarea{font-family:"-apple-system","Helvetica Neue",Roboto,"Segoe UI",sans-serif}.item-input{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;-moz-align-items:center;align-items:center;position:relative;overflow:hidden;padding:6px 0 5px 16px}.item-input input{-webkit-border-radius:0;border-radius:0;-webkit-box-flex:1;-webkit-flex:1 220px;-moz-box-flex:1;-moz-flex:1 220px;-ms-flex:1 220px;flex:1 220px;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin:0;padding-right:24px;background-color:transparent}.item-input .button .icon{-webkit-box-flex:0;-webkit-flex:0 0 24px;-moz-box-flex:0;-moz-flex:0 0 24px;-ms-flex:0 0 24px;flex:0 0 24px;position:static;display:inline-block;height:auto;text-align:center;font-size:16px}.item-input .button-bar{-webkit-border-radius:0;border-radius:0;-webkit-box-flex:1;-webkit-flex:1 0 220px;-moz-box-flex:1;-moz-flex:1 0 220px;-ms-flex:1 0 220px;flex:1 0 220px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.item-input .icon{min-width:14px}.platform-windowsphone .item-input input{flex-shrink:1}.item-input-inset{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;-moz-align-items:center;align-items:center;position:relative;overflow:hidden;padding:10.67px}.item-input-wrapper{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1 0;-moz-box-flex:1;-moz-flex:1 0;-ms-flex:1 0;flex:1 0;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;-moz-align-items:center;align-items:center;-webkit-border-radius:4px;border-radius:4px;padding-right:8px;padding-left:8px;background:#eee}.item-input-inset .item-input-wrapper input{padding-left:4px;height:29px;background:0 0;line-height:18px}.item-input-wrapper~.button{margin-left:10.67px}.input-label{display:table;padding:7px 10px 7px 0;max-width:200px;width:35%;color:#444;font-size:16px}.placeholder-icon{color:#aaa}.placeholder-icon:first-child{padding-right:6px}.placeholder-icon:last-child{padding-left:6px}.item-stacked-label{display:block;background-color:transparent;box-shadow:none}.item-stacked-label .icon,.item-stacked-label .input-label{display:inline-block;padding:4px 0 0 0;vertical-align:middle}.item-stacked-label input,.item-stacked-label textarea{-webkit-border-radius:2px;border-radius:2px;padding:4px 8px 3px 0;border:none;background-color:#fff}.item-stacked-label input{overflow:hidden;height:46px}.item-select.item-stacked-label select{position:relative;padding:0;max-width:90%;direction:ltr;white-space:pre-wrap;margin:-3px}.item-floating-label{display:block;background-color:transparent;box-shadow:none}.item-floating-label .input-label{position:relative;padding:5px 0 0 0;opacity:0;top:10px;-webkit-transition:opacity .15s ease-in,top .2s linear;transition:opacity .15s ease-in,top .2s linear}.item-floating-label .input-label.has-input{opacity:1;top:0;-webkit-transition:opacity .15s ease-in,top .2s linear;transition:opacity .15s ease-in,top .2s linear}input[type=search],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=tel],input[type=color],textarea{display:block;padding-top:2px;padding-left:0;height:34px;color:#111;vertical-align:middle;font-size:14px;line-height:16px}.platform-android input[type=datetime-local],.platform-android input[type=date],.platform-android input[type=month],.platform-android input[type=time],.platform-android input[type=week],.platform-ios input[type=datetime-local],.platform-ios input[type=date],.platform-ios input[type=month],.platform-ios input[type=time],.platform-ios input[type=week]{padding-top:8px}.item-input input,.item-input textarea{width:100%}textarea{padding-left:0}textarea::-moz-placeholder{color:#aaa}textarea:-ms-input-placeholder{color:#aaa}textarea::-webkit-input-placeholder{color:#aaa;text-indent:-3px}textarea{height:auto}input[type=search],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=tel],input[type=color],textarea{border:0}input[type=radio],input[type=checkbox]{margin:0;line-height:normal}.item-input input[type=button],.item-input input[type=reset],.item-input input[type=submit],.item-input input[type=radio],.item-input input[type=checkbox],.item-input input[type=file],.item-input input[type=image]{width:auto}input[type=file]{line-height:34px}.cloned-text-input+input,.cloned-text-input+textarea,.previous-input-focus{position:absolute!important;left:-9999px;width:200px}input::-moz-placeholder,textarea::-moz-placeholder{color:#aaa}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#aaa}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#aaa;text-indent:0}input[disabled],input[readonly]:not(.cloned-text-input),select[disabled],select[readonly],textarea[disabled],textarea[readonly]:not(.cloned-text-input){background-color:#f8f8f8;cursor:not-allowed}input[type=radio][disabled],input[type=radio][readonly],input[type=checkbox][disabled],input[type=checkbox][readonly]{background-color:transparent}.checkbox{position:relative;display:inline-block;padding:7px 7px;cursor:pointer}.checkbox .checkbox-icon:before,.checkbox input:before{border-color:#ddd}.checkbox input:checked+.checkbox-icon:before,.checkbox input:checked:before{background:#387ef5;border-color:#387ef5}.checkbox-light .checkbox-icon:before,.checkbox-light input:before{border-color:#ddd}.checkbox-light input:checked+.checkbox-icon:before,.checkbox-light input:checked:before{background:#ddd;border-color:#ddd}.checkbox-stable .checkbox-icon:before,.checkbox-stable input:before{border-color:#b2b2b2}.checkbox-stable input:checked+.checkbox-icon:before,.checkbox-stable input:checked:before{background:#b2b2b2;border-color:#b2b2b2}.checkbox-positive .checkbox-icon:before,.checkbox-positive input:before{border-color:#387ef5}.checkbox-positive input:checked+.checkbox-icon:before,.checkbox-positive input:checked:before{background:#387ef5;border-color:#387ef5}.checkbox-calm .checkbox-icon:before,.checkbox-calm input:before{border-color:#11c1f3}.checkbox-calm input:checked+.checkbox-icon:before,.checkbox-calm input:checked:before{background:#11c1f3;border-color:#11c1f3}.checkbox-assertive .checkbox-icon:before,.checkbox-assertive input:before{border-color:#ef473a}.checkbox-assertive input:checked+.checkbox-icon:before,.checkbox-assertive input:checked:before{background:#ef473a;border-color:#ef473a}.checkbox-balanced .checkbox-icon:before,.checkbox-balanced input:before{border-color:#33cd5f}.checkbox-balanced input:checked+.checkbox-icon:before,.checkbox-balanced input:checked:before{background:#33cd5f;border-color:#33cd5f}.checkbox-energized .checkbox-icon:before,.checkbox-energized input:before{border-color:#ffc900}.checkbox-energized input:checked+.checkbox-icon:before,.checkbox-energized input:checked:before{background:#ffc900;border-color:#ffc900}.checkbox-royal .checkbox-icon:before,.checkbox-royal input:before{border-color:#886aea}.checkbox-royal input:checked+.checkbox-icon:before,.checkbox-royal input:checked:before{background:#886aea;border-color:#886aea}.checkbox-dark .checkbox-icon:before,.checkbox-dark input:before{border-color:#444}.checkbox-dark input:checked+.checkbox-icon:before,.checkbox-dark input:checked:before{background:#444;border-color:#444}.checkbox input:disabled+.checkbox-icon:before,.checkbox input:disabled:before{border-color:#ddd}.checkbox input:disabled:checked+.checkbox-icon:before,.checkbox input:disabled:checked:before{background:#ddd}.checkbox.checkbox-input-hidden input{display:none!important}.checkbox input,.checkbox-icon{position:relative;width:28px;height:28px;display:block;border:0;background:0 0;cursor:pointer;-webkit-appearance:none}.checkbox input:before,.checkbox-icon:before{display:table;width:100%;height:100%;border-width:1px;border-style:solid;border-radius:28px;background:#fff;content:' ';-webkit-transition:background-color 20ms ease-in-out;transition:background-color 20ms ease-in-out}.checkbox input:checked:before,input:checked+.checkbox-icon:before{border-width:2px}.checkbox input:after,.checkbox-icon:after{-webkit-transition:opacity .05s ease-in-out;transition:opacity .05s ease-in-out;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);position:absolute;top:33%;left:25%;display:table;width:14px;height:6px;border:1px solid #fff;border-top:0;border-right:0;content:' ';opacity:0}.checkbox-square .checkbox-icon:before,.checkbox-square input:before,.platform-android .checkbox-platform .checkbox-icon:before,.platform-android .checkbox-platform input:before{border-radius:2px;width:72%;height:72%;margin-top:14%;margin-left:14%;border-width:2px}.checkbox-square .checkbox-icon:after,.checkbox-square input:after,.platform-android .checkbox-platform .checkbox-icon:after,.platform-android .checkbox-platform input:after{border-width:2px;top:19%;left:25%;width:13px;height:7px}.platform-android .item-checkbox-right .checkbox-square .checkbox-icon::after{top:31%}.grade-c .checkbox input:after,.grade-c .checkbox-icon:after{-webkit-transform:rotate(0);transform:rotate(0);top:3px;left:4px;border:none;color:#fff;content:'\2713';font-weight:700;font-size:20px}.checkbox input:checked:after,input:checked+.checkbox-icon:after{opacity:1}.item-checkbox{padding-left:60px}.item-checkbox.active{box-shadow:none}.item-checkbox .checkbox{position:absolute;top:50%;right:8px;left:8px;z-index:3;margin-top:-21px}.item-checkbox.item-checkbox-right{padding-right:60px;padding-left:16px}.item-checkbox-right .checkbox input,.item-checkbox-right .checkbox-icon{float:right}.item-toggle{pointer-events:none}.toggle{position:relative;display:inline-block;pointer-events:auto;margin:-5px;padding:5px}.toggle input:checked+.track{border-color:#4cd964;background-color:#4cd964}.toggle.dragging .handle{background-color:#f2f2f2!important}.toggle.toggle-light input:checked+.track{border-color:#ddd;background-color:#ddd}.toggle.toggle-stable input:checked+.track{border-color:#b2b2b2;background-color:#b2b2b2}.toggle.toggle-positive input:checked+.track{border-color:#387ef5;background-color:#387ef5}.toggle.toggle-calm input:checked+.track{border-color:#11c1f3;background-color:#11c1f3}.toggle.toggle-assertive input:checked+.track{border-color:#ef473a;background-color:#ef473a}.toggle.toggle-balanced input:checked+.track{border-color:#33cd5f;background-color:#33cd5f}.toggle.toggle-energized input:checked+.track{border-color:#ffc900;background-color:#ffc900}.toggle.toggle-royal input:checked+.track{border-color:#886aea;background-color:#886aea}.toggle.toggle-dark input:checked+.track{border-color:#444;background-color:#444}.toggle input{display:none}.toggle .track{-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-property:background-color,border;transition-property:background-color,border;display:inline-block;box-sizing:border-box;width:51px;height:31px;border:solid 2px #e6e6e6;border-radius:20px;background-color:#fff;content:' ';cursor:pointer;pointer-events:none}.platform-android4_2 .toggle .track{-webkit-background-clip:padding-box}.toggle .handle{-webkit-transition:.3s cubic-bezier(0,1.1,1,1.1);transition:.3s cubic-bezier(0,1.1,1,1.1);-webkit-transition-property:background-color,transform;transition-property:background-color,transform;position:absolute;display:block;width:27px;height:27px;border-radius:27px;background-color:#fff;top:7px;left:7px;box-shadow:0 2px 7px rgba(0,0,0,.35),0 1px 1px rgba(0,0,0,.15)}.toggle .handle:before{position:absolute;top:-4px;left:-21.5px;padding:18.5px 34px;content:" "}.toggle input:checked+.track .handle{-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0);background-color:#fff}.item-toggle.active{box-shadow:none}.item-toggle,.item-toggle.item-complex .item-content{padding-right:99px}.item-toggle.item-complex{padding-right:0}.item-toggle .toggle{position:absolute;top:10px;right:16px;z-index:3}.toggle input:disabled+.track{opacity:.6}.toggle-small .track{border:0;width:34px;height:15px;background:#9e9e9e}.toggle-small input:checked+.track{background:rgba(0,150,137,.5)}.toggle-small .handle{top:2px;left:4px;width:21px;height:21px;box-shadow:0 2px 5px rgba(0,0,0,.25)}.toggle-small input:checked+.track .handle{-webkit-transform:translate3d(16px,0,0);transform:translate3d(16px,0,0);background:#009689}.toggle-small.item-toggle .toggle{top:19px}.toggle-small .toggle-light input:checked+.track{background-color:rgba(221,221,221,.5)}.toggle-small .toggle-light input:checked+.track .handle{background-color:#ddd}.toggle-small .toggle-stable input:checked+.track{background-color:rgba(178,178,178,.5)}.toggle-small .toggle-stable input:checked+.track .handle{background-color:#b2b2b2}.toggle-small .toggle-positive input:checked+.track{background-color:rgba(56,126,245,.5)}.toggle-small .toggle-positive input:checked+.track .handle{background-color:#387ef5}.toggle-small .toggle-calm input:checked+.track{background-color:rgba(17,193,243,.5)}.toggle-small .toggle-calm input:checked+.track .handle{background-color:#11c1f3}.toggle-small .toggle-assertive input:checked+.track{background-color:rgba(239,71,58,.5)}.toggle-small .toggle-assertive input:checked+.track .handle{background-color:#ef473a}.toggle-small .toggle-balanced input:checked+.track{background-color:rgba(51,205,95,.5)}.toggle-small .toggle-balanced input:checked+.track .handle{background-color:#33cd5f}.toggle-small .toggle-energized input:checked+.track{background-color:rgba(255,201,0,.5)}.toggle-small .toggle-energized input:checked+.track .handle{background-color:#ffc900}.toggle-small .toggle-royal input:checked+.track{background-color:rgba(136,106,234,.5)}.toggle-small .toggle-royal input:checked+.track .handle{background-color:#886aea}.toggle-small .toggle-dark input:checked+.track{background-color:rgba(68,68,68,.5)}.toggle-small .toggle-dark input:checked+.track .handle{background-color:#444}.item-radio{padding:0}.item-radio:hover{cursor:pointer}.item-radio .item-content{padding-right:64px}.item-radio .radio-icon{position:absolute;top:0;right:0;z-index:3;visibility:hidden;padding:14px;height:100%;font-size:24px}.item-radio input{position:absolute;left:-9999px}.item-radio input:checked+.radio-content .item-content{background:#f7f7f7}.item-radio input:checked+.radio-content .radio-icon{visibility:visible}.range input{overflow:hidden;margin-top:5px;margin-bottom:5px;padding-right:2px;padding-left:1px;width:auto;height:43px;outline:0;background:-webkit-gradient(linear,50% 0,50% 100%,color-stop(0,#ccc),color-stop(100%,#ccc));background:linear-gradient(to right,#ccc 0,#ccc 100%);background-position:center;background-size:99% 2px;background-repeat:no-repeat;-webkit-appearance:none}.range input::-moz-focus-outer{border:0}.range input::-webkit-slider-thumb{position:relative;width:28px;height:28px;border-radius:50%;background-color:#fff;box-shadow:0 0 2px rgba(0,0,0,.3),0 3px 5px rgba(0,0,0,.2);cursor:pointer;-webkit-appearance:none;border:0}.range input::-webkit-slider-thumb:before{position:absolute;top:13px;left:-2001px;width:2000px;height:2px;background:#444;content:' '}.range input::-webkit-slider-thumb:after{position:absolute;top:-15px;left:-15px;padding:30px;content:' '}.range input::-ms-fill-lower{height:2px;background:#444}.range{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;-moz-align-items:center;align-items:center;padding:2px 11px}.range.range-light input::-webkit-slider-thumb:before{background:#ddd}.range.range-light input::-ms-fill-lower{background:#ddd}.range.range-stable input::-webkit-slider-thumb:before{background:#b2b2b2}.range.range-stable input::-ms-fill-lower{background:#b2b2b2}.range.range-positive input::-webkit-slider-thumb:before{background:#387ef5}.range.range-positive input::-ms-fill-lower{background:#387ef5}.range.range-calm input::-webkit-slider-thumb:before{background:#11c1f3}.range.range-calm input::-ms-fill-lower{background:#11c1f3}.range.range-balanced input::-webkit-slider-thumb:before{background:#33cd5f}.range.range-balanced input::-ms-fill-lower{background:#33cd5f}.range.range-assertive input::-webkit-slider-thumb:before{background:#ef473a}.range.range-assertive input::-ms-fill-lower{background:#ef473a}.range.range-energized input::-webkit-slider-thumb:before{background:#ffc900}.range.range-energized input::-ms-fill-lower{background:#ffc900}.range.range-royal input::-webkit-slider-thumb:before{background:#886aea}.range.range-royal input::-ms-fill-lower{background:#886aea}.range.range-dark input::-webkit-slider-thumb:before{background:#444}.range.range-dark input::-ms-fill-lower{background:#444}.range .icon{-webkit-box-flex:0;-webkit-flex:0;-moz-box-flex:0;-moz-flex:0;-ms-flex:0;flex:0;display:block;min-width:24px;text-align:center;font-size:24px}.range input{-webkit-box-flex:1;-webkit-flex:1;-moz-box-flex:1;-moz-flex:1;-ms-flex:1;flex:1;display:block;margin-right:10px;margin-left:10px}.range-label{-webkit-box-flex:0;-webkit-flex:0 0 auto;-moz-box-flex:0;-moz-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;display:block;white-space:nowrap}.range-label:first-child{padding-left:5px}.range input+.range-label{padding-right:5px;padding-left:0}.platform-windowsphone .range input{height:auto}.item-select{position:relative}.item-select select{-webkit-appearance:none;-moz-appearance:none;appearance:none;position:absolute;top:0;bottom:0;right:0;padding:0 48px 0 16px;max-width:65%;border:none;background:#fff;color:#333;text-indent:.01px;text-overflow:'';white-space:nowrap;font-size:14px;cursor:pointer;direction:rtl}.item-select select::-ms-expand{display:none}.item-select option{direction:ltr}.item-select:after{position:absolute;top:50%;right:16px;margin-top:-3px;width:0;height:0;border-top:5px solid;border-right:5px solid transparent;border-left:5px solid transparent;color:#999;content:"";pointer-events:none}.item-select.item-light select{background:#fff;color:#444}.item-select.item-stable select{background:#f8f8f8;color:#444}.item-select.item-stable .input-label,.item-select.item-stable:after{color:#666}.item-select.item-positive select{background:#387ef5;color:#fff}.item-select.item-positive .input-label,.item-select.item-positive:after{color:#fff}.item-select.item-calm select{background:#11c1f3;color:#fff}.item-select.item-calm .input-label,.item-select.item-calm:after{color:#fff}.item-select.item-assertive select{background:#ef473a;color:#fff}.item-select.item-assertive .input-label,.item-select.item-assertive:after{color:#fff}.item-select.item-balanced select{background:#33cd5f;color:#fff}.item-select.item-balanced .input-label,.item-select.item-balanced:after{color:#fff}.item-select.item-energized select{background:#ffc900;color:#fff}.item-select.item-energized .input-label,.item-select.item-energized:after{color:#fff}.item-select.item-royal select{background:#886aea;color:#fff}.item-select.item-royal .input-label,.item-select.item-royal:after{color:#fff}.item-select.item-dark select{background:#444;color:#fff}.item-select.item-dark .input-label,.item-select.item-dark:after{color:#fff}select[multiple],select[size]{height:auto}progress{display:block;margin:15px auto;width:100%}.button{border-color:transparent;background-color:#f8f8f8;color:#444;position:relative;display:inline-block;margin:0;padding:0 12px;min-width:52px;min-height:47px;border-width:1px;border-style:solid;border-radius:4px;vertical-align:top;text-align:center;text-overflow:ellipsis;font-size:16px;line-height:42px;cursor:pointer}.button:hover{color:#444;text-decoration:none}.button.activated,.button.active{border-color:#a2a2a2;background-color:#e5e5e5}.button:after{position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;content:' '}.button .icon{vertical-align:top;pointer-events:none}.button .icon:before,.button.icon-left:before,.button.icon-right:before,.button.icon:before{display:inline-block;padding:0 0 1px 0;vertical-align:inherit;font-size:24px;line-height:41px;pointer-events:none}.button.icon-left:before{float:left;padding-right:.2em;padding-left:0}.button.icon-right:before{float:right;padding-right:0;padding-left:.2em}.button.button-block,.button.button-full{margin-top:10px;margin-bottom:10px}.button.button-light{border-color:transparent;background-color:#fff;color:#444}.button.button-light:hover{color:#444;text-decoration:none}.button.button-light.activated,.button.button-light.active{border-color:#a2a2a2;background-color:#fafafa}.button.button-light.button-clear{border-color:transparent;background:0 0;box-shadow:none;color:#ddd}.button.button-light.button-icon{border-color:transparent;background:0 0}.button.button-light.button-outline{border-color:#ddd;background:0 0;color:#ddd}.button.button-light.button-outline.activated,.button.button-light.button-outline.active{background-color:#ddd;box-shadow:none;color:#fff}.button.button-stable{border-color:transparent;background-color:#f8f8f8;color:#444}.button.button-stable:hover{color:#444;text-decoration:none}.button.button-stable.activated,.button.button-stable.active{border-color:#a2a2a2;background-color:#e5e5e5}.button.button-stable.button-clear{border-color:transparent;background:0 0;box-shadow:none;color:#b2b2b2}.button.button-stable.button-icon{border-color:transparent;background:0 0}.button.button-stable.button-outline{border-color:#b2b2b2;background:0 0;color:#b2b2b2}.button.button-stable.button-outline.activated,.button.button-stable.button-outline.active{background-color:#b2b2b2;box-shadow:none;color:#fff}.button.button-positive{border-color:transparent;background-color:#387ef5;color:#fff}.button.button-positive:hover{color:#fff;text-decoration:none}.button.button-positive.activated,.button.button-positive.active{border-color:#a2a2a2;background-color:#0c60ee}.button.button-positive.button-clear{border-color:transparent;background:0 0;box-shadow:none;color:#387ef5}.button.button-positive.button-icon{border-color:transparent;background:0 0}.button.button-positive.button-outline{border-color:#387ef5;background:0 0;color:#387ef5}.button.button-positive.button-outline.activated,.button.button-positive.button-outline.active{background-color:#387ef5;box-shadow:none;color:#fff}.button.button-calm{border-color:transparent;background-color:#11c1f3;color:#fff}.button.button-calm:hover{color:#fff;text-decoration:none}.button.button-calm.activated,.button.button-calm.active{border-color:#a2a2a2;background-color:#0a9dc7}.button.button-calm.button-clear{border-color:transparent;background:0 0;box-shadow:none;color:#11c1f3}.button.button-calm.button-icon{border-color:transparent;background:0 0}.button.button-calm.button-outline{border-color:#11c1f3;background:0 0;color:#11c1f3}.button.button-calm.button-outline.activated,.button.button-calm.button-outline.active{background-color:#11c1f3;box-shadow:none;color:#fff}.button.button-assertive{border-color:transparent;background-color:#ef473a;color:#fff}.button.button-assertive:hover{color:#fff;text-decoration:none}.button.button-assertive.activated,.button.button-assertive.active{border-color:#a2a2a2;background-color:#e42112}.button.button-assertive.button-clear{border-color:transparent;background:0 0;box-shadow:none;color:#ef473a}.button.button-assertive.button-icon{border-color:transparent;background:0 0}.button.button-assertive.button-outline{border-color:#ef473a;background:0 0;color:#ef473a}.button.button-assertive.button-outline.activated,.button.button-assertive.button-outline.active{background-color:#ef473a;box-shadow:none;color:#fff}.button.button-balanced{border-color:transparent;background-color:#33cd5f;color:#fff}.button.button-balanced:hover{color:#fff;text-decoration:none}.button.button-balanced.activated,.button.button-balanced.active{border-color:#a2a2a2;background-color:#28a54c}.button.button-balanced.button-clear{border-color:transparent;background:0 0;box-shadow:none;color:#33cd5f}.button.button-balanced.button-icon{border-color:transparent;background:0 0}.button.button-balanced.button-outline{border-color:#33cd5f;background:0 0;color:#33cd5f}.button.button-balanced.button-outline.activated,.button.button-balanced.button-outline.active{background-color:#33cd5f;box-shadow:none;color:#fff}.button.button-energized{border-color:transparent;background-color:#ffc900;color:#fff}.button.button-energized:hover{color:#fff;text-decoration:none}.button.button-energized.activated,.button.button-energized.active{border-color:#a2a2a2;background-color:#e6b500}.button.button-energized.button-clear{border-color:transparent;background:0 0;box-shadow:none;color:#ffc900}.button.button-energized.button-icon{border-color:transparent;background:0 0}.button.button-energized.button-outline{border-color:#ffc900;background:0 0;color:#ffc900}.button.button-energized.button-outline.activated,.button.button-energized.button-outline.active{background-color:#ffc900;box-shadow:none;color:#fff}.button.button-royal{border-color:transparent;background-color:#886aea;color:#fff}.button.button-royal:hover{color:#fff;text-decoration:none}.button.button-royal.activated,.button.button-royal.active{border-color:#a2a2a2;background-color:#6b46e5}.button.button-royal.button-clear{border-color:transparent;background:0 0;box-shadow:none;color:#886aea}.button.button-royal.button-icon{border-color:transparent;background:0 0}.button.button-royal.button-outline{border-color:#886aea;background:0 0;color:#886aea}.button.button-royal.button-outline.activated,.button.button-royal.button-outline.active{background-color:#886aea;box-shadow:none;color:#fff}.button.button-dark{border-color:transparent;background-color:#444;color:#fff}.button.button-dark:hover{color:#fff;text-decoration:none}.button.button-dark.activated,.button.button-dark.active{border-color:#a2a2a2;background-color:#262626}.button.button-dark.button-clear{border-color:transparent;background:0 0;box-shadow:none;color:#444}.button.button-dark.button-icon{border-color:transparent;background:0 0}.button.button-dark.button-outline{border-color:#444;background:0 0;color:#444}.button.button-dark.button-outline.activated,.button.button-dark.button-outline.active{background-color:#444;box-shadow:none;color:#fff}.button-small{padding:2px 4px 1px;min-width:28px;min-height:30px;font-size:12px;line-height:26px}.button-small .icon:before,.button-small.icon-left:before,.button-small.icon-right:before,.button-small.icon:before{font-size:16px;line-height:19px;margin-top:3px}.button-large{padding:0 16px;min-width:68px;min-height:59px;font-size:20px;line-height:53px}.button-large .icon:before,.button-large.icon-left:before,.button-large.icon-right:before,.button-large.icon:before{padding-bottom:2px;font-size:32px;line-height:51px}.button-icon{-webkit-transition:opacity .1s;transition:opacity .1s;padding:0 6px;min-width:initial;border-color:transparent;background:0 0}.button-icon.button.activated,.button-icon.button.active{border-color:transparent;background:0 0;box-shadow:none;opacity:.3}.button-icon .icon:before,.button-icon.icon:before{font-size:32px}.button-clear{-webkit-transition:opacity .1s;transition:opacity .1s;padding:0 6px;max-height:42px;border-color:transparent;background:0 0;box-shadow:none}.button-clear.button-clear{border-color:transparent;background:0 0;box-shadow:none;color:transparent}.button-clear.button-icon{border-color:transparent;background:0 0}.button-clear.activated,.button-clear.active{opacity:.3}.button-outline{-webkit-transition:opacity .1s;transition:opacity .1s;background:0 0;box-shadow:none}.button-outline.button-outline{border-color:transparent;background:0 0;color:transparent}.button-outline.button-outline.activated,.button-outline.button-outline.active{background-color:transparent;box-shadow:none;color:#fff}.padding>.button.button-block:first-child{margin-top:0}.button-block{display:block;clear:both}.button-block:after{clear:both}.button-full,.button-full>.button{display:block;margin-right:0;margin-left:0;border-right-width:0;border-left-width:0;border-radius:0}.button-full>button.button,button.button-block,button.button-full,input.button.button-block{width:100%}a.button{text-decoration:none}a.button .icon:before,a.button.icon-left:before,a.button.icon-right:before,a.button.icon:before{margin-top:2px}.button.disabled,.button[disabled]{opacity:.4;cursor:default!important;pointer-events:none}.button-bar{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-moz-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-moz-box-flex:1;-moz-flex:1;-ms-flex:1;flex:1;width:100%}.button-bar.button-bar-inline{display:block;width:auto}.button-bar.button-bar-inline:after,.button-bar.button-bar-inline:before{display:table;content:"";line-height:0}.button-bar.button-bar-inline:after{clear:both}.button-bar.button-bar-inline>.button{width:auto;display:inline-block;float:left}.button-bar.bar-light>.button{border-color:#ddd}.button-bar.bar-stable>.button{border-color:#b2b2b2}.button-bar.bar-positive>.button{border-color:#0c60ee}.button-bar.bar-calm>.button{border-color:#0a9dc7}.button-bar.bar-assertive>.button{border-color:#e42112}.button-bar.bar-balanced>.button{border-color:#28a54c}.button-bar.bar-energized>.button{border-color:#e6b500}.button-bar.bar-royal>.button{border-color:#6b46e5}.button-bar.bar-dark>.button{border-color:#111}.button-bar>.button{-webkit-box-flex:1;-webkit-flex:1;-moz-box-flex:1;-moz-flex:1;-ms-flex:1;flex:1;display:block;overflow:hidden;padding:0 16px;width:0;border-width:1px 0 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.button-bar>.button .icon:before,.button-bar>.button:before{line-height:44px}.button-bar>.button:first-child{border-radius:4px 0 0 4px}.button-bar>.button:last-child{border-right-width:1px;border-radius:0 4px 4px 0}.button-bar>.button:only-child{border-radius:4px}.button-bar>.button-small .icon:before,.button-bar>.button-small:before{line-height:28px}.row{display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-moz-flex;display:-ms-flexbox;display:flex;padding:5px;width:100%}.row-wrap{-webkit-flex-wrap:wrap;-moz-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.row-no-padding,.row-no-padding>.col{padding:0}.row+.row{margin-top:-5px;padding-top:0}.col{-webkit-box-flex:1;-webkit-flex:1;-moz-box-flex:1;-moz-flex:1;-ms-flex:1;flex:1;display:block;padding:5px;width:100%}.row-top{-webkit-box-align:start;-ms-flex-align:start;-webkit-align-items:flex-start;-moz-align-items:flex-start;align-items:flex-start}.row-bottom{-webkit-box-align:end;-ms-flex-align:end;-webkit-align-items:flex-end;-moz-align-items:flex-end;align-items:flex-end}.row-center{-webkit-box-align:center;-ms-flex-align:center;-webkit-align-items:center;-moz-align-items:center;align-items:center}.row-stretch{-webkit-box-align:stretch;-ms-flex-align:stretch;-webkit-align-items:stretch;-moz-align-items:stretch;align-items:stretch}.row-baseline{-webkit-box-align:baseline;-ms-flex-align:baseline;-webkit-align-items:baseline;-moz-align-items:baseline;align-items:baseline}.col-top{-webkit-align-self:flex-start;-moz-align-self:flex-start;-ms-flex-item-align:start;align-self:flex-start}.col-bottom{-webkit-align-self:flex-end;-moz-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end}.col-center{-webkit-align-self:center;-moz-align-self:center;-ms-flex-item-align:center;align-self:center}.col-offset-10{margin-left:10%}.col-offset-20{margin-left:20%}.col-offset-25{margin-left:25%}.col-offset-33,.col-offset-34{margin-left:33.3333%}.col-offset-50{margin-left:50%}.col-offset-66,.col-offset-67{margin-left:66.6666%}.col-offset-75{margin-left:75%}.col-offset-80{margin-left:80%}.col-offset-90{margin-left:90%}.col-10{-webkit-box-flex:0;-webkit-flex:0 0 10%;-moz-box-flex:0;-moz-flex:0 0 10%;-ms-flex:0 0 10%;flex:0 0 10%;max-width:10%}.col-20{-webkit-box-flex:0;-webkit-flex:0 0 20%;-moz-box-flex:0;-moz-flex:0 0 20%;-ms-flex:0 0 20%;flex:0 0 20%;max-width:20%}.col-25{-webkit-box-flex:0;-webkit-flex:0 0 25%;-moz-box-flex:0;-moz-flex:0 0 25%;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-33,.col-34{-webkit-box-flex:0;-webkit-flex:0 0 33.3333%;-moz-box-flex:0;-moz-flex:0 0 33.3333%;-ms-flex:0 0 33.3333%;flex:0 0 33.3333%;max-width:33.3333%}.col-40{-webkit-box-flex:0;-webkit-flex:0 0 40%;-moz-box-flex:0;-moz-flex:0 0 40%;-ms-flex:0 0 40%;flex:0 0 40%;max-width:40%}.col-50{-webkit-box-flex:0;-webkit-flex:0 0 50%;-moz-box-flex:0;-moz-flex:0 0 50%;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-60{-webkit-box-flex:0;-webkit-flex:0 0 60%;-moz-box-flex:0;-moz-flex:0 0 60%;-ms-flex:0 0 60%;flex:0 0 60%;max-width:60%}.col-66,.col-67{-webkit-box-flex:0;-webkit-flex:0 0 66.6666%;-moz-box-flex:0;-moz-flex:0 0 66.6666%;-ms-flex:0 0 66.6666%;flex:0 0 66.6666%;max-width:66.6666%}.col-75{-webkit-box-flex:0;-webkit-flex:0 0 75%;-moz-box-flex:0;-moz-flex:0 0 75%;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-80{-webkit-box-flex:0;-webkit-flex:0 0 80%;-moz-box-flex:0;-moz-flex:0 0 80%;-ms-flex:0 0 80%;flex:0 0 80%;max-width:80%}.col-90{-webkit-box-flex:0;-webkit-flex:0 0 90%;-moz-box-flex:0;-moz-flex:0 0 90%;-ms-flex:0 0 90%;flex:0 0 90%;max-width:90%}@media (max-width:567px){.responsive-sm{-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.responsive-sm .col,.responsive-sm .col-10,.responsive-sm .col-20,.responsive-sm .col-25,.responsive-sm .col-33,.responsive-sm .col-34,.responsive-sm .col-50,.responsive-sm .col-66,.responsive-sm .col-67,.responsive-sm .col-75,.responsive-sm .col-80,.responsive-sm .col-90{-webkit-box-flex:1;-webkit-flex:1;-moz-box-flex:1;-moz-flex:1;-ms-flex:1;flex:1;margin-bottom:15px;margin-left:0;max-width:100%;width:100%}}@media (max-width:767px){.responsive-md{-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.responsive-md .col,.responsive-md .col-10,.responsive-md .col-20,.responsive-md .col-25,.responsive-md .col-33,.responsive-md .col-34,.responsive-md .col-50,.responsive-md .col-66,.responsive-md .col-67,.responsive-md .col-75,.responsive-md .col-80,.responsive-md .col-90{-webkit-box-flex:1;-webkit-flex:1;-moz-box-flex:1;-moz-flex:1;-ms-flex:1;flex:1;margin-bottom:15px;margin-left:0;max-width:100%;width:100%}}@media (max-width:1023px){.responsive-lg{-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:vertical;-moz-box-orient:vertical;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.responsive-lg .col,.responsive-lg .col-10,.responsive-lg .col-20,.responsive-lg .col-25,.responsive-lg .col-33,.responsive-lg .col-34,.responsive-lg .col-50,.responsive-lg .col-66,.responsive-lg .col-67,.responsive-lg .col-75,.responsive-lg .col-80,.responsive-lg .col-90{-webkit-box-flex:1;-webkit-flex:1;-moz-box-flex:1;-moz-flex:1;-ms-flex:1;flex:1;margin-bottom:15px;margin-left:0;max-width:100%;width:100%}}.hide{display:none}.opacity-hide{opacity:0}.grade-b .opacity-hide,.grade-c .opacity-hide{opacity:1;display:none}.show{display:block}.opacity-show{opacity:1}.invisible{visibility:hidden}.keyboard-open .hide-on-keyboard-open{display:none}.keyboard-open .bar-footer.hide-on-keyboard-open+.pane .has-footer,.keyboard-open .tabs.hide-on-keyboard-open+.pane .has-tabs{bottom:0}.inline{display:inline-block}.disable-pointer-events{pointer-events:none}.enable-pointer-events{pointer-events:auto}.disable-user-behavior{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;-webkit-tap-highlight-color:transparent;-webkit-user-drag:none;-ms-touch-action:none;-ms-content-zooming:none}.click-block{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;z-index:99999;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);overflow:hidden}.click-block-hide{-webkit-transform:translate3d(-9999px,0,0);transform:translate3d(-9999px,0,0)}.no-resize{resize:none}.block{display:block;clear:both}.block:after{display:block;visibility:hidden;clear:both;height:0;content:"."}.full-image{width:100%}.clearfix:after,.clearfix:before{display:table;content:"";line-height:0}.clearfix:after{clear:both}.padding{padding:10px}.padding-top,.padding-vertical{padding-top:10px}.padding-horizontal,.padding-right{padding-right:10px}.padding-bottom,.padding-vertical{padding-bottom:10px}.padding-horizontal,.padding-left{padding-left:10px}.iframe-wrapper{position:fixed;-webkit-overflow-scrolling:touch;overflow:scroll}.iframe-wrapper iframe{height:100%;width:100%}.rounded{border-radius:4px}.light,a.light{color:#fff}.light-bg{background-color:#fff}.light-border{border-color:#ddd}.stable,a.stable{color:#f8f8f8}.stable-bg{background-color:#f8f8f8}.stable-border{border-color:#b2b2b2}.positive,a.positive{color:#387ef5}.positive-bg{background-color:#387ef5}.positive-border{border-color:#0c60ee}.calm,a.calm{color:#11c1f3}.calm-bg{background-color:#11c1f3}.calm-border{border-color:#0a9dc7}.assertive,a.assertive{color:#ef473a}.assertive-bg{background-color:#ef473a}.assertive-border{border-color:#e42112}.balanced,a.balanced{color:#33cd5f}.balanced-bg{background-color:#33cd5f}.balanced-border{border-color:#28a54c}.energized,a.energized{color:#ffc900}.energized-bg{background-color:#ffc900}.energized-border{border-color:#e6b500}.royal,a.royal{color:#886aea}.royal-bg{background-color:#886aea}.royal-border{border-color:#6b46e5}.dark,a.dark{color:#444}.dark-bg{background-color:#444}.dark-border{border-color:#111}[collection-repeat]{left:0!important;top:0!important;position:absolute!important;z-index:1}.collection-repeat-container{position:relative;z-index:1}.collection-repeat-after-container{z-index:0;display:block}.collection-repeat-after-container.horizontal{display:inline-block}.ng-cloak,.ng-hide:not(.ng-hide-animate),.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.platform-ios.platform-cordova:not(.fullscreen) .bar-header:not(.bar-subheader){height:64px}.platform-ios.platform-cordova:not(.fullscreen) .bar-header:not(.bar-subheader).item-input-inset .item-input-wrapper{margin-top:19px!important}.platform-ios.platform-cordova:not(.fullscreen) .bar-header:not(.bar-subheader)>*{margin-top:20px}.platform-ios.platform-cordova:not(.fullscreen) .bar-subheader,.platform-ios.platform-cordova:not(.fullscreen) .has-header,.platform-ios.platform-cordova:not(.fullscreen) .tabs-top>.tabs,.platform-ios.platform-cordova:not(.fullscreen) .tabs.tabs-top{top:64px}.platform-ios.platform-cordova:not(.fullscreen) .has-subheader{top:108px}.platform-ios.platform-cordova:not(.fullscreen) .has-header.has-tabs-top{top:113px}.platform-ios.platform-cordova:not(.fullscreen) .has-header.has-subheader.has-tabs-top{top:157px}.platform-ios.platform-cordova .popover .bar-header:not(.bar-subheader){height:44px}.platform-ios.platform-cordova .popover .bar-header:not(.bar-subheader).item-input-inset .item-input-wrapper{margin-top:-1px}.platform-ios.platform-cordova .popover .bar-header:not(.bar-subheader)>*{margin-top:0}.platform-ios.platform-cordova .popover .bar-subheader,.platform-ios.platform-cordova .popover .has-header{top:44px}.platform-ios.platform-cordova .popover .has-subheader{top:88px}.platform-ios.platform-cordova.status-bar-hide{margin-bottom:20px}@media (orientation:landscape){.platform-ios.platform-browser.platform-ipad{position:fixed}}.platform-c:not(.enable-transitions) *{-webkit-transition:none!important;transition:none!important}.slide-in-up{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.slide-in-up.ng-enter,.slide-in-up>.ng-enter{-webkit-transition:all cubic-bezier(.1,.7,.1,1) 400ms;transition:all cubic-bezier(.1,.7,.1,1) 400ms}.slide-in-up.ng-enter-active,.slide-in-up>.ng-enter-active{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.slide-in-up.ng-leave,.slide-in-up>.ng-leave{-webkit-transition:all ease-in-out 250ms;transition:all ease-in-out 250ms}@-webkit-keyframes scaleOut{from{-webkit-transform:scale(1);opacity:1}to{-webkit-transform:scale(.8);opacity:0}}@keyframes scaleOut{from{transform:scale(1);opacity:1}to{transform:scale(.8);opacity:0}}@-webkit-keyframes superScaleIn{from{-webkit-transform:scale(1.2);opacity:0}to{-webkit-transform:scale(1);opacity:1}}@keyframes superScaleIn{from{transform:scale(1.2);opacity:0}to{transform:scale(1);opacity:1}}[nav-view-transition=ios] [nav-view=entering],[nav-view-transition=ios] [nav-view=leaving]{-webkit-transition-duration:500ms;transition-duration:500ms;-webkit-transition-timing-function:cubic-bezier(.36,.66,.04,1);transition-timing-function:cubic-bezier(.36,.66,.04,1);-webkit-transition-property:opacity,-webkit-transform,box-shadow;transition-property:opacity,transform,box-shadow}[nav-view-transition=ios][nav-view-direction=forward],[nav-view-transition=ios][nav-view-direction=back]{background-color:#000}[nav-view-transition=ios] [nav-view=active],[nav-view-transition=ios][nav-view-direction=forward] [nav-view=entering],[nav-view-transition=ios][nav-view-direction=back] [nav-view=leaving]{z-index:3}[nav-view-transition=ios][nav-view-direction=forward] [nav-view=leaving],[nav-view-transition=ios][nav-view-direction=back] [nav-view=entering]{z-index:2}[nav-bar-transition=ios] .back-text,[nav-bar-transition=ios] .buttons,[nav-bar-transition=ios] .title{-webkit-transition-duration:500ms;transition-duration:500ms;-webkit-transition-timing-function:cubic-bezier(.36,.66,.04,1);transition-timing-function:cubic-bezier(.36,.66,.04,1);-webkit-transition-property:opacity,-webkit-transform;transition-property:opacity,transform}[nav-bar-transition=ios] [nav-bar=entering],[nav-bar-transition=ios] [nav-bar=active]{z-index:10}[nav-bar-transition=ios] [nav-bar=entering] .bar,[nav-bar-transition=ios] [nav-bar=active] .bar{background:0 0}[nav-bar-transition=ios] [nav-bar=cached]{display:block}[nav-bar-transition=ios] [nav-bar=cached] .header-item{display:none}[nav-view-transition=android] [nav-view=entering],[nav-view-transition=android] [nav-view=leaving]{-webkit-transition-duration:200ms;transition-duration:200ms;-webkit-transition-timing-function:cubic-bezier(.4,.6,.2,1);transition-timing-function:cubic-bezier(.4,.6,.2,1);-webkit-transition-property:-webkit-transform;transition-property:transform}[nav-view-transition=android] [nav-view=active],[nav-view-transition=android][nav-view-direction=forward] [nav-view=entering],[nav-view-transition=android][nav-view-direction=back] [nav-view=leaving]{z-index:3}[nav-view-transition=android][nav-view-direction=forward] [nav-view=leaving],[nav-view-transition=android][nav-view-direction=back] [nav-view=entering]{z-index:2}[nav-bar-transition=android] .buttons,[nav-bar-transition=android] .title{-webkit-transition-duration:200ms;transition-duration:200ms;-webkit-transition-timing-function:cubic-bezier(.4,.6,.2,1);transition-timing-function:cubic-bezier(.4,.6,.2,1);-webkit-transition-property:opacity;transition-property:opacity}[nav-bar-transition=android] [nav-bar=entering],[nav-bar-transition=android] [nav-bar=active]{z-index:10}[nav-bar-transition=android] [nav-bar=entering] .bar,[nav-bar-transition=android] [nav-bar=active] .bar{background:0 0}[nav-bar-transition=android] [nav-bar=cached]{display:block}[nav-bar-transition=android] [nav-bar=cached] .header-item{display:none}[nav-swipe=fast] .back-text,[nav-swipe=fast] .buttons,[nav-swipe=fast] .title,[nav-swipe=fast] [nav-view]{-webkit-transition-duration:50ms;transition-duration:50ms;-webkit-transition-timing-function:linear;transition-timing-function:linear}[nav-swipe=slow] .back-text,[nav-swipe=slow] .buttons,[nav-swipe=slow] .title,[nav-swipe=slow] [nav-view]{-webkit-transition-duration:160ms;transition-duration:160ms;-webkit-transition-timing-function:linear;transition-timing-function:linear}[nav-bar=cached],[nav-view=cached]{display:none}[nav-view=stage]{opacity:0;-webkit-transition-duration:0;transition-duration:0}[nav-bar=stage] .back-text,[nav-bar=stage] .buttons,[nav-bar=stage] .title{position:absolute;opacity:0;-webkit-transition-duration:0s;transition-duration:0s} \ No newline at end of file diff --git a/www/lib/ionic/fonts/ionicons.eot b/www/lib/ionic/fonts/ionicons.eot new file mode 100644 index 0000000000000000000000000000000000000000..92a3f20a39267ae7f45144f412a995a663730360 GIT binary patch literal 120724 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

@FHUiu&=5w(f-3S1h*&)&h2 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 + + + + +Created by FontForge 20120731 at Thu Dec 4 09:51:48 2014 + By Adam Bradley +Created by Adam Bradley with FontForge 2.0 (http://fontforge.sf.net) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/www/lib/ionic/fonts/ionicons.ttf b/www/lib/ionic/fonts/ionicons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c4e4632486d863337c1c73478ddb3c20726c55a0 GIT binary patch literal 188508 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

8E#xmG!w{$tO5=<$!EHPzZXo}IBc1_sqA&q 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 literal 0 HcmV?d00001 diff --git a/www/lib/ionic/fonts/ionicons.woff b/www/lib/ionic/fonts/ionicons.woff new file mode 100644 index 0000000000000000000000000000000000000000..5f3a14e0a5ca6d20cc4fac708979e807b0d51bc3 GIT binary patch literal 67904 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

  • F(S(gioucm()OHA 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 E0LEz`i~s-t literal 0 HcmV?d00001 diff --git a/www/lib/ionic/js/angular-ui/angular-ui-router.js b/www/lib/ionic/js/angular-ui/angular-ui-router.js new file mode 100644 index 0000000..d2636f8 --- /dev/null +++ b/www/lib/ionic/js/angular-ui/angular-ui-router.js @@ -0,0 +1,4232 @@ +/** + * State-based routing for AngularJS + * @version v0.2.13 + * @link http://angular-ui.github.com/ + * @license MIT License, http://www.opensource.org/licenses/MIT + */ + +/* commonjs package manager support (eg componentjs) */ +if (typeof module !== "undefined" && typeof exports !== "undefined" && module.exports === exports){ + module.exports = 'ui.router'; +} + +(function (window, angular, undefined) { +/*jshint globalstrict:true*/ +/*global angular:false*/ +'use strict'; + +var isDefined = angular.isDefined, + isFunction = angular.isFunction, + isString = angular.isString, + isObject = angular.isObject, + isArray = angular.isArray, + forEach = angular.forEach, + extend = angular.extend, + copy = angular.copy; + +function inherit(parent, extra) { + return extend(new (extend(function() {}, { prototype: parent }))(), extra); +} + +function merge(dst) { + forEach(arguments, function(obj) { + if (obj !== dst) { + forEach(obj, function(value, key) { + if (!dst.hasOwnProperty(key)) dst[key] = value; + }); + } + }); + return dst; +} + +/** + * Finds the common ancestor path between two states. + * + * @param {Object} first The first state. + * @param {Object} second The second state. + * @return {Array} Returns an array of state names in descending order, not including the root. + */ +function ancestors(first, second) { + var path = []; + + for (var n in first.path) { + if (first.path[n] !== second.path[n]) break; + path.push(first.path[n]); + } + return path; +} + +/** + * IE8-safe wrapper for `Object.keys()`. + * + * @param {Object} object A JavaScript object. + * @return {Array} Returns the keys of the object as an array. + */ +function objectKeys(object) { + if (Object.keys) { + return Object.keys(object); + } + var result = []; + + angular.forEach(object, function(val, key) { + result.push(key); + }); + return result; +} + +/** + * IE8-safe wrapper for `Array.prototype.indexOf()`. + * + * @param {Array} array A JavaScript array. + * @param {*} value A value to search the array for. + * @return {Number} Returns the array index value of `value`, or `-1` if not present. + */ +function indexOf(array, value) { + if (Array.prototype.indexOf) { + return array.indexOf(value, Number(arguments[2]) || 0); + } + var len = array.length >>> 0, from = Number(arguments[2]) || 0; + from = (from < 0) ? Math.ceil(from) : Math.floor(from); + + if (from < 0) from += len; + + for (; from < len; from++) { + if (from in array && array[from] === value) return from; + } + return -1; +} + +/** + * Merges a set of parameters with all parameters inherited between the common parents of the + * current state and a given destination state. + * + * @param {Object} currentParams The value of the current state parameters ($stateParams). + * @param {Object} newParams The set of parameters which will be composited with inherited params. + * @param {Object} $current Internal definition of object representing the current state. + * @param {Object} $to Internal definition of object representing state to transition to. + */ +function inheritParams(currentParams, newParams, $current, $to) { + var parents = ancestors($current, $to), parentParams, inherited = {}, inheritList = []; + + for (var i in parents) { + if (!parents[i].params) continue; + parentParams = objectKeys(parents[i].params); + if (!parentParams.length) continue; + + for (var j in parentParams) { + if (indexOf(inheritList, parentParams[j]) >= 0) continue; + inheritList.push(parentParams[j]); + inherited[parentParams[j]] = currentParams[parentParams[j]]; + } + } + return extend({}, inherited, newParams); +} + +/** + * Performs a non-strict comparison of the subset of two objects, defined by a list of keys. + * + * @param {Object} a The first object. + * @param {Object} b The second object. + * @param {Array} keys The list of keys within each object to compare. If the list is empty or not specified, + * it defaults to the list of keys in `a`. + * @return {Boolean} Returns `true` if the keys match, otherwise `false`. + */ +function equalForKeys(a, b, keys) { + if (!keys) { + keys = []; + for (var n in a) keys.push(n); // Used instead of Object.keys() for IE8 compatibility + } + + for (var i=0; i + * + * + * + * + * + * + * + * + * + * + * + * + */ +angular.module('ui.router', ['ui.router.state']); + +angular.module('ui.router.compat', ['ui.router']); + +/** + * @ngdoc object + * @name ui.router.util.$resolve + * + * @requires $q + * @requires $injector + * + * @description + * Manages resolution of (acyclic) graphs of promises. + */ +$Resolve.$inject = ['$q', '$injector']; +function $Resolve( $q, $injector) { + + var VISIT_IN_PROGRESS = 1, + VISIT_DONE = 2, + NOTHING = {}, + NO_DEPENDENCIES = [], + NO_LOCALS = NOTHING, + NO_PARENT = extend($q.when(NOTHING), { $$promises: NOTHING, $$values: NOTHING }); + + + /** + * @ngdoc function + * @name ui.router.util.$resolve#study + * @methodOf ui.router.util.$resolve + * + * @description + * Studies a set of invocables that are likely to be used multiple times. + *
    +   * $resolve.study(invocables)(locals, parent, self)
    +   * 
    + * is equivalent to + *
    +   * $resolve.resolve(invocables, locals, parent, self)
    +   * 
    + * but the former is more efficient (in fact `resolve` just calls `study` + * internally). + * + * @param {object} invocables Invocable objects + * @return {function} a function to pass in locals, parent and self + */ + this.study = function (invocables) { + if (!isObject(invocables)) throw new Error("'invocables' must be an object"); + var invocableKeys = objectKeys(invocables || {}); + + // Perform a topological sort of invocables to build an ordered plan + var plan = [], cycle = [], visited = {}; + function visit(value, key) { + if (visited[key] === VISIT_DONE) return; + + cycle.push(key); + if (visited[key] === VISIT_IN_PROGRESS) { + cycle.splice(0, indexOf(cycle, key)); + throw new Error("Cyclic dependency: " + cycle.join(" -> ")); + } + visited[key] = VISIT_IN_PROGRESS; + + if (isString(value)) { + plan.push(key, [ function() { return $injector.get(value); }], NO_DEPENDENCIES); + } else { + var params = $injector.annotate(value); + forEach(params, function (param) { + if (param !== key && invocables.hasOwnProperty(param)) visit(invocables[param], param); + }); + plan.push(key, value, params); + } + + cycle.pop(); + visited[key] = VISIT_DONE; + } + forEach(invocables, visit); + invocables = cycle = visited = null; // plan is all that's required + + function isResolve(value) { + return isObject(value) && value.then && value.$$promises; + } + + return function (locals, parent, self) { + if (isResolve(locals) && self === undefined) { + self = parent; parent = locals; locals = null; + } + if (!locals) locals = NO_LOCALS; + else if (!isObject(locals)) { + throw new Error("'locals' must be an object"); + } + if (!parent) parent = NO_PARENT; + else if (!isResolve(parent)) { + throw new Error("'parent' must be a promise returned by $resolve.resolve()"); + } + + // To complete the overall resolution, we have to wait for the parent + // promise and for the promise for each invokable in our plan. + var resolution = $q.defer(), + result = resolution.promise, + promises = result.$$promises = {}, + values = extend({}, locals), + wait = 1 + plan.length/3, + merged = false; + + function done() { + // Merge parent values we haven't got yet and publish our own $$values + if (!--wait) { + if (!merged) merge(values, parent.$$values); + result.$$values = values; + result.$$promises = result.$$promises || true; // keep for isResolve() + delete result.$$inheritedValues; + resolution.resolve(values); + } + } + + function fail(reason) { + result.$$failure = reason; + resolution.reject(reason); + } + + // Short-circuit if parent has already failed + if (isDefined(parent.$$failure)) { + fail(parent.$$failure); + return result; + } + + if (parent.$$inheritedValues) { + merge(values, omit(parent.$$inheritedValues, invocableKeys)); + } + + // Merge parent values if the parent has already resolved, or merge + // parent promises and wait if the parent resolve is still in progress. + extend(promises, parent.$$promises); + if (parent.$$values) { + merged = merge(values, omit(parent.$$values, invocableKeys)); + result.$$inheritedValues = omit(parent.$$values, invocableKeys); + done(); + } else { + if (parent.$$inheritedValues) { + result.$$inheritedValues = omit(parent.$$inheritedValues, invocableKeys); + } + parent.then(done, fail); + } + + // Process each invocable in the plan, but ignore any where a local of the same name exists. + for (var i=0, ii=plan.length; i} The template html as a string, or a promise + * for that string. + */ + this.fromUrl = function (url, params) { + if (isFunction(url)) url = url(params); + if (url == null) return null; + else return $http + .get(url, { cache: $templateCache, headers: { Accept: 'text/html' }}) + .then(function(response) { return response.data; }); + }; + + /** + * @ngdoc function + * @name ui.router.util.$templateFactory#fromProvider + * @methodOf ui.router.util.$templateFactory + * + * @description + * Creates a template by invoking an injectable provider function. + * + * @param {Function} provider Function to invoke via `$injector.invoke` + * @param {Object} params Parameters for the template. + * @param {Object} locals Locals to pass to `invoke`. Defaults to + * `{ params: params }`. + * @return {string|Promise.} The template html as a string, or a promise + * for that string. + */ + this.fromProvider = function (provider, params, locals) { + return $injector.invoke(provider, null, locals || { params: params }); + }; +} + +angular.module('ui.router.util').service('$templateFactory', $TemplateFactory); + +var $$UMFP; // reference to $UrlMatcherFactoryProvider + +/** + * @ngdoc object + * @name ui.router.util.type:UrlMatcher + * + * @description + * Matches URLs against patterns and extracts named parameters from the path or the search + * part of the URL. A URL pattern consists of a path pattern, optionally followed by '?' and a list + * of search parameters. Multiple search parameter names are separated by '&'. Search parameters + * do not influence whether or not a URL is matched, but their values are passed through into + * the matched parameters returned by {@link ui.router.util.type:UrlMatcher#methods_exec exec}. + * + * Path parameter placeholders can be specified using simple colon/catch-all syntax or curly brace + * syntax, which optionally allows a regular expression for the parameter to be specified: + * + * * `':'` name - colon placeholder + * * `'*'` name - catch-all placeholder + * * `'{' name '}'` - curly placeholder + * * `'{' name ':' regexp|type '}'` - curly placeholder with regexp or type name. Should the + * regexp itself contain curly braces, they must be in matched pairs or escaped with a backslash. + * + * Parameter names may contain only word characters (latin letters, digits, and underscore) and + * must be unique within the pattern (across both path and search parameters). For colon + * placeholders or curly placeholders without an explicit regexp, a path parameter matches any + * number of characters other than '/'. For catch-all placeholders the path parameter matches + * any number of characters. + * + * Examples: + * + * * `'/hello/'` - Matches only if the path is exactly '/hello/'. There is no special treatment for + * trailing slashes, and patterns have to match the entire path, not just a prefix. + * * `'/user/:id'` - Matches '/user/bob' or '/user/1234!!!' or even '/user/' but not '/user' or + * '/user/bob/details'. The second path segment will be captured as the parameter 'id'. + * * `'/user/{id}'` - Same as the previous example, but using curly brace syntax. + * * `'/user/{id:[^/]*}'` - Same as the previous example. + * * `'/user/{id:[0-9a-fA-F]{1,8}}'` - Similar to the previous example, but only matches if the id + * parameter consists of 1 to 8 hex digits. + * * `'/files/{path:.*}'` - Matches any URL starting with '/files/' and captures the rest of the + * path into the parameter 'path'. + * * `'/files/*path'` - ditto. + * * `'/calendar/{start:date}'` - Matches "/calendar/2014-11-12" (because the pattern defined + * in the built-in `date` Type matches `2014-11-12`) and provides a Date object in $stateParams.start + * + * @param {string} pattern The pattern to compile into a matcher. + * @param {Object} config A configuration object hash: + * @param {Object=} parentMatcher Used to concatenate the pattern/config onto + * an existing UrlMatcher + * + * * `caseInsensitive` - `true` if URL matching should be case insensitive, otherwise `false`, the default value (for backward compatibility) is `false`. + * * `strict` - `false` if matching against a URL with a trailing slash should be treated as equivalent to a URL without a trailing slash, the default value is `true`. + * + * @property {string} prefix A static prefix of this pattern. The matcher guarantees that any + * URL matching this matcher (i.e. any string for which {@link ui.router.util.type:UrlMatcher#methods_exec exec()} returns + * non-null) will start with this prefix. + * + * @property {string} source The pattern that was passed into the constructor + * + * @property {string} sourcePath The path portion of the source property + * + * @property {string} sourceSearch The search portion of the source property + * + * @property {string} regex The constructed regex that will be used to match against the url when + * it is time to determine which url will match. + * + * @returns {Object} New `UrlMatcher` object + */ +function UrlMatcher(pattern, config, parentMatcher) { + config = extend({ params: {} }, isObject(config) ? config : {}); + + // Find all placeholders and create a compiled pattern, using either classic or curly syntax: + // '*' name + // ':' name + // '{' name '}' + // '{' name ':' regexp '}' + // The regular expression is somewhat complicated due to the need to allow curly braces + // inside the regular expression. The placeholder regexp breaks down as follows: + // ([:*])([\w\[\]]+) - classic placeholder ($1 / $2) (search version has - for snake-case) + // \{([\w\[\]]+)(?:\:( ... ))?\} - curly brace placeholder ($3) with optional regexp/type ... ($4) (search version has - for snake-case + // (?: ... | ... | ... )+ - the regexp consists of any number of atoms, an atom being either + // [^{}\\]+ - anything other than curly braces or backslash + // \\. - a backslash escape + // \{(?:[^{}\\]+|\\.)*\} - a matched set of curly braces containing other atoms + var placeholder = /([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g, + searchPlaceholder = /([:]?)([\w\[\]-]+)|\{([\w\[\]-]+)(?:\:((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g, + compiled = '^', last = 0, m, + segments = this.segments = [], + parentParams = parentMatcher ? parentMatcher.params : {}, + params = this.params = parentMatcher ? parentMatcher.params.$$new() : new $$UMFP.ParamSet(), + paramNames = []; + + function addParameter(id, type, config, location) { + paramNames.push(id); + if (parentParams[id]) return parentParams[id]; + if (!/^\w+(-+\w+)*(?:\[\])?$/.test(id)) throw new Error("Invalid parameter name '" + id + "' in pattern '" + pattern + "'"); + if (params[id]) throw new Error("Duplicate parameter name '" + id + "' in pattern '" + pattern + "'"); + params[id] = new $$UMFP.Param(id, type, config, location); + return params[id]; + } + + function quoteRegExp(string, pattern, squash) { + var surroundPattern = ['',''], result = string.replace(/[\\\[\]\^$*+?.()|{}]/g, "\\$&"); + if (!pattern) return result; + switch(squash) { + case false: surroundPattern = ['(', ')']; break; + case true: surroundPattern = ['?(', ')?']; break; + default: surroundPattern = ['(' + squash + "|", ')?']; break; + } + return result + surroundPattern[0] + pattern + surroundPattern[1]; + } + + this.source = pattern; + + // Split into static segments separated by path parameter placeholders. + // The number of segments is always 1 more than the number of parameters. + function matchDetails(m, isSearch) { + var id, regexp, segment, type, cfg, arrayMode; + id = m[2] || m[3]; // IE[78] returns '' for unmatched groups instead of null + cfg = config.params[id]; + segment = pattern.substring(last, m.index); + regexp = isSearch ? m[4] : m[4] || (m[1] == '*' ? '.*' : null); + type = $$UMFP.type(regexp || "string") || inherit($$UMFP.type("string"), { pattern: new RegExp(regexp) }); + return { + id: id, regexp: regexp, segment: segment, type: type, cfg: cfg + }; + } + + var p, param, segment; + while ((m = placeholder.exec(pattern))) { + p = matchDetails(m, false); + if (p.segment.indexOf('?') >= 0) break; // we're into the search part + + param = addParameter(p.id, p.type, p.cfg, "path"); + compiled += quoteRegExp(p.segment, param.type.pattern.source, param.squash); + segments.push(p.segment); + last = placeholder.lastIndex; + } + segment = pattern.substring(last); + + // Find any search parameter names and remove them from the last segment + var i = segment.indexOf('?'); + + if (i >= 0) { + var search = this.sourceSearch = segment.substring(i); + segment = segment.substring(0, i); + this.sourcePath = pattern.substring(0, last + i); + + if (search.length > 0) { + last = 0; + while ((m = searchPlaceholder.exec(search))) { + p = matchDetails(m, true); + param = addParameter(p.id, p.type, p.cfg, "search"); + last = placeholder.lastIndex; + // check if ?& + } + } + } else { + this.sourcePath = pattern; + this.sourceSearch = ''; + } + + compiled += quoteRegExp(segment) + (config.strict === false ? '\/?' : '') + '$'; + segments.push(segment); + + this.regexp = new RegExp(compiled, config.caseInsensitive ? 'i' : undefined); + this.prefix = segments[0]; + this.$$paramNames = paramNames; +} + +/** + * @ngdoc function + * @name ui.router.util.type:UrlMatcher#concat + * @methodOf ui.router.util.type:UrlMatcher + * + * @description + * Returns a new matcher for a pattern constructed by appending the path part and adding the + * search parameters of the specified pattern to this pattern. The current pattern is not + * modified. This can be understood as creating a pattern for URLs that are relative to (or + * suffixes of) the current pattern. + * + * @example + * The following two matchers are equivalent: + *
    + * new UrlMatcher('/user/{id}?q').concat('/details?date');
    + * new UrlMatcher('/user/{id}/details?q&date');
    + * 
    + * + * @param {string} pattern The pattern to append. + * @param {Object} config An object hash of the configuration for the matcher. + * @returns {UrlMatcher} A matcher for the concatenated pattern. + */ +UrlMatcher.prototype.concat = function (pattern, config) { + // Because order of search parameters is irrelevant, we can add our own search + // parameters to the end of the new pattern. Parse the new pattern by itself + // and then join the bits together, but it's much easier to do this on a string level. + var defaultConfig = { + caseInsensitive: $$UMFP.caseInsensitive(), + strict: $$UMFP.strictMode(), + squash: $$UMFP.defaultSquashPolicy() + }; + return new UrlMatcher(this.sourcePath + pattern + this.sourceSearch, extend(defaultConfig, config), this); +}; + +UrlMatcher.prototype.toString = function () { + return this.source; +}; + +/** + * @ngdoc function + * @name ui.router.util.type:UrlMatcher#exec + * @methodOf ui.router.util.type:UrlMatcher + * + * @description + * Tests the specified path against this matcher, and returns an object containing the captured + * parameter values, or null if the path does not match. The returned object contains the values + * of any search parameters that are mentioned in the pattern, but their value may be null if + * they are not present in `searchParams`. This means that search parameters are always treated + * as optional. + * + * @example + *
    + * new UrlMatcher('/user/{id}?q&r').exec('/user/bob', {
    + *   x: '1', q: 'hello'
    + * });
    + * // returns { id: 'bob', q: 'hello', r: null }
    + * 
    + * + * @param {string} path The URL path to match, e.g. `$location.path()`. + * @param {Object} searchParams URL search parameters, e.g. `$location.search()`. + * @returns {Object} The captured parameter values. + */ +UrlMatcher.prototype.exec = function (path, searchParams) { + var m = this.regexp.exec(path); + if (!m) return null; + searchParams = searchParams || {}; + + var paramNames = this.parameters(), nTotal = paramNames.length, + nPath = this.segments.length - 1, + values = {}, i, j, cfg, paramName; + + if (nPath !== m.length - 1) throw new Error("Unbalanced capture group in route '" + this.source + "'"); + + function decodePathArray(string) { + function reverseString(str) { return str.split("").reverse().join(""); } + function unquoteDashes(str) { return str.replace(/\\-/, "-"); } + + var split = reverseString(string).split(/-(?!\\)/); + var allReversed = map(split, reverseString); + return map(allReversed, unquoteDashes).reverse(); + } + + for (i = 0; i < nPath; i++) { + paramName = paramNames[i]; + var param = this.params[paramName]; + var paramVal = m[i+1]; + // if the param value matches a pre-replace pair, replace the value before decoding. + for (j = 0; j < param.replace; j++) { + if (param.replace[j].from === paramVal) paramVal = param.replace[j].to; + } + if (paramVal && param.array === true) paramVal = decodePathArray(paramVal); + values[paramName] = param.value(paramVal); + } + for (/**/; i < nTotal; i++) { + paramName = paramNames[i]; + values[paramName] = this.params[paramName].value(searchParams[paramName]); + } + + return values; +}; + +/** + * @ngdoc function + * @name ui.router.util.type:UrlMatcher#parameters + * @methodOf ui.router.util.type:UrlMatcher + * + * @description + * Returns the names of all path and search parameters of this pattern in an unspecified order. + * + * @returns {Array.} An array of parameter names. Must be treated as read-only. If the + * pattern has no parameters, an empty array is returned. + */ +UrlMatcher.prototype.parameters = function (param) { + if (!isDefined(param)) return this.$$paramNames; + return this.params[param] || null; +}; + +/** + * @ngdoc function + * @name ui.router.util.type:UrlMatcher#validate + * @methodOf ui.router.util.type:UrlMatcher + * + * @description + * Checks an object hash of parameters to validate their correctness according to the parameter + * types of this `UrlMatcher`. + * + * @param {Object} params The object hash of parameters to validate. + * @returns {boolean} Returns `true` if `params` validates, otherwise `false`. + */ +UrlMatcher.prototype.validates = function (params) { + return this.params.$$validates(params); +}; + +/** + * @ngdoc function + * @name ui.router.util.type:UrlMatcher#format + * @methodOf ui.router.util.type:UrlMatcher + * + * @description + * Creates a URL that matches this pattern by substituting the specified values + * for the path and search parameters. Null values for path parameters are + * treated as empty strings. + * + * @example + *
    + * new UrlMatcher('/user/{id}?q').format({ id:'bob', q:'yes' });
    + * // returns '/user/bob?q=yes'
    + * 
    + * + * @param {Object} values the values to substitute for the parameters in this pattern. + * @returns {string} the formatted URL (path and optionally search part). + */ +UrlMatcher.prototype.format = function (values) { + values = values || {}; + var segments = this.segments, params = this.parameters(), paramset = this.params; + if (!this.validates(values)) return null; + + var i, search = false, nPath = segments.length - 1, nTotal = params.length, result = segments[0]; + + function encodeDashes(str) { // Replace dashes with encoded "\-" + return encodeURIComponent(str).replace(/-/g, function(c) { return '%5C%' + c.charCodeAt(0).toString(16).toUpperCase(); }); + } + + for (i = 0; i < nTotal; i++) { + var isPathParam = i < nPath; + var name = params[i], param = paramset[name], value = param.value(values[name]); + var isDefaultValue = param.isOptional && param.type.equals(param.value(), value); + var squash = isDefaultValue ? param.squash : false; + var encoded = param.type.encode(value); + + if (isPathParam) { + var nextSegment = segments[i + 1]; + if (squash === false) { + if (encoded != null) { + if (isArray(encoded)) { + result += map(encoded, encodeDashes).join("-"); + } else { + result += encodeURIComponent(encoded); + } + } + result += nextSegment; + } else if (squash === true) { + var capture = result.match(/\/$/) ? /\/?(.*)/ : /(.*)/; + result += nextSegment.match(capture)[1]; + } else if (isString(squash)) { + result += squash + nextSegment; + } + } else { + if (encoded == null || (isDefaultValue && squash !== false)) continue; + if (!isArray(encoded)) encoded = [ encoded ]; + encoded = map(encoded, encodeURIComponent).join('&' + name + '='); + result += (search ? '&' : '?') + (name + '=' + encoded); + search = true; + } + } + + return result; +}; + +/** + * @ngdoc object + * @name ui.router.util.type:Type + * + * @description + * Implements an interface to define custom parameter types that can be decoded from and encoded to + * string parameters matched in a URL. Used by {@link ui.router.util.type:UrlMatcher `UrlMatcher`} + * objects when matching or formatting URLs, or comparing or validating parameter values. + * + * See {@link ui.router.util.$urlMatcherFactory#methods_type `$urlMatcherFactory#type()`} for more + * information on registering custom types. + * + * @param {Object} config A configuration object which contains the custom type definition. The object's + * properties will override the default methods and/or pattern in `Type`'s public interface. + * @example + *
    + * {
    + *   decode: function(val) { return parseInt(val, 10); },
    + *   encode: function(val) { return val && val.toString(); },
    + *   equals: function(a, b) { return this.is(a) && a === b; },
    + *   is: function(val) { return angular.isNumber(val) isFinite(val) && val % 1 === 0; },
    + *   pattern: /\d+/
    + * }
    + * 
    + * + * @property {RegExp} pattern The regular expression pattern used to match values of this type when + * coming from a substring of a URL. + * + * @returns {Object} Returns a new `Type` object. + */ +function Type(config) { + extend(this, config); +} + +/** + * @ngdoc function + * @name ui.router.util.type:Type#is + * @methodOf ui.router.util.type:Type + * + * @description + * Detects whether a value is of a particular type. Accepts a native (decoded) value + * and determines whether it matches the current `Type` object. + * + * @param {*} val The value to check. + * @param {string} key Optional. If the type check is happening in the context of a specific + * {@link ui.router.util.type:UrlMatcher `UrlMatcher`} object, this is the name of the + * parameter in which `val` is stored. Can be used for meta-programming of `Type` objects. + * @returns {Boolean} Returns `true` if the value matches the type, otherwise `false`. + */ +Type.prototype.is = function(val, key) { + return true; +}; + +/** + * @ngdoc function + * @name ui.router.util.type:Type#encode + * @methodOf ui.router.util.type:Type + * + * @description + * Encodes a custom/native type value to a string that can be embedded in a URL. Note that the + * return value does *not* need to be URL-safe (i.e. passed through `encodeURIComponent()`), it + * only needs to be a representation of `val` that has been coerced to a string. + * + * @param {*} val The value to encode. + * @param {string} key The name of the parameter in which `val` is stored. Can be used for + * meta-programming of `Type` objects. + * @returns {string} Returns a string representation of `val` that can be encoded in a URL. + */ +Type.prototype.encode = function(val, key) { + return val; +}; + +/** + * @ngdoc function + * @name ui.router.util.type:Type#decode + * @methodOf ui.router.util.type:Type + * + * @description + * Converts a parameter value (from URL string or transition param) to a custom/native value. + * + * @param {string} val The URL parameter value to decode. + * @param {string} key The name of the parameter in which `val` is stored. Can be used for + * meta-programming of `Type` objects. + * @returns {*} Returns a custom representation of the URL parameter value. + */ +Type.prototype.decode = function(val, key) { + return val; +}; + +/** + * @ngdoc function + * @name ui.router.util.type:Type#equals + * @methodOf ui.router.util.type:Type + * + * @description + * Determines whether two decoded values are equivalent. + * + * @param {*} a A value to compare against. + * @param {*} b A value to compare against. + * @returns {Boolean} Returns `true` if the values are equivalent/equal, otherwise `false`. + */ +Type.prototype.equals = function(a, b) { + return a == b; +}; + +Type.prototype.$subPattern = function() { + var sub = this.pattern.toString(); + return sub.substr(1, sub.length - 2); +}; + +Type.prototype.pattern = /.*/; + +Type.prototype.toString = function() { return "{Type:" + this.name + "}"; }; + +/* + * Wraps an existing custom Type as an array of Type, depending on 'mode'. + * e.g.: + * - urlmatcher pattern "/path?{queryParam[]:int}" + * - url: "/path?queryParam=1&queryParam=2 + * - $stateParams.queryParam will be [1, 2] + * if `mode` is "auto", then + * - url: "/path?queryParam=1 will create $stateParams.queryParam: 1 + * - url: "/path?queryParam=1&queryParam=2 will create $stateParams.queryParam: [1, 2] + */ +Type.prototype.$asArray = function(mode, isSearch) { + if (!mode) return this; + if (mode === "auto" && !isSearch) throw new Error("'auto' array mode is for query parameters only"); + return new ArrayType(this, mode); + + function ArrayType(type, mode) { + function bindTo(type, callbackName) { + return function() { + return type[callbackName].apply(type, arguments); + }; + } + + // Wrap non-array value as array + function arrayWrap(val) { return isArray(val) ? val : (isDefined(val) ? [ val ] : []); } + // Unwrap array value for "auto" mode. Return undefined for empty array. + function arrayUnwrap(val) { + switch(val.length) { + case 0: return undefined; + case 1: return mode === "auto" ? val[0] : val; + default: return val; + } + } + function falsey(val) { return !val; } + + // Wraps type (.is/.encode/.decode) functions to operate on each value of an array + function arrayHandler(callback, allTruthyMode) { + return function handleArray(val) { + val = arrayWrap(val); + var result = map(val, callback); + if (allTruthyMode === true) + return filter(result, falsey).length === 0; + return arrayUnwrap(result); + }; + } + + // Wraps type (.equals) functions to operate on each value of an array + function arrayEqualsHandler(callback) { + return function handleArray(val1, val2) { + var left = arrayWrap(val1), right = arrayWrap(val2); + if (left.length !== right.length) return false; + for (var i = 0; i < left.length; i++) { + if (!callback(left[i], right[i])) return false; + } + return true; + }; + } + + this.encode = arrayHandler(bindTo(type, 'encode')); + this.decode = arrayHandler(bindTo(type, 'decode')); + this.is = arrayHandler(bindTo(type, 'is'), true); + this.equals = arrayEqualsHandler(bindTo(type, 'equals')); + this.pattern = type.pattern; + this.$arrayMode = mode; + } +}; + + + +/** + * @ngdoc object + * @name ui.router.util.$urlMatcherFactory + * + * @description + * Factory for {@link ui.router.util.type:UrlMatcher `UrlMatcher`} instances. The factory + * is also available to providers under the name `$urlMatcherFactoryProvider`. + */ +function $UrlMatcherFactory() { + $$UMFP = this; + + var isCaseInsensitive = false, isStrictMode = true, defaultSquashPolicy = false; + + function valToString(val) { return val != null ? val.toString().replace(/\//g, "%2F") : val; } + function valFromString(val) { return val != null ? val.toString().replace(/%2F/g, "/") : val; } +// TODO: in 1.0, make string .is() return false if value is undefined by default. +// function regexpMatches(val) { /*jshint validthis:true */ return isDefined(val) && this.pattern.test(val); } + function regexpMatches(val) { /*jshint validthis:true */ return this.pattern.test(val); } + + var $types = {}, enqueue = true, typeQueue = [], injector, defaultTypes = { + string: { + encode: valToString, + decode: valFromString, + is: regexpMatches, + pattern: /[^/]*/ + }, + int: { + encode: valToString, + decode: function(val) { return parseInt(val, 10); }, + is: function(val) { return isDefined(val) && this.decode(val.toString()) === val; }, + pattern: /\d+/ + }, + bool: { + encode: function(val) { return val ? 1 : 0; }, + decode: function(val) { return parseInt(val, 10) !== 0; }, + is: function(val) { return val === true || val === false; }, + pattern: /0|1/ + }, + date: { + encode: function (val) { + if (!this.is(val)) + return undefined; + return [ val.getFullYear(), + ('0' + (val.getMonth() + 1)).slice(-2), + ('0' + val.getDate()).slice(-2) + ].join("-"); + }, + decode: function (val) { + if (this.is(val)) return val; + var match = this.capture.exec(val); + return match ? new Date(match[1], match[2] - 1, match[3]) : undefined; + }, + is: function(val) { return val instanceof Date && !isNaN(val.valueOf()); }, + equals: function (a, b) { return this.is(a) && this.is(b) && a.toISOString() === b.toISOString(); }, + pattern: /[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/, + capture: /([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/ + }, + json: { + encode: angular.toJson, + decode: angular.fromJson, + is: angular.isObject, + equals: angular.equals, + pattern: /[^/]*/ + }, + any: { // does not encode/decode + encode: angular.identity, + decode: angular.identity, + is: angular.identity, + equals: angular.equals, + pattern: /.*/ + } + }; + + function getDefaultConfig() { + return { + strict: isStrictMode, + caseInsensitive: isCaseInsensitive + }; + } + + function isInjectable(value) { + return (isFunction(value) || (isArray(value) && isFunction(value[value.length - 1]))); + } + + /** + * [Internal] Get the default value of a parameter, which may be an injectable function. + */ + $UrlMatcherFactory.$$getDefaultValue = function(config) { + if (!isInjectable(config.value)) return config.value; + if (!injector) throw new Error("Injectable functions cannot be called at configuration time"); + return injector.invoke(config.value); + }; + + /** + * @ngdoc function + * @name ui.router.util.$urlMatcherFactory#caseInsensitive + * @methodOf ui.router.util.$urlMatcherFactory + * + * @description + * Defines whether URL matching should be case sensitive (the default behavior), or not. + * + * @param {boolean} value `false` to match URL in a case sensitive manner; otherwise `true`; + * @returns {boolean} the current value of caseInsensitive + */ + this.caseInsensitive = function(value) { + if (isDefined(value)) + isCaseInsensitive = value; + return isCaseInsensitive; + }; + + /** + * @ngdoc function + * @name ui.router.util.$urlMatcherFactory#strictMode + * @methodOf ui.router.util.$urlMatcherFactory + * + * @description + * Defines whether URLs should match trailing slashes, or not (the default behavior). + * + * @param {boolean=} value `false` to match trailing slashes in URLs, otherwise `true`. + * @returns {boolean} the current value of strictMode + */ + this.strictMode = function(value) { + if (isDefined(value)) + isStrictMode = value; + return isStrictMode; + }; + + /** + * @ngdoc function + * @name ui.router.util.$urlMatcherFactory#defaultSquashPolicy + * @methodOf ui.router.util.$urlMatcherFactory + * + * @description + * Sets the default behavior when generating or matching URLs with default parameter values. + * + * @param {string} value A string that defines the default parameter URL squashing behavior. + * `nosquash`: When generating an href with a default parameter value, do not squash the parameter value from the URL + * `slash`: When generating an href with a default parameter value, squash (remove) the parameter value, and, if the + * parameter is surrounded by slashes, squash (remove) one slash from the URL + * any other string, e.g. "~": When generating an href with a default parameter value, squash (remove) + * the parameter value from the URL and replace it with this string. + */ + this.defaultSquashPolicy = function(value) { + if (!isDefined(value)) return defaultSquashPolicy; + if (value !== true && value !== false && !isString(value)) + throw new Error("Invalid squash policy: " + value + ". Valid policies: false, true, arbitrary-string"); + defaultSquashPolicy = value; + return value; + }; + + /** + * @ngdoc function + * @name ui.router.util.$urlMatcherFactory#compile + * @methodOf ui.router.util.$urlMatcherFactory + * + * @description + * Creates a {@link ui.router.util.type:UrlMatcher `UrlMatcher`} for the specified pattern. + * + * @param {string} pattern The URL pattern. + * @param {Object} config The config object hash. + * @returns {UrlMatcher} The UrlMatcher. + */ + this.compile = function (pattern, config) { + return new UrlMatcher(pattern, extend(getDefaultConfig(), config)); + }; + + /** + * @ngdoc function + * @name ui.router.util.$urlMatcherFactory#isMatcher + * @methodOf ui.router.util.$urlMatcherFactory + * + * @description + * Returns true if the specified object is a `UrlMatcher`, or false otherwise. + * + * @param {Object} object The object to perform the type check against. + * @returns {Boolean} Returns `true` if the object matches the `UrlMatcher` interface, by + * implementing all the same methods. + */ + this.isMatcher = function (o) { + if (!isObject(o)) return false; + var result = true; + + forEach(UrlMatcher.prototype, function(val, name) { + if (isFunction(val)) { + result = result && (isDefined(o[name]) && isFunction(o[name])); + } + }); + return result; + }; + + /** + * @ngdoc function + * @name ui.router.util.$urlMatcherFactory#type + * @methodOf ui.router.util.$urlMatcherFactory + * + * @description + * Registers a custom {@link ui.router.util.type:Type `Type`} object that can be used to + * generate URLs with typed parameters. + * + * @param {string} name The type name. + * @param {Object|Function} definition The type definition. See + * {@link ui.router.util.type:Type `Type`} for information on the values accepted. + * @param {Object|Function} definitionFn (optional) A function that is injected before the app + * runtime starts. The result of this function is merged into the existing `definition`. + * See {@link ui.router.util.type:Type `Type`} for information on the values accepted. + * + * @returns {Object} Returns `$urlMatcherFactoryProvider`. + * + * @example + * This is a simple example of a custom type that encodes and decodes items from an + * array, using the array index as the URL-encoded value: + * + *
    +   * var list = ['John', 'Paul', 'George', 'Ringo'];
    +   *
    +   * $urlMatcherFactoryProvider.type('listItem', {
    +   *   encode: function(item) {
    +   *     // Represent the list item in the URL using its corresponding index
    +   *     return list.indexOf(item);
    +   *   },
    +   *   decode: function(item) {
    +   *     // Look up the list item by index
    +   *     return list[parseInt(item, 10)];
    +   *   },
    +   *   is: function(item) {
    +   *     // Ensure the item is valid by checking to see that it appears
    +   *     // in the list
    +   *     return list.indexOf(item) > -1;
    +   *   }
    +   * });
    +   *
    +   * $stateProvider.state('list', {
    +   *   url: "/list/{item:listItem}",
    +   *   controller: function($scope, $stateParams) {
    +   *     console.log($stateParams.item);
    +   *   }
    +   * });
    +   *
    +   * // ...
    +   *
    +   * // Changes URL to '/list/3', logs "Ringo" to the console
    +   * $state.go('list', { item: "Ringo" });
    +   * 
    + * + * This is a more complex example of a type that relies on dependency injection to + * interact with services, and uses the parameter name from the URL to infer how to + * handle encoding and decoding parameter values: + * + *
    +   * // Defines a custom type that gets a value from a service,
    +   * // where each service gets different types of values from
    +   * // a backend API:
    +   * $urlMatcherFactoryProvider.type('dbObject', {}, function(Users, Posts) {
    +   *
    +   *   // Matches up services to URL parameter names
    +   *   var services = {
    +   *     user: Users,
    +   *     post: Posts
    +   *   };
    +   *
    +   *   return {
    +   *     encode: function(object) {
    +   *       // Represent the object in the URL using its unique ID
    +   *       return object.id;
    +   *     },
    +   *     decode: function(value, key) {
    +   *       // Look up the object by ID, using the parameter
    +   *       // name (key) to call the correct service
    +   *       return services[key].findById(value);
    +   *     },
    +   *     is: function(object, key) {
    +   *       // Check that object is a valid dbObject
    +   *       return angular.isObject(object) && object.id && services[key];
    +   *     }
    +   *     equals: function(a, b) {
    +   *       // Check the equality of decoded objects by comparing
    +   *       // their unique IDs
    +   *       return a.id === b.id;
    +   *     }
    +   *   };
    +   * });
    +   *
    +   * // In a config() block, you can then attach URLs with
    +   * // type-annotated parameters:
    +   * $stateProvider.state('users', {
    +   *   url: "/users",
    +   *   // ...
    +   * }).state('users.item', {
    +   *   url: "/{user:dbObject}",
    +   *   controller: function($scope, $stateParams) {
    +   *     // $stateParams.user will now be an object returned from
    +   *     // the Users service
    +   *   },
    +   *   // ...
    +   * });
    +   * 
    + */ + this.type = function (name, definition, definitionFn) { + if (!isDefined(definition)) return $types[name]; + if ($types.hasOwnProperty(name)) throw new Error("A type named '" + name + "' has already been defined."); + + $types[name] = new Type(extend({ name: name }, definition)); + if (definitionFn) { + typeQueue.push({ name: name, def: definitionFn }); + if (!enqueue) flushTypeQueue(); + } + return this; + }; + + // `flushTypeQueue()` waits until `$urlMatcherFactory` is injected before invoking the queued `definitionFn`s + function flushTypeQueue() { + while(typeQueue.length) { + var type = typeQueue.shift(); + if (type.pattern) throw new Error("You cannot override a type's .pattern at runtime."); + angular.extend($types[type.name], injector.invoke(type.def)); + } + } + + // Register default types. Store them in the prototype of $types. + forEach(defaultTypes, function(type, name) { $types[name] = new Type(extend({name: name}, type)); }); + $types = inherit($types, {}); + + /* No need to document $get, since it returns this */ + this.$get = ['$injector', function ($injector) { + injector = $injector; + enqueue = false; + flushTypeQueue(); + + forEach(defaultTypes, function(type, name) { + if (!$types[name]) $types[name] = new Type(type); + }); + return this; + }]; + + this.Param = function Param(id, type, config, location) { + var self = this; + config = unwrapShorthand(config); + type = getType(config, type, location); + var arrayMode = getArrayMode(); + type = arrayMode ? type.$asArray(arrayMode, location === "search") : type; + if (type.name === "string" && !arrayMode && location === "path" && config.value === undefined) + config.value = ""; // for 0.2.x; in 0.3.0+ do not automatically default to "" + var isOptional = config.value !== undefined; + var squash = getSquashPolicy(config, isOptional); + var replace = getReplace(config, arrayMode, isOptional, squash); + + function unwrapShorthand(config) { + var keys = isObject(config) ? objectKeys(config) : []; + var isShorthand = indexOf(keys, "value") === -1 && indexOf(keys, "type") === -1 && + indexOf(keys, "squash") === -1 && indexOf(keys, "array") === -1; + if (isShorthand) config = { value: config }; + config.$$fn = isInjectable(config.value) ? config.value : function () { return config.value; }; + return config; + } + + function getType(config, urlType, location) { + if (config.type && urlType) throw new Error("Param '"+id+"' has two type configurations."); + if (urlType) return urlType; + if (!config.type) return (location === "config" ? $types.any : $types.string); + return config.type instanceof Type ? config.type : new Type(config.type); + } + + // array config: param name (param[]) overrides default settings. explicit config overrides param name. + function getArrayMode() { + var arrayDefaults = { array: (location === "search" ? "auto" : false) }; + var arrayParamNomenclature = id.match(/\[\]$/) ? { array: true } : {}; + return extend(arrayDefaults, arrayParamNomenclature, config).array; + } + + /** + * returns false, true, or the squash value to indicate the "default parameter url squash policy". + */ + function getSquashPolicy(config, isOptional) { + var squash = config.squash; + if (!isOptional || squash === false) return false; + if (!isDefined(squash) || squash == null) return defaultSquashPolicy; + if (squash === true || isString(squash)) return squash; + throw new Error("Invalid squash policy: '" + squash + "'. Valid policies: false, true, or arbitrary string"); + } + + function getReplace(config, arrayMode, isOptional, squash) { + var replace, configuredKeys, defaultPolicy = [ + { from: "", to: (isOptional || arrayMode ? undefined : "") }, + { from: null, to: (isOptional || arrayMode ? undefined : "") } + ]; + replace = isArray(config.replace) ? config.replace : []; + if (isString(squash)) + replace.push({ from: squash, to: undefined }); + configuredKeys = map(replace, function(item) { return item.from; } ); + return filter(defaultPolicy, function(item) { return indexOf(configuredKeys, item.from) === -1; }).concat(replace); + } + + /** + * [Internal] Get the default value of a parameter, which may be an injectable function. + */ + function $$getDefaultValue() { + if (!injector) throw new Error("Injectable functions cannot be called at configuration time"); + return injector.invoke(config.$$fn); + } + + /** + * [Internal] Gets the decoded representation of a value if the value is defined, otherwise, returns the + * default value, which may be the result of an injectable function. + */ + function $value(value) { + function hasReplaceVal(val) { return function(obj) { return obj.from === val; }; } + function $replace(value) { + var replacement = map(filter(self.replace, hasReplaceVal(value)), function(obj) { return obj.to; }); + return replacement.length ? replacement[0] : value; + } + value = $replace(value); + return isDefined(value) ? self.type.decode(value) : $$getDefaultValue(); + } + + function toString() { return "{Param:" + id + " " + type + " squash: '" + squash + "' optional: " + isOptional + "}"; } + + extend(this, { + id: id, + type: type, + location: location, + array: arrayMode, + squash: squash, + replace: replace, + isOptional: isOptional, + value: $value, + dynamic: undefined, + config: config, + toString: toString + }); + }; + + function ParamSet(params) { + extend(this, params || {}); + } + + ParamSet.prototype = { + $$new: function() { + return inherit(this, extend(new ParamSet(), { $$parent: this})); + }, + $$keys: function () { + var keys = [], chain = [], parent = this, + ignore = objectKeys(ParamSet.prototype); + while (parent) { chain.push(parent); parent = parent.$$parent; } + chain.reverse(); + forEach(chain, function(paramset) { + forEach(objectKeys(paramset), function(key) { + if (indexOf(keys, key) === -1 && indexOf(ignore, key) === -1) keys.push(key); + }); + }); + return keys; + }, + $$values: function(paramValues) { + var values = {}, self = this; + forEach(self.$$keys(), function(key) { + values[key] = self[key].value(paramValues && paramValues[key]); + }); + return values; + }, + $$equals: function(paramValues1, paramValues2) { + var equal = true, self = this; + forEach(self.$$keys(), function(key) { + var left = paramValues1 && paramValues1[key], right = paramValues2 && paramValues2[key]; + if (!self[key].type.equals(left, right)) equal = false; + }); + return equal; + }, + $$validates: function $$validate(paramValues) { + var result = true, isOptional, val, param, self = this; + + forEach(this.$$keys(), function(key) { + param = self[key]; + val = paramValues[key]; + isOptional = !val && param.isOptional; + result = result && (isOptional || !!param.type.is(val)); + }); + return result; + }, + $$parent: undefined + }; + + this.ParamSet = ParamSet; +} + +// Register as a provider so it's available to other providers +angular.module('ui.router.util').provider('$urlMatcherFactory', $UrlMatcherFactory); +angular.module('ui.router.util').run(['$urlMatcherFactory', function($urlMatcherFactory) { }]); + +/** + * @ngdoc object + * @name ui.router.router.$urlRouterProvider + * + * @requires ui.router.util.$urlMatcherFactoryProvider + * @requires $locationProvider + * + * @description + * `$urlRouterProvider` has the responsibility of watching `$location`. + * When `$location` changes it runs through a list of rules one by one until a + * match is found. `$urlRouterProvider` is used behind the scenes anytime you specify + * a url in a state configuration. All urls are compiled into a UrlMatcher object. + * + * There are several methods on `$urlRouterProvider` that make it useful to use directly + * in your module config. + */ +$UrlRouterProvider.$inject = ['$locationProvider', '$urlMatcherFactoryProvider']; +function $UrlRouterProvider( $locationProvider, $urlMatcherFactory) { + var rules = [], otherwise = null, interceptDeferred = false, listener; + + // Returns a string that is a prefix of all strings matching the RegExp + function regExpPrefix(re) { + var prefix = /^\^((?:\\[^a-zA-Z0-9]|[^\\\[\]\^$*+?.()|{}]+)*)/.exec(re.source); + return (prefix != null) ? prefix[1].replace(/\\(.)/g, "$1") : ''; + } + + // Interpolates matched values into a String.replace()-style pattern + function interpolate(pattern, match) { + return pattern.replace(/\$(\$|\d{1,2})/, function (m, what) { + return match[what === '$' ? 0 : Number(what)]; + }); + } + + /** + * @ngdoc function + * @name ui.router.router.$urlRouterProvider#rule + * @methodOf ui.router.router.$urlRouterProvider + * + * @description + * Defines rules that are used by `$urlRouterProvider` to find matches for + * specific URLs. + * + * @example + *
    +   * var app = angular.module('app', ['ui.router.router']);
    +   *
    +   * app.config(function ($urlRouterProvider) {
    +   *   // Here's an example of how you might allow case insensitive urls
    +   *   $urlRouterProvider.rule(function ($injector, $location) {
    +   *     var path = $location.path(),
    +   *         normalized = path.toLowerCase();
    +   *
    +   *     if (path !== normalized) {
    +   *       return normalized;
    +   *     }
    +   *   });
    +   * });
    +   * 
    + * + * @param {object} rule Handler function that takes `$injector` and `$location` + * services as arguments. You can use them to return a valid path as a string. + * + * @return {object} `$urlRouterProvider` - `$urlRouterProvider` instance + */ + this.rule = function (rule) { + if (!isFunction(rule)) throw new Error("'rule' must be a function"); + rules.push(rule); + return this; + }; + + /** + * @ngdoc object + * @name ui.router.router.$urlRouterProvider#otherwise + * @methodOf ui.router.router.$urlRouterProvider + * + * @description + * Defines a path that is used when an invalid route is requested. + * + * @example + *
    +   * var app = angular.module('app', ['ui.router.router']);
    +   *
    +   * app.config(function ($urlRouterProvider) {
    +   *   // if the path doesn't match any of the urls you configured
    +   *   // otherwise will take care of routing the user to the
    +   *   // specified url
    +   *   $urlRouterProvider.otherwise('/index');
    +   *
    +   *   // Example of using function rule as param
    +   *   $urlRouterProvider.otherwise(function ($injector, $location) {
    +   *     return '/a/valid/url';
    +   *   });
    +   * });
    +   * 
    + * + * @param {string|object} rule The url path you want to redirect to or a function + * rule that returns the url path. The function version is passed two params: + * `$injector` and `$location` services, and must return a url string. + * + * @return {object} `$urlRouterProvider` - `$urlRouterProvider` instance + */ + this.otherwise = function (rule) { + if (isString(rule)) { + var redirect = rule; + rule = function () { return redirect; }; + } + else if (!isFunction(rule)) throw new Error("'rule' must be a function"); + otherwise = rule; + return this; + }; + + + function handleIfMatch($injector, handler, match) { + if (!match) return false; + var result = $injector.invoke(handler, handler, { $match: match }); + return isDefined(result) ? result : true; + } + + /** + * @ngdoc function + * @name ui.router.router.$urlRouterProvider#when + * @methodOf ui.router.router.$urlRouterProvider + * + * @description + * Registers a handler for a given url matching. if handle is a string, it is + * treated as a redirect, and is interpolated according to the syntax of match + * (i.e. like `String.replace()` for `RegExp`, or like a `UrlMatcher` pattern otherwise). + * + * If the handler is a function, it is injectable. It gets invoked if `$location` + * matches. You have the option of inject the match object as `$match`. + * + * The handler can return + * + * - **falsy** to indicate that the rule didn't match after all, then `$urlRouter` + * will continue trying to find another one that matches. + * - **string** which is treated as a redirect and passed to `$location.url()` + * - **void** or any **truthy** value tells `$urlRouter` that the url was handled. + * + * @example + *
    +   * var app = angular.module('app', ['ui.router.router']);
    +   *
    +   * app.config(function ($urlRouterProvider) {
    +   *   $urlRouterProvider.when($state.url, function ($match, $stateParams) {
    +   *     if ($state.$current.navigable !== state ||
    +   *         !equalForKeys($match, $stateParams) {
    +   *      $state.transitionTo(state, $match, false);
    +   *     }
    +   *   });
    +   * });
    +   * 
    + * + * @param {string|object} what The incoming path that you want to redirect. + * @param {string|object} handler The path you want to redirect your user to. + */ + this.when = function (what, handler) { + var redirect, handlerIsString = isString(handler); + if (isString(what)) what = $urlMatcherFactory.compile(what); + + if (!handlerIsString && !isFunction(handler) && !isArray(handler)) + throw new Error("invalid 'handler' in when()"); + + var strategies = { + matcher: function (what, handler) { + if (handlerIsString) { + redirect = $urlMatcherFactory.compile(handler); + handler = ['$match', function ($match) { return redirect.format($match); }]; + } + return extend(function ($injector, $location) { + return handleIfMatch($injector, handler, what.exec($location.path(), $location.search())); + }, { + prefix: isString(what.prefix) ? what.prefix : '' + }); + }, + regex: function (what, handler) { + if (what.global || what.sticky) throw new Error("when() RegExp must not be global or sticky"); + + if (handlerIsString) { + redirect = handler; + handler = ['$match', function ($match) { return interpolate(redirect, $match); }]; + } + return extend(function ($injector, $location) { + return handleIfMatch($injector, handler, what.exec($location.path())); + }, { + prefix: regExpPrefix(what) + }); + } + }; + + var check = { matcher: $urlMatcherFactory.isMatcher(what), regex: what instanceof RegExp }; + + for (var n in check) { + if (check[n]) return this.rule(strategies[n](what, handler)); + } + + throw new Error("invalid 'what' in when()"); + }; + + /** + * @ngdoc function + * @name ui.router.router.$urlRouterProvider#deferIntercept + * @methodOf ui.router.router.$urlRouterProvider + * + * @description + * Disables (or enables) deferring location change interception. + * + * If you wish to customize the behavior of syncing the URL (for example, if you wish to + * defer a transition but maintain the current URL), call this method at configuration time. + * Then, at run time, call `$urlRouter.listen()` after you have configured your own + * `$locationChangeSuccess` event handler. + * + * @example + *
    +   * var app = angular.module('app', ['ui.router.router']);
    +   *
    +   * app.config(function ($urlRouterProvider) {
    +   *
    +   *   // Prevent $urlRouter from automatically intercepting URL changes;
    +   *   // this allows you to configure custom behavior in between
    +   *   // location changes and route synchronization:
    +   *   $urlRouterProvider.deferIntercept();
    +   *
    +   * }).run(function ($rootScope, $urlRouter, UserService) {
    +   *
    +   *   $rootScope.$on('$locationChangeSuccess', function(e) {
    +   *     // UserService is an example service for managing user state
    +   *     if (UserService.isLoggedIn()) return;
    +   *
    +   *     // Prevent $urlRouter's default handler from firing
    +   *     e.preventDefault();
    +   *
    +   *     UserService.handleLogin().then(function() {
    +   *       // Once the user has logged in, sync the current URL
    +   *       // to the router:
    +   *       $urlRouter.sync();
    +   *     });
    +   *   });
    +   *
    +   *   // Configures $urlRouter's listener *after* your custom listener
    +   *   $urlRouter.listen();
    +   * });
    +   * 
    + * + * @param {boolean} defer Indicates whether to defer location change interception. Passing + no parameter is equivalent to `true`. + */ + this.deferIntercept = function (defer) { + if (defer === undefined) defer = true; + interceptDeferred = defer; + }; + + /** + * @ngdoc object + * @name ui.router.router.$urlRouter + * + * @requires $location + * @requires $rootScope + * @requires $injector + * @requires $browser + * + * @description + * + */ + this.$get = $get; + $get.$inject = ['$location', '$rootScope', '$injector', '$browser']; + function $get( $location, $rootScope, $injector, $browser) { + + var baseHref = $browser.baseHref(), location = $location.url(), lastPushedUrl; + + function appendBasePath(url, isHtml5, absolute) { + if (baseHref === '/') return url; + if (isHtml5) return baseHref.slice(0, -1) + url; + if (absolute) return baseHref.slice(1) + url; + return url; + } + + // TODO: Optimize groups of rules with non-empty prefix into some sort of decision tree + function update(evt) { + if (evt && evt.defaultPrevented) return; + var ignoreUpdate = lastPushedUrl && $location.url() === lastPushedUrl; + lastPushedUrl = undefined; + if (ignoreUpdate) return true; + + function check(rule) { + var handled = rule($injector, $location); + + if (!handled) return false; + if (isString(handled)) $location.replace().url(handled); + return true; + } + var n = rules.length, i; + + for (i = 0; i < n; i++) { + if (check(rules[i])) return; + } + // always check otherwise last to allow dynamic updates to the set of rules + if (otherwise) check(otherwise); + } + + function listen() { + listener = listener || $rootScope.$on('$locationChangeSuccess', update); + return listener; + } + + if (!interceptDeferred) listen(); + + return { + /** + * @ngdoc function + * @name ui.router.router.$urlRouter#sync + * @methodOf ui.router.router.$urlRouter + * + * @description + * Triggers an update; the same update that happens when the address bar url changes, aka `$locationChangeSuccess`. + * This method is useful when you need to use `preventDefault()` on the `$locationChangeSuccess` event, + * perform some custom logic (route protection, auth, config, redirection, etc) and then finally proceed + * with the transition by calling `$urlRouter.sync()`. + * + * @example + *
    +       * angular.module('app', ['ui.router'])
    +       *   .run(function($rootScope, $urlRouter) {
    +       *     $rootScope.$on('$locationChangeSuccess', function(evt) {
    +       *       // Halt state change from even starting
    +       *       evt.preventDefault();
    +       *       // Perform custom logic
    +       *       var meetsRequirement = ...
    +       *       // Continue with the update and state transition if logic allows
    +       *       if (meetsRequirement) $urlRouter.sync();
    +       *     });
    +       * });
    +       * 
    + */ + sync: function() { + update(); + }, + + listen: function() { + return listen(); + }, + + update: function(read) { + if (read) { + location = $location.url(); + return; + } + if ($location.url() === location) return; + + $location.url(location); + $location.replace(); + }, + + push: function(urlMatcher, params, options) { + $location.url(urlMatcher.format(params || {})); + lastPushedUrl = options && options.$$avoidResync ? $location.url() : undefined; + if (options && options.replace) $location.replace(); + }, + + /** + * @ngdoc function + * @name ui.router.router.$urlRouter#href + * @methodOf ui.router.router.$urlRouter + * + * @description + * A URL generation method that returns the compiled URL for a given + * {@link ui.router.util.type:UrlMatcher `UrlMatcher`}, populated with the provided parameters. + * + * @example + *
    +       * $bob = $urlRouter.href(new UrlMatcher("/about/:person"), {
    +       *   person: "bob"
    +       * });
    +       * // $bob == "/about/bob";
    +       * 
    + * + * @param {UrlMatcher} urlMatcher The `UrlMatcher` object which is used as the template of the URL to generate. + * @param {object=} params An object of parameter values to fill the matcher's required parameters. + * @param {object=} options Options object. The options are: + * + * - **`absolute`** - {boolean=false}, If true will generate an absolute url, e.g. "http://www.example.com/fullurl". + * + * @returns {string} Returns the fully compiled URL, or `null` if `params` fail validation against `urlMatcher` + */ + href: function(urlMatcher, params, options) { + if (!urlMatcher.validates(params)) return null; + + var isHtml5 = $locationProvider.html5Mode(); + if (angular.isObject(isHtml5)) { + isHtml5 = isHtml5.enabled; + } + + var url = urlMatcher.format(params); + options = options || {}; + + if (!isHtml5 && url !== null) { + url = "#" + $locationProvider.hashPrefix() + url; + } + url = appendBasePath(url, isHtml5, options.absolute); + + if (!options.absolute || !url) { + return url; + } + + var slash = (!isHtml5 && url ? '/' : ''), port = $location.port(); + port = (port === 80 || port === 443 ? '' : ':' + port); + + return [$location.protocol(), '://', $location.host(), port, slash, url].join(''); + } + }; + } +} + +angular.module('ui.router.router').provider('$urlRouter', $UrlRouterProvider); + +/** + * @ngdoc object + * @name ui.router.state.$stateProvider + * + * @requires ui.router.router.$urlRouterProvider + * @requires ui.router.util.$urlMatcherFactoryProvider + * + * @description + * The new `$stateProvider` works similar to Angular's v1 router, but it focuses purely + * on state. + * + * A state corresponds to a "place" in the application in terms of the overall UI and + * navigation. A state describes (via the controller / template / view properties) what + * the UI looks like and does at that place. + * + * States often have things in common, and the primary way of factoring out these + * commonalities in this model is via the state hierarchy, i.e. parent/child states aka + * nested states. + * + * The `$stateProvider` provides interfaces to declare these states for your app. + */ +$StateProvider.$inject = ['$urlRouterProvider', '$urlMatcherFactoryProvider']; +function $StateProvider( $urlRouterProvider, $urlMatcherFactory) { + + var root, states = {}, $state, queue = {}, abstractKey = 'abstract'; + + // Builds state properties from definition passed to registerState() + var stateBuilder = { + + // Derive parent state from a hierarchical name only if 'parent' is not explicitly defined. + // state.children = []; + // if (parent) parent.children.push(state); + parent: function(state) { + if (isDefined(state.parent) && state.parent) return findState(state.parent); + // regex matches any valid composite state name + // would match "contact.list" but not "contacts" + var compositeName = /^(.+)\.[^.]+$/.exec(state.name); + return compositeName ? findState(compositeName[1]) : root; + }, + + // inherit 'data' from parent and override by own values (if any) + data: function(state) { + if (state.parent && state.parent.data) { + state.data = state.self.data = extend({}, state.parent.data, state.data); + } + return state.data; + }, + + // Build a URLMatcher if necessary, either via a relative or absolute URL + url: function(state) { + var url = state.url, config = { params: state.params || {} }; + + if (isString(url)) { + if (url.charAt(0) == '^') return $urlMatcherFactory.compile(url.substring(1), config); + return (state.parent.navigable || root).url.concat(url, config); + } + + if (!url || $urlMatcherFactory.isMatcher(url)) return url; + throw new Error("Invalid url '" + url + "' in state '" + state + "'"); + }, + + // Keep track of the closest ancestor state that has a URL (i.e. is navigable) + navigable: function(state) { + return state.url ? state : (state.parent ? state.parent.navigable : null); + }, + + // Own parameters for this state. state.url.params is already built at this point. Create and add non-url params + ownParams: function(state) { + var params = state.url && state.url.params || new $$UMFP.ParamSet(); + forEach(state.params || {}, function(config, id) { + if (!params[id]) params[id] = new $$UMFP.Param(id, null, config, "config"); + }); + return params; + }, + + // Derive parameters for this state and ensure they're a super-set of parent's parameters + params: function(state) { + return state.parent && state.parent.params ? extend(state.parent.params.$$new(), state.ownParams) : new $$UMFP.ParamSet(); + }, + + // If there is no explicit multi-view configuration, make one up so we don't have + // to handle both cases in the view directive later. Note that having an explicit + // 'views' property will mean the default unnamed view properties are ignored. This + // is also a good time to resolve view names to absolute names, so everything is a + // straight lookup at link time. + views: function(state) { + var views = {}; + + forEach(isDefined(state.views) ? state.views : { '': state }, function (view, name) { + if (name.indexOf('@') < 0) name += '@' + state.parent.name; + views[name] = view; + }); + return views; + }, + + // Keep a full path from the root down to this state as this is needed for state activation. + path: function(state) { + return state.parent ? state.parent.path.concat(state) : []; // exclude root from path + }, + + // Speed up $state.contains() as it's used a lot + includes: function(state) { + var includes = state.parent ? extend({}, state.parent.includes) : {}; + includes[state.name] = true; + return includes; + }, + + $delegates: {} + }; + + function isRelative(stateName) { + return stateName.indexOf(".") === 0 || stateName.indexOf("^") === 0; + } + + function findState(stateOrName, base) { + if (!stateOrName) return undefined; + + var isStr = isString(stateOrName), + name = isStr ? stateOrName : stateOrName.name, + path = isRelative(name); + + if (path) { + if (!base) throw new Error("No reference point given for path '" + name + "'"); + base = findState(base); + + var rel = name.split("."), i = 0, pathLength = rel.length, current = base; + + for (; i < pathLength; i++) { + if (rel[i] === "" && i === 0) { + current = base; + continue; + } + if (rel[i] === "^") { + if (!current.parent) throw new Error("Path '" + name + "' not valid for state '" + base.name + "'"); + current = current.parent; + continue; + } + break; + } + rel = rel.slice(i).join("."); + name = current.name + (current.name && rel ? "." : "") + rel; + } + var state = states[name]; + + if (state && (isStr || (!isStr && (state === stateOrName || state.self === stateOrName)))) { + return state; + } + return undefined; + } + + function queueState(parentName, state) { + if (!queue[parentName]) { + queue[parentName] = []; + } + queue[parentName].push(state); + } + + function flushQueuedChildren(parentName) { + var queued = queue[parentName] || []; + while(queued.length) { + registerState(queued.shift()); + } + } + + function registerState(state) { + // Wrap a new object around the state so we can store our private details easily. + state = inherit(state, { + self: state, + resolve: state.resolve || {}, + toString: function() { return this.name; } + }); + + var name = state.name; + if (!isString(name) || name.indexOf('@') >= 0) throw new Error("State must have a valid name"); + if (states.hasOwnProperty(name)) throw new Error("State '" + name + "'' is already defined"); + + // Get parent name + var parentName = (name.indexOf('.') !== -1) ? name.substring(0, name.lastIndexOf('.')) + : (isString(state.parent)) ? state.parent + : (isObject(state.parent) && isString(state.parent.name)) ? state.parent.name + : ''; + + // If parent is not registered yet, add state to queue and register later + if (parentName && !states[parentName]) { + return queueState(parentName, state.self); + } + + for (var key in stateBuilder) { + if (isFunction(stateBuilder[key])) state[key] = stateBuilder[key](state, stateBuilder.$delegates[key]); + } + states[name] = state; + + // Register the state in the global state list and with $urlRouter if necessary. + if (!state[abstractKey] && state.url) { + $urlRouterProvider.when(state.url, ['$match', '$stateParams', function ($match, $stateParams) { + if ($state.$current.navigable != state || !equalForKeys($match, $stateParams)) { + $state.transitionTo(state, $match, { inherit: true, location: false }); + } + }]); + } + + // Register any queued children + flushQueuedChildren(name); + + return state; + } + + // Checks text to see if it looks like a glob. + function isGlob (text) { + return text.indexOf('*') > -1; + } + + // Returns true if glob matches current $state name. + function doesStateMatchGlob (glob) { + var globSegments = glob.split('.'), + segments = $state.$current.name.split('.'); + + //match greedy starts + if (globSegments[0] === '**') { + segments = segments.slice(indexOf(segments, globSegments[1])); + segments.unshift('**'); + } + //match greedy ends + if (globSegments[globSegments.length - 1] === '**') { + segments.splice(indexOf(segments, globSegments[globSegments.length - 2]) + 1, Number.MAX_VALUE); + segments.push('**'); + } + + if (globSegments.length != segments.length) { + return false; + } + + //match single stars + for (var i = 0, l = globSegments.length; i < l; i++) { + if (globSegments[i] === '*') { + segments[i] = '*'; + } + } + + return segments.join('') === globSegments.join(''); + } + + + // Implicit root state that is always active + root = registerState({ + name: '', + url: '^', + views: null, + 'abstract': true + }); + root.navigable = null; + + + /** + * @ngdoc function + * @name ui.router.state.$stateProvider#decorator + * @methodOf ui.router.state.$stateProvider + * + * @description + * Allows you to extend (carefully) or override (at your own peril) the + * `stateBuilder` object used internally by `$stateProvider`. This can be used + * to add custom functionality to ui-router, for example inferring templateUrl + * based on the state name. + * + * When passing only a name, it returns the current (original or decorated) builder + * function that matches `name`. + * + * The builder functions that can be decorated are listed below. Though not all + * necessarily have a good use case for decoration, that is up to you to decide. + * + * In addition, users can attach custom decorators, which will generate new + * properties within the state's internal definition. There is currently no clear + * use-case for this beyond accessing internal states (i.e. $state.$current), + * however, expect this to become increasingly relevant as we introduce additional + * meta-programming features. + * + * **Warning**: Decorators should not be interdependent because the order of + * execution of the builder functions in non-deterministic. Builder functions + * should only be dependent on the state definition object and super function. + * + * + * Existing builder functions and current return values: + * + * - **parent** `{object}` - returns the parent state object. + * - **data** `{object}` - returns state data, including any inherited data that is not + * overridden by own values (if any). + * - **url** `{object}` - returns a {@link ui.router.util.type:UrlMatcher UrlMatcher} + * or `null`. + * - **navigable** `{object}` - returns closest ancestor state that has a URL (aka is + * navigable). + * - **params** `{object}` - returns an array of state params that are ensured to + * be a super-set of parent's params. + * - **views** `{object}` - returns a views object where each key is an absolute view + * name (i.e. "viewName@stateName") and each value is the config object + * (template, controller) for the view. Even when you don't use the views object + * explicitly on a state config, one is still created for you internally. + * So by decorating this builder function you have access to decorating template + * and controller properties. + * - **ownParams** `{object}` - returns an array of params that belong to the state, + * not including any params defined by ancestor states. + * - **path** `{string}` - returns the full path from the root down to this state. + * Needed for state activation. + * - **includes** `{object}` - returns an object that includes every state that + * would pass a `$state.includes()` test. + * + * @example + *
    +   * // Override the internal 'views' builder with a function that takes the state
    +   * // definition, and a reference to the internal function being overridden:
    +   * $stateProvider.decorator('views', function (state, parent) {
    +   *   var result = {},
    +   *       views = parent(state);
    +   *
    +   *   angular.forEach(views, function (config, name) {
    +   *     var autoName = (state.name + '.' + name).replace('.', '/');
    +   *     config.templateUrl = config.templateUrl || '/partials/' + autoName + '.html';
    +   *     result[name] = config;
    +   *   });
    +   *   return result;
    +   * });
    +   *
    +   * $stateProvider.state('home', {
    +   *   views: {
    +   *     'contact.list': { controller: 'ListController' },
    +   *     'contact.item': { controller: 'ItemController' }
    +   *   }
    +   * });
    +   *
    +   * // ...
    +   *
    +   * $state.go('home');
    +   * // Auto-populates list and item views with /partials/home/contact/list.html,
    +   * // and /partials/home/contact/item.html, respectively.
    +   * 
    + * + * @param {string} name The name of the builder function to decorate. + * @param {object} func A function that is responsible for decorating the original + * builder function. The function receives two parameters: + * + * - `{object}` - state - The state config object. + * - `{object}` - super - The original builder function. + * + * @return {object} $stateProvider - $stateProvider instance + */ + this.decorator = decorator; + function decorator(name, func) { + /*jshint validthis: true */ + if (isString(name) && !isDefined(func)) { + return stateBuilder[name]; + } + if (!isFunction(func) || !isString(name)) { + return this; + } + if (stateBuilder[name] && !stateBuilder.$delegates[name]) { + stateBuilder.$delegates[name] = stateBuilder[name]; + } + stateBuilder[name] = func; + return this; + } + + /** + * @ngdoc function + * @name ui.router.state.$stateProvider#state + * @methodOf ui.router.state.$stateProvider + * + * @description + * Registers a state configuration under a given state name. The stateConfig object + * has the following acceptable properties. + * + * @param {string} name A unique state name, e.g. "home", "about", "contacts". + * To create a parent/child state use a dot, e.g. "about.sales", "home.newest". + * @param {object} stateConfig State configuration object. + * @param {string|function=} stateConfig.template + *
    + * html template as a string or a function that returns + * an html template as a string which should be used by the uiView directives. This property + * takes precedence over templateUrl. + * + * If `template` is a function, it will be called with the following parameters: + * + * - {array.<object>} - state parameters extracted from the current $location.path() by + * applying the current state + * + *
    template:
    +   *   "

    inline template definition

    " + + * "
    "
    + *
    template: function(params) {
    +   *       return "

    generated template

    "; }
    + * + * + * @param {string|function=} stateConfig.templateUrl + * + * + * path or function that returns a path to an html + * template that should be used by uiView. + * + * If `templateUrl` is a function, it will be called with the following parameters: + * + * - {array.<object>} - state parameters extracted from the current $location.path() by + * applying the current state + * + *
    templateUrl: "home.html"
    + *
    templateUrl: function(params) {
    +   *     return myTemplates[params.pageId]; }
    + * + * @param {function=} stateConfig.templateProvider + * + * Provider function that returns HTML content string. + *
     templateProvider:
    +   *       function(MyTemplateService, params) {
    +   *         return MyTemplateService.getTemplate(params.pageId);
    +   *       }
    + * + * @param {string|function=} stateConfig.controller + * + * + * Controller fn that should be associated with newly + * related scope or the name of a registered controller if passed as a string. + * Optionally, the ControllerAs may be declared here. + *
    controller: "MyRegisteredController"
    + *
    controller:
    +   *     "MyRegisteredController as fooCtrl"}
    + *
    controller: function($scope, MyService) {
    +   *     $scope.data = MyService.getData(); }
    + * + * @param {function=} stateConfig.controllerProvider + * + * + * Injectable provider function that returns the actual controller or string. + *
    controllerProvider:
    +   *   function(MyResolveData) {
    +   *     if (MyResolveData.foo)
    +   *       return "FooCtrl"
    +   *     else if (MyResolveData.bar)
    +   *       return "BarCtrl";
    +   *     else return function($scope) {
    +   *       $scope.baz = "Qux";
    +   *     }
    +   *   }
    + * + * @param {string=} stateConfig.controllerAs + * + * + * A controller alias name. If present the controller will be + * published to scope under the controllerAs name. + *
    controllerAs: "myCtrl"
    + * + * @param {object=} stateConfig.resolve + * + * + * An optional map<string, function> of dependencies which + * should be injected into the controller. If any of these dependencies are promises, + * the router will wait for them all to be resolved before the controller is instantiated. + * If all the promises are resolved successfully, the $stateChangeSuccess event is fired + * and the values of the resolved promises are injected into any controllers that reference them. + * If any of the promises are rejected the $stateChangeError event is fired. + * + * The map object is: + * + * - key - {string}: name of dependency to be injected into controller + * - factory - {string|function}: If string then it is alias for service. Otherwise if function, + * it is injected and return value it treated as dependency. If result is a promise, it is + * resolved before its value is injected into controller. + * + *
    resolve: {
    +   *     myResolve1:
    +   *       function($http, $stateParams) {
    +   *         return $http.get("/api/foos/"+stateParams.fooID);
    +   *       }
    +   *     }
    + * + * @param {string=} stateConfig.url + * + * + * A url fragment with optional parameters. When a state is navigated or + * transitioned to, the `$stateParams` service will be populated with any + * parameters that were passed. + * + * examples: + *
    url: "/home"
    +   * url: "/users/:userid"
    +   * url: "/books/{bookid:[a-zA-Z_-]}"
    +   * url: "/books/{categoryid:int}"
    +   * url: "/books/{publishername:string}/{categoryid:int}"
    +   * url: "/messages?before&after"
    +   * url: "/messages?{before:date}&{after:date}"
    + * url: "/messages/:mailboxid?{before:date}&{after:date}" + * + * @param {object=} stateConfig.views + * + * an optional map<string, object> which defined multiple views, or targets views + * manually/explicitly. + * + * Examples: + * + * Targets three named `ui-view`s in the parent state's template + *
    views: {
    +   *     header: {
    +   *       controller: "headerCtrl",
    +   *       templateUrl: "header.html"
    +   *     }, body: {
    +   *       controller: "bodyCtrl",
    +   *       templateUrl: "body.html"
    +   *     }, footer: {
    +   *       controller: "footCtrl",
    +   *       templateUrl: "footer.html"
    +   *     }
    +   *   }
    + * + * Targets named `ui-view="header"` from grandparent state 'top''s template, and named `ui-view="body" from parent state's template. + *
    views: {
    +   *     'header@top': {
    +   *       controller: "msgHeaderCtrl",
    +   *       templateUrl: "msgHeader.html"
    +   *     }, 'body': {
    +   *       controller: "messagesCtrl",
    +   *       templateUrl: "messages.html"
    +   *     }
    +   *   }
    + * + * @param {boolean=} [stateConfig.abstract=false] + * + * An abstract state will never be directly activated, + * but can provide inherited properties to its common children states. + *
    abstract: true
    + * + * @param {function=} stateConfig.onEnter + * + * + * Callback function for when a state is entered. Good way + * to trigger an action or dispatch an event, such as opening a dialog. + * If minifying your scripts, make sure to explictly annotate this function, + * because it won't be automatically annotated by your build tools. + * + *
    onEnter: function(MyService, $stateParams) {
    +   *     MyService.foo($stateParams.myParam);
    +   * }
    + * + * @param {function=} stateConfig.onExit + * + * + * Callback function for when a state is exited. Good way to + * trigger an action or dispatch an event, such as opening a dialog. + * If minifying your scripts, make sure to explictly annotate this function, + * because it won't be automatically annotated by your build tools. + * + *
    onExit: function(MyService, $stateParams) {
    +   *     MyService.cleanup($stateParams.myParam);
    +   * }
    + * + * @param {boolean=} [stateConfig.reloadOnSearch=true] + * + * + * If `false`, will not retrigger the same state + * just because a search/query parameter has changed (via $location.search() or $location.hash()). + * Useful for when you'd like to modify $location.search() without triggering a reload. + *
    reloadOnSearch: false
    + * + * @param {object=} stateConfig.data + * + * + * Arbitrary data object, useful for custom configuration. The parent state's `data` is + * prototypally inherited. In other words, adding a data property to a state adds it to + * the entire subtree via prototypal inheritance. + * + *
    data: {
    +   *     requiredRole: 'foo'
    +   * } 
    + * + * @param {object=} stateConfig.params + * + * + * A map which optionally configures parameters declared in the `url`, or + * defines additional non-url parameters. For each parameter being + * configured, add a configuration object keyed to the name of the parameter. + * + * Each parameter configuration object may contain the following properties: + * + * - ** value ** - {object|function=}: specifies the default value for this + * parameter. This implicitly sets this parameter as optional. + * + * When UI-Router routes to a state and no value is + * specified for this parameter in the URL or transition, the + * default value will be used instead. If `value` is a function, + * it will be injected and invoked, and the return value used. + * + * *Note*: `undefined` is treated as "no default value" while `null` + * is treated as "the default value is `null`". + * + * *Shorthand*: If you only need to configure the default value of the + * parameter, you may use a shorthand syntax. In the **`params`** + * map, instead mapping the param name to a full parameter configuration + * object, simply set map it to the default parameter value, e.g.: + * + *
    // define a parameter's default value
    +   * params: {
    +   *     param1: { value: "defaultValue" }
    +   * }
    +   * // shorthand default values
    +   * params: {
    +   *     param1: "defaultValue",
    +   *     param2: "param2Default"
    +   * }
    + * + * - ** array ** - {boolean=}: *(default: false)* If true, the param value will be + * treated as an array of values. If you specified a Type, the value will be + * treated as an array of the specified Type. Note: query parameter values + * default to a special `"auto"` mode. + * + * For query parameters in `"auto"` mode, if multiple values for a single parameter + * are present in the URL (e.g.: `/foo?bar=1&bar=2&bar=3`) then the values + * are mapped to an array (e.g.: `{ foo: [ '1', '2', '3' ] }`). However, if + * only one value is present (e.g.: `/foo?bar=1`) then the value is treated as single + * value (e.g.: `{ foo: '1' }`). + * + *
    params: {
    +   *     param1: { array: true }
    +   * }
    + * + * - ** squash ** - {bool|string=}: `squash` configures how a default parameter value is represented in the URL when + * the current parameter value is the same as the default value. If `squash` is not set, it uses the + * configured default squash policy. + * (See {@link ui.router.util.$urlMatcherFactory#methods_defaultSquashPolicy `defaultSquashPolicy()`}) + * + * There are three squash settings: + * + * - false: The parameter's default value is not squashed. It is encoded and included in the URL + * - true: The parameter's default value is omitted from the URL. If the parameter is preceeded and followed + * by slashes in the state's `url` declaration, then one of those slashes are omitted. + * This can allow for cleaner looking URLs. + * - `""`: The parameter's default value is replaced with an arbitrary placeholder of your choice. + * + *
    params: {
    +   *     param1: {
    +   *       value: "defaultId",
    +   *       squash: true
    +   * } }
    +   * // squash "defaultValue" to "~"
    +   * params: {
    +   *     param1: {
    +   *       value: "defaultValue",
    +   *       squash: "~"
    +   * } }
    +   * 
    + * + * + * @example + *
    +   * // Some state name examples
    +   *
    +   * // stateName can be a single top-level name (must be unique).
    +   * $stateProvider.state("home", {});
    +   *
    +   * // Or it can be a nested state name. This state is a child of the
    +   * // above "home" state.
    +   * $stateProvider.state("home.newest", {});
    +   *
    +   * // Nest states as deeply as needed.
    +   * $stateProvider.state("home.newest.abc.xyz.inception", {});
    +   *
    +   * // state() returns $stateProvider, so you can chain state declarations.
    +   * $stateProvider
    +   *   .state("home", {})
    +   *   .state("about", {})
    +   *   .state("contacts", {});
    +   * 
    + * + */ + this.state = state; + function state(name, definition) { + /*jshint validthis: true */ + if (isObject(name)) definition = name; + else definition.name = name; + registerState(definition); + return this; + } + + /** + * @ngdoc object + * @name ui.router.state.$state + * + * @requires $rootScope + * @requires $q + * @requires ui.router.state.$view + * @requires $injector + * @requires ui.router.util.$resolve + * @requires ui.router.state.$stateParams + * @requires ui.router.router.$urlRouter + * + * @property {object} params A param object, e.g. {sectionId: section.id)}, that + * you'd like to test against the current active state. + * @property {object} current A reference to the state's config object. However + * you passed it in. Useful for accessing custom data. + * @property {object} transition Currently pending transition. A promise that'll + * resolve or reject. + * + * @description + * `$state` service is responsible for representing states as well as transitioning + * between them. It also provides interfaces to ask for current state or even states + * you're coming from. + */ + this.$get = $get; + $get.$inject = ['$rootScope', '$q', '$view', '$injector', '$resolve', '$stateParams', '$urlRouter', '$location', '$urlMatcherFactory']; + function $get( $rootScope, $q, $view, $injector, $resolve, $stateParams, $urlRouter, $location, $urlMatcherFactory) { + + var TransitionSuperseded = $q.reject(new Error('transition superseded')); + var TransitionPrevented = $q.reject(new Error('transition prevented')); + var TransitionAborted = $q.reject(new Error('transition aborted')); + var TransitionFailed = $q.reject(new Error('transition failed')); + + // Handles the case where a state which is the target of a transition is not found, and the user + // can optionally retry or defer the transition + function handleRedirect(redirect, state, params, options) { + /** + * @ngdoc event + * @name ui.router.state.$state#$stateNotFound + * @eventOf ui.router.state.$state + * @eventType broadcast on root scope + * @description + * Fired when a requested state **cannot be found** using the provided state name during transition. + * The event is broadcast allowing any handlers a single chance to deal with the error (usually by + * lazy-loading the unfound state). A special `unfoundState` object is passed to the listener handler, + * you can see its three properties in the example. You can use `event.preventDefault()` to abort the + * transition and the promise returned from `go` will be rejected with a `'transition aborted'` value. + * + * @param {Object} event Event object. + * @param {Object} unfoundState Unfound State information. Contains: `to, toParams, options` properties. + * @param {State} fromState Current state object. + * @param {Object} fromParams Current state params. + * + * @example + * + *
    +       * // somewhere, assume lazy.state has not been defined
    +       * $state.go("lazy.state", {a:1, b:2}, {inherit:false});
    +       *
    +       * // somewhere else
    +       * $scope.$on('$stateNotFound',
    +       * function(event, unfoundState, fromState, fromParams){
    +       *     console.log(unfoundState.to); // "lazy.state"
    +       *     console.log(unfoundState.toParams); // {a:1, b:2}
    +       *     console.log(unfoundState.options); // {inherit:false} + default options
    +       * })
    +       * 
    + */ + var evt = $rootScope.$broadcast('$stateNotFound', redirect, state, params); + + if (evt.defaultPrevented) { + $urlRouter.update(); + return TransitionAborted; + } + + if (!evt.retry) { + return null; + } + + // Allow the handler to return a promise to defer state lookup retry + if (options.$retry) { + $urlRouter.update(); + return TransitionFailed; + } + var retryTransition = $state.transition = $q.when(evt.retry); + + retryTransition.then(function() { + if (retryTransition !== $state.transition) return TransitionSuperseded; + redirect.options.$retry = true; + return $state.transitionTo(redirect.to, redirect.toParams, redirect.options); + }, function() { + return TransitionAborted; + }); + $urlRouter.update(); + + return retryTransition; + } + + root.locals = { resolve: null, globals: { $stateParams: {} } }; + + $state = { + params: {}, + current: root.self, + $current: root, + transition: null + }; + + /** + * @ngdoc function + * @name ui.router.state.$state#reload + * @methodOf ui.router.state.$state + * + * @description + * A method that force reloads the current state. All resolves are re-resolved, events are not re-fired, + * and controllers reinstantiated (bug with controllers reinstantiating right now, fixing soon). + * + * @example + *
    +     * var app angular.module('app', ['ui.router']);
    +     *
    +     * app.controller('ctrl', function ($scope, $state) {
    +     *   $scope.reload = function(){
    +     *     $state.reload();
    +     *   }
    +     * });
    +     * 
    + * + * `reload()` is just an alias for: + *
    +     * $state.transitionTo($state.current, $stateParams, { 
    +     *   reload: true, inherit: false, notify: true
    +     * });
    +     * 
    + * + * @returns {promise} A promise representing the state of the new transition. See + * {@link ui.router.state.$state#methods_go $state.go}. + */ + $state.reload = function reload() { + return $state.transitionTo($state.current, $stateParams, { reload: true, inherit: false, notify: true }); + }; + + /** + * @ngdoc function + * @name ui.router.state.$state#go + * @methodOf ui.router.state.$state + * + * @description + * Convenience method for transitioning to a new state. `$state.go` calls + * `$state.transitionTo` internally but automatically sets options to + * `{ location: true, inherit: true, relative: $state.$current, notify: true }`. + * This allows you to easily use an absolute or relative to path and specify + * only the parameters you'd like to update (while letting unspecified parameters + * inherit from the currently active ancestor states). + * + * @example + *
    +     * var app = angular.module('app', ['ui.router']);
    +     *
    +     * app.controller('ctrl', function ($scope, $state) {
    +     *   $scope.changeState = function () {
    +     *     $state.go('contact.detail');
    +     *   };
    +     * });
    +     * 
    + * + * + * @param {string} to Absolute state name or relative state path. Some examples: + * + * - `$state.go('contact.detail')` - will go to the `contact.detail` state + * - `$state.go('^')` - will go to a parent state + * - `$state.go('^.sibling')` - will go to a sibling state + * - `$state.go('.child.grandchild')` - will go to grandchild state + * + * @param {object=} params A map of the parameters that will be sent to the state, + * will populate $stateParams. Any parameters that are not specified will be inherited from currently + * defined parameters. This allows, for example, going to a sibling state that shares parameters + * specified in a parent state. Parameter inheritance only works between common ancestor states, I.e. + * transitioning to a sibling will get you the parameters for all parents, transitioning to a child + * will get you all current parameters, etc. + * @param {object=} options Options object. The options are: + * + * - **`location`** - {boolean=true|string=} - If `true` will update the url in the location bar, if `false` + * will not. If string, must be `"replace"`, which will update url and also replace last history record. + * - **`inherit`** - {boolean=true}, If `true` will inherit url parameters from current url. + * - **`relative`** - {object=$state.$current}, When transitioning with relative path (e.g '^'), + * defines which state to be relative from. + * - **`notify`** - {boolean=true}, If `true` will broadcast $stateChangeStart and $stateChangeSuccess events. + * - **`reload`** (v0.2.5) - {boolean=false}, If `true` will force transition even if the state or params + * have not changed, aka a reload of the same state. It differs from reloadOnSearch because you'd + * use this when you want to force a reload when *everything* is the same, including search params. + * + * @returns {promise} A promise representing the state of the new transition. + * + * Possible success values: + * + * - $state.current + * + *
    Possible rejection values: + * + * - 'transition superseded' - when a newer transition has been started after this one + * - 'transition prevented' - when `event.preventDefault()` has been called in a `$stateChangeStart` listener + * - 'transition aborted' - when `event.preventDefault()` has been called in a `$stateNotFound` listener or + * when a `$stateNotFound` `event.retry` promise errors. + * - 'transition failed' - when a state has been unsuccessfully found after 2 tries. + * - *resolve error* - when an error has occurred with a `resolve` + * + */ + $state.go = function go(to, params, options) { + return $state.transitionTo(to, params, extend({ inherit: true, relative: $state.$current }, options)); + }; + + /** + * @ngdoc function + * @name ui.router.state.$state#transitionTo + * @methodOf ui.router.state.$state + * + * @description + * Low-level method for transitioning to a new state. {@link ui.router.state.$state#methods_go $state.go} + * uses `transitionTo` internally. `$state.go` is recommended in most situations. + * + * @example + *
    +     * var app = angular.module('app', ['ui.router']);
    +     *
    +     * app.controller('ctrl', function ($scope, $state) {
    +     *   $scope.changeState = function () {
    +     *     $state.transitionTo('contact.detail');
    +     *   };
    +     * });
    +     * 
    + * + * @param {string} to State name. + * @param {object=} toParams A map of the parameters that will be sent to the state, + * will populate $stateParams. + * @param {object=} options Options object. The options are: + * + * - **`location`** - {boolean=true|string=} - If `true` will update the url in the location bar, if `false` + * will not. If string, must be `"replace"`, which will update url and also replace last history record. + * - **`inherit`** - {boolean=false}, If `true` will inherit url parameters from current url. + * - **`relative`** - {object=}, When transitioning with relative path (e.g '^'), + * defines which state to be relative from. + * - **`notify`** - {boolean=true}, If `true` will broadcast $stateChangeStart and $stateChangeSuccess events. + * - **`reload`** (v0.2.5) - {boolean=false}, If `true` will force transition even if the state or params + * have not changed, aka a reload of the same state. It differs from reloadOnSearch because you'd + * use this when you want to force a reload when *everything* is the same, including search params. + * + * @returns {promise} A promise representing the state of the new transition. See + * {@link ui.router.state.$state#methods_go $state.go}. + */ + $state.transitionTo = function transitionTo(to, toParams, options) { + toParams = toParams || {}; + options = extend({ + location: true, inherit: false, relative: null, notify: true, reload: false, $retry: false + }, options || {}); + + var from = $state.$current, fromParams = $state.params, fromPath = from.path; + var evt, toState = findState(to, options.relative); + + if (!isDefined(toState)) { + var redirect = { to: to, toParams: toParams, options: options }; + var redirectResult = handleRedirect(redirect, from.self, fromParams, options); + + if (redirectResult) { + return redirectResult; + } + + // Always retry once if the $stateNotFound was not prevented + // (handles either redirect changed or state lazy-definition) + to = redirect.to; + toParams = redirect.toParams; + options = redirect.options; + toState = findState(to, options.relative); + + if (!isDefined(toState)) { + if (!options.relative) throw new Error("No such state '" + to + "'"); + throw new Error("Could not resolve '" + to + "' from state '" + options.relative + "'"); + } + } + if (toState[abstractKey]) throw new Error("Cannot transition to abstract state '" + to + "'"); + if (options.inherit) toParams = inheritParams($stateParams, toParams || {}, $state.$current, toState); + if (!toState.params.$$validates(toParams)) return TransitionFailed; + + toParams = toState.params.$$values(toParams); + to = toState; + + var toPath = to.path; + + // Starting from the root of the path, keep all levels that haven't changed + var keep = 0, state = toPath[keep], locals = root.locals, toLocals = []; + + if (!options.reload) { + while (state && state === fromPath[keep] && state.ownParams.$$equals(toParams, fromParams)) { + locals = toLocals[keep] = state.locals; + keep++; + state = toPath[keep]; + } + } + + // If we're going to the same state and all locals are kept, we've got nothing to do. + // But clear 'transition', as we still want to cancel any other pending transitions. + // TODO: We may not want to bump 'transition' if we're called from a location change + // that we've initiated ourselves, because we might accidentally abort a legitimate + // transition initiated from code? + if (shouldTriggerReload(to, from, locals, options)) { + if (to.self.reloadOnSearch !== false) $urlRouter.update(); + $state.transition = null; + return $q.when($state.current); + } + + // Filter parameters before we pass them to event handlers etc. + toParams = filterByKeys(to.params.$$keys(), toParams || {}); + + // Broadcast start event and cancel the transition if requested + if (options.notify) { + /** + * @ngdoc event + * @name ui.router.state.$state#$stateChangeStart + * @eventOf ui.router.state.$state + * @eventType broadcast on root scope + * @description + * Fired when the state transition **begins**. You can use `event.preventDefault()` + * to prevent the transition from happening and then the transition promise will be + * rejected with a `'transition prevented'` value. + * + * @param {Object} event Event object. + * @param {State} toState The state being transitioned to. + * @param {Object} toParams The params supplied to the `toState`. + * @param {State} fromState The current state, pre-transition. + * @param {Object} fromParams The params supplied to the `fromState`. + * + * @example + * + *
    +         * $rootScope.$on('$stateChangeStart',
    +         * function(event, toState, toParams, fromState, fromParams){
    +         *     event.preventDefault();
    +         *     // transitionTo() promise will be rejected with
    +         *     // a 'transition prevented' error
    +         * })
    +         * 
    + */ + if ($rootScope.$broadcast('$stateChangeStart', to.self, toParams, from.self, fromParams).defaultPrevented) { + $urlRouter.update(); + return TransitionPrevented; + } + } + + // Resolve locals for the remaining states, but don't update any global state just + // yet -- if anything fails to resolve the current state needs to remain untouched. + // We also set up an inheritance chain for the locals here. This allows the view directive + // to quickly look up the correct definition for each view in the current state. Even + // though we create the locals object itself outside resolveState(), it is initially + // empty and gets filled asynchronously. We need to keep track of the promise for the + // (fully resolved) current locals, and pass this down the chain. + var resolved = $q.when(locals); + + for (var l = keep; l < toPath.length; l++, state = toPath[l]) { + locals = toLocals[l] = inherit(locals); + resolved = resolveState(state, toParams, state === to, resolved, locals, options); + } + + // Once everything is resolved, we are ready to perform the actual transition + // and return a promise for the new state. We also keep track of what the + // current promise is, so that we can detect overlapping transitions and + // keep only the outcome of the last transition. + var transition = $state.transition = resolved.then(function () { + var l, entering, exiting; + + if ($state.transition !== transition) return TransitionSuperseded; + + // Exit 'from' states not kept + for (l = fromPath.length - 1; l >= keep; l--) { + exiting = fromPath[l]; + if (exiting.self.onExit) { + $injector.invoke(exiting.self.onExit, exiting.self, exiting.locals.globals); + } + exiting.locals = null; + } + + // Enter 'to' states not kept + for (l = keep; l < toPath.length; l++) { + entering = toPath[l]; + entering.locals = toLocals[l]; + if (entering.self.onEnter) { + $injector.invoke(entering.self.onEnter, entering.self, entering.locals.globals); + } + } + + // Run it again, to catch any transitions in callbacks + if ($state.transition !== transition) return TransitionSuperseded; + + // Update globals in $state + $state.$current = to; + $state.current = to.self; + $state.params = toParams; + copy($state.params, $stateParams); + $state.transition = null; + + if (options.location && to.navigable) { + $urlRouter.push(to.navigable.url, to.navigable.locals.globals.$stateParams, { + $$avoidResync: true, replace: options.location === 'replace' + }); + } + + if (options.notify) { + /** + * @ngdoc event + * @name ui.router.state.$state#$stateChangeSuccess + * @eventOf ui.router.state.$state + * @eventType broadcast on root scope + * @description + * Fired once the state transition is **complete**. + * + * @param {Object} event Event object. + * @param {State} toState The state being transitioned to. + * @param {Object} toParams The params supplied to the `toState`. + * @param {State} fromState The current state, pre-transition. + * @param {Object} fromParams The params supplied to the `fromState`. + */ + $rootScope.$broadcast('$stateChangeSuccess', to.self, toParams, from.self, fromParams); + } + $urlRouter.update(true); + + return $state.current; + }, function (error) { + if ($state.transition !== transition) return TransitionSuperseded; + + $state.transition = null; + /** + * @ngdoc event + * @name ui.router.state.$state#$stateChangeError + * @eventOf ui.router.state.$state + * @eventType broadcast on root scope + * @description + * Fired when an **error occurs** during transition. It's important to note that if you + * have any errors in your resolve functions (javascript errors, non-existent services, etc) + * they will not throw traditionally. You must listen for this $stateChangeError event to + * catch **ALL** errors. + * + * @param {Object} event Event object. + * @param {State} toState The state being transitioned to. + * @param {Object} toParams The params supplied to the `toState`. + * @param {State} fromState The current state, pre-transition. + * @param {Object} fromParams The params supplied to the `fromState`. + * @param {Error} error The resolve error object. + */ + evt = $rootScope.$broadcast('$stateChangeError', to.self, toParams, from.self, fromParams, error); + + if (!evt.defaultPrevented) { + $urlRouter.update(); + } + + return $q.reject(error); + }); + + return transition; + }; + + /** + * @ngdoc function + * @name ui.router.state.$state#is + * @methodOf ui.router.state.$state + * + * @description + * Similar to {@link ui.router.state.$state#methods_includes $state.includes}, + * but only checks for the full state name. If params is supplied then it will be + * tested for strict equality against the current active params object, so all params + * must match with none missing and no extras. + * + * @example + *
    +     * $state.$current.name = 'contacts.details.item';
    +     *
    +     * // absolute name
    +     * $state.is('contact.details.item'); // returns true
    +     * $state.is(contactDetailItemStateObject); // returns true
    +     *
    +     * // relative name (. and ^), typically from a template
    +     * // E.g. from the 'contacts.details' template
    +     * 
    Item
    + *
    + * + * @param {string|object} stateOrName The state name (absolute or relative) or state object you'd like to check. + * @param {object=} params A param object, e.g. `{sectionId: section.id}`, that you'd like + * to test against the current active state. + * @param {object=} options An options object. The options are: + * + * - **`relative`** - {string|object} - If `stateOrName` is a relative state name and `options.relative` is set, .is will + * test relative to `options.relative` state (or name). + * + * @returns {boolean} Returns true if it is the state. + */ + $state.is = function is(stateOrName, params, options) { + options = extend({ relative: $state.$current }, options || {}); + var state = findState(stateOrName, options.relative); + + if (!isDefined(state)) { return undefined; } + if ($state.$current !== state) { return false; } + return params ? equalForKeys(state.params.$$values(params), $stateParams) : true; + }; + + /** + * @ngdoc function + * @name ui.router.state.$state#includes + * @methodOf ui.router.state.$state + * + * @description + * A method to determine if the current active state is equal to or is the child of the + * state stateName. If any params are passed then they will be tested for a match as well. + * Not all the parameters need to be passed, just the ones you'd like to test for equality. + * + * @example + * Partial and relative names + *
    +     * $state.$current.name = 'contacts.details.item';
    +     *
    +     * // Using partial names
    +     * $state.includes("contacts"); // returns true
    +     * $state.includes("contacts.details"); // returns true
    +     * $state.includes("contacts.details.item"); // returns true
    +     * $state.includes("contacts.list"); // returns false
    +     * $state.includes("about"); // returns false
    +     *
    +     * // Using relative names (. and ^), typically from a template
    +     * // E.g. from the 'contacts.details' template
    +     * 
    Item
    + *
    + * + * Basic globbing patterns + *
    +     * $state.$current.name = 'contacts.details.item.url';
    +     *
    +     * $state.includes("*.details.*.*"); // returns true
    +     * $state.includes("*.details.**"); // returns true
    +     * $state.includes("**.item.**"); // returns true
    +     * $state.includes("*.details.item.url"); // returns true
    +     * $state.includes("*.details.*.url"); // returns true
    +     * $state.includes("*.details.*"); // returns false
    +     * $state.includes("item.**"); // returns false
    +     * 
    + * + * @param {string} stateOrName A partial name, relative name, or glob pattern + * to be searched for within the current state name. + * @param {object=} params A param object, e.g. `{sectionId: section.id}`, + * that you'd like to test against the current active state. + * @param {object=} options An options object. The options are: + * + * - **`relative`** - {string|object=} - If `stateOrName` is a relative state reference and `options.relative` is set, + * .includes will test relative to `options.relative` state (or name). + * + * @returns {boolean} Returns true if it does include the state + */ + $state.includes = function includes(stateOrName, params, options) { + options = extend({ relative: $state.$current }, options || {}); + if (isString(stateOrName) && isGlob(stateOrName)) { + if (!doesStateMatchGlob(stateOrName)) { + return false; + } + stateOrName = $state.$current.name; + } + + var state = findState(stateOrName, options.relative); + if (!isDefined(state)) { return undefined; } + if (!isDefined($state.$current.includes[state.name])) { return false; } + return params ? equalForKeys(state.params.$$values(params), $stateParams, objectKeys(params)) : true; + }; + + + /** + * @ngdoc function + * @name ui.router.state.$state#href + * @methodOf ui.router.state.$state + * + * @description + * A url generation method that returns the compiled url for the given state populated with the given params. + * + * @example + *
    +     * expect($state.href("about.person", { person: "bob" })).toEqual("/about/bob");
    +     * 
    + * + * @param {string|object} stateOrName The state name or state object you'd like to generate a url from. + * @param {object=} params An object of parameter values to fill the state's required parameters. + * @param {object=} options Options object. The options are: + * + * - **`lossy`** - {boolean=true} - If true, and if there is no url associated with the state provided in the + * first parameter, then the constructed href url will be built from the first navigable ancestor (aka + * ancestor with a valid url). + * - **`inherit`** - {boolean=true}, If `true` will inherit url parameters from current url. + * - **`relative`** - {object=$state.$current}, When transitioning with relative path (e.g '^'), + * defines which state to be relative from. + * - **`absolute`** - {boolean=false}, If true will generate an absolute url, e.g. "http://www.example.com/fullurl". + * + * @returns {string} compiled state url + */ + $state.href = function href(stateOrName, params, options) { + options = extend({ + lossy: true, + inherit: true, + absolute: false, + relative: $state.$current + }, options || {}); + + var state = findState(stateOrName, options.relative); + + if (!isDefined(state)) return null; + if (options.inherit) params = inheritParams($stateParams, params || {}, $state.$current, state); + + var nav = (state && options.lossy) ? state.navigable : state; + + if (!nav || nav.url === undefined || nav.url === null) { + return null; + } + return $urlRouter.href(nav.url, filterByKeys(state.params.$$keys(), params || {}), { + absolute: options.absolute + }); + }; + + /** + * @ngdoc function + * @name ui.router.state.$state#get + * @methodOf ui.router.state.$state + * + * @description + * Returns the state configuration object for any specific state or all states. + * + * @param {string|object=} stateOrName (absolute or relative) If provided, will only get the config for + * the requested state. If not provided, returns an array of ALL state configs. + * @param {string|object=} context When stateOrName is a relative state reference, the state will be retrieved relative to context. + * @returns {Object|Array} State configuration object or array of all objects. + */ + $state.get = function (stateOrName, context) { + if (arguments.length === 0) return map(objectKeys(states), function(name) { return states[name].self; }); + var state = findState(stateOrName, context || $state.$current); + return (state && state.self) ? state.self : null; + }; + + function resolveState(state, params, paramsAreFiltered, inherited, dst, options) { + // Make a restricted $stateParams with only the parameters that apply to this state if + // necessary. In addition to being available to the controller and onEnter/onExit callbacks, + // we also need $stateParams to be available for any $injector calls we make during the + // dependency resolution process. + var $stateParams = (paramsAreFiltered) ? params : filterByKeys(state.params.$$keys(), params); + var locals = { $stateParams: $stateParams }; + + // Resolve 'global' dependencies for the state, i.e. those not specific to a view. + // We're also including $stateParams in this; that way the parameters are restricted + // to the set that should be visible to the state, and are independent of when we update + // the global $state and $stateParams values. + dst.resolve = $resolve.resolve(state.resolve, locals, dst.resolve, state); + var promises = [dst.resolve.then(function (globals) { + dst.globals = globals; + })]; + if (inherited) promises.push(inherited); + + // Resolve template and dependencies for all views. + forEach(state.views, function (view, name) { + var injectables = (view.resolve && view.resolve !== state.resolve ? view.resolve : {}); + injectables.$template = [ function () { + return $view.load(name, { view: view, locals: locals, params: $stateParams, notify: options.notify }) || ''; + }]; + + promises.push($resolve.resolve(injectables, locals, dst.resolve, state).then(function (result) { + // References to the controller (only instantiated at link time) + if (isFunction(view.controllerProvider) || isArray(view.controllerProvider)) { + var injectLocals = angular.extend({}, injectables, locals); + result.$$controller = $injector.invoke(view.controllerProvider, null, injectLocals); + } else { + result.$$controller = view.controller; + } + // Provide access to the state itself for internal use + result.$$state = state; + result.$$controllerAs = view.controllerAs; + dst[name] = result; + })); + }); + + // Wait for all the promises and then return the activation object + return $q.all(promises).then(function (values) { + return dst; + }); + } + + return $state; + } + + function shouldTriggerReload(to, from, locals, options) { + if (to === from && ((locals === from.locals && !options.reload) || (to.self.reloadOnSearch === false))) { + return true; + } + } +} + +angular.module('ui.router.state') + .value('$stateParams', {}) + .provider('$state', $StateProvider); + + +$ViewProvider.$inject = []; +function $ViewProvider() { + + this.$get = $get; + /** + * @ngdoc object + * @name ui.router.state.$view + * + * @requires ui.router.util.$templateFactory + * @requires $rootScope + * + * @description + * + */ + $get.$inject = ['$rootScope', '$templateFactory']; + function $get( $rootScope, $templateFactory) { + return { + // $view.load('full.viewName', { template: ..., controller: ..., resolve: ..., async: false, params: ... }) + /** + * @ngdoc function + * @name ui.router.state.$view#load + * @methodOf ui.router.state.$view + * + * @description + * + * @param {string} name name + * @param {object} options option object. + */ + load: function load(name, options) { + var result, defaults = { + template: null, controller: null, view: null, locals: null, notify: true, async: true, params: {} + }; + options = extend(defaults, options); + + if (options.view) { + result = $templateFactory.fromConfig(options.view, options.params, options.locals); + } + if (result && options.notify) { + /** + * @ngdoc event + * @name ui.router.state.$state#$viewContentLoading + * @eventOf ui.router.state.$view + * @eventType broadcast on root scope + * @description + * + * Fired once the view **begins loading**, *before* the DOM is rendered. + * + * @param {Object} event Event object. + * @param {Object} viewConfig The view config properties (template, controller, etc). + * + * @example + * + *
    +         * $scope.$on('$viewContentLoading',
    +         * function(event, viewConfig){
    +         *     // Access to all the view config properties.
    +         *     // and one special property 'targetView'
    +         *     // viewConfig.targetView
    +         * });
    +         * 
    + */ + $rootScope.$broadcast('$viewContentLoading', options); + } + return result; + } + }; + } +} + +angular.module('ui.router.state').provider('$view', $ViewProvider); + +/** + * @ngdoc object + * @name ui.router.state.$uiViewScrollProvider + * + * @description + * Provider that returns the {@link ui.router.state.$uiViewScroll} service function. + */ +function $ViewScrollProvider() { + + var useAnchorScroll = false; + + /** + * @ngdoc function + * @name ui.router.state.$uiViewScrollProvider#useAnchorScroll + * @methodOf ui.router.state.$uiViewScrollProvider + * + * @description + * Reverts back to using the core [`$anchorScroll`](http://docs.angularjs.org/api/ng.$anchorScroll) service for + * scrolling based on the url anchor. + */ + this.useAnchorScroll = function () { + useAnchorScroll = true; + }; + + /** + * @ngdoc object + * @name ui.router.state.$uiViewScroll + * + * @requires $anchorScroll + * @requires $timeout + * + * @description + * When called with a jqLite element, it scrolls the element into view (after a + * `$timeout` so the DOM has time to refresh). + * + * If you prefer to rely on `$anchorScroll` to scroll the view to the anchor, + * this can be enabled by calling {@link ui.router.state.$uiViewScrollProvider#methods_useAnchorScroll `$uiViewScrollProvider.useAnchorScroll()`}. + */ + this.$get = ['$anchorScroll', '$timeout', function ($anchorScroll, $timeout) { + if (useAnchorScroll) { + return $anchorScroll; + } + + return function ($element) { + $timeout(function () { + $element[0].scrollIntoView(); + }, 0, false); + }; + }]; +} + +angular.module('ui.router.state').provider('$uiViewScroll', $ViewScrollProvider); + +/** + * @ngdoc directive + * @name ui.router.state.directive:ui-view + * + * @requires ui.router.state.$state + * @requires $compile + * @requires $controller + * @requires $injector + * @requires ui.router.state.$uiViewScroll + * @requires $document + * + * @restrict ECA + * + * @description + * The ui-view directive tells $state where to place your templates. + * + * @param {string=} name A view name. The name should be unique amongst the other views in the + * same state. You can have views of the same name that live in different states. + * + * @param {string=} autoscroll It allows you to set the scroll behavior of the browser window + * when a view is populated. By default, $anchorScroll is overridden by ui-router's custom scroll + * service, {@link ui.router.state.$uiViewScroll}. This custom service let's you + * scroll ui-view elements into view when they are populated during a state activation. + * + * *Note: To revert back to old [`$anchorScroll`](http://docs.angularjs.org/api/ng.$anchorScroll) + * functionality, call `$uiViewScrollProvider.useAnchorScroll()`.* + * + * @param {string=} onload Expression to evaluate whenever the view updates. + * + * @example + * A view can be unnamed or named. + *
    + * 
    + * 
    + * + * + *
    + *
    + * + * You can only have one unnamed view within any template (or root html). If you are only using a + * single view and it is unnamed then you can populate it like so: + *
    + * 
    + * $stateProvider.state("home", { + * template: "

    HELLO!

    " + * }) + *
    + * + * The above is a convenient shortcut equivalent to specifying your view explicitly with the {@link ui.router.state.$stateProvider#views `views`} + * config property, by name, in this case an empty name: + *
    + * $stateProvider.state("home", {
    + *   views: {
    + *     "": {
    + *       template: "

    HELLO!

    " + * } + * } + * }) + *
    + * + * But typically you'll only use the views property if you name your view or have more than one view + * in the same template. There's not really a compelling reason to name a view if its the only one, + * but you could if you wanted, like so: + *
    + * 
    + *
    + *
    + * $stateProvider.state("home", {
    + *   views: {
    + *     "main": {
    + *       template: "

    HELLO!

    " + * } + * } + * }) + *
    + * + * Really though, you'll use views to set up multiple views: + *
    + * 
    + *
    + *
    + *
    + * + *
    + * $stateProvider.state("home", {
    + *   views: {
    + *     "": {
    + *       template: "

    HELLO!

    " + * }, + * "chart": { + * template: "" + * }, + * "data": { + * template: "" + * } + * } + * }) + *
    + * + * Examples for `autoscroll`: + * + *
    + * 
    + * 
    + *
    + * 
    + * 
    + * 
    + * 
    + * 
    + */ +$ViewDirective.$inject = ['$state', '$injector', '$uiViewScroll', '$interpolate']; +function $ViewDirective( $state, $injector, $uiViewScroll, $interpolate) { + + function getService() { + return ($injector.has) ? function(service) { + return $injector.has(service) ? $injector.get(service) : null; + } : function(service) { + try { + return $injector.get(service); + } catch (e) { + return null; + } + }; + } + + var service = getService(), + $animator = service('$animator'), + $animate = service('$animate'); + + // Returns a set of DOM manipulation functions based on which Angular version + // it should use + function getRenderer(attrs, scope) { + var statics = function() { + return { + enter: function (element, target, cb) { target.after(element); cb(); }, + leave: function (element, cb) { element.remove(); cb(); } + }; + }; + + if ($animate) { + return { + enter: function(element, target, cb) { + var promise = $animate.enter(element, null, target, cb); + if (promise && promise.then) promise.then(cb); + }, + leave: function(element, cb) { + var promise = $animate.leave(element, cb); + if (promise && promise.then) promise.then(cb); + } + }; + } + + if ($animator) { + var animate = $animator && $animator(scope, attrs); + + return { + enter: function(element, target, cb) {animate.enter(element, null, target); cb(); }, + leave: function(element, cb) { animate.leave(element); cb(); } + }; + } + + return statics(); + } + + var directive = { + restrict: 'ECA', + terminal: true, + priority: 400, + transclude: 'element', + compile: function (tElement, tAttrs, $transclude) { + return function (scope, $element, attrs) { + var previousEl, currentEl, currentScope, latestLocals, + onloadExp = attrs.onload || '', + autoScrollExp = attrs.autoscroll, + renderer = getRenderer(attrs, scope); + + scope.$on('$stateChangeSuccess', function() { + updateView(false); + }); + scope.$on('$viewContentLoading', function() { + updateView(false); + }); + + updateView(true); + + function cleanupLastView() { + if (previousEl) { + previousEl.remove(); + previousEl = null; + } + + if (currentScope) { + currentScope.$destroy(); + currentScope = null; + } + + if (currentEl) { + renderer.leave(currentEl, function() { + previousEl = null; + }); + + previousEl = currentEl; + currentEl = null; + } + } + + function updateView(firstTime) { + var newScope, + name = getUiViewName(scope, attrs, $element, $interpolate), + previousLocals = name && $state.$current && $state.$current.locals[name]; + + if (!firstTime && previousLocals === latestLocals) return; // nothing to do + newScope = scope.$new(); + latestLocals = $state.$current.locals[name]; + + var clone = $transclude(newScope, function(clone) { + renderer.enter(clone, $element, function onUiViewEnter() { + if(currentScope) { + currentScope.$emit('$viewContentAnimationEnded'); + } + + if (angular.isDefined(autoScrollExp) && !autoScrollExp || scope.$eval(autoScrollExp)) { + $uiViewScroll(clone); + } + }); + cleanupLastView(); + }); + + currentEl = clone; + currentScope = newScope; + /** + * @ngdoc event + * @name ui.router.state.directive:ui-view#$viewContentLoaded + * @eventOf ui.router.state.directive:ui-view + * @eventType emits on ui-view directive scope + * @description * + * Fired once the view is **loaded**, *after* the DOM is rendered. + * + * @param {Object} event Event object. + */ + currentScope.$emit('$viewContentLoaded'); + currentScope.$eval(onloadExp); + } + }; + } + }; + + return directive; +} + +$ViewDirectiveFill.$inject = ['$compile', '$controller', '$state', '$interpolate']; +function $ViewDirectiveFill ( $compile, $controller, $state, $interpolate) { + return { + restrict: 'ECA', + priority: -400, + compile: function (tElement) { + var initial = tElement.html(); + return function (scope, $element, attrs) { + var current = $state.$current, + name = getUiViewName(scope, attrs, $element, $interpolate), + locals = current && current.locals[name]; + + if (! locals) { + return; + } + + $element.data('$uiView', { name: name, state: locals.$$state }); + $element.html(locals.$template ? locals.$template : initial); + + var link = $compile($element.contents()); + + if (locals.$$controller) { + locals.$scope = scope; + var controller = $controller(locals.$$controller, locals); + if (locals.$$controllerAs) { + scope[locals.$$controllerAs] = controller; + } + $element.data('$ngControllerController', controller); + $element.children().data('$ngControllerController', controller); + } + + link(scope); + }; + } + }; +} + +/** + * Shared ui-view code for both directives: + * Given scope, element, and its attributes, return the view's name + */ +function getUiViewName(scope, attrs, element, $interpolate) { + var name = $interpolate(attrs.uiView || attrs.name || '')(scope); + var inherited = element.inheritedData('$uiView'); + return name.indexOf('@') >= 0 ? name : (name + '@' + (inherited ? inherited.state.name : '')); +} + +angular.module('ui.router.state').directive('uiView', $ViewDirective); +angular.module('ui.router.state').directive('uiView', $ViewDirectiveFill); + +function parseStateRef(ref, current) { + var preparsed = ref.match(/^\s*({[^}]*})\s*$/), parsed; + if (preparsed) ref = current + '(' + preparsed[1] + ')'; + parsed = ref.replace(/\n/g, " ").match(/^([^(]+?)\s*(\((.*)\))?$/); + if (!parsed || parsed.length !== 4) throw new Error("Invalid state ref '" + ref + "'"); + return { state: parsed[1], paramExpr: parsed[3] || null }; +} + +function stateContext(el) { + var stateData = el.parent().inheritedData('$uiView'); + + if (stateData && stateData.state && stateData.state.name) { + return stateData.state; + } +} + +/** + * @ngdoc directive + * @name ui.router.state.directive:ui-sref + * + * @requires ui.router.state.$state + * @requires $timeout + * + * @restrict A + * + * @description + * A directive that binds a link (`` tag) to a state. If the state has an associated + * URL, the directive will automatically generate & update the `href` attribute via + * the {@link ui.router.state.$state#methods_href $state.href()} method. Clicking + * the link will trigger a state transition with optional parameters. + * + * Also middle-clicking, right-clicking, and ctrl-clicking on the link will be + * handled natively by the browser. + * + * You can also use relative state paths within ui-sref, just like the relative + * paths passed to `$state.go()`. You just need to be aware that the path is relative + * to the state that the link lives in, in other words the state that loaded the + * template containing the link. + * + * You can specify options to pass to {@link ui.router.state.$state#go $state.go()} + * using the `ui-sref-opts` attribute. Options are restricted to `location`, `inherit`, + * and `reload`. + * + * @example + * Here's an example of how you'd use ui-sref and how it would compile. If you have the + * following template: + *
    + * Home | About | Next page
    + * 
    + * 
    + * 
    + * + * Then the compiled html would be (assuming Html5Mode is off and current state is contacts): + *
    + * Home | About | Next page
    + * 
    + * 
      + *
    • + * Joe + *
    • + *
    • + * Alice + *
    • + *
    • + * Bob + *
    • + *
    + * + * Home + *
    + * + * @param {string} ui-sref 'stateName' can be any valid absolute or relative state + * @param {Object} ui-sref-opts options to pass to {@link ui.router.state.$state#go $state.go()} + */ +$StateRefDirective.$inject = ['$state', '$timeout']; +function $StateRefDirective($state, $timeout) { + var allowedOptions = ['location', 'inherit', 'reload']; + + return { + restrict: 'A', + require: ['?^uiSrefActive', '?^uiSrefActiveEq'], + link: function(scope, element, attrs, uiSrefActive) { + var ref = parseStateRef(attrs.uiSref, $state.current.name); + var params = null, url = null, base = stateContext(element) || $state.$current; + var newHref = null, isAnchor = element.prop("tagName") === "A"; + var isForm = element[0].nodeName === "FORM"; + var attr = isForm ? "action" : "href", nav = true; + + var options = { relative: base, inherit: true }; + var optionsOverride = scope.$eval(attrs.uiSrefOpts) || {}; + + angular.forEach(allowedOptions, function(option) { + if (option in optionsOverride) { + options[option] = optionsOverride[option]; + } + }); + + var update = function(newVal) { + if (newVal) params = angular.copy(newVal); + if (!nav) return; + + newHref = $state.href(ref.state, params, options); + + var activeDirective = uiSrefActive[1] || uiSrefActive[0]; + if (activeDirective) { + activeDirective.$$setStateInfo(ref.state, params); + } + if (newHref === null) { + nav = false; + return false; + } + attrs.$set(attr, newHref); + }; + + if (ref.paramExpr) { + scope.$watch(ref.paramExpr, function(newVal, oldVal) { + if (newVal !== params) update(newVal); + }, true); + params = angular.copy(scope.$eval(ref.paramExpr)); + } + update(); + + if (isForm) return; + + element.bind("click", function(e) { + var button = e.which || e.button; + if ( !(button > 1 || e.ctrlKey || e.metaKey || e.shiftKey || element.attr('target')) ) { + // HACK: This is to allow ng-clicks to be processed before the transition is initiated: + var transition = $timeout(function() { + $state.go(ref.state, params, options); + }); + e.preventDefault(); + + // if the state has no URL, ignore one preventDefault from the directive. + var ignorePreventDefaultCount = isAnchor && !newHref ? 1: 0; + e.preventDefault = function() { + if (ignorePreventDefaultCount-- <= 0) + $timeout.cancel(transition); + }; + } + }); + } + }; +} + +/** + * @ngdoc directive + * @name ui.router.state.directive:ui-sref-active + * + * @requires ui.router.state.$state + * @requires ui.router.state.$stateParams + * @requires $interpolate + * + * @restrict A + * + * @description + * A directive working alongside ui-sref to add classes to an element when the + * related ui-sref directive's state is active, and removing them when it is inactive. + * The primary use-case is to simplify the special appearance of navigation menus + * relying on `ui-sref`, by having the "active" state's menu button appear different, + * distinguishing it from the inactive menu items. + * + * ui-sref-active can live on the same element as ui-sref or on a parent element. The first + * ui-sref-active found at the same level or above the ui-sref will be used. + * + * Will activate when the ui-sref's target state or any child state is active. If you + * need to activate only when the ui-sref target state is active and *not* any of + * it's children, then you will use + * {@link ui.router.state.directive:ui-sref-active-eq ui-sref-active-eq} + * + * @example + * Given the following template: + *
    + * 
    + * 
    + * + * + * When the app state is "app.user" (or any children states), and contains the state parameter "user" with value "bilbobaggins", + * the resulting HTML will appear as (note the 'active' class): + *
    + * 
    + * 
    + * + * The class name is interpolated **once** during the directives link time (any further changes to the + * interpolated value are ignored). + * + * Multiple classes may be specified in a space-separated format: + *
    + * 
      + *
    • + * link + *
    • + *
    + *
    + */ + +/** + * @ngdoc directive + * @name ui.router.state.directive:ui-sref-active-eq + * + * @requires ui.router.state.$state + * @requires ui.router.state.$stateParams + * @requires $interpolate + * + * @restrict A + * + * @description + * The same as {@link ui.router.state.directive:ui-sref-active ui-sref-active} but will only activate + * when the exact target state used in the `ui-sref` is active; no child states. + * + */ +$StateRefActiveDirective.$inject = ['$state', '$stateParams', '$interpolate']; +function $StateRefActiveDirective($state, $stateParams, $interpolate) { + return { + restrict: "A", + controller: ['$scope', '$element', '$attrs', function ($scope, $element, $attrs) { + var state, params, activeClass; + + // There probably isn't much point in $observing this + // uiSrefActive and uiSrefActiveEq share the same directive object with some + // slight difference in logic routing + activeClass = $interpolate($attrs.uiSrefActiveEq || $attrs.uiSrefActive || '', false)($scope); + + // Allow uiSref to communicate with uiSrefActive[Equals] + this.$$setStateInfo = function (newState, newParams) { + state = $state.get(newState, stateContext($element)); + params = newParams; + update(); + }; + + $scope.$on('$stateChangeSuccess', update); + + // Update route state + function update() { + if (isMatch()) { + $element.addClass(activeClass); + } else { + $element.removeClass(activeClass); + } + } + + function isMatch() { + if (typeof $attrs.uiSrefActiveEq !== 'undefined') { + return state && $state.is(state.name, params); + } else { + return state && $state.includes(state.name, params); + } + } + }] + }; +} + +angular.module('ui.router.state') + .directive('uiSref', $StateRefDirective) + .directive('uiSrefActive', $StateRefActiveDirective) + .directive('uiSrefActiveEq', $StateRefActiveDirective); + +/** + * @ngdoc filter + * @name ui.router.state.filter:isState + * + * @requires ui.router.state.$state + * + * @description + * Translates to {@link ui.router.state.$state#methods_is $state.is("stateName")}. + */ +$IsStateFilter.$inject = ['$state']; +function $IsStateFilter($state) { + var isFilter = function (state) { + return $state.is(state); + }; + isFilter.$stateful = true; + return isFilter; +} + +/** + * @ngdoc filter + * @name ui.router.state.filter:includedByState + * + * @requires ui.router.state.$state + * + * @description + * Translates to {@link ui.router.state.$state#methods_includes $state.includes('fullOrPartialStateName')}. + */ +$IncludedByStateFilter.$inject = ['$state']; +function $IncludedByStateFilter($state) { + var includesFilter = function (state) { + return $state.includes(state); + }; + includesFilter.$stateful = true; + return includesFilter; +} + +angular.module('ui.router.state') + .filter('isState', $IsStateFilter) + .filter('includedByState', $IncludedByStateFilter); +})(window, window.angular); \ No newline at end of file diff --git a/www/lib/ionic/js/angular-ui/angular-ui-router.min.js b/www/lib/ionic/js/angular-ui/angular-ui-router.min.js new file mode 100644 index 0000000..be06fb5 --- /dev/null +++ b/www/lib/ionic/js/angular-ui/angular-ui-router.min.js @@ -0,0 +1,7 @@ +/** + * State-based routing for AngularJS + * @version v0.2.13 + * @link http://angular-ui.github.com/ + * @license MIT License, http://www.opensource.org/licenses/MIT + */ +"undefined"!=typeof module&&"undefined"!=typeof exports&&module.exports===exports&&(module.exports="ui.router"),function(a,b,c){"use strict";function d(a,b){return M(new(M(function(){},{prototype:a})),b)}function e(a){return L(arguments,function(b){b!==a&&L(b,function(b,c){a.hasOwnProperty(c)||(a[c]=b)})}),a}function f(a,b){var c=[];for(var d in a.path){if(a.path[d]!==b.path[d])break;c.push(a.path[d])}return c}function g(a){if(Object.keys)return Object.keys(a);var c=[];return b.forEach(a,function(a,b){c.push(b)}),c}function h(a,b){if(Array.prototype.indexOf)return a.indexOf(b,Number(arguments[2])||0);var c=a.length>>>0,d=Number(arguments[2])||0;for(d=0>d?Math.ceil(d):Math.floor(d),0>d&&(d+=c);c>d;d++)if(d in a&&a[d]===b)return d;return-1}function i(a,b,c,d){var e,i=f(c,d),j={},k=[];for(var l in i)if(i[l].params&&(e=g(i[l].params),e.length))for(var m in e)h(k,e[m])>=0||(k.push(e[m]),j[e[m]]=a[e[m]]);return M({},j,b)}function j(a,b,c){if(!c){c=[];for(var d in a)c.push(d)}for(var e=0;e "));if(s[c]=d,I(a))q.push(c,[function(){return b.get(a)}],j);else{var e=b.annotate(a);L(e,function(a){a!==c&&i.hasOwnProperty(a)&&n(i[a],a)}),q.push(c,a,e)}r.pop(),s[c]=f}}function o(a){return J(a)&&a.then&&a.$$promises}if(!J(i))throw new Error("'invocables' must be an object");var p=g(i||{}),q=[],r=[],s={};return L(i,n),i=r=s=null,function(d,f,g){function h(){--u||(v||e(t,f.$$values),r.$$values=t,r.$$promises=r.$$promises||!0,delete r.$$inheritedValues,n.resolve(t))}function i(a){r.$$failure=a,n.reject(a)}function j(c,e,f){function j(a){l.reject(a),i(a)}function k(){if(!G(r.$$failure))try{l.resolve(b.invoke(e,g,t)),l.promise.then(function(a){t[c]=a,h()},j)}catch(a){j(a)}}var l=a.defer(),m=0;L(f,function(a){s.hasOwnProperty(a)&&!d.hasOwnProperty(a)&&(m++,s[a].then(function(b){t[a]=b,--m||k()},j))}),m||k(),s[c]=l.promise}if(o(d)&&g===c&&(g=f,f=d,d=null),d){if(!J(d))throw new Error("'locals' must be an object")}else d=k;if(f){if(!o(f))throw new Error("'parent' must be a promise returned by $resolve.resolve()")}else f=m;var n=a.defer(),r=n.promise,s=r.$$promises={},t=M({},d),u=1+q.length/3,v=!1;if(G(f.$$failure))return i(f.$$failure),r;f.$$inheritedValues&&e(t,l(f.$$inheritedValues,p)),M(s,f.$$promises),f.$$values?(v=e(t,l(f.$$values,p)),r.$$inheritedValues=l(f.$$values,p),h()):(f.$$inheritedValues&&(r.$$inheritedValues=l(f.$$inheritedValues,p)),f.then(h,i));for(var w=0,x=q.length;x>w;w+=3)d.hasOwnProperty(q[w])?h():j(q[w],q[w+1],q[w+2]);return r}},this.resolve=function(a,b,c,d){return this.study(a)(b,c,d)}}function p(a,b,c){this.fromConfig=function(a,b,c){return G(a.template)?this.fromString(a.template,b):G(a.templateUrl)?this.fromUrl(a.templateUrl,b):G(a.templateProvider)?this.fromProvider(a.templateProvider,b,c):null},this.fromString=function(a,b){return H(a)?a(b):a},this.fromUrl=function(c,d){return H(c)&&(c=c(d)),null==c?null:a.get(c,{cache:b,headers:{Accept:"text/html"}}).then(function(a){return a.data})},this.fromProvider=function(a,b,d){return c.invoke(a,null,d||{params:b})}}function q(a,b,e){function f(b,c,d,e){if(q.push(b),o[b])return o[b];if(!/^\w+(-+\w+)*(?:\[\])?$/.test(b))throw new Error("Invalid parameter name '"+b+"' in pattern '"+a+"'");if(p[b])throw new Error("Duplicate parameter name '"+b+"' in pattern '"+a+"'");return p[b]=new O.Param(b,c,d,e),p[b]}function g(a,b,c){var d=["",""],e=a.replace(/[\\\[\]\^$*+?.()|{}]/g,"\\$&");if(!b)return e;switch(c){case!1:d=["(",")"];break;case!0:d=["?(",")?"];break;default:d=["("+c+"|",")?"]}return e+d[0]+b+d[1]}function h(c,e){var f,g,h,i,j;return f=c[2]||c[3],j=b.params[f],h=a.substring(m,c.index),g=e?c[4]:c[4]||("*"==c[1]?".*":null),i=O.type(g||"string")||d(O.type("string"),{pattern:new RegExp(g)}),{id:f,regexp:g,segment:h,type:i,cfg:j}}b=M({params:{}},J(b)?b:{});var i,j=/([:*])([\w\[\]]+)|\{([\w\[\]]+)(?:\:((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,k=/([:]?)([\w\[\]-]+)|\{([\w\[\]-]+)(?:\:((?:[^{}\\]+|\\.|\{(?:[^{}\\]+|\\.)*\})+))?\}/g,l="^",m=0,n=this.segments=[],o=e?e.params:{},p=this.params=e?e.params.$$new():new O.ParamSet,q=[];this.source=a;for(var r,s,t;(i=j.exec(a))&&(r=h(i,!1),!(r.segment.indexOf("?")>=0));)s=f(r.id,r.type,r.cfg,"path"),l+=g(r.segment,s.type.pattern.source,s.squash),n.push(r.segment),m=j.lastIndex;t=a.substring(m);var u=t.indexOf("?");if(u>=0){var v=this.sourceSearch=t.substring(u);if(t=t.substring(0,u),this.sourcePath=a.substring(0,m+u),v.length>0)for(m=0;i=k.exec(v);)r=h(i,!0),s=f(r.id,r.type,r.cfg,"search"),m=j.lastIndex}else this.sourcePath=a,this.sourceSearch="";l+=g(t)+(b.strict===!1?"/?":"")+"$",n.push(t),this.regexp=new RegExp(l,b.caseInsensitive?"i":c),this.prefix=n[0],this.$$paramNames=q}function r(a){M(this,a)}function s(){function a(a){return null!=a?a.toString().replace(/\//g,"%2F"):a}function e(a){return null!=a?a.toString().replace(/%2F/g,"/"):a}function f(a){return this.pattern.test(a)}function i(){return{strict:t,caseInsensitive:p}}function j(a){return H(a)||K(a)&&H(a[a.length-1])}function k(){for(;x.length;){var a=x.shift();if(a.pattern)throw new Error("You cannot override a type's .pattern at runtime.");b.extend(v[a.name],o.invoke(a.def))}}function l(a){M(this,a||{})}O=this;var o,p=!1,t=!0,u=!1,v={},w=!0,x=[],y={string:{encode:a,decode:e,is:f,pattern:/[^/]*/},"int":{encode:a,decode:function(a){return parseInt(a,10)},is:function(a){return G(a)&&this.decode(a.toString())===a},pattern:/\d+/},bool:{encode:function(a){return a?1:0},decode:function(a){return 0!==parseInt(a,10)},is:function(a){return a===!0||a===!1},pattern:/0|1/},date:{encode:function(a){return this.is(a)?[a.getFullYear(),("0"+(a.getMonth()+1)).slice(-2),("0"+a.getDate()).slice(-2)].join("-"):c},decode:function(a){if(this.is(a))return a;var b=this.capture.exec(a);return b?new Date(b[1],b[2]-1,b[3]):c},is:function(a){return a instanceof Date&&!isNaN(a.valueOf())},equals:function(a,b){return this.is(a)&&this.is(b)&&a.toISOString()===b.toISOString()},pattern:/[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,capture:/([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/},json:{encode:b.toJson,decode:b.fromJson,is:b.isObject,equals:b.equals,pattern:/[^/]*/},any:{encode:b.identity,decode:b.identity,is:b.identity,equals:b.equals,pattern:/.*/}};s.$$getDefaultValue=function(a){if(!j(a.value))return a.value;if(!o)throw new Error("Injectable functions cannot be called at configuration time");return o.invoke(a.value)},this.caseInsensitive=function(a){return G(a)&&(p=a),p},this.strictMode=function(a){return G(a)&&(t=a),t},this.defaultSquashPolicy=function(a){if(!G(a))return u;if(a!==!0&&a!==!1&&!I(a))throw new Error("Invalid squash policy: "+a+". Valid policies: false, true, arbitrary-string");return u=a,a},this.compile=function(a,b){return new q(a,M(i(),b))},this.isMatcher=function(a){if(!J(a))return!1;var b=!0;return L(q.prototype,function(c,d){H(c)&&(b=b&&G(a[d])&&H(a[d]))}),b},this.type=function(a,b,c){if(!G(b))return v[a];if(v.hasOwnProperty(a))throw new Error("A type named '"+a+"' has already been defined.");return v[a]=new r(M({name:a},b)),c&&(x.push({name:a,def:c}),w||k()),this},L(y,function(a,b){v[b]=new r(M({name:b},a))}),v=d(v,{}),this.$get=["$injector",function(a){return o=a,w=!1,k(),L(y,function(a,b){v[b]||(v[b]=new r(a))}),this}],this.Param=function(a,b,d,e){function f(a){var b=J(a)?g(a):[],c=-1===h(b,"value")&&-1===h(b,"type")&&-1===h(b,"squash")&&-1===h(b,"array");return c&&(a={value:a}),a.$$fn=j(a.value)?a.value:function(){return a.value},a}function i(b,c,d){if(b.type&&c)throw new Error("Param '"+a+"' has two type configurations.");return c?c:b.type?b.type instanceof r?b.type:new r(b.type):"config"===d?v.any:v.string}function k(){var b={array:"search"===e?"auto":!1},c=a.match(/\[\]$/)?{array:!0}:{};return M(b,c,d).array}function l(a,b){var c=a.squash;if(!b||c===!1)return!1;if(!G(c)||null==c)return u;if(c===!0||I(c))return c;throw new Error("Invalid squash policy: '"+c+"'. Valid policies: false, true, or arbitrary string")}function p(a,b,d,e){var f,g,i=[{from:"",to:d||b?c:""},{from:null,to:d||b?c:""}];return f=K(a.replace)?a.replace:[],I(e)&&f.push({from:e,to:c}),g=n(f,function(a){return a.from}),m(i,function(a){return-1===h(g,a.from)}).concat(f)}function q(){if(!o)throw new Error("Injectable functions cannot be called at configuration time");return o.invoke(d.$$fn)}function s(a){function b(a){return function(b){return b.from===a}}function c(a){var c=n(m(w.replace,b(a)),function(a){return a.to});return c.length?c[0]:a}return a=c(a),G(a)?w.type.decode(a):q()}function t(){return"{Param:"+a+" "+b+" squash: '"+z+"' optional: "+y+"}"}var w=this;d=f(d),b=i(d,b,e);var x=k();b=x?b.$asArray(x,"search"===e):b,"string"!==b.name||x||"path"!==e||d.value!==c||(d.value="");var y=d.value!==c,z=l(d,y),A=p(d,x,y,z);M(this,{id:a,type:b,location:e,array:x,squash:z,replace:A,isOptional:y,value:s,dynamic:c,config:d,toString:t})},l.prototype={$$new:function(){return d(this,M(new l,{$$parent:this}))},$$keys:function(){for(var a=[],b=[],c=this,d=g(l.prototype);c;)b.push(c),c=c.$$parent;return b.reverse(),L(b,function(b){L(g(b),function(b){-1===h(a,b)&&-1===h(d,b)&&a.push(b)})}),a},$$values:function(a){var b={},c=this;return L(c.$$keys(),function(d){b[d]=c[d].value(a&&a[d])}),b},$$equals:function(a,b){var c=!0,d=this;return L(d.$$keys(),function(e){var f=a&&a[e],g=b&&b[e];d[e].type.equals(f,g)||(c=!1)}),c},$$validates:function(a){var b,c,d,e=!0,f=this;return L(this.$$keys(),function(g){d=f[g],c=a[g],b=!c&&d.isOptional,e=e&&(b||!!d.type.is(c))}),e},$$parent:c},this.ParamSet=l}function t(a,d){function e(a){var b=/^\^((?:\\[^a-zA-Z0-9]|[^\\\[\]\^$*+?.()|{}]+)*)/.exec(a.source);return null!=b?b[1].replace(/\\(.)/g,"$1"):""}function f(a,b){return a.replace(/\$(\$|\d{1,2})/,function(a,c){return b["$"===c?0:Number(c)]})}function g(a,b,c){if(!c)return!1;var d=a.invoke(b,b,{$match:c});return G(d)?d:!0}function h(d,e,f,g){function h(a,b,c){return"/"===p?a:b?p.slice(0,-1)+a:c?p.slice(1)+a:a}function m(a){function b(a){var b=a(f,d);return b?(I(b)&&d.replace().url(b),!0):!1}if(!a||!a.defaultPrevented){var e=o&&d.url()===o;if(o=c,e)return!0;var g,h=j.length;for(g=0;h>g;g++)if(b(j[g]))return;k&&b(k)}}function n(){return i=i||e.$on("$locationChangeSuccess",m)}var o,p=g.baseHref(),q=d.url();return l||n(),{sync:function(){m()},listen:function(){return n()},update:function(a){return a?void(q=d.url()):void(d.url()!==q&&(d.url(q),d.replace()))},push:function(a,b,e){d.url(a.format(b||{})),o=e&&e.$$avoidResync?d.url():c,e&&e.replace&&d.replace()},href:function(c,e,f){if(!c.validates(e))return null;var g=a.html5Mode();b.isObject(g)&&(g=g.enabled);var i=c.format(e);if(f=f||{},g||null===i||(i="#"+a.hashPrefix()+i),i=h(i,g,f.absolute),!f.absolute||!i)return i;var j=!g&&i?"/":"",k=d.port();return k=80===k||443===k?"":":"+k,[d.protocol(),"://",d.host(),k,j,i].join("")}}}var i,j=[],k=null,l=!1;this.rule=function(a){if(!H(a))throw new Error("'rule' must be a function");return j.push(a),this},this.otherwise=function(a){if(I(a)){var b=a;a=function(){return b}}else if(!H(a))throw new Error("'rule' must be a function");return k=a,this},this.when=function(a,b){var c,h=I(b);if(I(a)&&(a=d.compile(a)),!h&&!H(b)&&!K(b))throw new Error("invalid 'handler' in when()");var i={matcher:function(a,b){return h&&(c=d.compile(b),b=["$match",function(a){return c.format(a)}]),M(function(c,d){return g(c,b,a.exec(d.path(),d.search()))},{prefix:I(a.prefix)?a.prefix:""})},regex:function(a,b){if(a.global||a.sticky)throw new Error("when() RegExp must not be global or sticky");return h&&(c=b,b=["$match",function(a){return f(c,a)}]),M(function(c,d){return g(c,b,a.exec(d.path()))},{prefix:e(a)})}},j={matcher:d.isMatcher(a),regex:a instanceof RegExp};for(var k in j)if(j[k])return this.rule(i[k](a,b));throw new Error("invalid 'what' in when()")},this.deferIntercept=function(a){a===c&&(a=!0),l=a},this.$get=h,h.$inject=["$location","$rootScope","$injector","$browser"]}function u(a,e){function f(a){return 0===a.indexOf(".")||0===a.indexOf("^")}function l(a,b){if(!a)return c;var d=I(a),e=d?a:a.name,g=f(e);if(g){if(!b)throw new Error("No reference point given for path '"+e+"'");b=l(b);for(var h=e.split("."),i=0,j=h.length,k=b;j>i;i++)if(""!==h[i]||0!==i){if("^"!==h[i])break;if(!k.parent)throw new Error("Path '"+e+"' not valid for state '"+b.name+"'");k=k.parent}else k=b;h=h.slice(i).join("."),e=k.name+(k.name&&h?".":"")+h}var m=y[e];return!m||!d&&(d||m!==a&&m.self!==a)?c:m}function m(a,b){z[a]||(z[a]=[]),z[a].push(b)}function o(a){for(var b=z[a]||[];b.length;)p(b.shift())}function p(b){b=d(b,{self:b,resolve:b.resolve||{},toString:function(){return this.name}});var c=b.name;if(!I(c)||c.indexOf("@")>=0)throw new Error("State must have a valid name");if(y.hasOwnProperty(c))throw new Error("State '"+c+"'' is already defined");var e=-1!==c.indexOf(".")?c.substring(0,c.lastIndexOf(".")):I(b.parent)?b.parent:J(b.parent)&&I(b.parent.name)?b.parent.name:"";if(e&&!y[e])return m(e,b.self);for(var f in B)H(B[f])&&(b[f]=B[f](b,B.$delegates[f]));return y[c]=b,!b[A]&&b.url&&a.when(b.url,["$match","$stateParams",function(a,c){x.$current.navigable==b&&j(a,c)||x.transitionTo(b,a,{inherit:!0,location:!1})}]),o(c),b}function q(a){return a.indexOf("*")>-1}function r(a){var b=a.split("."),c=x.$current.name.split(".");if("**"===b[0]&&(c=c.slice(h(c,b[1])),c.unshift("**")),"**"===b[b.length-1]&&(c.splice(h(c,b[b.length-2])+1,Number.MAX_VALUE),c.push("**")),b.length!=c.length)return!1;for(var d=0,e=b.length;e>d;d++)"*"===b[d]&&(c[d]="*");return c.join("")===b.join("")}function s(a,b){return I(a)&&!G(b)?B[a]:H(b)&&I(a)?(B[a]&&!B.$delegates[a]&&(B.$delegates[a]=B[a]),B[a]=b,this):this}function t(a,b){return J(a)?b=a:b.name=a,p(b),this}function u(a,e,f,h,m,o,p){function s(b,c,d,f){var g=a.$broadcast("$stateNotFound",b,c,d);if(g.defaultPrevented)return p.update(),B;if(!g.retry)return null;if(f.$retry)return p.update(),C;var h=x.transition=e.when(g.retry);return h.then(function(){return h!==x.transition?u:(b.options.$retry=!0,x.transitionTo(b.to,b.toParams,b.options))},function(){return B}),p.update(),h}function t(a,c,d,g,i,j){var l=d?c:k(a.params.$$keys(),c),n={$stateParams:l};i.resolve=m.resolve(a.resolve,n,i.resolve,a);var o=[i.resolve.then(function(a){i.globals=a})];return g&&o.push(g),L(a.views,function(c,d){var e=c.resolve&&c.resolve!==a.resolve?c.resolve:{};e.$template=[function(){return f.load(d,{view:c,locals:n,params:l,notify:j.notify})||""}],o.push(m.resolve(e,n,i.resolve,a).then(function(f){if(H(c.controllerProvider)||K(c.controllerProvider)){var g=b.extend({},e,n);f.$$controller=h.invoke(c.controllerProvider,null,g)}else f.$$controller=c.controller;f.$$state=a,f.$$controllerAs=c.controllerAs,i[d]=f}))}),e.all(o).then(function(){return i})}var u=e.reject(new Error("transition superseded")),z=e.reject(new Error("transition prevented")),B=e.reject(new Error("transition aborted")),C=e.reject(new Error("transition failed"));return w.locals={resolve:null,globals:{$stateParams:{}}},x={params:{},current:w.self,$current:w,transition:null},x.reload=function(){return x.transitionTo(x.current,o,{reload:!0,inherit:!1,notify:!0})},x.go=function(a,b,c){return x.transitionTo(a,b,M({inherit:!0,relative:x.$current},c))},x.transitionTo=function(b,c,f){c=c||{},f=M({location:!0,inherit:!1,relative:null,notify:!0,reload:!1,$retry:!1},f||{});var g,j=x.$current,m=x.params,n=j.path,q=l(b,f.relative);if(!G(q)){var r={to:b,toParams:c,options:f},y=s(r,j.self,m,f);if(y)return y;if(b=r.to,c=r.toParams,f=r.options,q=l(b,f.relative),!G(q)){if(!f.relative)throw new Error("No such state '"+b+"'");throw new Error("Could not resolve '"+b+"' from state '"+f.relative+"'")}}if(q[A])throw new Error("Cannot transition to abstract state '"+b+"'");if(f.inherit&&(c=i(o,c||{},x.$current,q)),!q.params.$$validates(c))return C;c=q.params.$$values(c),b=q;var B=b.path,D=0,E=B[D],F=w.locals,H=[];if(!f.reload)for(;E&&E===n[D]&&E.ownParams.$$equals(c,m);)F=H[D]=E.locals,D++,E=B[D];if(v(b,j,F,f))return b.self.reloadOnSearch!==!1&&p.update(),x.transition=null,e.when(x.current);if(c=k(b.params.$$keys(),c||{}),f.notify&&a.$broadcast("$stateChangeStart",b.self,c,j.self,m).defaultPrevented)return p.update(),z;for(var I=e.when(F),J=D;J=D;d--)g=n[d],g.self.onExit&&h.invoke(g.self.onExit,g.self,g.locals.globals),g.locals=null;for(d=D;d=0?e:e+"@"+(f?f.state.name:"")}function A(a,b){var c,d=a.match(/^\s*({[^}]*})\s*$/);if(d&&(a=b+"("+d[1]+")"),c=a.replace(/\n/g," ").match(/^([^(]+?)\s*(\((.*)\))?$/),!c||4!==c.length)throw new Error("Invalid state ref '"+a+"'");return{state:c[1],paramExpr:c[3]||null}}function B(a){var b=a.parent().inheritedData("$uiView");return b&&b.state&&b.state.name?b.state:void 0}function C(a,c){var d=["location","inherit","reload"];return{restrict:"A",require:["?^uiSrefActive","?^uiSrefActiveEq"],link:function(e,f,g,h){var i=A(g.uiSref,a.current.name),j=null,k=B(f)||a.$current,l=null,m="A"===f.prop("tagName"),n="FORM"===f[0].nodeName,o=n?"action":"href",p=!0,q={relative:k,inherit:!0},r=e.$eval(g.uiSrefOpts)||{};b.forEach(d,function(a){a in r&&(q[a]=r[a])});var s=function(c){if(c&&(j=b.copy(c)),p){l=a.href(i.state,j,q);var d=h[1]||h[0];return d&&d.$$setStateInfo(i.state,j),null===l?(p=!1,!1):void g.$set(o,l)}};i.paramExpr&&(e.$watch(i.paramExpr,function(a){a!==j&&s(a)},!0),j=b.copy(e.$eval(i.paramExpr))),s(),n||f.bind("click",function(b){var d=b.which||b.button;if(!(d>1||b.ctrlKey||b.metaKey||b.shiftKey||f.attr("target"))){var e=c(function(){a.go(i.state,j,q)});b.preventDefault();var g=m&&!l?1:0;b.preventDefault=function(){g--<=0&&c.cancel(e)}}})}}}function D(a,b,c){return{restrict:"A",controller:["$scope","$element","$attrs",function(b,d,e){function f(){g()?d.addClass(j):d.removeClass(j)}function g(){return"undefined"!=typeof e.uiSrefActiveEq?h&&a.is(h.name,i):h&&a.includes(h.name,i)}var h,i,j;j=c(e.uiSrefActiveEq||e.uiSrefActive||"",!1)(b),this.$$setStateInfo=function(b,c){h=a.get(b,B(d)),i=c,f()},b.$on("$stateChangeSuccess",f)}]}}function E(a){var b=function(b){return a.is(b)};return b.$stateful=!0,b}function F(a){var b=function(b){return a.includes(b)};return b.$stateful=!0,b}var G=b.isDefined,H=b.isFunction,I=b.isString,J=b.isObject,K=b.isArray,L=b.forEach,M=b.extend,N=b.copy;b.module("ui.router.util",["ng"]),b.module("ui.router.router",["ui.router.util"]),b.module("ui.router.state",["ui.router.router","ui.router.util"]),b.module("ui.router",["ui.router.state"]),b.module("ui.router.compat",["ui.router"]),o.$inject=["$q","$injector"],b.module("ui.router.util").service("$resolve",o),p.$inject=["$http","$templateCache","$injector"],b.module("ui.router.util").service("$templateFactory",p);var O;q.prototype.concat=function(a,b){var c={caseInsensitive:O.caseInsensitive(),strict:O.strictMode(),squash:O.defaultSquashPolicy()};return new q(this.sourcePath+a+this.sourceSearch,M(c,b),this)},q.prototype.toString=function(){return this.source},q.prototype.exec=function(a,b){function c(a){function b(a){return a.split("").reverse().join("")}function c(a){return a.replace(/\\-/,"-")}var d=b(a).split(/-(?!\\)/),e=n(d,b);return n(e,c).reverse()}var d=this.regexp.exec(a);if(!d)return null;b=b||{};var e,f,g,h=this.parameters(),i=h.length,j=this.segments.length-1,k={};if(j!==d.length-1)throw new Error("Unbalanced capture group in route '"+this.source+"'");for(e=0;j>e;e++){g=h[e];var l=this.params[g],m=d[e+1];for(f=0;fe;e++)g=h[e],k[g]=this.params[g].value(b[g]);return k},q.prototype.parameters=function(a){return G(a)?this.params[a]||null:this.$$paramNames},q.prototype.validates=function(a){return this.params.$$validates(a)},q.prototype.format=function(a){function b(a){return encodeURIComponent(a).replace(/-/g,function(a){return"%5C%"+a.charCodeAt(0).toString(16).toUpperCase()})}a=a||{};var c=this.segments,d=this.parameters(),e=this.params;if(!this.validates(a))return null;var f,g=!1,h=c.length-1,i=d.length,j=c[0];for(f=0;i>f;f++){var k=h>f,l=d[f],m=e[l],o=m.value(a[l]),p=m.isOptional&&m.type.equals(m.value(),o),q=p?m.squash:!1,r=m.type.encode(o);if(k){var s=c[f+1];if(q===!1)null!=r&&(j+=K(r)?n(r,b).join("-"):encodeURIComponent(r)),j+=s;else if(q===!0){var t=j.match(/\/$/)?/\/?(.*)/:/(.*)/;j+=s.match(t)[1]}else I(q)&&(j+=q+s)}else{if(null==r||p&&q!==!1)continue;K(r)||(r=[r]),r=n(r,encodeURIComponent).join("&"+l+"="),j+=(g?"&":"?")+(l+"="+r),g=!0}}return j},r.prototype.is=function(){return!0},r.prototype.encode=function(a){return a},r.prototype.decode=function(a){return a},r.prototype.equals=function(a,b){return a==b},r.prototype.$subPattern=function(){var a=this.pattern.toString();return a.substr(1,a.length-2)},r.prototype.pattern=/.*/,r.prototype.toString=function(){return"{Type:"+this.name+"}"},r.prototype.$asArray=function(a,b){function d(a,b){function d(a,b){return function(){return a[b].apply(a,arguments)}}function e(a){return K(a)?a:G(a)?[a]:[]}function f(a){switch(a.length){case 0:return c;case 1:return"auto"===b?a[0]:a;default:return a}}function g(a){return!a}function h(a,b){return function(c){c=e(c);var d=n(c,a);return b===!0?0===m(d,g).length:f(d)}}function i(a){return function(b,c){var d=e(b),f=e(c);if(d.length!==f.length)return!1;for(var g=0;g 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 []; + break; + + 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)); + break; + } + } + + 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]; + } else if (val === REMOVE_CLASS) { + prop = 'removeClass'; + allow = existing[klass]; + } + 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 angular.element) ? 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 `ngAnimteChildren` 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() { + this.animateChildren = false; + this.enterElement = false; + }); + +
    + */ +var $$AnimateChildrenDirective = ['$interpolate', function($interpolate) { + return { + link: function(scope, element, attrs) { + var val = attrs.ngAnimateChildren; + if (angular.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); + } + } + }; +}]; + +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 BASE_TEN = 10; + +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', 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 cancelLastRAFRequest; + 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) { // jshint ignore:line + // 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) { + value ? node.style.setProperty(prop, value) + : 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); + animationPaused + ? temporaryStyles.push(value) + : 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', 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 + ); + + var applyAnimationClasses = applyAnimationClassesFactory($$jqLite); + + 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', 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()); + }); + } + + runners.length ? $$AnimateRunner.all(runners, callback) : callback(); + + return function endFn(reject) { + forEach(runners, function(runner) { + reject ? runner.cancel() : 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', 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', 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 = {}; + + // 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 = Node.prototype.contains || function(arg) { + // jshint bitwise: false + return this === arg || !!(this.compareDocumentPosition(arg) & 16); + // jshint bitwise: true + }; + + 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; + } + + 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() { + $animate.off(event, container, callback); + }); + }, + + off: function(event, container, callback) { + var entries = callbackRegistry[event]; + if (!entries) return; + + callbackRegistry[event] = arguments.length === 1 + ? null + : filterFromRegistry(entries, container, callback); + + 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; + }); + } + }, + + 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); + var recordExists = disabledElementsLookup.get(node); + + if (argCount === 1) { + // (element) - Element getter + bool = !recordExists; + } 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; + + // 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 || $document[0].hidden || 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) { + 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); + + realRunner.done(function(status) { + close(!status); + var animationDetails = activeAnimationsLookup.get(node); + if (animationDetails && animationDetails.counter === counter) { + clearElementAnimationState(getDomNode(element)); + } + notifyProgress(runner, event, 'close', {}); + }); + + // this will update the runner's flow-control events based on + // the `realRunner` object. + runner.setHost(realRunner); + notifyProgress(runner, event, 'start', {}); + }); + + 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); + }); + }); + } + }); + runner.progress(event, phase, data); + } + + function close(reject) { // jshint ignore:line + 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)); + 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); + } + }]; +}]; + +var $$AnimationProvider = ['$animateProvider', 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]; + if (!$injector.has(driverName)) continue; // TODO(matsko): remove this check + + 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) { + getRunner(element).setHost(newRunner); + } + } + + function handleDestroyedElement() { + var runner = getRunner(element); + if (runner && (event !== 'leave' || !options.$$domOperationFired)) { + runner.end(); + } + } + + function close(rejected) { // jshint ignore:line + 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); + }); + } + }); + } + }; +}]; + +/* global angularAnimateModule: true, + + ngAnimateSwapDirective, + $$AnimateAsyncRunFactory, + $$rAFSchedulerFactory, + $$AnimateChildrenDirective, + $$AnimateQueueProvider, + $$AnimationProvider, + $AnimateCssProvider, + $$AnimateCssDriverProvider, + $$AnimateJsProvider, + $$AnimateJsDriverProvider, +*/ + +/** + * @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 the 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($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.) + */ + +/** + * @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', []) + .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/www/lib/ionic/js/angular/angular-animate.min.js b/www/lib/ionic/js/angular/angular-animate.min.js new file mode 100644 index 0000000..57108b2 --- /dev/null +++ b/www/lib/ionic/js/angular/angular-animate.min.js @@ -0,0 +1,56 @@ +/* + AngularJS v1.5.3 + (c) 2010-2016 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(E,w,Va){'use strict';function ya(a,b,c){if(!a)throw Ka("areq",b||"?",c||"required");return a}function za(a,b){if(!a&&!b)return"";if(!a)return b;if(!b)return a;ba(a)&&(a=a.join(" "));ba(b)&&(b=b.join(" "));return a+" "+b}function La(a){var b={};a&&(a.to||a.from)&&(b.to=a.to,b.from=a.from);return b}function V(a,b,c){var d="";a=ba(a)?a:a&&I(a)&&a.length?a.split(/\s+/):[];q(a,function(a,f){a&&0=a&&(a=h,h=0,b.push(e),e=[]);e.push(f.fn);f.children.forEach(function(a){h++;c.push(a)});a--}e.length&&b.push(e);return b}(c)}var l=[],w=Q(a);return function(s,x,v){function h(a){a=a.hasAttribute("ng-animate-ref")?[a]:a.querySelectorAll("[ng-animate-ref]");var b=[];q(a,function(a){var c=a.getAttribute("ng-animate-ref");c&&c.length&&b.push(a)});return b}function P(a){var b=[],c={};q(a,function(a,g){var d=A(a.element),k=0<=["enter","move"].indexOf(a.event),d=a.structural? +h(d):[];if(d.length){var e=k?"to":"from";q(d,function(a){var b=a.getAttribute("ng-animate-ref");c[b]=c[b]||{};c[b][e]={animationID:g,element:H(a)}})}else b.push(a)});var d={},k={};q(c,function(c,h){var e=c.from,f=c.to;if(e&&f){var m=a[e.animationID],C=a[f.animationID],n=e.animationID.toString();if(!k[n]){var D=k[n]={structural:!0,beforeStart:function(){m.beforeStart();C.beforeStart()},close:function(){m.close();C.close()},classes:y(m.classes,C.classes),from:m,to:C,anchors:[]};D.classes.length?b.push(D): +(b.push(m),b.push(C))}k[n].anchors.push({out:e.element,"in":f.element})}else e=e?e.animationID:f.animationID,f=e.toString(),d[f]||(d[f]=!0,b.push(a[e]))});return b}function y(a,b){a=a.split(" ");b=b.split(" ");for(var c=[],d=0;d=Q&&b>=L&&(H=!0,n())}function K(){function b(){if(!P){D(!1);q(y,function(a){m.style[a[0]]=a[1]});h(a,g);e.addClass(a,ga);if(p.recalculateTimingStyles){na=m.className+" "+fa;ia=w(m,na);B=v(m,na,ia);$=B.maxDelay;I=Math.max($,0);L=B.maxDuration;if(0===L){n();return}p.hasTransitions=0z.expectedEndTime)?r.cancel(z.timer):f.push(n)}K&&(l=r(c,l,!1),f[0]={timer:l,expectedEndTime:d},f.push(n),a.data("$$animateCss",f)); +if(ea.length)a.on(ea.join(" "),C);g.to&&(g.cleanupStyles&&Ga(G,m,Object.keys(g.to)),Ba(a,g))}}function c(){var b=a.data("$$animateCss");if(b){for(var d=1;d + * + * See {@link ngResource.$resource `$resource`} for usage. + */ + +/** + * @ngdoc service + * @name $resource + * @requires $http + * @requires ng.$log + * @requires $q + * @requires ng.$timeout + * + * @description + * A factory which creates a resource object that lets you interact with + * [RESTful](http://en.wikipedia.org/wiki/Representational_State_Transfer) server-side data sources. + * + * The returned resource object has action methods which provide high-level behaviors without + * the need to interact with the low level {@link ng.$http $http} service. + * + * Requires the {@link ngResource `ngResource`} module to be installed. + * + * By default, trailing slashes will be stripped from the calculated URLs, + * which can pose problems with server backends that do not expect that + * behavior. This can be disabled by configuring the `$resourceProvider` like + * this: + * + * ```js + app.config(['$resourceProvider', function($resourceProvider) { + // Don't strip trailing slashes from calculated URLs + $resourceProvider.defaults.stripTrailingSlashes = false; + }]); + * ``` + * + * @param {string} url A parameterized URL template with parameters prefixed by `:` as in + * `/user/:username`. If you are using a URL with a port number (e.g. + * `http://example.com:8080/api`), it will be respected. + * + * If you are using a url with a suffix, just add the suffix, like this: + * `$resource('http://example.com/resource.json')` or `$resource('http://example.com/:id.json')` + * or even `$resource('http://example.com/resource/:resource_id.:format')` + * If the parameter before the suffix is empty, :resource_id in this case, then the `/.` will be + * collapsed down to a single `.`. If you need this sequence to appear and not collapse then you + * can escape it with `/\.`. + * + * @param {Object=} paramDefaults Default values for `url` parameters. These can be overridden in + * `actions` methods. If a parameter value is a function, it will be executed every time + * when a param value needs to be obtained for a request (unless the param was overridden). + * + * Each key value in the parameter object is first bound to url template if present and then any + * excess keys are appended to the url search query after the `?`. + * + * Given a template `/path/:verb` and parameter `{verb:'greet', salutation:'Hello'}` results in + * URL `/path/greet?salutation=Hello`. + * + * If the parameter value is prefixed with `@` then the value for that parameter will be extracted + * from the corresponding property on the `data` object (provided when calling an action method). + * For example, if the `defaultParam` object is `{someParam: '@someProp'}` then the value of + * `someParam` will be `data.someProp`. + * + * @param {Object.=} actions Hash with declaration of custom actions that should extend + * the default set of resource actions. The declaration should be created in the format of {@link + * ng.$http#usage $http.config}: + * + * {action1: {method:?, params:?, isArray:?, headers:?, ...}, + * action2: {method:?, params:?, isArray:?, headers:?, ...}, + * ...} + * + * Where: + * + * - **`action`** – {string} – The name of action. This name becomes the name of the method on + * your resource object. + * - **`method`** – {string} – Case insensitive HTTP method (e.g. `GET`, `POST`, `PUT`, + * `DELETE`, `JSONP`, etc). + * - **`params`** – {Object=} – Optional set of pre-bound parameters for this action. If any of + * the parameter value is a function, it will be executed every time when a param value needs to + * be obtained for a request (unless the param was overridden). + * - **`url`** – {string} – action specific `url` override. The url templating is supported just + * like for the resource-level urls. + * - **`isArray`** – {boolean=} – If true then the returned object for this action is an array, + * see `returns` section. + * - **`transformRequest`** – + * `{function(data, headersGetter)|Array.}` – + * transform function or an array of such functions. The transform function takes the http + * request body and headers and returns its transformed (typically serialized) version. + * By default, transformRequest will contain one function that checks if the request data is + * an object and serializes to using `angular.toJson`. To prevent this behavior, set + * `transformRequest` to an empty array: `transformRequest: []` + * - **`transformResponse`** – + * `{function(data, headersGetter)|Array.}` – + * transform function or an array of such functions. The transform function takes the http + * response body and headers and returns its transformed (typically deserialized) version. + * By default, transformResponse will contain one function that checks if the response looks + * like a JSON string and deserializes it using `angular.fromJson`. To prevent this behavior, + * set `transformResponse` to an empty array: `transformResponse: []` + * - **`cache`** – `{boolean|Cache}` – If true, a default $http cache will be used to cache the + * GET request, otherwise if a cache instance built with + * {@link ng.$cacheFactory $cacheFactory}, this cache will be used for + * caching. + * - **`timeout`** – `{number}` – timeout in milliseconds.
    + * **Note:** In contrast to {@link ng.$http#usage $http.config}, {@link ng.$q promises} are + * **not** supported in $resource, because the same value would be used for multiple requests. + * If you are looking for a way to cancel requests, you should use the `cancellable` option. + * - **`cancellable`** – `{boolean}` – if set to true, the request made by a "non-instance" call + * will be cancelled (if not already completed) by calling `$cancelRequest()` on the call's + * return value. Calling `$cancelRequest()` for a non-cancellable or an already + * completed/cancelled request will have no effect.
    + * - **`withCredentials`** - `{boolean}` - whether to set the `withCredentials` flag on the + * XHR object. See + * [requests with credentials](https://developer.mozilla.org/en/http_access_control#section_5) + * for more information. + * - **`responseType`** - `{string}` - see + * [requestType](https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest#responseType). + * - **`interceptor`** - `{Object=}` - The interceptor object has two optional methods - + * `response` and `responseError`. Both `response` and `responseError` interceptors get called + * with `http response` object. See {@link ng.$http $http interceptors}. + * + * @param {Object} options Hash with custom settings that should extend the + * default `$resourceProvider` behavior. The supported options are: + * + * - **`stripTrailingSlashes`** – {boolean} – If true then the trailing + * slashes from any calculated URL will be stripped. (Defaults to true.) + * - **`cancellable`** – {boolean} – If true, the request made by a "non-instance" call will be + * cancelled (if not already completed) by calling `$cancelRequest()` on the call's return value. + * This can be overwritten per action. (Defaults to false.) + * + * @returns {Object} A resource "class" object with methods for the default set of resource actions + * optionally extended with custom `actions`. The default set contains these actions: + * ```js + * { 'get': {method:'GET'}, + * 'save': {method:'POST'}, + * 'query': {method:'GET', isArray:true}, + * 'remove': {method:'DELETE'}, + * 'delete': {method:'DELETE'} }; + * ``` + * + * Calling these methods invoke an {@link ng.$http} with the specified http method, + * destination and parameters. When the data is returned from the server then the object is an + * instance of the resource class. The actions `save`, `remove` and `delete` are available on it + * as methods with the `$` prefix. This allows you to easily perform CRUD operations (create, + * read, update, delete) on server-side data like this: + * ```js + * var User = $resource('/user/:userId', {userId:'@id'}); + * var user = User.get({userId:123}, function() { + * user.abc = true; + * user.$save(); + * }); + * ``` + * + * It is important to realize that invoking a $resource object method immediately returns an + * empty reference (object or array depending on `isArray`). Once the data is returned from the + * server the existing reference is populated with the actual data. This is a useful trick since + * usually the resource is assigned to a model which is then rendered by the view. Having an empty + * object results in no rendering, once the data arrives from the server then the object is + * populated with the data and the view automatically re-renders itself showing the new data. This + * means that in most cases one never has to write a callback function for the action methods. + * + * The action methods on the class object or instance object can be invoked with the following + * parameters: + * + * - HTTP GET "class" actions: `Resource.action([parameters], [success], [error])` + * - non-GET "class" actions: `Resource.action([parameters], postData, [success], [error])` + * - non-GET instance actions: `instance.$action([parameters], [success], [error])` + * + * + * Success callback is called with (value, responseHeaders) arguments, where the value is + * the populated resource instance or collection object. The error callback is called + * with (httpResponse) argument. + * + * Class actions return empty instance (with additional properties below). + * Instance actions return promise of the action. + * + * The Resource instances and collections have these additional properties: + * + * - `$promise`: the {@link ng.$q promise} of the original server interaction that created this + * instance or collection. + * + * On success, the promise is resolved with the same resource instance or collection object, + * updated with data from server. This makes it easy to use in + * {@link ngRoute.$routeProvider resolve section of $routeProvider.when()} to defer view + * rendering until the resource(s) are loaded. + * + * On failure, the promise is rejected with the {@link ng.$http http response} object, without + * the `resource` property. + * + * If an interceptor object was provided, the promise will instead be resolved with the value + * returned by the interceptor. + * + * - `$resolved`: `true` after first server interaction is completed (either with success or + * rejection), `false` before that. Knowing if the Resource has been resolved is useful in + * data-binding. + * + * The Resource instances and collections have these additional methods: + * + * - `$cancelRequest`: If there is a cancellable, pending request related to the instance or + * collection, calling this method will abort the request. + * + * @example + * + * # Credit card resource + * + * ```js + // Define CreditCard class + var CreditCard = $resource('/user/:userId/card/:cardId', + {userId:123, cardId:'@id'}, { + charge: {method:'POST', params:{charge:true}} + }); + + // We can retrieve a collection from the server + var cards = CreditCard.query(function() { + // GET: /user/123/card + // server returns: [ {id:456, number:'1234', name:'Smith'} ]; + + var card = cards[0]; + // each item is an instance of CreditCard + expect(card instanceof CreditCard).toEqual(true); + card.name = "J. Smith"; + // non GET methods are mapped onto the instances + card.$save(); + // POST: /user/123/card/456 {id:456, number:'1234', name:'J. Smith'} + // server returns: {id:456, number:'1234', name: 'J. Smith'}; + + // our custom method is mapped as well. + card.$charge({amount:9.99}); + // POST: /user/123/card/456?amount=9.99&charge=true {id:456, number:'1234', name:'J. Smith'} + }); + + // we can create an instance as well + var newCard = new CreditCard({number:'0123'}); + newCard.name = "Mike Smith"; + newCard.$save(); + // POST: /user/123/card {number:'0123', name:'Mike Smith'} + // server returns: {id:789, number:'0123', name: 'Mike Smith'}; + expect(newCard.id).toEqual(789); + * ``` + * + * The object returned from this function execution is a resource "class" which has "static" method + * for each action in the definition. + * + * Calling these methods invoke `$http` on the `url` template with the given `method`, `params` and + * `headers`. + * + * @example + * + * # User resource + * + * When the data is returned from the server then the object is an instance of the resource type and + * all of the non-GET methods are available with `$` prefix. This allows you to easily support CRUD + * operations (create, read, update, delete) on server-side data. + + ```js + var User = $resource('/user/:userId', {userId:'@id'}); + User.get({userId:123}, function(user) { + user.abc = true; + user.$save(); + }); + ``` + * + * It's worth noting that the success callback for `get`, `query` and other methods gets passed + * in the response that came from the server as well as $http header getter function, so one + * could rewrite the above example and get access to http headers as: + * + ```js + var User = $resource('/user/:userId', {userId:'@id'}); + User.get({userId:123}, function(user, getResponseHeaders){ + user.abc = true; + user.$save(function(user, putResponseHeaders) { + //user => saved user object + //putResponseHeaders => $http header getter + }); + }); + ``` + * + * You can also access the raw `$http` promise via the `$promise` property on the object returned + * + ``` + var User = $resource('/user/:userId', {userId:'@id'}); + User.get({userId:123}) + .$promise.then(function(user) { + $scope.user = user; + }); + ``` + * + * @example + * + * # Creating a custom 'PUT' request + * + * In this example we create a custom method on our resource to make a PUT request + * ```js + * var app = angular.module('app', ['ngResource', 'ngRoute']); + * + * // Some APIs expect a PUT request in the format URL/object/ID + * // Here we are creating an 'update' method + * app.factory('Notes', ['$resource', function($resource) { + * return $resource('/notes/:id', null, + * { + * 'update': { method:'PUT' } + * }); + * }]); + * + * // In our controller we get the ID from the URL using ngRoute and $routeParams + * // We pass in $routeParams and our Notes factory along with $scope + * app.controller('NotesCtrl', ['$scope', '$routeParams', 'Notes', + function($scope, $routeParams, Notes) { + * // First get a note object from the factory + * var note = Notes.get({ id:$routeParams.id }); + * $id = note.id; + * + * // Now call update passing in the ID first then the object you are updating + * Notes.update({ id:$id }, note); + * + * // This will PUT /notes/ID with the note object in the request payload + * }]); + * ``` + * + * @example + * + * # Cancelling requests + * + * If an action's configuration specifies that it is cancellable, you can cancel the request related + * to an instance or collection (as long as it is a result of a "non-instance" call): + * + ```js + // ...defining the `Hotel` resource... + var Hotel = $resource('/api/hotel/:id', {id: '@id'}, { + // Let's make the `query()` method cancellable + query: {method: 'get', isArray: true, cancellable: true} + }); + + // ...somewhere in the PlanVacationController... + ... + this.onDestinationChanged = function onDestinationChanged(destination) { + // We don't care about any pending request for hotels + // in a different destination any more + this.availableHotels.$cancelRequest(); + + // Let's query for hotels in '' + // (calls: /api/hotel?location=) + this.availableHotels = Hotel.query({location: destination}); + }; + ``` + * + */ +angular.module('ngResource', ['ng']). + provider('$resource', function() { + var PROTOCOL_AND_DOMAIN_REGEX = /^https?:\/\/[^\/]*/; + var provider = this; + + this.defaults = { + // Strip slashes by default + stripTrailingSlashes: true, + + // Default actions configuration + actions: { + 'get': {method: 'GET'}, + 'save': {method: 'POST'}, + 'query': {method: 'GET', isArray: true}, + 'remove': {method: 'DELETE'}, + 'delete': {method: 'DELETE'} + } + }; + + this.$get = ['$http', '$log', '$q', '$timeout', function($http, $log, $q, $timeout) { + + var noop = angular.noop, + forEach = angular.forEach, + extend = angular.extend, + copy = angular.copy, + isFunction = angular.isFunction; + + /** + * We need our custom method because encodeURIComponent is too aggressive and doesn't follow + * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set + * (pchar) allowed in path segments: + * segment = *pchar + * pchar = unreserved / pct-encoded / sub-delims / ":" / "@" + * pct-encoded = "%" HEXDIG HEXDIG + * unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" + * sub-delims = "!" / "$" / "&" / "'" / "(" / ")" + * / "*" / "+" / "," / ";" / "=" + */ + function encodeUriSegment(val) { + return encodeUriQuery(val, true). + replace(/%26/gi, '&'). + replace(/%3D/gi, '='). + replace(/%2B/gi, '+'); + } + + + /** + * This method is intended for encoding *key* or *value* parts of query component. We need a + * custom method because encodeURIComponent is too aggressive and encodes stuff that doesn't + * have to be encoded per http://tools.ietf.org/html/rfc3986: + * query = *( pchar / "/" / "?" ) + * pchar = unreserved / pct-encoded / sub-delims / ":" / "@" + * unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" + * pct-encoded = "%" HEXDIG HEXDIG + * sub-delims = "!" / "$" / "&" / "'" / "(" / ")" + * / "*" / "+" / "," / ";" / "=" + */ + function encodeUriQuery(val, pctEncodeSpaces) { + return encodeURIComponent(val). + replace(/%40/gi, '@'). + replace(/%3A/gi, ':'). + replace(/%24/g, '$'). + replace(/%2C/gi, ','). + replace(/%20/g, (pctEncodeSpaces ? '%20' : '+')); + } + + function Route(template, defaults) { + this.template = template; + this.defaults = extend({}, provider.defaults, defaults); + this.urlParams = {}; + } + + Route.prototype = { + setUrlParams: function(config, params, actionUrl) { + var self = this, + url = actionUrl || self.template, + val, + encodedVal, + protocolAndDomain = ''; + + var urlParams = self.urlParams = {}; + forEach(url.split(/\W/), function(param) { + if (param === 'hasOwnProperty') { + throw $resourceMinErr('badname', "hasOwnProperty is not a valid parameter name."); + } + if (!(new RegExp("^\\d+$").test(param)) && param && + (new RegExp("(^|[^\\\\]):" + param + "(\\W|$)").test(url))) { + urlParams[param] = { + isQueryParamValue: (new RegExp("\\?.*=:" + param + "(?:\\W|$)")).test(url) + }; + } + }); + url = url.replace(/\\:/g, ':'); + url = url.replace(PROTOCOL_AND_DOMAIN_REGEX, function(match) { + protocolAndDomain = match; + return ''; + }); + + params = params || {}; + forEach(self.urlParams, function(paramInfo, urlParam) { + val = params.hasOwnProperty(urlParam) ? params[urlParam] : self.defaults[urlParam]; + if (angular.isDefined(val) && val !== null) { + if (paramInfo.isQueryParamValue) { + encodedVal = encodeUriQuery(val, true); + } else { + encodedVal = encodeUriSegment(val); + } + url = url.replace(new RegExp(":" + urlParam + "(\\W|$)", "g"), function(match, p1) { + return encodedVal + p1; + }); + } else { + url = url.replace(new RegExp("(\/?):" + urlParam + "(\\W|$)", "g"), function(match, + leadingSlashes, tail) { + if (tail.charAt(0) == '/') { + return tail; + } else { + return leadingSlashes + tail; + } + }); + } + }); + + // strip trailing slashes and set the url (unless this behavior is specifically disabled) + if (self.defaults.stripTrailingSlashes) { + url = url.replace(/\/+$/, '') || '/'; + } + + // then replace collapse `/.` if found in the last URL path segment before the query + // E.g. `http://url.com/id./format?q=x` becomes `http://url.com/id.format?q=x` + url = url.replace(/\/\.(?=\w+($|\?))/, '.'); + // replace escaped `/\.` with `/.` + config.url = protocolAndDomain + url.replace(/\/\\\./, '/.'); + + + // set params - delegate param encoding to $http + forEach(params, function(value, key) { + if (!self.urlParams[key]) { + config.params = config.params || {}; + config.params[key] = value; + } + }); + } + }; + + + function resourceFactory(url, paramDefaults, actions, options) { + var route = new Route(url, options); + + actions = extend({}, provider.defaults.actions, actions); + + function extractParams(data, actionParams) { + var ids = {}; + actionParams = extend({}, paramDefaults, actionParams); + forEach(actionParams, function(value, key) { + if (isFunction(value)) { value = value(); } + ids[key] = value && value.charAt && value.charAt(0) == '@' ? + lookupDottedPath(data, value.substr(1)) : value; + }); + return ids; + } + + function defaultResponseInterceptor(response) { + return response.resource; + } + + function Resource(value) { + shallowClearAndCopy(value || {}, this); + } + + Resource.prototype.toJSON = function() { + var data = extend({}, this); + delete data.$promise; + delete data.$resolved; + return data; + }; + + forEach(actions, function(action, name) { + var hasBody = /^(POST|PUT|PATCH)$/i.test(action.method); + var numericTimeout = action.timeout; + var cancellable = angular.isDefined(action.cancellable) ? action.cancellable : + (options && angular.isDefined(options.cancellable)) ? options.cancellable : + provider.defaults.cancellable; + + if (numericTimeout && !angular.isNumber(numericTimeout)) { + $log.debug('ngResource:\n' + + ' Only numeric values are allowed as `timeout`.\n' + + ' Promises are not supported in $resource, because the same value would ' + + 'be used for multiple requests. If you are looking for a way to cancel ' + + 'requests, you should use the `cancellable` option.'); + delete action.timeout; + numericTimeout = null; + } + + Resource[name] = function(a1, a2, a3, a4) { + var params = {}, data, success, error; + + /* jshint -W086 */ /* (purposefully fall through case statements) */ + switch (arguments.length) { + case 4: + error = a4; + success = a3; + //fallthrough + case 3: + case 2: + if (isFunction(a2)) { + if (isFunction(a1)) { + success = a1; + error = a2; + break; + } + + success = a2; + error = a3; + //fallthrough + } else { + params = a1; + data = a2; + success = a3; + break; + } + case 1: + if (isFunction(a1)) success = a1; + else if (hasBody) data = a1; + else params = a1; + break; + case 0: break; + default: + throw $resourceMinErr('badargs', + "Expected up to 4 arguments [params, data, success, error], got {0} arguments", + arguments.length); + } + /* jshint +W086 */ /* (purposefully fall through case statements) */ + + var isInstanceCall = this instanceof Resource; + var value = isInstanceCall ? data : (action.isArray ? [] : new Resource(data)); + var httpConfig = {}; + var responseInterceptor = action.interceptor && action.interceptor.response || + defaultResponseInterceptor; + var responseErrorInterceptor = action.interceptor && action.interceptor.responseError || + undefined; + var timeoutDeferred; + var numericTimeoutPromise; + + forEach(action, function(value, key) { + switch (key) { + default: + httpConfig[key] = copy(value); + break; + case 'params': + case 'isArray': + case 'interceptor': + case 'cancellable': + break; + } + }); + + if (!isInstanceCall && cancellable) { + timeoutDeferred = $q.defer(); + httpConfig.timeout = timeoutDeferred.promise; + + if (numericTimeout) { + numericTimeoutPromise = $timeout(timeoutDeferred.resolve, numericTimeout); + } + } + + if (hasBody) httpConfig.data = data; + route.setUrlParams(httpConfig, + extend({}, extractParams(data, action.params || {}), params), + action.url); + + var promise = $http(httpConfig).then(function(response) { + var data = response.data; + + if (data) { + // Need to convert action.isArray to boolean in case it is undefined + // jshint -W018 + if (angular.isArray(data) !== (!!action.isArray)) { + throw $resourceMinErr('badcfg', + 'Error in resource configuration for action `{0}`. Expected response to ' + + 'contain an {1} but got an {2} (Request: {3} {4})', name, action.isArray ? 'array' : 'object', + angular.isArray(data) ? 'array' : 'object', httpConfig.method, httpConfig.url); + } + // jshint +W018 + if (action.isArray) { + value.length = 0; + forEach(data, function(item) { + if (typeof item === "object") { + value.push(new Resource(item)); + } else { + // Valid JSON values may be string literals, and these should not be converted + // into objects. These items will not have access to the Resource prototype + // methods, but unfortunately there + value.push(item); + } + }); + } else { + var promise = value.$promise; // Save the promise + shallowClearAndCopy(data, value); + value.$promise = promise; // Restore the promise + } + } + response.resource = value; + + return response; + }, function(response) { + (error || noop)(response); + return $q.reject(response); + }); + + promise['finally'](function() { + value.$resolved = true; + if (!isInstanceCall && cancellable) { + value.$cancelRequest = angular.noop; + $timeout.cancel(numericTimeoutPromise); + timeoutDeferred = numericTimeoutPromise = httpConfig.timeout = null; + } + }); + + promise = promise.then( + function(response) { + var value = responseInterceptor(response); + (success || noop)(value, response.headers); + return value; + }, + responseErrorInterceptor); + + if (!isInstanceCall) { + // we are creating instance / collection + // - set the initial promise + // - return the instance / collection + value.$promise = promise; + value.$resolved = false; + if (cancellable) value.$cancelRequest = timeoutDeferred.resolve; + + return value; + } + + // instance call + return promise; + }; + + + Resource.prototype['$' + name] = function(params, success, error) { + if (isFunction(params)) { + error = success; success = params; params = {}; + } + var result = Resource[name].call(this, params, this, success, error); + return result.$promise || result; + }; + }); + + Resource.bind = function(additionalParamDefaults) { + return resourceFactory(url, extend({}, paramDefaults, additionalParamDefaults), actions); + }; + + return Resource; + } + + return resourceFactory; + }]; + }); + + +})(window, window.angular); diff --git a/www/lib/ionic/js/angular/angular-resource.min.js b/www/lib/ionic/js/angular/angular-resource.min.js new file mode 100644 index 0000000..0fbd12e --- /dev/null +++ b/www/lib/ionic/js/angular/angular-resource.min.js @@ -0,0 +1,15 @@ +/* + AngularJS v1.5.3 + (c) 2010-2016 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(Q,d,G){'use strict';function H(t,g){g=g||{};d.forEach(g,function(d,q){delete g[q]});for(var q in t)!t.hasOwnProperty(q)||"$"===q.charAt(0)&&"$"===q.charAt(1)||(g[q]=t[q]);return g}var z=d.$$minErr("$resource"),N=/^(\.[a-zA-Z_$@][0-9a-zA-Z_$@]*)+$/;d.module("ngResource",["ng"]).provider("$resource",function(){var t=/^https?:\/\/[^\/]*/,g=this;this.defaults={stripTrailingSlashes:!0,actions:{get:{method:"GET"},save:{method:"POST"},query:{method:"GET",isArray:!0},remove:{method:"DELETE"},"delete":{method:"DELETE"}}}; +this.$get=["$http","$log","$q","$timeout",function(q,M,I,J){function A(d,h){return encodeURIComponent(d).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,h?"%20":"+")}function B(d,h){this.template=d;this.defaults=v({},g.defaults,h);this.urlParams={}}function K(e,h,n,k){function c(a,b){var c={};b=v({},h,b);u(b,function(b,h){x(b)&&(b=b());var f;if(b&&b.charAt&&"@"==b.charAt(0)){f=a;var l=b.substr(1);if(null==l||""===l||"hasOwnProperty"===l||!N.test("."+ +l))throw z("badmember",l);for(var l=l.split("."),m=0,k=l.length;m + * + * See {@link ngSanitize.$sanitize `$sanitize`} for usage. + */ + +/** + * @ngdoc service + * @name $sanitize + * @kind function + * + * @description + * Sanitizes an html string by stripping all potentially dangerous tokens. + * + * The input is sanitized by parsing the HTML into tokens. All safe tokens (from a whitelist) are + * then serialized back to properly escaped html string. This means that no unsafe input can make + * it into the returned string. + * + * The whitelist for URL sanitization of attribute values is configured using the functions + * `aHrefSanitizationWhitelist` and `imgSrcSanitizationWhitelist` of {@link ng.$compileProvider + * `$compileProvider`}. + * + * The input may also contain SVG markup if this is enabled via {@link $sanitizeProvider}. + * + * @param {string} html HTML input. + * @returns {string} Sanitized HTML. + * + * @example + + + +
    + Snippet: + + + + + + + + + + + + + + + + + + + + + + + + + +
    DirectiveHowSourceRendered
    ng-bind-htmlAutomatically uses $sanitize
    <div ng-bind-html="snippet">
    </div>
    ng-bind-htmlBypass $sanitize by explicitly trusting the dangerous value +
    <div ng-bind-html="deliberatelyTrustDangerousSnippet()">
    +</div>
    +
    ng-bindAutomatically escapes
    <div ng-bind="snippet">
    </div>
    +
    +
    + + it('should sanitize the html snippet by default', function() { + expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()). + toBe('

    an html\nclick here\nsnippet

    '); + }); + + it('should inline raw snippet if bound to a trusted value', function() { + expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()). + toBe("

    an html\n" + + "click here\n" + + "snippet

    "); + }); + + it('should escape snippet without any filter', function() { + expect(element(by.css('#bind-default div')).getInnerHtml()). + toBe("<p style=\"color:blue\">an html\n" + + "<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" + + "snippet</p>"); + }); + + it('should update', function() { + element(by.model('snippet')).clear(); + element(by.model('snippet')).sendKeys('new text'); + expect(element(by.css('#bind-html-with-sanitize div')).getInnerHtml()). + toBe('new text'); + expect(element(by.css('#bind-html-with-trust div')).getInnerHtml()).toBe( + 'new text'); + expect(element(by.css('#bind-default div')).getInnerHtml()).toBe( + "new <b onclick=\"alert(1)\">text</b>"); + }); +
    +
    + */ + + +/** + * @ngdoc provider + * @name $sanitizeProvider + * + * @description + * Creates and configures {@link $sanitize} instance. + */ +function $SanitizeProvider() { + var svgEnabled = false; + + this.$get = ['$$sanitizeUri', function($$sanitizeUri) { + if (svgEnabled) { + angular.extend(validElements, svgElements); + } + return function(html) { + var buf = []; + htmlParser(html, htmlSanitizeWriter(buf, function(uri, isImage) { + return !/^unsafe:/.test($$sanitizeUri(uri, isImage)); + })); + return buf.join(''); + }; + }]; + + + /** + * @ngdoc method + * @name $sanitizeProvider#enableSvg + * @kind function + * + * @description + * Enables a subset of svg to be supported by the sanitizer. + * + *
    + *

    By enabling this setting without taking other precautions, you might expose your + * application to click-hijacking attacks. In these attacks, sanitized svg elements could be positioned + * outside of the containing element and be rendered over other elements on the page (e.g. a login + * link). Such behavior can then result in phishing incidents.

    + * + *

    To protect against these, explicitly setup `overflow: hidden` css rule for all potential svg + * tags within the sanitized content:

    + * + *
    + * + *
    
    +   *   .rootOfTheIncludedContent svg {
    +   *     overflow: hidden !important;
    +   *   }
    +   *   
    + *
    + * + * @param {boolean=} regexp New regexp to whitelist urls with. + * @returns {boolean|ng.$sanitizeProvider} Returns the currently configured value if called + * without an argument or self for chaining otherwise. + */ + this.enableSvg = function(enableSvg) { + if (angular.isDefined(enableSvg)) { + svgEnabled = enableSvg; + return this; + } else { + return svgEnabled; + } + }; +} + +function sanitizeText(chars) { + var buf = []; + var writer = htmlSanitizeWriter(buf, angular.noop); + writer.chars(chars); + return buf.join(''); +} + + +// Regular Expressions for parsing tags and attributes +var SURROGATE_PAIR_REGEXP = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g, + // Match everything outside of normal chars and " (quote character) + NON_ALPHANUMERIC_REGEXP = /([^\#-~ |!])/g; + + +// Good source of info about elements and attributes +// http://dev.w3.org/html5/spec/Overview.html#semantics +// http://simon.html5.org/html-elements + +// Safe Void Elements - HTML5 +// http://dev.w3.org/html5/spec/Overview.html#void-elements +var voidElements = toMap("area,br,col,hr,img,wbr"); + +// Elements that you can, intentionally, leave open (and which close themselves) +// http://dev.w3.org/html5/spec/Overview.html#optional-tags +var optionalEndTagBlockElements = toMap("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"), + optionalEndTagInlineElements = toMap("rp,rt"), + optionalEndTagElements = angular.extend({}, + optionalEndTagInlineElements, + optionalEndTagBlockElements); + +// Safe Block Elements - HTML5 +var blockElements = angular.extend({}, optionalEndTagBlockElements, toMap("address,article," + + "aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5," + + "h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul")); + +// Inline Elements - HTML5 +var inlineElements = angular.extend({}, optionalEndTagInlineElements, toMap("a,abbr,acronym,b," + + "bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s," + + "samp,small,span,strike,strong,sub,sup,time,tt,u,var")); + +// SVG Elements +// https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Elements +// Note: the elements animate,animateColor,animateMotion,animateTransform,set are intentionally omitted. +// They can potentially allow for arbitrary javascript to be executed. See #11290 +var svgElements = toMap("circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph," + + "hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline," + + "radialGradient,rect,stop,svg,switch,text,title,tspan"); + +// Blocked Elements (will be stripped) +var blockedElements = toMap("script,style"); + +var validElements = angular.extend({}, + voidElements, + blockElements, + inlineElements, + optionalEndTagElements); + +//Attributes that have href and hence need to be sanitized +var uriAttrs = toMap("background,cite,href,longdesc,src,xlink:href"); + +var htmlAttrs = toMap('abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,' + + 'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,' + + 'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,' + + 'scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,' + + 'valign,value,vspace,width'); + +// SVG attributes (without "id" and "name" attributes) +// https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Attributes +var svgAttrs = toMap('accent-height,accumulate,additive,alphabetic,arabic-form,ascent,' + + 'baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,' + + 'cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,' + + 'font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,' + + 'height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,' + + 'marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,' + + 'max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,' + + 'path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,' + + 'requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,' + + 'stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,' + + 'stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,' + + 'stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,' + + 'underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,' + + 'width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,' + + 'xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan', true); + +var validAttrs = angular.extend({}, + uriAttrs, + svgAttrs, + htmlAttrs); + +function toMap(str, lowercaseKeys) { + var obj = {}, items = str.split(','), i; + for (i = 0; i < items.length; i++) { + obj[lowercaseKeys ? angular.lowercase(items[i]) : items[i]] = true; + } + return obj; +} + +var inertBodyElement; +(function(window) { + var doc; + if (window.document && window.document.implementation) { + doc = window.document.implementation.createHTMLDocument("inert"); + } else { + throw $sanitizeMinErr('noinert', "Can't create an inert html document"); + } + var docElement = doc.documentElement || doc.getDocumentElement(); + var bodyElements = docElement.getElementsByTagName('body'); + + // usually there should be only one body element in the document, but IE doesn't have any, so we need to create one + if (bodyElements.length === 1) { + inertBodyElement = bodyElements[0]; + } else { + var html = doc.createElement('html'); + inertBodyElement = doc.createElement('body'); + html.appendChild(inertBodyElement); + doc.appendChild(html); + } +})(window); + +/** + * @example + * htmlParser(htmlString, { + * start: function(tag, attrs) {}, + * end: function(tag) {}, + * chars: function(text) {}, + * comment: function(text) {} + * }); + * + * @param {string} html string + * @param {object} handler + */ +function htmlParser(html, handler) { + if (html === null || html === undefined) { + html = ''; + } else if (typeof html !== 'string') { + html = '' + html; + } + inertBodyElement.innerHTML = html; + + //mXSS protection + var mXSSAttempts = 5; + do { + if (mXSSAttempts === 0) { + throw $sanitizeMinErr('uinput', "Failed to sanitize html because the input is unstable"); + } + mXSSAttempts--; + + // strip custom-namespaced attributes on IE<=11 + if (document.documentMode <= 11) { + stripCustomNsAttrs(inertBodyElement); + } + html = inertBodyElement.innerHTML; //trigger mXSS + inertBodyElement.innerHTML = html; + } while (html !== inertBodyElement.innerHTML); + + var node = inertBodyElement.firstChild; + while (node) { + switch (node.nodeType) { + case 1: // ELEMENT_NODE + handler.start(node.nodeName.toLowerCase(), attrToMap(node.attributes)); + break; + case 3: // TEXT NODE + handler.chars(node.textContent); + break; + } + + var nextNode; + if (!(nextNode = node.firstChild)) { + if (node.nodeType == 1) { + handler.end(node.nodeName.toLowerCase()); + } + nextNode = node.nextSibling; + if (!nextNode) { + while (nextNode == null) { + node = node.parentNode; + if (node === inertBodyElement) break; + nextNode = node.nextSibling; + if (node.nodeType == 1) { + handler.end(node.nodeName.toLowerCase()); + } + } + } + } + node = nextNode; + } + + while (node = inertBodyElement.firstChild) { + inertBodyElement.removeChild(node); + } +} + +function attrToMap(attrs) { + var map = {}; + for (var i = 0, ii = attrs.length; i < ii; i++) { + var attr = attrs[i]; + map[attr.name] = attr.value; + } + return map; +} + + +/** + * Escapes all potentially dangerous characters, so that the + * resulting string can be safely inserted into attribute or + * element text. + * @param value + * @returns {string} escaped text + */ +function encodeEntities(value) { + return value. + replace(/&/g, '&'). + replace(SURROGATE_PAIR_REGEXP, function(value) { + var hi = value.charCodeAt(0); + var low = value.charCodeAt(1); + return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';'; + }). + replace(NON_ALPHANUMERIC_REGEXP, function(value) { + return '&#' + value.charCodeAt(0) + ';'; + }). + replace(//g, '>'); +} + +/** + * create an HTML/XML writer which writes to buffer + * @param {Array} buf use buf.join('') to get out sanitized html string + * @returns {object} in the form of { + * start: function(tag, attrs) {}, + * end: function(tag) {}, + * chars: function(text) {}, + * comment: function(text) {} + * } + */ +function htmlSanitizeWriter(buf, uriValidator) { + var ignoreCurrentElement = false; + var out = angular.bind(buf, buf.push); + return { + start: function(tag, attrs) { + tag = angular.lowercase(tag); + if (!ignoreCurrentElement && blockedElements[tag]) { + ignoreCurrentElement = tag; + } + if (!ignoreCurrentElement && validElements[tag] === true) { + out('<'); + out(tag); + angular.forEach(attrs, function(value, key) { + var lkey=angular.lowercase(key); + var isImage = (tag === 'img' && lkey === 'src') || (lkey === 'background'); + if (validAttrs[lkey] === true && + (uriAttrs[lkey] !== true || uriValidator(value, isImage))) { + out(' '); + out(key); + out('="'); + out(encodeEntities(value)); + out('"'); + } + }); + out('>'); + } + }, + end: function(tag) { + tag = angular.lowercase(tag); + if (!ignoreCurrentElement && validElements[tag] === true && voidElements[tag] !== true) { + out(''); + } + if (tag == ignoreCurrentElement) { + ignoreCurrentElement = false; + } + }, + chars: function(chars) { + if (!ignoreCurrentElement) { + out(encodeEntities(chars)); + } + } + }; +} + + +/** + * When IE9-11 comes across an unknown namespaced attribute e.g. 'xlink:foo' it adds 'xmlns:ns1' attribute to declare + * ns1 namespace and prefixes the attribute with 'ns1' (e.g. 'ns1:xlink:foo'). This is undesirable since we don't want + * to allow any of these custom attributes. This method strips them all. + * + * @param node Root element to process + */ +function stripCustomNsAttrs(node) { + if (node.nodeType === Node.ELEMENT_NODE) { + var attrs = node.attributes; + for (var i = 0, l = attrs.length; i < l; i++) { + var attrNode = attrs[i]; + var attrName = attrNode.name.toLowerCase(); + if (attrName === 'xmlns:ns1' || attrName.indexOf('ns1:') === 0) { + node.removeAttributeNode(attrNode); + i--; + l--; + } + } + } + + var nextNode = node.firstChild; + if (nextNode) { + stripCustomNsAttrs(nextNode); + } + + nextNode = node.nextSibling; + if (nextNode) { + stripCustomNsAttrs(nextNode); + } +} + + + +// define ngSanitize module and register $sanitize service +angular.module('ngSanitize', []).provider('$sanitize', $SanitizeProvider); + +/* global sanitizeText: false */ + +/** + * @ngdoc filter + * @name linky + * @kind function + * + * @description + * Finds links in text input and turns them into html links. Supports `http/https/ftp/mailto` and + * plain email address links. + * + * Requires the {@link ngSanitize `ngSanitize`} module to be installed. + * + * @param {string} text Input text. + * @param {string} target Window (`_blank|_self|_parent|_top`) or named frame to open links in. + * @param {object|function(url)} [attributes] Add custom attributes to the link element. + * + * Can be one of: + * + * - `object`: A map of attributes + * - `function`: Takes the url as a parameter and returns a map of attributes + * + * If the map of attributes contains a value for `target`, it overrides the value of + * the target parameter. + * + * + * @returns {string} Html-linkified and {@link $sanitize sanitized} text. + * + * @usage + + * + * @example + + +
    + Snippet: + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FilterSourceRendered
    linky filter +
    <div ng-bind-html="snippet | linky">
    </div>
    +
    +
    +
    linky target +
    <div ng-bind-html="snippetWithSingleURL | linky:'_blank'">
    </div>
    +
    +
    +
    linky custom attributes +
    <div ng-bind-html="snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}">
    </div>
    +
    +
    +
    no filter
    <div ng-bind="snippet">
    </div>
    + + + angular.module('linkyExample', ['ngSanitize']) + .controller('ExampleController', ['$scope', function($scope) { + $scope.snippet = + 'Pretty text with some links:\n'+ + 'http://angularjs.org/,\n'+ + 'mailto:us@somewhere.org,\n'+ + 'another@somewhere.org,\n'+ + 'and one more: ftp://127.0.0.1/.'; + $scope.snippetWithSingleURL = 'http://angularjs.org/'; + }]); + + + it('should linkify the snippet with urls', function() { + expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()). + toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' + + 'another@somewhere.org, and one more: ftp://127.0.0.1/.'); + expect(element.all(by.css('#linky-filter a')).count()).toEqual(4); + }); + + it('should not linkify snippet without the linky filter', function() { + expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()). + toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' + + 'another@somewhere.org, and one more: ftp://127.0.0.1/.'); + expect(element.all(by.css('#escaped-html a')).count()).toEqual(0); + }); + + it('should update', function() { + element(by.model('snippet')).clear(); + element(by.model('snippet')).sendKeys('new http://link.'); + expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()). + toBe('new http://link.'); + expect(element.all(by.css('#linky-filter a')).count()).toEqual(1); + expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()) + .toBe('new http://link.'); + }); + + it('should work with the target property', function() { + expect(element(by.id('linky-target')). + element(by.binding("snippetWithSingleURL | linky:'_blank'")).getText()). + toBe('http://angularjs.org/'); + expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank'); + }); + + it('should optionally add custom attributes', function() { + expect(element(by.id('linky-custom-attributes')). + element(by.binding("snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}")).getText()). + toBe('http://angularjs.org/'); + expect(element(by.css('#linky-custom-attributes a')).getAttribute('rel')).toEqual('nofollow'); + }); + + + */ +angular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) { + var LINKY_URL_REGEXP = + /((ftp|https?):\/\/|(www\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\S*[^\s.;,(){}<>"\u201d\u2019]/i, + MAILTO_REGEXP = /^mailto:/i; + + var linkyMinErr = angular.$$minErr('linky'); + var isString = angular.isString; + + return function(text, target, attributes) { + if (text == null || text === '') return text; + if (!isString(text)) throw linkyMinErr('notstring', 'Expected string but received: {0}', text); + + var match; + var raw = text; + var html = []; + var url; + var i; + while ((match = raw.match(LINKY_URL_REGEXP))) { + // We can not end in these as they are sometimes found at the end of the sentence + url = match[0]; + // if we did not match ftp/http/www/mailto then assume mailto + if (!match[2] && !match[4]) { + url = (match[3] ? 'http://' : 'mailto:') + url; + } + i = match.index; + addText(raw.substr(0, i)); + addLink(url, match[0].replace(MAILTO_REGEXP, '')); + raw = raw.substring(i + match[0].length); + } + addText(raw); + return $sanitize(html.join('')); + + function addText(text) { + if (!text) { + return; + } + html.push(sanitizeText(text)); + } + + function addLink(url, text) { + var key; + html.push(''); + addText(text); + html.push(''); + } + }; +}]); + + +})(window, window.angular); diff --git a/www/lib/ionic/js/angular/angular-sanitize.min.js b/www/lib/ionic/js/angular/angular-sanitize.min.js new file mode 100644 index 0000000..2e96280 --- /dev/null +++ b/www/lib/ionic/js/angular/angular-sanitize.min.js @@ -0,0 +1,15 @@ +/* + AngularJS v1.5.3 + (c) 2010-2016 Google, Inc. http://angularjs.org + License: MIT +*/ +(function(A,e,B){'use strict';function C(a){var c=[];v(c,e.noop).chars(a);return c.join("")}function h(a,c){var b={},d=a.split(","),l;for(l=0;l=document.documentMode&&n(g);a=g.innerHTML;g.innerHTML=a}while(a!==g.innerHTML);for(b=g.firstChild;b;){switch(b.nodeType){case 1:c.start(b.nodeName.toLowerCase(),E(b.attributes)); +break;case 3:c.chars(b.textContent)}var d;if(!(d=b.firstChild)&&(1==b.nodeType&&c.end(b.nodeName.toLowerCase()),d=b.nextSibling,!d))for(;null==d;){b=b.parentNode;if(b===g)break;d=b.nextSibling;1==b.nodeType&&c.end(b.nodeName.toLowerCase())}b=d}for(;b=g.firstChild;)g.removeChild(b)}function E(a){for(var c={},b=0,d=a.length;b/g,">")}function v(a,c){var b=!1,d=e.bind(a,a.push);return{start:function(a,f){a=e.lowercase(a);!b&&H[a]&&(b=a);b||!0!==t[a]||(d("<"),d(a),e.forEach(f,function(b,f){var g=e.lowercase(f),h="img"===a&&"src"===g||"background"===g;!0!==I[g]||!0===y[g]&&!c(b,h)||(d(" "),d(f),d('="'),d(x(b)),d('"'))}),d(">"))},end:function(a){a=e.lowercase(a);b||!0!==t[a]||!0===z[a]||(d(""));a== +b&&(b=!1)},chars:function(a){b||d(x(a))}}}function n(a){if(a.nodeType===Node.ELEMENT_NODE)for(var c=a.attributes,b=0,d=c.length;b"\u201d\u2019]/i,b=/^mailto:/i,d=e.$$minErr("linky"),g=e.isString;return function(f,h,m){function k(a){a&&p.push(C(a))}function q(a,b){var c;p.push("');k(b);p.push("")}if(null==f||""===f)return f;if(!g(f))throw d("notstring",f);for(var r=f,p=[],s,n;f=r.match(c);)s=f[0],f[2]||f[4]||(s=(f[3]?"http://":"mailto:")+s),n=f.index,k(r.substr(0,n)),q(s,f[0].replace(b,"")),r=r.substring(n+f[0].length);k(r);return a(p.join(""))}}])})(window,window.angular); +//# sourceMappingURL=angular-sanitize.min.js.map diff --git a/www/lib/ionic/js/angular/angular.js b/www/lib/ionic/js/angular/angular.js new file mode 100644 index 0000000..5e6fb2c --- /dev/null +++ b/www/lib/ionic/js/angular/angular.js @@ -0,0 +1,30714 @@ +/** + * @license AngularJS v1.5.3 + * (c) 2010-2016 Google, Inc. http://angularjs.org + * License: MIT + */ +(function(window, document, undefined) {'use strict'; + +/** + * @description + * + * This object provides a utility for producing rich Error messages within + * Angular. It can be called as follows: + * + * var exampleMinErr = minErr('example'); + * throw exampleMinErr('one', 'This {0} is {1}', foo, bar); + * + * The above creates an instance of minErr in the example namespace. The + * resulting error will have a namespaced error code of example.one. The + * resulting error will replace {0} with the value of foo, and {1} with the + * value of bar. The object is not restricted in the number of arguments it can + * take. + * + * If fewer arguments are specified than necessary for interpolation, the extra + * interpolation markers will be preserved in the final string. + * + * Since data will be parsed statically during a build step, some restrictions + * are applied with respect to how minErr instances are created and called. + * Instances should have names of the form namespaceMinErr for a minErr created + * using minErr('namespace') . Error codes, namespaces and template strings + * should all be static strings, not variables or general expressions. + * + * @param {string} module The namespace to use for the new minErr instance. + * @param {function} ErrorConstructor Custom error constructor to be instantiated when returning + * error from returned function, for cases when a particular type of error is useful. + * @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance + */ + +function minErr(module, ErrorConstructor) { + ErrorConstructor = ErrorConstructor || Error; + return function() { + var SKIP_INDEXES = 2; + + var templateArgs = arguments, + code = templateArgs[0], + message = '[' + (module ? module + ':' : '') + code + '] ', + template = templateArgs[1], + paramPrefix, i; + + message += template.replace(/\{\d+\}/g, function(match) { + var index = +match.slice(1, -1), + shiftedIndex = index + SKIP_INDEXES; + + if (shiftedIndex < templateArgs.length) { + return toDebugString(templateArgs[shiftedIndex]); + } + + return match; + }); + + message += '\nhttp://errors.angularjs.org/1.5.3/' + + (module ? module + '/' : '') + code; + + for (i = SKIP_INDEXES, paramPrefix = '?'; i < templateArgs.length; i++, paramPrefix = '&') { + message += paramPrefix + 'p' + (i - SKIP_INDEXES) + '=' + + encodeURIComponent(toDebugString(templateArgs[i])); + } + + return new ErrorConstructor(message); + }; +} + +/* We need to tell jshint what variables are being exported */ +/* global angular: true, + msie: true, + jqLite: true, + jQuery: true, + slice: true, + splice: true, + push: true, + toString: true, + ngMinErr: true, + angularModule: true, + uid: true, + REGEX_STRING_REGEXP: true, + VALIDITY_STATE_PROPERTY: true, + + lowercase: true, + uppercase: true, + manualLowercase: true, + manualUppercase: true, + nodeName_: true, + isArrayLike: true, + forEach: true, + forEachSorted: true, + reverseParams: true, + nextUid: true, + setHashKey: true, + extend: true, + toInt: true, + inherit: true, + merge: true, + noop: true, + identity: true, + valueFn: true, + isUndefined: true, + isDefined: true, + isObject: true, + isBlankObject: true, + isString: true, + isNumber: true, + isDate: true, + isArray: true, + isFunction: true, + isRegExp: true, + isWindow: true, + isScope: true, + isFile: true, + isFormData: true, + isBlob: true, + isBoolean: true, + isPromiseLike: true, + trim: true, + escapeForRegexp: true, + isElement: true, + makeMap: true, + includes: true, + arrayRemove: true, + copy: true, + shallowCopy: true, + equals: true, + csp: true, + jq: true, + concat: true, + sliceArgs: true, + bind: true, + toJsonReplacer: true, + toJson: true, + fromJson: true, + convertTimezoneToLocal: true, + timezoneToOffset: true, + startingTag: true, + tryDecodeURIComponent: true, + parseKeyValue: true, + toKeyValue: true, + encodeUriSegment: true, + encodeUriQuery: true, + angularInit: true, + bootstrap: true, + getTestability: true, + snake_case: true, + bindJQuery: true, + assertArg: true, + assertArgFn: true, + assertNotHasOwnProperty: true, + getter: true, + getBlockNodes: true, + hasOwnProperty: true, + createMap: true, + + NODE_TYPE_ELEMENT: true, + NODE_TYPE_ATTRIBUTE: true, + NODE_TYPE_TEXT: true, + NODE_TYPE_COMMENT: true, + NODE_TYPE_DOCUMENT: true, + NODE_TYPE_DOCUMENT_FRAGMENT: true, +*/ + +//////////////////////////////////// + +/** + * @ngdoc module + * @name ng + * @module ng + * @description + * + * # ng (core module) + * The ng module is loaded by default when an AngularJS application is started. The module itself + * contains the essential components for an AngularJS application to function. The table below + * lists a high level breakdown of each of the services/factories, filters, directives and testing + * components available within this core module. + * + *
    + */ + +var REGEX_STRING_REGEXP = /^\/(.+)\/([a-z]*)$/; + +// The name of a form control's ValidityState property. +// This is used so that it's possible for internal tests to create mock ValidityStates. +var VALIDITY_STATE_PROPERTY = 'validity'; + +var hasOwnProperty = Object.prototype.hasOwnProperty; + +var lowercase = function(string) {return isString(string) ? string.toLowerCase() : string;}; +var uppercase = function(string) {return isString(string) ? string.toUpperCase() : string;}; + + +var manualLowercase = function(s) { + /* jshint bitwise: false */ + return isString(s) + ? s.replace(/[A-Z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) | 32);}) + : s; +}; +var manualUppercase = function(s) { + /* jshint bitwise: false */ + return isString(s) + ? s.replace(/[a-z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) & ~32);}) + : s; +}; + + +// String#toLowerCase and String#toUpperCase don't produce correct results in browsers with Turkish +// locale, for this reason we need to detect this case and redefine lowercase/uppercase methods +// with correct but slower alternatives. See https://github.com/angular/angular.js/issues/11387 +if ('i' !== 'I'.toLowerCase()) { + lowercase = manualLowercase; + uppercase = manualUppercase; +} + + +var + msie, // holds major version number for IE, or NaN if UA is not IE. + jqLite, // delay binding since jQuery could be loaded after us. + jQuery, // delay binding + slice = [].slice, + splice = [].splice, + push = [].push, + toString = Object.prototype.toString, + getPrototypeOf = Object.getPrototypeOf, + ngMinErr = minErr('ng'), + + /** @name angular */ + angular = window.angular || (window.angular = {}), + angularModule, + uid = 0; + +/** + * documentMode is an IE-only property + * http://msdn.microsoft.com/en-us/library/ie/cc196988(v=vs.85).aspx + */ +msie = document.documentMode; + + +/** + * @private + * @param {*} obj + * @return {boolean} Returns true if `obj` is an array or array-like object (NodeList, Arguments, + * String ...) + */ +function isArrayLike(obj) { + + // `null`, `undefined` and `window` are not array-like + if (obj == null || isWindow(obj)) return false; + + // arrays, strings and jQuery/jqLite objects are array like + // * jqLite is either the jQuery or jqLite constructor function + // * we have to check the existence of jqLite first as this method is called + // via the forEach method when constructing the jqLite object in the first place + if (isArray(obj) || isString(obj) || (jqLite && obj instanceof jqLite)) return true; + + // Support: iOS 8.2 (not reproducible in simulator) + // "length" in obj used to prevent JIT error (gh-11508) + var length = "length" in Object(obj) && obj.length; + + // NodeList objects (with `item` method) and + // other objects with suitable length characteristics are array-like + return isNumber(length) && + (length >= 0 && ((length - 1) in obj || obj instanceof Array) || typeof obj.item == 'function'); + +} + +/** + * @ngdoc function + * @name angular.forEach + * @module ng + * @kind function + * + * @description + * Invokes the `iterator` function once for each item in `obj` collection, which can be either an + * object or an array. The `iterator` function is invoked with `iterator(value, key, obj)`, where `value` + * is the value of an object property or an array element, `key` is the object property key or + * array element index and obj is the `obj` itself. Specifying a `context` for the function is optional. + * + * It is worth noting that `.forEach` does not iterate over inherited properties because it filters + * using the `hasOwnProperty` method. + * + * Unlike ES262's + * [Array.prototype.forEach](http://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4.18), + * providing 'undefined' or 'null' values for `obj` will not throw a TypeError, but rather just + * return the value provided. + * + ```js + var values = {name: 'misko', gender: 'male'}; + var log = []; + angular.forEach(values, function(value, key) { + this.push(key + ': ' + value); + }, log); + expect(log).toEqual(['name: misko', 'gender: male']); + ``` + * + * @param {Object|Array} obj Object to iterate over. + * @param {Function} iterator Iterator function. + * @param {Object=} context Object to become context (`this`) for the iterator function. + * @returns {Object|Array} Reference to `obj`. + */ + +function forEach(obj, iterator, context) { + var key, length; + if (obj) { + if (isFunction(obj)) { + for (key in obj) { + // Need to check if hasOwnProperty exists, + // as on IE8 the result of querySelectorAll is an object without a hasOwnProperty function + if (key != 'prototype' && key != 'length' && key != 'name' && (!obj.hasOwnProperty || obj.hasOwnProperty(key))) { + iterator.call(context, obj[key], key, obj); + } + } + } else if (isArray(obj) || isArrayLike(obj)) { + var isPrimitive = typeof obj !== 'object'; + for (key = 0, length = obj.length; key < length; key++) { + if (isPrimitive || key in obj) { + iterator.call(context, obj[key], key, obj); + } + } + } else if (obj.forEach && obj.forEach !== forEach) { + obj.forEach(iterator, context, obj); + } else if (isBlankObject(obj)) { + // createMap() fast path --- Safe to avoid hasOwnProperty check because prototype chain is empty + for (key in obj) { + iterator.call(context, obj[key], key, obj); + } + } else if (typeof obj.hasOwnProperty === 'function') { + // Slow path for objects inheriting Object.prototype, hasOwnProperty check needed + for (key in obj) { + if (obj.hasOwnProperty(key)) { + iterator.call(context, obj[key], key, obj); + } + } + } else { + // Slow path for objects which do not have a method `hasOwnProperty` + for (key in obj) { + if (hasOwnProperty.call(obj, key)) { + iterator.call(context, obj[key], key, obj); + } + } + } + } + return obj; +} + +function forEachSorted(obj, iterator, context) { + var keys = Object.keys(obj).sort(); + for (var i = 0; i < keys.length; i++) { + iterator.call(context, obj[keys[i]], keys[i]); + } + return keys; +} + + +/** + * when using forEach the params are value, key, but it is often useful to have key, value. + * @param {function(string, *)} iteratorFn + * @returns {function(*, string)} + */ +function reverseParams(iteratorFn) { + return function(value, key) {iteratorFn(key, value);}; +} + +/** + * A consistent way of creating unique IDs in angular. + * + * Using simple numbers allows us to generate 28.6 million unique ids per second for 10 years before + * we hit number precision issues in JavaScript. + * + * Math.pow(2,53) / 60 / 60 / 24 / 365 / 10 = 28.6M + * + * @returns {number} an unique alpha-numeric string + */ +function nextUid() { + return ++uid; +} + + +/** + * Set or clear the hashkey for an object. + * @param obj object + * @param h the hashkey (!truthy to delete the hashkey) + */ +function setHashKey(obj, h) { + if (h) { + obj.$$hashKey = h; + } else { + delete obj.$$hashKey; + } +} + + +function baseExtend(dst, objs, deep) { + var h = dst.$$hashKey; + + for (var i = 0, ii = objs.length; i < ii; ++i) { + var obj = objs[i]; + if (!isObject(obj) && !isFunction(obj)) continue; + var keys = Object.keys(obj); + for (var j = 0, jj = keys.length; j < jj; j++) { + var key = keys[j]; + var src = obj[key]; + + if (deep && isObject(src)) { + if (isDate(src)) { + dst[key] = new Date(src.valueOf()); + } else if (isRegExp(src)) { + dst[key] = new RegExp(src); + } else if (src.nodeName) { + dst[key] = src.cloneNode(true); + } else if (isElement(src)) { + dst[key] = src.clone(); + } else { + if (!isObject(dst[key])) dst[key] = isArray(src) ? [] : {}; + baseExtend(dst[key], [src], true); + } + } else { + dst[key] = src; + } + } + } + + setHashKey(dst, h); + return dst; +} + +/** + * @ngdoc function + * @name angular.extend + * @module ng + * @kind function + * + * @description + * Extends the destination object `dst` by copying own enumerable properties from the `src` object(s) + * to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so + * by passing an empty object as the target: `var object = angular.extend({}, object1, object2)`. + * + * **Note:** Keep in mind that `angular.extend` does not support recursive merge (deep copy). Use + * {@link angular.merge} for this. + * + * @param {Object} dst Destination object. + * @param {...Object} src Source object(s). + * @returns {Object} Reference to `dst`. + */ +function extend(dst) { + return baseExtend(dst, slice.call(arguments, 1), false); +} + + +/** +* @ngdoc function +* @name angular.merge +* @module ng +* @kind function +* +* @description +* Deeply extends the destination object `dst` by copying own enumerable properties from the `src` object(s) +* to `dst`. You can specify multiple `src` objects. If you want to preserve original objects, you can do so +* by passing an empty object as the target: `var object = angular.merge({}, object1, object2)`. +* +* Unlike {@link angular.extend extend()}, `merge()` recursively descends into object properties of source +* objects, performing a deep copy. +* +* @param {Object} dst Destination object. +* @param {...Object} src Source object(s). +* @returns {Object} Reference to `dst`. +*/ +function merge(dst) { + return baseExtend(dst, slice.call(arguments, 1), true); +} + + + +function toInt(str) { + return parseInt(str, 10); +} + + +function inherit(parent, extra) { + return extend(Object.create(parent), extra); +} + +/** + * @ngdoc function + * @name angular.noop + * @module ng + * @kind function + * + * @description + * A function that performs no operations. This function can be useful when writing code in the + * functional style. + ```js + function foo(callback) { + var result = calculateResult(); + (callback || angular.noop)(result); + } + ``` + */ +function noop() {} +noop.$inject = []; + + +/** + * @ngdoc function + * @name angular.identity + * @module ng + * @kind function + * + * @description + * A function that returns its first argument. This function is useful when writing code in the + * functional style. + * + ```js + function transformer(transformationFn, value) { + return (transformationFn || angular.identity)(value); + }; + ``` + * @param {*} value to be returned. + * @returns {*} the value passed in. + */ +function identity($) {return $;} +identity.$inject = []; + + +function valueFn(value) {return function valueRef() {return value;};} + +function hasCustomToString(obj) { + return isFunction(obj.toString) && obj.toString !== toString; +} + + +/** + * @ngdoc function + * @name angular.isUndefined + * @module ng + * @kind function + * + * @description + * Determines if a reference is undefined. + * + * @param {*} value Reference to check. + * @returns {boolean} True if `value` is undefined. + */ +function isUndefined(value) {return typeof value === 'undefined';} + + +/** + * @ngdoc function + * @name angular.isDefined + * @module ng + * @kind function + * + * @description + * Determines if a reference is defined. + * + * @param {*} value Reference to check. + * @returns {boolean} True if `value` is defined. + */ +function isDefined(value) {return typeof value !== 'undefined';} + + +/** + * @ngdoc function + * @name angular.isObject + * @module ng + * @kind function + * + * @description + * Determines if a reference is an `Object`. Unlike `typeof` in JavaScript, `null`s are not + * considered to be objects. Note that JavaScript arrays are objects. + * + * @param {*} value Reference to check. + * @returns {boolean} True if `value` is an `Object` but not `null`. + */ +function isObject(value) { + // http://jsperf.com/isobject4 + return value !== null && typeof value === 'object'; +} + + +/** + * Determine if a value is an object with a null prototype + * + * @returns {boolean} True if `value` is an `Object` with a null prototype + */ +function isBlankObject(value) { + return value !== null && typeof value === 'object' && !getPrototypeOf(value); +} + + +/** + * @ngdoc function + * @name angular.isString + * @module ng + * @kind function + * + * @description + * Determines if a reference is a `String`. + * + * @param {*} value Reference to check. + * @returns {boolean} True if `value` is a `String`. + */ +function isString(value) {return typeof value === 'string';} + + +/** + * @ngdoc function + * @name angular.isNumber + * @module ng + * @kind function + * + * @description + * Determines if a reference is a `Number`. + * + * This includes the "special" numbers `NaN`, `+Infinity` and `-Infinity`. + * + * If you wish to exclude these then you can use the native + * [`isFinite'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isFinite) + * method. + * + * @param {*} value Reference to check. + * @returns {boolean} True if `value` is a `Number`. + */ +function isNumber(value) {return typeof value === 'number';} + + +/** + * @ngdoc function + * @name angular.isDate + * @module ng + * @kind function + * + * @description + * Determines if a value is a date. + * + * @param {*} value Reference to check. + * @returns {boolean} True if `value` is a `Date`. + */ +function isDate(value) { + return toString.call(value) === '[object Date]'; +} + + +/** + * @ngdoc function + * @name angular.isArray + * @module ng + * @kind function + * + * @description + * Determines if a reference is an `Array`. + * + * @param {*} value Reference to check. + * @returns {boolean} True if `value` is an `Array`. + */ +var isArray = Array.isArray; + +/** + * @ngdoc function + * @name angular.isFunction + * @module ng + * @kind function + * + * @description + * Determines if a reference is a `Function`. + * + * @param {*} value Reference to check. + * @returns {boolean} True if `value` is a `Function`. + */ +function isFunction(value) {return typeof value === 'function';} + + +/** + * Determines if a value is a regular expression object. + * + * @private + * @param {*} value Reference to check. + * @returns {boolean} True if `value` is a `RegExp`. + */ +function isRegExp(value) { + return toString.call(value) === '[object RegExp]'; +} + + +/** + * Checks if `obj` is a window object. + * + * @private + * @param {*} obj Object to check + * @returns {boolean} True if `obj` is a window obj. + */ +function isWindow(obj) { + return obj && obj.window === obj; +} + + +function isScope(obj) { + return obj && obj.$evalAsync && obj.$watch; +} + + +function isFile(obj) { + return toString.call(obj) === '[object File]'; +} + + +function isFormData(obj) { + return toString.call(obj) === '[object FormData]'; +} + + +function isBlob(obj) { + return toString.call(obj) === '[object Blob]'; +} + + +function isBoolean(value) { + return typeof value === 'boolean'; +} + + +function isPromiseLike(obj) { + return obj && isFunction(obj.then); +} + + +var TYPED_ARRAY_REGEXP = /^\[object (?:Uint8|Uint8Clamped|Uint16|Uint32|Int8|Int16|Int32|Float32|Float64)Array\]$/; +function isTypedArray(value) { + return value && isNumber(value.length) && TYPED_ARRAY_REGEXP.test(toString.call(value)); +} + +function isArrayBuffer(obj) { + return toString.call(obj) === '[object ArrayBuffer]'; +} + + +var trim = function(value) { + return isString(value) ? value.trim() : value; +}; + +// Copied from: +// http://docs.closure-library.googlecode.com/git/local_closure_goog_string_string.js.source.html#line1021 +// Prereq: s is a string. +var escapeForRegexp = function(s) { + return s.replace(/([-()\[\]{}+?*.$\^|,:#= 0) { + array.splice(index, 1); + } + return index; +} + +/** + * @ngdoc function + * @name angular.copy + * @module ng + * @kind function + * + * @description + * Creates a deep copy of `source`, which should be an object or an array. + * + * * If no destination is supplied, a copy of the object or array is created. + * * If a destination is provided, all of its elements (for arrays) or properties (for objects) + * are deleted and then all elements/properties from the source are copied to it. + * * If `source` is not an object or array (inc. `null` and `undefined`), `source` is returned. + * * If `source` is identical to 'destination' an exception will be thrown. + * + * @param {*} source The source that will be used to make a copy. + * Can be any type, including primitives, `null`, and `undefined`. + * @param {(Object|Array)=} destination Destination into which the source is copied. If + * provided, must be of the same type as `source`. + * @returns {*} The copy or updated `destination`, if `destination` was specified. + * + * @example + + +
    +
    + Name:
    + E-mail:
    + Gender: male + female
    + + +
    +
    form = {{user | json}}
    +
    master = {{master | json}}
    +
    + + +
    +
    + */ +function copy(source, destination) { + var stackSource = []; + var stackDest = []; + + if (destination) { + if (isTypedArray(destination) || isArrayBuffer(destination)) { + throw ngMinErr('cpta', "Can't copy! TypedArray destination cannot be mutated."); + } + if (source === destination) { + throw ngMinErr('cpi', "Can't copy! Source and destination are identical."); + } + + // Empty the destination object + if (isArray(destination)) { + destination.length = 0; + } else { + forEach(destination, function(value, key) { + if (key !== '$$hashKey') { + delete destination[key]; + } + }); + } + + stackSource.push(source); + stackDest.push(destination); + return copyRecurse(source, destination); + } + + return copyElement(source); + + function copyRecurse(source, destination) { + var h = destination.$$hashKey; + var key; + if (isArray(source)) { + for (var i = 0, ii = source.length; i < ii; i++) { + destination.push(copyElement(source[i])); + } + } else if (isBlankObject(source)) { + // createMap() fast path --- Safe to avoid hasOwnProperty check because prototype chain is empty + for (key in source) { + destination[key] = copyElement(source[key]); + } + } else if (source && typeof source.hasOwnProperty === 'function') { + // Slow path, which must rely on hasOwnProperty + for (key in source) { + if (source.hasOwnProperty(key)) { + destination[key] = copyElement(source[key]); + } + } + } else { + // Slowest path --- hasOwnProperty can't be called as a method + for (key in source) { + if (hasOwnProperty.call(source, key)) { + destination[key] = copyElement(source[key]); + } + } + } + setHashKey(destination, h); + return destination; + } + + function copyElement(source) { + // Simple values + if (!isObject(source)) { + return source; + } + + // Already copied values + var index = stackSource.indexOf(source); + if (index !== -1) { + return stackDest[index]; + } + + if (isWindow(source) || isScope(source)) { + throw ngMinErr('cpws', + "Can't copy! Making copies of Window or Scope instances is not supported."); + } + + var needsRecurse = false; + var destination = copyType(source); + + if (destination === undefined) { + destination = isArray(source) ? [] : Object.create(getPrototypeOf(source)); + needsRecurse = true; + } + + stackSource.push(source); + stackDest.push(destination); + + return needsRecurse + ? copyRecurse(source, destination) + : destination; + } + + function copyType(source) { + switch (toString.call(source)) { + case '[object Int8Array]': + case '[object Int16Array]': + case '[object Int32Array]': + case '[object Float32Array]': + case '[object Float64Array]': + case '[object Uint8Array]': + case '[object Uint8ClampedArray]': + case '[object Uint16Array]': + case '[object Uint32Array]': + return new source.constructor(copyElement(source.buffer)); + + case '[object ArrayBuffer]': + //Support: IE10 + if (!source.slice) { + var copied = new ArrayBuffer(source.byteLength); + new Uint8Array(copied).set(new Uint8Array(source)); + return copied; + } + return source.slice(0); + + case '[object Boolean]': + case '[object Number]': + case '[object String]': + case '[object Date]': + return new source.constructor(source.valueOf()); + + case '[object RegExp]': + var re = new RegExp(source.source, source.toString().match(/[^\/]*$/)[0]); + re.lastIndex = source.lastIndex; + return re; + + case '[object Blob]': + return new source.constructor([source], {type: source.type}); + } + + if (isFunction(source.cloneNode)) { + return source.cloneNode(true); + } + } +} + +/** + * Creates a shallow copy of an object, an array or a primitive. + * + * Assumes that there are no proto properties for objects. + */ +function shallowCopy(src, dst) { + if (isArray(src)) { + dst = dst || []; + + for (var i = 0, ii = src.length; i < ii; i++) { + dst[i] = src[i]; + } + } else if (isObject(src)) { + dst = dst || {}; + + for (var key in src) { + if (!(key.charAt(0) === '$' && key.charAt(1) === '$')) { + dst[key] = src[key]; + } + } + } + + return dst || src; +} + + +/** + * @ngdoc function + * @name angular.equals + * @module ng + * @kind function + * + * @description + * Determines if two objects or two values are equivalent. Supports value types, regular + * expressions, arrays and objects. + * + * Two objects or values are considered equivalent if at least one of the following is true: + * + * * Both objects or values pass `===` comparison. + * * Both objects or values are of the same type and all of their properties are equal by + * comparing them with `angular.equals`. + * * Both values are NaN. (In JavaScript, NaN == NaN => false. But we consider two NaN as equal) + * * Both values represent the same regular expression (In JavaScript, + * /abc/ == /abc/ => false. But we consider two regular expressions as equal when their textual + * representation matches). + * + * During a property comparison, properties of `function` type and properties with names + * that begin with `$` are ignored. + * + * Scope and DOMWindow objects are being compared only by identify (`===`). + * + * @param {*} o1 Object or value to compare. + * @param {*} o2 Object or value to compare. + * @returns {boolean} True if arguments are equal. + */ +function equals(o1, o2) { + if (o1 === o2) return true; + if (o1 === null || o2 === null) return false; + if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN + var t1 = typeof o1, t2 = typeof o2, length, key, keySet; + if (t1 == t2 && t1 == 'object') { + if (isArray(o1)) { + if (!isArray(o2)) return false; + if ((length = o1.length) == o2.length) { + for (key = 0; key < length; key++) { + if (!equals(o1[key], o2[key])) return false; + } + return true; + } + } else if (isDate(o1)) { + if (!isDate(o2)) return false; + return equals(o1.getTime(), o2.getTime()); + } else if (isRegExp(o1)) { + if (!isRegExp(o2)) return false; + return o1.toString() == o2.toString(); + } else { + if (isScope(o1) || isScope(o2) || isWindow(o1) || isWindow(o2) || + isArray(o2) || isDate(o2) || isRegExp(o2)) return false; + keySet = createMap(); + for (key in o1) { + if (key.charAt(0) === '$' || isFunction(o1[key])) continue; + if (!equals(o1[key], o2[key])) return false; + keySet[key] = true; + } + for (key in o2) { + if (!(key in keySet) && + key.charAt(0) !== '$' && + isDefined(o2[key]) && + !isFunction(o2[key])) return false; + } + return true; + } + } + return false; +} + +var csp = function() { + if (!isDefined(csp.rules)) { + + + var ngCspElement = (document.querySelector('[ng-csp]') || + document.querySelector('[data-ng-csp]')); + + if (ngCspElement) { + var ngCspAttribute = ngCspElement.getAttribute('ng-csp') || + ngCspElement.getAttribute('data-ng-csp'); + csp.rules = { + noUnsafeEval: !ngCspAttribute || (ngCspAttribute.indexOf('no-unsafe-eval') !== -1), + noInlineStyle: !ngCspAttribute || (ngCspAttribute.indexOf('no-inline-style') !== -1) + }; + } else { + csp.rules = { + noUnsafeEval: noUnsafeEval(), + noInlineStyle: false + }; + } + } + + return csp.rules; + + function noUnsafeEval() { + try { + /* jshint -W031, -W054 */ + new Function(''); + /* jshint +W031, +W054 */ + return false; + } catch (e) { + return true; + } + } +}; + +/** + * @ngdoc directive + * @module ng + * @name ngJq + * + * @element ANY + * @param {string=} ngJq the name of the library available under `window` + * to be used for angular.element + * @description + * Use this directive to force the angular.element library. This should be + * used to force either jqLite by leaving ng-jq blank or setting the name of + * the jquery variable under window (eg. jQuery). + * + * Since angular looks for this directive when it is loaded (doesn't wait for the + * DOMContentLoaded event), it must be placed on an element that comes before the script + * which loads angular. Also, only the first instance of `ng-jq` will be used and all + * others ignored. + * + * @example + * This example shows how to force jqLite using the `ngJq` directive to the `html` tag. + ```html + + + ... + ... + + ``` + * @example + * This example shows how to use a jQuery based library of a different name. + * The library name must be available at the top most 'window'. + ```html + + + ... + ... + + ``` + */ +var jq = function() { + if (isDefined(jq.name_)) return jq.name_; + var el; + var i, ii = ngAttrPrefixes.length, prefix, name; + for (i = 0; i < ii; ++i) { + prefix = ngAttrPrefixes[i]; + if (el = document.querySelector('[' + prefix.replace(':', '\\:') + 'jq]')) { + name = el.getAttribute(prefix + 'jq'); + break; + } + } + + return (jq.name_ = name); +}; + +function concat(array1, array2, index) { + return array1.concat(slice.call(array2, index)); +} + +function sliceArgs(args, startIndex) { + return slice.call(args, startIndex || 0); +} + + +/* jshint -W101 */ +/** + * @ngdoc function + * @name angular.bind + * @module ng + * @kind function + * + * @description + * Returns a function which calls function `fn` bound to `self` (`self` becomes the `this` for + * `fn`). You can supply optional `args` that are prebound to the function. This feature is also + * known as [partial application](http://en.wikipedia.org/wiki/Partial_application), as + * distinguished from [function currying](http://en.wikipedia.org/wiki/Currying#Contrast_with_partial_function_application). + * + * @param {Object} self Context which `fn` should be evaluated in. + * @param {function()} fn Function to be bound. + * @param {...*} args Optional arguments to be prebound to the `fn` function call. + * @returns {function()} Function that wraps the `fn` with all the specified bindings. + */ +/* jshint +W101 */ +function bind(self, fn) { + var curryArgs = arguments.length > 2 ? sliceArgs(arguments, 2) : []; + if (isFunction(fn) && !(fn instanceof RegExp)) { + return curryArgs.length + ? function() { + return arguments.length + ? fn.apply(self, concat(curryArgs, arguments, 0)) + : fn.apply(self, curryArgs); + } + : function() { + return arguments.length + ? fn.apply(self, arguments) + : fn.call(self); + }; + } else { + // in IE, native methods are not functions so they cannot be bound (note: they don't need to be) + return fn; + } +} + + +function toJsonReplacer(key, value) { + var val = value; + + if (typeof key === 'string' && key.charAt(0) === '$' && key.charAt(1) === '$') { + val = undefined; + } else if (isWindow(value)) { + val = '$WINDOW'; + } else if (value && document === value) { + val = '$DOCUMENT'; + } else if (isScope(value)) { + val = '$SCOPE'; + } + + return val; +} + + +/** + * @ngdoc function + * @name angular.toJson + * @module ng + * @kind function + * + * @description + * Serializes input into a JSON-formatted string. Properties with leading $$ characters will be + * stripped since angular uses this notation internally. + * + * @param {Object|Array|Date|string|number} obj Input to be serialized into JSON. + * @param {boolean|number} [pretty=2] If set to true, the JSON output will contain newlines and whitespace. + * If set to an integer, the JSON output will contain that many spaces per indentation. + * @returns {string|undefined} JSON-ified string representing `obj`. + */ +function toJson(obj, pretty) { + if (isUndefined(obj)) return undefined; + if (!isNumber(pretty)) { + pretty = pretty ? 2 : null; + } + return JSON.stringify(obj, toJsonReplacer, pretty); +} + + +/** + * @ngdoc function + * @name angular.fromJson + * @module ng + * @kind function + * + * @description + * Deserializes a JSON string. + * + * @param {string} json JSON string to deserialize. + * @returns {Object|Array|string|number} Deserialized JSON string. + */ +function fromJson(json) { + return isString(json) + ? JSON.parse(json) + : json; +} + + +var ALL_COLONS = /:/g; +function timezoneToOffset(timezone, fallback) { + // IE/Edge do not "understand" colon (`:`) in timezone + timezone = timezone.replace(ALL_COLONS, ''); + var requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000; + return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset; +} + + +function addDateMinutes(date, minutes) { + date = new Date(date.getTime()); + date.setMinutes(date.getMinutes() + minutes); + return date; +} + + +function convertTimezoneToLocal(date, timezone, reverse) { + reverse = reverse ? -1 : 1; + var dateTimezoneOffset = date.getTimezoneOffset(); + var timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset); + return addDateMinutes(date, reverse * (timezoneOffset - dateTimezoneOffset)); +} + + +/** + * @returns {string} Returns the string representation of the element. + */ +function startingTag(element) { + element = jqLite(element).clone(); + try { + // turns out IE does not let you set .html() on elements which + // are not allowed to have children. So we just ignore it. + element.empty(); + } catch (e) {} + var elemHtml = jqLite('
    ').append(element).html(); + try { + return element[0].nodeType === NODE_TYPE_TEXT ? lowercase(elemHtml) : + elemHtml. + match(/^(<[^>]+>)/)[1]. + replace(/^<([\w\-]+)/, function(match, nodeName) {return '<' + lowercase(nodeName);}); + } catch (e) { + return lowercase(elemHtml); + } + +} + + +///////////////////////////////////////////////// + +/** + * Tries to decode the URI component without throwing an exception. + * + * @private + * @param str value potential URI component to check. + * @returns {boolean} True if `value` can be decoded + * with the decodeURIComponent function. + */ +function tryDecodeURIComponent(value) { + try { + return decodeURIComponent(value); + } catch (e) { + // Ignore any invalid uri component + } +} + + +/** + * Parses an escaped url query string into key-value pairs. + * @returns {Object.} + */ +function parseKeyValue(/**string*/keyValue) { + var obj = {}; + forEach((keyValue || "").split('&'), function(keyValue) { + var splitPoint, key, val; + if (keyValue) { + key = keyValue = keyValue.replace(/\+/g,'%20'); + splitPoint = keyValue.indexOf('='); + if (splitPoint !== -1) { + key = keyValue.substring(0, splitPoint); + val = keyValue.substring(splitPoint + 1); + } + key = tryDecodeURIComponent(key); + if (isDefined(key)) { + val = isDefined(val) ? tryDecodeURIComponent(val) : true; + if (!hasOwnProperty.call(obj, key)) { + obj[key] = val; + } else if (isArray(obj[key])) { + obj[key].push(val); + } else { + obj[key] = [obj[key],val]; + } + } + } + }); + return obj; +} + +function toKeyValue(obj) { + var parts = []; + forEach(obj, function(value, key) { + if (isArray(value)) { + forEach(value, function(arrayValue) { + parts.push(encodeUriQuery(key, true) + + (arrayValue === true ? '' : '=' + encodeUriQuery(arrayValue, true))); + }); + } else { + parts.push(encodeUriQuery(key, true) + + (value === true ? '' : '=' + encodeUriQuery(value, true))); + } + }); + return parts.length ? parts.join('&') : ''; +} + + +/** + * We need our custom method because encodeURIComponent is too aggressive and doesn't follow + * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set (pchar) allowed in path + * segments: + * segment = *pchar + * pchar = unreserved / pct-encoded / sub-delims / ":" / "@" + * pct-encoded = "%" HEXDIG HEXDIG + * unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" + * sub-delims = "!" / "$" / "&" / "'" / "(" / ")" + * / "*" / "+" / "," / ";" / "=" + */ +function encodeUriSegment(val) { + return encodeUriQuery(val, true). + replace(/%26/gi, '&'). + replace(/%3D/gi, '='). + replace(/%2B/gi, '+'); +} + + +/** + * This method is intended for encoding *key* or *value* parts of query component. We need a custom + * method because encodeURIComponent is too aggressive and encodes stuff that doesn't have to be + * encoded per http://tools.ietf.org/html/rfc3986: + * query = *( pchar / "/" / "?" ) + * pchar = unreserved / pct-encoded / sub-delims / ":" / "@" + * unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" + * pct-encoded = "%" HEXDIG HEXDIG + * sub-delims = "!" / "$" / "&" / "'" / "(" / ")" + * / "*" / "+" / "," / ";" / "=" + */ +function encodeUriQuery(val, pctEncodeSpaces) { + return encodeURIComponent(val). + replace(/%40/gi, '@'). + replace(/%3A/gi, ':'). + replace(/%24/g, '$'). + replace(/%2C/gi, ','). + replace(/%3B/gi, ';'). + replace(/%20/g, (pctEncodeSpaces ? '%20' : '+')); +} + +var ngAttrPrefixes = ['ng-', 'data-ng-', 'ng:', 'x-ng-']; + +function getNgAttribute(element, ngAttr) { + var attr, i, ii = ngAttrPrefixes.length; + for (i = 0; i < ii; ++i) { + attr = ngAttrPrefixes[i] + ngAttr; + if (isString(attr = element.getAttribute(attr))) { + return attr; + } + } + return null; +} + +/** + * @ngdoc directive + * @name ngApp + * @module ng + * + * @element ANY + * @param {angular.Module} ngApp an optional application + * {@link angular.module module} name to load. + * @param {boolean=} ngStrictDi if this attribute is present on the app element, the injector will be + * created in "strict-di" mode. This means that the application will fail to invoke functions which + * do not use explicit function annotation (and are thus unsuitable for minification), as described + * in {@link guide/di the Dependency Injection guide}, and useful debugging info will assist in + * tracking down the root of these bugs. + * + * @description + * + * Use this directive to **auto-bootstrap** an AngularJS application. The `ngApp` directive + * designates the **root element** of the application and is typically placed near the root element + * of the page - e.g. on the `` or `` tags. + * + * There are a few things to keep in mind when using `ngApp`: + * - only one AngularJS application can be auto-bootstrapped per HTML document. The first `ngApp` + * found in the document will be used to define the root element to auto-bootstrap as an + * application. To run multiple applications in an HTML document you must manually bootstrap them using + * {@link angular.bootstrap} instead. + * - AngularJS applications cannot be nested within each other. + * - Do not use a directive that uses {@link ng.$compile#transclusion transclusion} on the same element as `ngApp`. + * This includes directives such as {@link ng.ngIf `ngIf`}, {@link ng.ngInclude `ngInclude`} and + * {@link ngRoute.ngView `ngView`}. + * Doing this misplaces the app {@link ng.$rootElement `$rootElement`} and the app's {@link auto.$injector injector}, + * causing animations to stop working and making the injector inaccessible from outside the app. + * + * You can specify an **AngularJS module** to be used as the root module for the application. This + * module will be loaded into the {@link auto.$injector} when the application is bootstrapped. It + * should contain the application code needed or have dependencies on other modules that will + * contain the code. See {@link angular.module} for more information. + * + * In the example below if the `ngApp` directive were not placed on the `html` element then the + * document would not be compiled, the `AppController` would not be instantiated and the `{{ a+b }}` + * would not be resolved to `3`. + * + * `ngApp` is the easiest, and most common way to bootstrap an application. + * + + +
    + I can add: {{a}} + {{b}} = {{ a+b }} +
    +
    + + angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) { + $scope.a = 1; + $scope.b = 2; + }); + +
    + * + * Using `ngStrictDi`, you would see something like this: + * + + +
    +
    + I can add: {{a}} + {{b}} = {{ a+b }} + +

    This renders because the controller does not fail to + instantiate, by using explicit annotation style (see + script.js for details) +

    +
    + +
    + Name:
    + Hello, {{name}}! + +

    This renders because the controller does not fail to + instantiate, by using explicit annotation style + (see script.js for details) +

    +
    + +
    + I can add: {{a}} + {{b}} = {{ a+b }} + +

    The controller could not be instantiated, due to relying + on automatic function annotations (which are disabled in + strict mode). As such, the content of this section is not + interpolated, and there should be an error in your web console. +

    +
    +
    +
    + + angular.module('ngAppStrictDemo', []) + // BadController will fail to instantiate, due to relying on automatic function annotation, + // rather than an explicit annotation + .controller('BadController', function($scope) { + $scope.a = 1; + $scope.b = 2; + }) + // Unlike BadController, GoodController1 and GoodController2 will not fail to be instantiated, + // due to using explicit annotations using the array style and $inject property, respectively. + .controller('GoodController1', ['$scope', function($scope) { + $scope.a = 1; + $scope.b = 2; + }]) + .controller('GoodController2', GoodController2); + function GoodController2($scope) { + $scope.name = "World"; + } + GoodController2.$inject = ['$scope']; + + + div[ng-controller] { + margin-bottom: 1em; + -webkit-border-radius: 4px; + border-radius: 4px; + border: 1px solid; + padding: .5em; + } + div[ng-controller^=Good] { + border-color: #d6e9c6; + background-color: #dff0d8; + color: #3c763d; + } + div[ng-controller^=Bad] { + border-color: #ebccd1; + background-color: #f2dede; + color: #a94442; + margin-bottom: 0; + } + +
    + */ +function angularInit(element, bootstrap) { + var appElement, + module, + config = {}; + + // The element `element` has priority over any other element + forEach(ngAttrPrefixes, function(prefix) { + var name = prefix + 'app'; + + if (!appElement && element.hasAttribute && element.hasAttribute(name)) { + appElement = element; + module = element.getAttribute(name); + } + }); + forEach(ngAttrPrefixes, function(prefix) { + var name = prefix + 'app'; + var candidate; + + if (!appElement && (candidate = element.querySelector('[' + name.replace(':', '\\:') + ']'))) { + appElement = candidate; + module = candidate.getAttribute(name); + } + }); + if (appElement) { + config.strictDi = getNgAttribute(appElement, "strict-di") !== null; + bootstrap(appElement, module ? [module] : [], config); + } +} + +/** + * @ngdoc function + * @name angular.bootstrap + * @module ng + * @description + * Use this function to manually start up angular application. + * + * For more information, see the {@link guide/bootstrap Bootstrap guide}. + * + * Angular will detect if it has been loaded into the browser more than once and only allow the + * first loaded script to be bootstrapped and will report a warning to the browser console for + * each of the subsequent scripts. This prevents strange results in applications, where otherwise + * multiple instances of Angular try to work on the DOM. + * + *
    + * **Note:** Protractor based end-to-end tests cannot use this function to bootstrap manually. + * They must use {@link ng.directive:ngApp ngApp}. + *
    + * + *
    + * **Note:** Do not bootstrap the app on an element with a directive that uses {@link ng.$compile#transclusion transclusion}, + * such as {@link ng.ngIf `ngIf`}, {@link ng.ngInclude `ngInclude`} and {@link ngRoute.ngView `ngView`}. + * Doing this misplaces the app {@link ng.$rootElement `$rootElement`} and the app's {@link auto.$injector injector}, + * causing animations to stop working and making the injector inaccessible from outside the app. + *
    + * + * ```html + * + * + * + *
    + * {{greeting}} + *
    + * + * + * + * + * + * ``` + * + * @param {DOMElement} element DOM element which is the root of angular application. + * @param {Array=} modules an array of modules to load into the application. + * Each item in the array should be the name of a predefined module or a (DI annotated) + * function that will be invoked by the injector as a `config` block. + * See: {@link angular.module modules} + * @param {Object=} config an object for defining configuration options for the application. The + * following keys are supported: + * + * * `strictDi` - disable automatic function annotation for the application. This is meant to + * assist in finding bugs which break minified code. Defaults to `false`. + * + * @returns {auto.$injector} Returns the newly created injector for this app. + */ +function bootstrap(element, modules, config) { + if (!isObject(config)) config = {}; + var defaultConfig = { + strictDi: false + }; + config = extend(defaultConfig, config); + var doBootstrap = function() { + element = jqLite(element); + + if (element.injector()) { + var tag = (element[0] === document) ? 'document' : startingTag(element); + //Encode angle brackets to prevent input from being sanitized to empty string #8683 + throw ngMinErr( + 'btstrpd', + "App Already Bootstrapped with this Element '{0}'", + tag.replace(//,'>')); + } + + modules = modules || []; + modules.unshift(['$provide', function($provide) { + $provide.value('$rootElement', element); + }]); + + if (config.debugInfoEnabled) { + // Pushing so that this overrides `debugInfoEnabled` setting defined in user's `modules`. + modules.push(['$compileProvider', function($compileProvider) { + $compileProvider.debugInfoEnabled(true); + }]); + } + + modules.unshift('ng'); + var injector = createInjector(modules, config.strictDi); + injector.invoke(['$rootScope', '$rootElement', '$compile', '$injector', + function bootstrapApply(scope, element, compile, injector) { + scope.$apply(function() { + element.data('$injector', injector); + compile(element)(scope); + }); + }] + ); + return injector; + }; + + var NG_ENABLE_DEBUG_INFO = /^NG_ENABLE_DEBUG_INFO!/; + var NG_DEFER_BOOTSTRAP = /^NG_DEFER_BOOTSTRAP!/; + + if (window && NG_ENABLE_DEBUG_INFO.test(window.name)) { + config.debugInfoEnabled = true; + window.name = window.name.replace(NG_ENABLE_DEBUG_INFO, ''); + } + + if (window && !NG_DEFER_BOOTSTRAP.test(window.name)) { + return doBootstrap(); + } + + window.name = window.name.replace(NG_DEFER_BOOTSTRAP, ''); + angular.resumeBootstrap = function(extraModules) { + forEach(extraModules, function(module) { + modules.push(module); + }); + return doBootstrap(); + }; + + if (isFunction(angular.resumeDeferredBootstrap)) { + angular.resumeDeferredBootstrap(); + } +} + +/** + * @ngdoc function + * @name angular.reloadWithDebugInfo + * @module ng + * @description + * Use this function to reload the current application with debug information turned on. + * This takes precedence over a call to `$compileProvider.debugInfoEnabled(false)`. + * + * See {@link ng.$compileProvider#debugInfoEnabled} for more. + */ +function reloadWithDebugInfo() { + window.name = 'NG_ENABLE_DEBUG_INFO!' + window.name; + window.location.reload(); +} + +/** + * @name angular.getTestability + * @module ng + * @description + * Get the testability service for the instance of Angular on the given + * element. + * @param {DOMElement} element DOM element which is the root of angular application. + */ +function getTestability(rootElement) { + var injector = angular.element(rootElement).injector(); + if (!injector) { + throw ngMinErr('test', + 'no injector found for element argument to getTestability'); + } + return injector.get('$$testability'); +} + +var SNAKE_CASE_REGEXP = /[A-Z]/g; +function snake_case(name, separator) { + separator = separator || '_'; + return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) { + return (pos ? separator : '') + letter.toLowerCase(); + }); +} + +var bindJQueryFired = false; +function bindJQuery() { + var originalCleanData; + + if (bindJQueryFired) { + return; + } + + // bind to jQuery if present; + var jqName = jq(); + jQuery = isUndefined(jqName) ? window.jQuery : // use jQuery (if present) + !jqName ? undefined : // use jqLite + window[jqName]; // use jQuery specified by `ngJq` + + // Use jQuery if it exists with proper functionality, otherwise default to us. + // Angular 1.2+ requires jQuery 1.7+ for on()/off() support. + // Angular 1.3+ technically requires at least jQuery 2.1+ but it may work with older + // versions. It will not work for sure with jQuery <1.7, though. + if (jQuery && jQuery.fn.on) { + jqLite = jQuery; + extend(jQuery.fn, { + scope: JQLitePrototype.scope, + isolateScope: JQLitePrototype.isolateScope, + controller: JQLitePrototype.controller, + injector: JQLitePrototype.injector, + inheritedData: JQLitePrototype.inheritedData + }); + + // All nodes removed from the DOM via various jQuery APIs like .remove() + // are passed through jQuery.cleanData. Monkey-patch this method to fire + // the $destroy event on all removed nodes. + originalCleanData = jQuery.cleanData; + jQuery.cleanData = function(elems) { + var events; + for (var i = 0, elem; (elem = elems[i]) != null; i++) { + events = jQuery._data(elem, "events"); + if (events && events.$destroy) { + jQuery(elem).triggerHandler('$destroy'); + } + } + originalCleanData(elems); + }; + } else { + jqLite = JQLite; + } + + angular.element = jqLite; + + // Prevent double-proxying. + bindJQueryFired = true; +} + +/** + * throw error if the argument is falsy. + */ +function assertArg(arg, name, reason) { + if (!arg) { + throw ngMinErr('areq', "Argument '{0}' is {1}", (name || '?'), (reason || "required")); + } + return arg; +} + +function assertArgFn(arg, name, acceptArrayAnnotation) { + if (acceptArrayAnnotation && isArray(arg)) { + arg = arg[arg.length - 1]; + } + + assertArg(isFunction(arg), name, 'not a function, got ' + + (arg && typeof arg === 'object' ? arg.constructor.name || 'Object' : typeof arg)); + return arg; +} + +/** + * throw error if the name given is hasOwnProperty + * @param {String} name the name to test + * @param {String} context the context in which the name is used, such as module or directive + */ +function assertNotHasOwnProperty(name, context) { + if (name === 'hasOwnProperty') { + throw ngMinErr('badname', "hasOwnProperty is not a valid {0} name", context); + } +} + +/** + * Return the value accessible from the object by path. Any undefined traversals are ignored + * @param {Object} obj starting object + * @param {String} path path to traverse + * @param {boolean} [bindFnToScope=true] + * @returns {Object} value as accessible by path + */ +//TODO(misko): this function needs to be removed +function getter(obj, path, bindFnToScope) { + if (!path) return obj; + var keys = path.split('.'); + var key; + var lastInstance = obj; + var len = keys.length; + + for (var i = 0; i < len; i++) { + key = keys[i]; + if (obj) { + obj = (lastInstance = obj)[key]; + } + } + if (!bindFnToScope && isFunction(obj)) { + return bind(lastInstance, obj); + } + return obj; +} + +/** + * Return the DOM siblings between the first and last node in the given array. + * @param {Array} array like object + * @returns {Array} the inputted object or a jqLite collection containing the nodes + */ +function getBlockNodes(nodes) { + // TODO(perf): update `nodes` instead of creating a new object? + var node = nodes[0]; + var endNode = nodes[nodes.length - 1]; + var blockNodes; + + for (var i = 1; node !== endNode && (node = node.nextSibling); i++) { + if (blockNodes || nodes[i] !== node) { + if (!blockNodes) { + blockNodes = jqLite(slice.call(nodes, 0, i)); + } + blockNodes.push(node); + } + } + + return blockNodes || nodes; +} + + +/** + * Creates a new object without a prototype. This object is useful for lookup without having to + * guard against prototypically inherited properties via hasOwnProperty. + * + * Related micro-benchmarks: + * - http://jsperf.com/object-create2 + * - http://jsperf.com/proto-map-lookup/2 + * - http://jsperf.com/for-in-vs-object-keys2 + * + * @returns {Object} + */ +function createMap() { + return Object.create(null); +} + +var NODE_TYPE_ELEMENT = 1; +var NODE_TYPE_ATTRIBUTE = 2; +var NODE_TYPE_TEXT = 3; +var NODE_TYPE_COMMENT = 8; +var NODE_TYPE_DOCUMENT = 9; +var NODE_TYPE_DOCUMENT_FRAGMENT = 11; + +/** + * @ngdoc type + * @name angular.Module + * @module ng + * @description + * + * Interface for configuring angular {@link angular.module modules}. + */ + +function setupModuleLoader(window) { + + var $injectorMinErr = minErr('$injector'); + var ngMinErr = minErr('ng'); + + function ensure(obj, name, factory) { + return obj[name] || (obj[name] = factory()); + } + + var angular = ensure(window, 'angular', Object); + + // We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap + angular.$$minErr = angular.$$minErr || minErr; + + return ensure(angular, 'module', function() { + /** @type {Object.} */ + var modules = {}; + + /** + * @ngdoc function + * @name angular.module + * @module ng + * @description + * + * The `angular.module` is a global place for creating, registering and retrieving Angular + * modules. + * All modules (angular core or 3rd party) that should be available to an application must be + * registered using this mechanism. + * + * Passing one argument retrieves an existing {@link angular.Module}, + * whereas passing more than one argument creates a new {@link angular.Module} + * + * + * # Module + * + * A module is a collection of services, directives, controllers, filters, and configuration information. + * `angular.module` is used to configure the {@link auto.$injector $injector}. + * + * ```js + * // Create a new module + * var myModule = angular.module('myModule', []); + * + * // register a new service + * myModule.value('appName', 'MyCoolApp'); + * + * // configure existing services inside initialization blocks. + * myModule.config(['$locationProvider', function($locationProvider) { + * // Configure existing providers + * $locationProvider.hashPrefix('!'); + * }]); + * ``` + * + * Then you can create an injector and load your modules like this: + * + * ```js + * var injector = angular.injector(['ng', 'myModule']) + * ``` + * + * However it's more likely that you'll just use + * {@link ng.directive:ngApp ngApp} or + * {@link angular.bootstrap} to simplify this process for you. + * + * @param {!string} name The name of the module to create or retrieve. + * @param {!Array.=} requires If specified then new module is being created. If + * unspecified then the module is being retrieved for further configuration. + * @param {Function=} configFn Optional configuration function for the module. Same as + * {@link angular.Module#config Module#config()}. + * @returns {angular.Module} new module with the {@link angular.Module} api. + */ + return function module(name, requires, configFn) { + var assertNotHasOwnProperty = function(name, context) { + if (name === 'hasOwnProperty') { + throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context); + } + }; + + assertNotHasOwnProperty(name, 'module'); + if (requires && modules.hasOwnProperty(name)) { + modules[name] = null; + } + return ensure(modules, name, function() { + if (!requires) { + throw $injectorMinErr('nomod', "Module '{0}' is not available! You either misspelled " + + "the module name or forgot to load it. If registering a module ensure that you " + + "specify the dependencies as the second argument.", name); + } + + /** @type {!Array.>} */ + var invokeQueue = []; + + /** @type {!Array.} */ + var configBlocks = []; + + /** @type {!Array.} */ + var runBlocks = []; + + var config = invokeLater('$injector', 'invoke', 'push', configBlocks); + + /** @type {angular.Module} */ + var moduleInstance = { + // Private state + _invokeQueue: invokeQueue, + _configBlocks: configBlocks, + _runBlocks: runBlocks, + + /** + * @ngdoc property + * @name angular.Module#requires + * @module ng + * + * @description + * Holds the list of modules which the injector will load before the current module is + * loaded. + */ + requires: requires, + + /** + * @ngdoc property + * @name angular.Module#name + * @module ng + * + * @description + * Name of the module. + */ + name: name, + + + /** + * @ngdoc method + * @name angular.Module#provider + * @module ng + * @param {string} name service name + * @param {Function} providerType Construction function for creating new instance of the + * service. + * @description + * See {@link auto.$provide#provider $provide.provider()}. + */ + provider: invokeLaterAndSetModuleName('$provide', 'provider'), + + /** + * @ngdoc method + * @name angular.Module#factory + * @module ng + * @param {string} name service name + * @param {Function} providerFunction Function for creating new instance of the service. + * @description + * See {@link auto.$provide#factory $provide.factory()}. + */ + factory: invokeLaterAndSetModuleName('$provide', 'factory'), + + /** + * @ngdoc method + * @name angular.Module#service + * @module ng + * @param {string} name service name + * @param {Function} constructor A constructor function that will be instantiated. + * @description + * See {@link auto.$provide#service $provide.service()}. + */ + service: invokeLaterAndSetModuleName('$provide', 'service'), + + /** + * @ngdoc method + * @name angular.Module#value + * @module ng + * @param {string} name service name + * @param {*} object Service instance object. + * @description + * See {@link auto.$provide#value $provide.value()}. + */ + value: invokeLater('$provide', 'value'), + + /** + * @ngdoc method + * @name angular.Module#constant + * @module ng + * @param {string} name constant name + * @param {*} object Constant value. + * @description + * Because the constants are fixed, they get applied before other provide methods. + * See {@link auto.$provide#constant $provide.constant()}. + */ + constant: invokeLater('$provide', 'constant', 'unshift'), + + /** + * @ngdoc method + * @name angular.Module#decorator + * @module ng + * @param {string} The name of the service to decorate. + * @param {Function} This function will be invoked when the service needs to be + * instantiated and should return the decorated service instance. + * @description + * See {@link auto.$provide#decorator $provide.decorator()}. + */ + decorator: invokeLaterAndSetModuleName('$provide', 'decorator'), + + /** + * @ngdoc method + * @name angular.Module#animation + * @module ng + * @param {string} name animation name + * @param {Function} animationFactory Factory function for creating new instance of an + * animation. + * @description + * + * **NOTE**: animations take effect only if the **ngAnimate** module is loaded. + * + * + * Defines an animation hook that can be later used with + * {@link $animate $animate} service and directives that use this service. + * + * ```js + * module.animation('.animation-name', function($inject1, $inject2) { + * return { + * eventName : function(element, done) { + * //code to run the animation + * //once complete, then run done() + * return function cancellationFunction(element) { + * //code to cancel the animation + * } + * } + * } + * }) + * ``` + * + * See {@link ng.$animateProvider#register $animateProvider.register()} and + * {@link ngAnimate ngAnimate module} for more information. + */ + animation: invokeLaterAndSetModuleName('$animateProvider', 'register'), + + /** + * @ngdoc method + * @name angular.Module#filter + * @module ng + * @param {string} name Filter name - this must be a valid angular expression identifier + * @param {Function} filterFactory Factory function for creating new instance of filter. + * @description + * See {@link ng.$filterProvider#register $filterProvider.register()}. + * + *
    + * **Note:** Filter names must be valid angular {@link expression} identifiers, such as `uppercase` or `orderBy`. + * Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace + * your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores + * (`myapp_subsection_filterx`). + *
    + */ + filter: invokeLaterAndSetModuleName('$filterProvider', 'register'), + + /** + * @ngdoc method + * @name angular.Module#controller + * @module ng + * @param {string|Object} name Controller name, or an object map of controllers where the + * keys are the names and the values are the constructors. + * @param {Function} constructor Controller constructor function. + * @description + * See {@link ng.$controllerProvider#register $controllerProvider.register()}. + */ + controller: invokeLaterAndSetModuleName('$controllerProvider', 'register'), + + /** + * @ngdoc method + * @name angular.Module#directive + * @module ng + * @param {string|Object} name Directive name, or an object map of directives where the + * keys are the names and the values are the factories. + * @param {Function} directiveFactory Factory function for creating new instance of + * directives. + * @description + * See {@link ng.$compileProvider#directive $compileProvider.directive()}. + */ + directive: invokeLaterAndSetModuleName('$compileProvider', 'directive'), + + /** + * @ngdoc method + * @name angular.Module#component + * @module ng + * @param {string} name Name of the component in camel-case (i.e. myComp which will match as my-comp) + * @param {Object} options Component definition object (a simplified + * {@link ng.$compile#directive-definition-object directive definition object}) + * + * @description + * See {@link ng.$compileProvider#component $compileProvider.component()}. + */ + component: invokeLaterAndSetModuleName('$compileProvider', 'component'), + + /** + * @ngdoc method + * @name angular.Module#config + * @module ng + * @param {Function} configFn Execute this function on module load. Useful for service + * configuration. + * @description + * Use this method to register work which needs to be performed on module loading. + * For more about how to configure services, see + * {@link providers#provider-recipe Provider Recipe}. + */ + config: config, + + /** + * @ngdoc method + * @name angular.Module#run + * @module ng + * @param {Function} initializationFn Execute this function after injector creation. + * Useful for application initialization. + * @description + * Use this method to register work which should be performed when the injector is done + * loading all modules. + */ + run: function(block) { + runBlocks.push(block); + return this; + } + }; + + if (configFn) { + config(configFn); + } + + return moduleInstance; + + /** + * @param {string} provider + * @param {string} method + * @param {String=} insertMethod + * @returns {angular.Module} + */ + function invokeLater(provider, method, insertMethod, queue) { + if (!queue) queue = invokeQueue; + return function() { + queue[insertMethod || 'push']([provider, method, arguments]); + return moduleInstance; + }; + } + + /** + * @param {string} provider + * @param {string} method + * @returns {angular.Module} + */ + function invokeLaterAndSetModuleName(provider, method) { + return function(recipeName, factoryFunction) { + if (factoryFunction && isFunction(factoryFunction)) factoryFunction.$$moduleName = name; + invokeQueue.push([provider, method, arguments]); + return moduleInstance; + }; + } + }); + }; + }); + +} + +/* global: toDebugString: true */ + +function serializeObject(obj) { + var seen = []; + + return JSON.stringify(obj, function(key, val) { + val = toJsonReplacer(key, val); + if (isObject(val)) { + + if (seen.indexOf(val) >= 0) return '...'; + + seen.push(val); + } + return val; + }); +} + +function toDebugString(obj) { + if (typeof obj === 'function') { + return obj.toString().replace(/ \{[\s\S]*$/, ''); + } else if (isUndefined(obj)) { + return 'undefined'; + } else if (typeof obj !== 'string') { + return serializeObject(obj); + } + return obj; +} + +/* global angularModule: true, + version: true, + + $CompileProvider, + + htmlAnchorDirective, + inputDirective, + inputDirective, + formDirective, + scriptDirective, + selectDirective, + styleDirective, + optionDirective, + ngBindDirective, + ngBindHtmlDirective, + ngBindTemplateDirective, + ngClassDirective, + ngClassEvenDirective, + ngClassOddDirective, + ngCloakDirective, + ngControllerDirective, + ngFormDirective, + ngHideDirective, + ngIfDirective, + ngIncludeDirective, + ngIncludeFillContentDirective, + ngInitDirective, + ngNonBindableDirective, + ngPluralizeDirective, + ngRepeatDirective, + ngShowDirective, + ngStyleDirective, + ngSwitchDirective, + ngSwitchWhenDirective, + ngSwitchDefaultDirective, + ngOptionsDirective, + ngTranscludeDirective, + ngModelDirective, + ngListDirective, + ngChangeDirective, + patternDirective, + patternDirective, + requiredDirective, + requiredDirective, + minlengthDirective, + minlengthDirective, + maxlengthDirective, + maxlengthDirective, + ngValueDirective, + ngModelOptionsDirective, + ngAttributeAliasDirectives, + ngEventDirectives, + + $AnchorScrollProvider, + $AnimateProvider, + $CoreAnimateCssProvider, + $$CoreAnimateJsProvider, + $$CoreAnimateQueueProvider, + $$AnimateRunnerFactoryProvider, + $$AnimateAsyncRunFactoryProvider, + $BrowserProvider, + $CacheFactoryProvider, + $ControllerProvider, + $DateProvider, + $DocumentProvider, + $ExceptionHandlerProvider, + $FilterProvider, + $$ForceReflowProvider, + $InterpolateProvider, + $IntervalProvider, + $$HashMapProvider, + $HttpProvider, + $HttpParamSerializerProvider, + $HttpParamSerializerJQLikeProvider, + $HttpBackendProvider, + $xhrFactoryProvider, + $LocationProvider, + $LogProvider, + $ParseProvider, + $RootScopeProvider, + $QProvider, + $$QProvider, + $$SanitizeUriProvider, + $SceProvider, + $SceDelegateProvider, + $SnifferProvider, + $TemplateCacheProvider, + $TemplateRequestProvider, + $$TestabilityProvider, + $TimeoutProvider, + $$RAFProvider, + $WindowProvider, + $$jqLiteProvider, + $$CookieReaderProvider +*/ + + +/** + * @ngdoc object + * @name angular.version + * @module ng + * @description + * An object that contains information about the current AngularJS version. + * + * This object has the following properties: + * + * - `full` – `{string}` – Full version string, such as "0.9.18". + * - `major` – `{number}` – Major version number, such as "0". + * - `minor` – `{number}` – Minor version number, such as "9". + * - `dot` – `{number}` – Dot version number, such as "18". + * - `codeName` – `{string}` – Code name of the release, such as "jiggling-armfat". + */ +var version = { + full: '1.5.3', // all of these placeholder strings will be replaced by grunt's + major: 1, // package task + minor: 5, + dot: 3, + codeName: 'diplohaplontic-meiosis' +}; + + +function publishExternalAPI(angular) { + extend(angular, { + 'bootstrap': bootstrap, + 'copy': copy, + 'extend': extend, + 'merge': merge, + 'equals': equals, + 'element': jqLite, + 'forEach': forEach, + 'injector': createInjector, + 'noop': noop, + 'bind': bind, + 'toJson': toJson, + 'fromJson': fromJson, + 'identity': identity, + 'isUndefined': isUndefined, + 'isDefined': isDefined, + 'isString': isString, + 'isFunction': isFunction, + 'isObject': isObject, + 'isNumber': isNumber, + 'isElement': isElement, + 'isArray': isArray, + 'version': version, + 'isDate': isDate, + 'lowercase': lowercase, + 'uppercase': uppercase, + 'callbacks': {counter: 0}, + 'getTestability': getTestability, + '$$minErr': minErr, + '$$csp': csp, + 'reloadWithDebugInfo': reloadWithDebugInfo + }); + + angularModule = setupModuleLoader(window); + + angularModule('ng', ['ngLocale'], ['$provide', + function ngModule($provide) { + // $$sanitizeUriProvider needs to be before $compileProvider as it is used by it. + $provide.provider({ + $$sanitizeUri: $$SanitizeUriProvider + }); + $provide.provider('$compile', $CompileProvider). + directive({ + a: htmlAnchorDirective, + input: inputDirective, + textarea: inputDirective, + form: formDirective, + script: scriptDirective, + select: selectDirective, + style: styleDirective, + option: optionDirective, + ngBind: ngBindDirective, + ngBindHtml: ngBindHtmlDirective, + ngBindTemplate: ngBindTemplateDirective, + ngClass: ngClassDirective, + ngClassEven: ngClassEvenDirective, + ngClassOdd: ngClassOddDirective, + ngCloak: ngCloakDirective, + ngController: ngControllerDirective, + ngForm: ngFormDirective, + ngHide: ngHideDirective, + ngIf: ngIfDirective, + ngInclude: ngIncludeDirective, + ngInit: ngInitDirective, + ngNonBindable: ngNonBindableDirective, + ngPluralize: ngPluralizeDirective, + ngRepeat: ngRepeatDirective, + ngShow: ngShowDirective, + ngStyle: ngStyleDirective, + ngSwitch: ngSwitchDirective, + ngSwitchWhen: ngSwitchWhenDirective, + ngSwitchDefault: ngSwitchDefaultDirective, + ngOptions: ngOptionsDirective, + ngTransclude: ngTranscludeDirective, + ngModel: ngModelDirective, + ngList: ngListDirective, + ngChange: ngChangeDirective, + pattern: patternDirective, + ngPattern: patternDirective, + required: requiredDirective, + ngRequired: requiredDirective, + minlength: minlengthDirective, + ngMinlength: minlengthDirective, + maxlength: maxlengthDirective, + ngMaxlength: maxlengthDirective, + ngValue: ngValueDirective, + ngModelOptions: ngModelOptionsDirective + }). + directive({ + ngInclude: ngIncludeFillContentDirective + }). + directive(ngAttributeAliasDirectives). + directive(ngEventDirectives); + $provide.provider({ + $anchorScroll: $AnchorScrollProvider, + $animate: $AnimateProvider, + $animateCss: $CoreAnimateCssProvider, + $$animateJs: $$CoreAnimateJsProvider, + $$animateQueue: $$CoreAnimateQueueProvider, + $$AnimateRunner: $$AnimateRunnerFactoryProvider, + $$animateAsyncRun: $$AnimateAsyncRunFactoryProvider, + $browser: $BrowserProvider, + $cacheFactory: $CacheFactoryProvider, + $controller: $ControllerProvider, + $document: $DocumentProvider, + $exceptionHandler: $ExceptionHandlerProvider, + $filter: $FilterProvider, + $$forceReflow: $$ForceReflowProvider, + $interpolate: $InterpolateProvider, + $interval: $IntervalProvider, + $http: $HttpProvider, + $httpParamSerializer: $HttpParamSerializerProvider, + $httpParamSerializerJQLike: $HttpParamSerializerJQLikeProvider, + $httpBackend: $HttpBackendProvider, + $xhrFactory: $xhrFactoryProvider, + $location: $LocationProvider, + $log: $LogProvider, + $parse: $ParseProvider, + $rootScope: $RootScopeProvider, + $q: $QProvider, + $$q: $$QProvider, + $sce: $SceProvider, + $sceDelegate: $SceDelegateProvider, + $sniffer: $SnifferProvider, + $templateCache: $TemplateCacheProvider, + $templateRequest: $TemplateRequestProvider, + $$testability: $$TestabilityProvider, + $timeout: $TimeoutProvider, + $window: $WindowProvider, + $$rAF: $$RAFProvider, + $$jqLite: $$jqLiteProvider, + $$HashMap: $$HashMapProvider, + $$cookieReader: $$CookieReaderProvider + }); + } + ]); +} + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Any commits to this file should be reviewed with security in mind. * + * Changes to this file can potentially create security vulnerabilities. * + * An approval from 2 Core members with history of modifying * + * this file is required. * + * * + * Does the change somehow allow for arbitrary javascript to be executed? * + * Or allows for someone to change the prototype of built-in objects? * + * Or gives undesired access to variables likes document or window? * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* global JQLitePrototype: true, + addEventListenerFn: true, + removeEventListenerFn: true, + BOOLEAN_ATTR: true, + ALIASED_ATTR: true, +*/ + +////////////////////////////////// +//JQLite +////////////////////////////////// + +/** + * @ngdoc function + * @name angular.element + * @module ng + * @kind function + * + * @description + * Wraps a raw DOM element or HTML string as a [jQuery](http://jquery.com) element. + * + * If jQuery is available, `angular.element` is an alias for the + * [jQuery](http://api.jquery.com/jQuery/) function. If jQuery is not available, `angular.element` + * delegates to Angular's built-in subset of jQuery, called "jQuery lite" or **jqLite**. + * + * jqLite is a tiny, API-compatible subset of jQuery that allows + * Angular to manipulate the DOM in a cross-browser compatible way. jqLite implements only the most + * commonly needed functionality with the goal of having a very small footprint. + * + * To use `jQuery`, simply ensure it is loaded before the `angular.js` file. You can also use the + * {@link ngJq `ngJq`} directive to specify that jqlite should be used over jQuery, or to use a + * specific version of jQuery if multiple versions exist on the page. + * + *
    **Note:** All element references in Angular are always wrapped with jQuery or + * jqLite (such as the element argument in a directive's compile / link function). They are never raw DOM references.
    + * + *
    **Note:** Keep in mind that this function will not find elements + * by tag name / CSS selector. For lookups by tag name, try instead `angular.element(document).find(...)` + * or `$document.find()`, or use the standard DOM APIs, e.g. `document.querySelectorAll()`.
    + * + * ## Angular's jqLite + * jqLite provides only the following jQuery methods: + * + * - [`addClass()`](http://api.jquery.com/addClass/) + * - [`after()`](http://api.jquery.com/after/) + * - [`append()`](http://api.jquery.com/append/) + * - [`attr()`](http://api.jquery.com/attr/) - Does not support functions as parameters + * - [`bind()`](http://api.jquery.com/bind/) - Does not support namespaces, selectors or eventData + * - [`children()`](http://api.jquery.com/children/) - Does not support selectors + * - [`clone()`](http://api.jquery.com/clone/) + * - [`contents()`](http://api.jquery.com/contents/) + * - [`css()`](http://api.jquery.com/css/) - Only retrieves inline-styles, does not call `getComputedStyle()`. + * As a setter, does not convert numbers to strings or append 'px', and also does not have automatic property prefixing. + * - [`data()`](http://api.jquery.com/data/) + * - [`detach()`](http://api.jquery.com/detach/) + * - [`empty()`](http://api.jquery.com/empty/) + * - [`eq()`](http://api.jquery.com/eq/) + * - [`find()`](http://api.jquery.com/find/) - Limited to lookups by tag name + * - [`hasClass()`](http://api.jquery.com/hasClass/) + * - [`html()`](http://api.jquery.com/html/) + * - [`next()`](http://api.jquery.com/next/) - Does not support selectors + * - [`on()`](http://api.jquery.com/on/) - Does not support namespaces, selectors or eventData + * - [`off()`](http://api.jquery.com/off/) - Does not support namespaces, selectors or event object as parameter + * - [`one()`](http://api.jquery.com/one/) - Does not support namespaces or selectors + * - [`parent()`](http://api.jquery.com/parent/) - Does not support selectors + * - [`prepend()`](http://api.jquery.com/prepend/) + * - [`prop()`](http://api.jquery.com/prop/) + * - [`ready()`](http://api.jquery.com/ready/) + * - [`remove()`](http://api.jquery.com/remove/) + * - [`removeAttr()`](http://api.jquery.com/removeAttr/) + * - [`removeClass()`](http://api.jquery.com/removeClass/) + * - [`removeData()`](http://api.jquery.com/removeData/) + * - [`replaceWith()`](http://api.jquery.com/replaceWith/) + * - [`text()`](http://api.jquery.com/text/) + * - [`toggleClass()`](http://api.jquery.com/toggleClass/) + * - [`triggerHandler()`](http://api.jquery.com/triggerHandler/) - Passes a dummy event object to handlers. + * - [`unbind()`](http://api.jquery.com/unbind/) - Does not support namespaces or event object as parameter + * - [`val()`](http://api.jquery.com/val/) + * - [`wrap()`](http://api.jquery.com/wrap/) + * + * ## jQuery/jqLite Extras + * Angular also provides the following additional methods and events to both jQuery and jqLite: + * + * ### Events + * - `$destroy` - AngularJS intercepts all jqLite/jQuery's DOM destruction apis and fires this event + * on all DOM nodes being removed. This can be used to clean up any 3rd party bindings to the DOM + * element before it is removed. + * + * ### Methods + * - `controller(name)` - retrieves the controller of the current element or its parent. By default + * retrieves controller associated with the `ngController` directive. If `name` is provided as + * camelCase directive name, then the controller for this directive will be retrieved (e.g. + * `'ngModel'`). + * - `injector()` - retrieves the injector of the current element or its parent. + * - `scope()` - retrieves the {@link ng.$rootScope.Scope scope} of the current + * element or its parent. Requires {@link guide/production#disabling-debug-data Debug Data} to + * be enabled. + * - `isolateScope()` - retrieves an isolate {@link ng.$rootScope.Scope scope} if one is attached directly to the + * current element. This getter should be used only on elements that contain a directive which starts a new isolate + * scope. Calling `scope()` on this element always returns the original non-isolate scope. + * Requires {@link guide/production#disabling-debug-data Debug Data} to be enabled. + * - `inheritedData()` - same as `data()`, but walks up the DOM until a value is found or the top + * parent element is reached. + * + * @param {string|DOMElement} element HTML string or DOMElement to be wrapped into jQuery. + * @returns {Object} jQuery object. + */ + +JQLite.expando = 'ng339'; + +var jqCache = JQLite.cache = {}, + jqId = 1, + addEventListenerFn = function(element, type, fn) { + element.addEventListener(type, fn, false); + }, + removeEventListenerFn = function(element, type, fn) { + element.removeEventListener(type, fn, false); + }; + +/* + * !!! This is an undocumented "private" function !!! + */ +JQLite._data = function(node) { + //jQuery always returns an object on cache miss + return this.cache[node[this.expando]] || {}; +}; + +function jqNextId() { return ++jqId; } + + +var SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g; +var MOZ_HACK_REGEXP = /^moz([A-Z])/; +var MOUSE_EVENT_MAP= { mouseleave: "mouseout", mouseenter: "mouseover"}; +var jqLiteMinErr = minErr('jqLite'); + +/** + * Converts snake_case to camelCase. + * Also there is special case for Moz prefix starting with upper case letter. + * @param name Name to normalize + */ +function camelCase(name) { + return name. + replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) { + return offset ? letter.toUpperCase() : letter; + }). + replace(MOZ_HACK_REGEXP, 'Moz$1'); +} + +var SINGLE_TAG_REGEXP = /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/; +var HTML_REGEXP = /<|&#?\w+;/; +var TAG_NAME_REGEXP = /<([\w:-]+)/; +var XHTML_TAG_REGEXP = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi; + +var wrapMap = { + 'option': [1, ''], + + 'thead': [1, '', '
    '], + 'col': [2, '', '
    '], + 'tr': [2, '', '
    '], + 'td': [3, '', '
    '], + '_default': [0, "", ""] +}; + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function jqLiteIsTextNode(html) { + return !HTML_REGEXP.test(html); +} + +function jqLiteAcceptsData(node) { + // The window object can accept data but has no nodeType + // Otherwise we are only interested in elements (1) and documents (9) + var nodeType = node.nodeType; + return nodeType === NODE_TYPE_ELEMENT || !nodeType || nodeType === NODE_TYPE_DOCUMENT; +} + +function jqLiteHasData(node) { + for (var key in jqCache[node.ng339]) { + return true; + } + return false; +} + +function jqLiteCleanData(nodes) { + for (var i = 0, ii = nodes.length; i < ii; i++) { + jqLiteRemoveData(nodes[i]); + } +} + +function jqLiteBuildFragment(html, context) { + var tmp, tag, wrap, + fragment = context.createDocumentFragment(), + nodes = [], i; + + if (jqLiteIsTextNode(html)) { + // Convert non-html into a text node + nodes.push(context.createTextNode(html)); + } else { + // Convert html into DOM nodes + tmp = tmp || fragment.appendChild(context.createElement("div")); + tag = (TAG_NAME_REGEXP.exec(html) || ["", ""])[1].toLowerCase(); + wrap = wrapMap[tag] || wrapMap._default; + tmp.innerHTML = wrap[1] + html.replace(XHTML_TAG_REGEXP, "<$1>") + wrap[2]; + + // Descend through wrappers to the right content + i = wrap[0]; + while (i--) { + tmp = tmp.lastChild; + } + + nodes = concat(nodes, tmp.childNodes); + + tmp = fragment.firstChild; + tmp.textContent = ""; + } + + // Remove wrapper from fragment + fragment.textContent = ""; + fragment.innerHTML = ""; // Clear inner HTML + forEach(nodes, function(node) { + fragment.appendChild(node); + }); + + return fragment; +} + +function jqLiteParseHTML(html, context) { + context = context || document; + var parsed; + + if ((parsed = SINGLE_TAG_REGEXP.exec(html))) { + return [context.createElement(parsed[1])]; + } + + if ((parsed = jqLiteBuildFragment(html, context))) { + return parsed.childNodes; + } + + return []; +} + +function jqLiteWrapNode(node, wrapper) { + var parent = node.parentNode; + + if (parent) { + parent.replaceChild(wrapper, node); + } + + wrapper.appendChild(node); +} + + +// IE9-11 has no method "contains" in SVG element and in Node.prototype. Bug #10259. +var jqLiteContains = Node.prototype.contains || function(arg) { + // jshint bitwise: false + return !!(this.compareDocumentPosition(arg) & 16); + // jshint bitwise: true +}; + +///////////////////////////////////////////// +function JQLite(element) { + if (element instanceof JQLite) { + return element; + } + + var argIsString; + + if (isString(element)) { + element = trim(element); + argIsString = true; + } + if (!(this instanceof JQLite)) { + if (argIsString && element.charAt(0) != '<') { + throw jqLiteMinErr('nosel', 'Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element'); + } + return new JQLite(element); + } + + if (argIsString) { + jqLiteAddNodes(this, jqLiteParseHTML(element)); + } else { + jqLiteAddNodes(this, element); + } +} + +function jqLiteClone(element) { + return element.cloneNode(true); +} + +function jqLiteDealoc(element, onlyDescendants) { + if (!onlyDescendants) jqLiteRemoveData(element); + + if (element.querySelectorAll) { + var descendants = element.querySelectorAll('*'); + for (var i = 0, l = descendants.length; i < l; i++) { + jqLiteRemoveData(descendants[i]); + } + } +} + +function jqLiteOff(element, type, fn, unsupported) { + if (isDefined(unsupported)) throw jqLiteMinErr('offargs', 'jqLite#off() does not support the `selector` argument'); + + var expandoStore = jqLiteExpandoStore(element); + var events = expandoStore && expandoStore.events; + var handle = expandoStore && expandoStore.handle; + + if (!handle) return; //no listeners registered + + if (!type) { + for (type in events) { + if (type !== '$destroy') { + removeEventListenerFn(element, type, handle); + } + delete events[type]; + } + } else { + + var removeHandler = function(type) { + var listenerFns = events[type]; + if (isDefined(fn)) { + arrayRemove(listenerFns || [], fn); + } + if (!(isDefined(fn) && listenerFns && listenerFns.length > 0)) { + removeEventListenerFn(element, type, handle); + delete events[type]; + } + }; + + forEach(type.split(' '), function(type) { + removeHandler(type); + if (MOUSE_EVENT_MAP[type]) { + removeHandler(MOUSE_EVENT_MAP[type]); + } + }); + } +} + +function jqLiteRemoveData(element, name) { + var expandoId = element.ng339; + var expandoStore = expandoId && jqCache[expandoId]; + + if (expandoStore) { + if (name) { + delete expandoStore.data[name]; + return; + } + + if (expandoStore.handle) { + if (expandoStore.events.$destroy) { + expandoStore.handle({}, '$destroy'); + } + jqLiteOff(element); + } + delete jqCache[expandoId]; + element.ng339 = undefined; // don't delete DOM expandos. IE and Chrome don't like it + } +} + + +function jqLiteExpandoStore(element, createIfNecessary) { + var expandoId = element.ng339, + expandoStore = expandoId && jqCache[expandoId]; + + if (createIfNecessary && !expandoStore) { + element.ng339 = expandoId = jqNextId(); + expandoStore = jqCache[expandoId] = {events: {}, data: {}, handle: undefined}; + } + + return expandoStore; +} + + +function jqLiteData(element, key, value) { + if (jqLiteAcceptsData(element)) { + + var isSimpleSetter = isDefined(value); + var isSimpleGetter = !isSimpleSetter && key && !isObject(key); + var massGetter = !key; + var expandoStore = jqLiteExpandoStore(element, !isSimpleGetter); + var data = expandoStore && expandoStore.data; + + if (isSimpleSetter) { // data('key', value) + data[key] = value; + } else { + if (massGetter) { // data() + return data; + } else { + if (isSimpleGetter) { // data('key') + // don't force creation of expandoStore if it doesn't exist yet + return data && data[key]; + } else { // mass-setter: data({key1: val1, key2: val2}) + extend(data, key); + } + } + } + } +} + +function jqLiteHasClass(element, selector) { + if (!element.getAttribute) return false; + return ((" " + (element.getAttribute('class') || '') + " ").replace(/[\n\t]/g, " "). + indexOf(" " + selector + " ") > -1); +} + +function jqLiteRemoveClass(element, cssClasses) { + if (cssClasses && element.setAttribute) { + forEach(cssClasses.split(' '), function(cssClass) { + element.setAttribute('class', trim( + (" " + (element.getAttribute('class') || '') + " ") + .replace(/[\n\t]/g, " ") + .replace(" " + trim(cssClass) + " ", " ")) + ); + }); + } +} + +function jqLiteAddClass(element, cssClasses) { + if (cssClasses && element.setAttribute) { + var existingClasses = (' ' + (element.getAttribute('class') || '') + ' ') + .replace(/[\n\t]/g, " "); + + forEach(cssClasses.split(' '), function(cssClass) { + cssClass = trim(cssClass); + if (existingClasses.indexOf(' ' + cssClass + ' ') === -1) { + existingClasses += cssClass + ' '; + } + }); + + element.setAttribute('class', trim(existingClasses)); + } +} + + +function jqLiteAddNodes(root, elements) { + // THIS CODE IS VERY HOT. Don't make changes without benchmarking. + + if (elements) { + + // if a Node (the most common case) + if (elements.nodeType) { + root[root.length++] = elements; + } else { + var length = elements.length; + + // if an Array or NodeList and not a Window + if (typeof length === 'number' && elements.window !== elements) { + if (length) { + for (var i = 0; i < length; i++) { + root[root.length++] = elements[i]; + } + } + } else { + root[root.length++] = elements; + } + } + } +} + + +function jqLiteController(element, name) { + return jqLiteInheritedData(element, '$' + (name || 'ngController') + 'Controller'); +} + +function jqLiteInheritedData(element, name, value) { + // if element is the document object work with the html element instead + // this makes $(document).scope() possible + if (element.nodeType == NODE_TYPE_DOCUMENT) { + element = element.documentElement; + } + var names = isArray(name) ? name : [name]; + + while (element) { + for (var i = 0, ii = names.length; i < ii; i++) { + if (isDefined(value = jqLite.data(element, names[i]))) return value; + } + + // If dealing with a document fragment node with a host element, and no parent, use the host + // element as the parent. This enables directives within a Shadow DOM or polyfilled Shadow DOM + // to lookup parent controllers. + element = element.parentNode || (element.nodeType === NODE_TYPE_DOCUMENT_FRAGMENT && element.host); + } +} + +function jqLiteEmpty(element) { + jqLiteDealoc(element, true); + while (element.firstChild) { + element.removeChild(element.firstChild); + } +} + +function jqLiteRemove(element, keepData) { + if (!keepData) jqLiteDealoc(element); + var parent = element.parentNode; + if (parent) parent.removeChild(element); +} + + +function jqLiteDocumentLoaded(action, win) { + win = win || window; + if (win.document.readyState === 'complete') { + // Force the action to be run async for consistent behavior + // from the action's point of view + // i.e. it will definitely not be in a $apply + win.setTimeout(action); + } else { + // No need to unbind this handler as load is only ever called once + jqLite(win).on('load', action); + } +} + +////////////////////////////////////////// +// Functions which are declared directly. +////////////////////////////////////////// +var JQLitePrototype = JQLite.prototype = { + ready: function(fn) { + var fired = false; + + function trigger() { + if (fired) return; + fired = true; + fn(); + } + + // check if document is already loaded + if (document.readyState === 'complete') { + setTimeout(trigger); + } else { + this.on('DOMContentLoaded', trigger); // works for modern browsers and IE9 + // we can not use jqLite since we are not done loading and jQuery could be loaded later. + // jshint -W064 + JQLite(window).on('load', trigger); // fallback to window.onload for others + // jshint +W064 + } + }, + toString: function() { + var value = []; + forEach(this, function(e) { value.push('' + e);}); + return '[' + value.join(', ') + ']'; + }, + + eq: function(index) { + return (index >= 0) ? jqLite(this[index]) : jqLite(this[this.length + index]); + }, + + length: 0, + push: push, + sort: [].sort, + splice: [].splice +}; + +////////////////////////////////////////// +// Functions iterating getter/setters. +// these functions return self on setter and +// value on get. +////////////////////////////////////////// +var BOOLEAN_ATTR = {}; +forEach('multiple,selected,checked,disabled,readOnly,required,open'.split(','), function(value) { + BOOLEAN_ATTR[lowercase(value)] = value; +}); +var BOOLEAN_ELEMENTS = {}; +forEach('input,select,option,textarea,button,form,details'.split(','), function(value) { + BOOLEAN_ELEMENTS[value] = true; +}); +var ALIASED_ATTR = { + 'ngMinlength': 'minlength', + 'ngMaxlength': 'maxlength', + 'ngMin': 'min', + 'ngMax': 'max', + 'ngPattern': 'pattern' +}; + +function getBooleanAttrName(element, name) { + // check dom last since we will most likely fail on name + var booleanAttr = BOOLEAN_ATTR[name.toLowerCase()]; + + // booleanAttr is here twice to minimize DOM access + return booleanAttr && BOOLEAN_ELEMENTS[nodeName_(element)] && booleanAttr; +} + +function getAliasedAttrName(name) { + return ALIASED_ATTR[name]; +} + +forEach({ + data: jqLiteData, + removeData: jqLiteRemoveData, + hasData: jqLiteHasData, + cleanData: jqLiteCleanData +}, function(fn, name) { + JQLite[name] = fn; +}); + +forEach({ + data: jqLiteData, + inheritedData: jqLiteInheritedData, + + scope: function(element) { + // Can't use jqLiteData here directly so we stay compatible with jQuery! + return jqLite.data(element, '$scope') || jqLiteInheritedData(element.parentNode || element, ['$isolateScope', '$scope']); + }, + + isolateScope: function(element) { + // Can't use jqLiteData here directly so we stay compatible with jQuery! + return jqLite.data(element, '$isolateScope') || jqLite.data(element, '$isolateScopeNoTemplate'); + }, + + controller: jqLiteController, + + injector: function(element) { + return jqLiteInheritedData(element, '$injector'); + }, + + removeAttr: function(element, name) { + element.removeAttribute(name); + }, + + hasClass: jqLiteHasClass, + + css: function(element, name, value) { + name = camelCase(name); + + if (isDefined(value)) { + element.style[name] = value; + } else { + return element.style[name]; + } + }, + + attr: function(element, name, value) { + var nodeType = element.nodeType; + if (nodeType === NODE_TYPE_TEXT || nodeType === NODE_TYPE_ATTRIBUTE || nodeType === NODE_TYPE_COMMENT) { + return; + } + var lowercasedName = lowercase(name); + if (BOOLEAN_ATTR[lowercasedName]) { + if (isDefined(value)) { + if (!!value) { + element[name] = true; + element.setAttribute(name, lowercasedName); + } else { + element[name] = false; + element.removeAttribute(lowercasedName); + } + } else { + return (element[name] || + (element.attributes.getNamedItem(name) || noop).specified) + ? lowercasedName + : undefined; + } + } else if (isDefined(value)) { + element.setAttribute(name, value); + } else if (element.getAttribute) { + // the extra argument "2" is to get the right thing for a.href in IE, see jQuery code + // some elements (e.g. Document) don't have get attribute, so return undefined + var ret = element.getAttribute(name, 2); + // normalize non-existing attributes to undefined (as jQuery) + return ret === null ? undefined : ret; + } + }, + + prop: function(element, name, value) { + if (isDefined(value)) { + element[name] = value; + } else { + return element[name]; + } + }, + + text: (function() { + getText.$dv = ''; + return getText; + + function getText(element, value) { + if (isUndefined(value)) { + var nodeType = element.nodeType; + return (nodeType === NODE_TYPE_ELEMENT || nodeType === NODE_TYPE_TEXT) ? element.textContent : ''; + } + element.textContent = value; + } + })(), + + val: function(element, value) { + if (isUndefined(value)) { + if (element.multiple && nodeName_(element) === 'select') { + var result = []; + forEach(element.options, function(option) { + if (option.selected) { + result.push(option.value || option.text); + } + }); + return result.length === 0 ? null : result; + } + return element.value; + } + element.value = value; + }, + + html: function(element, value) { + if (isUndefined(value)) { + return element.innerHTML; + } + jqLiteDealoc(element, true); + element.innerHTML = value; + }, + + empty: jqLiteEmpty +}, function(fn, name) { + /** + * Properties: writes return selection, reads return first value + */ + JQLite.prototype[name] = function(arg1, arg2) { + var i, key; + var nodeCount = this.length; + + // jqLiteHasClass has only two arguments, but is a getter-only fn, so we need to special-case it + // in a way that survives minification. + // jqLiteEmpty takes no arguments but is a setter. + if (fn !== jqLiteEmpty && + (isUndefined((fn.length == 2 && (fn !== jqLiteHasClass && fn !== jqLiteController)) ? arg1 : arg2))) { + if (isObject(arg1)) { + + // we are a write, but the object properties are the key/values + for (i = 0; i < nodeCount; i++) { + if (fn === jqLiteData) { + // data() takes the whole object in jQuery + fn(this[i], arg1); + } else { + for (key in arg1) { + fn(this[i], key, arg1[key]); + } + } + } + // return self for chaining + return this; + } else { + // we are a read, so read the first child. + // TODO: do we still need this? + var value = fn.$dv; + // Only if we have $dv do we iterate over all, otherwise it is just the first element. + var jj = (isUndefined(value)) ? Math.min(nodeCount, 1) : nodeCount; + for (var j = 0; j < jj; j++) { + var nodeValue = fn(this[j], arg1, arg2); + value = value ? value + nodeValue : nodeValue; + } + return value; + } + } else { + // we are a write, so apply to all children + for (i = 0; i < nodeCount; i++) { + fn(this[i], arg1, arg2); + } + // return self for chaining + return this; + } + }; +}); + +function createEventHandler(element, events) { + var eventHandler = function(event, type) { + // jQuery specific api + event.isDefaultPrevented = function() { + return event.defaultPrevented; + }; + + var eventFns = events[type || event.type]; + var eventFnsLength = eventFns ? eventFns.length : 0; + + if (!eventFnsLength) return; + + if (isUndefined(event.immediatePropagationStopped)) { + var originalStopImmediatePropagation = event.stopImmediatePropagation; + event.stopImmediatePropagation = function() { + event.immediatePropagationStopped = true; + + if (event.stopPropagation) { + event.stopPropagation(); + } + + if (originalStopImmediatePropagation) { + originalStopImmediatePropagation.call(event); + } + }; + } + + event.isImmediatePropagationStopped = function() { + return event.immediatePropagationStopped === true; + }; + + // Some events have special handlers that wrap the real handler + var handlerWrapper = eventFns.specialHandlerWrapper || defaultHandlerWrapper; + + // Copy event handlers in case event handlers array is modified during execution. + if ((eventFnsLength > 1)) { + eventFns = shallowCopy(eventFns); + } + + for (var i = 0; i < eventFnsLength; i++) { + if (!event.isImmediatePropagationStopped()) { + handlerWrapper(element, event, eventFns[i]); + } + } + }; + + // TODO: this is a hack for angularMocks/clearDataCache that makes it possible to deregister all + // events on `element` + eventHandler.elem = element; + return eventHandler; +} + +function defaultHandlerWrapper(element, event, handler) { + handler.call(element, event); +} + +function specialMouseHandlerWrapper(target, event, handler) { + // Refer to jQuery's implementation of mouseenter & mouseleave + // Read about mouseenter and mouseleave: + // http://www.quirksmode.org/js/events_mouse.html#link8 + var related = event.relatedTarget; + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if (!related || (related !== target && !jqLiteContains.call(target, related))) { + handler.call(target, event); + } +} + +////////////////////////////////////////// +// Functions iterating traversal. +// These functions chain results into a single +// selector. +////////////////////////////////////////// +forEach({ + removeData: jqLiteRemoveData, + + on: function jqLiteOn(element, type, fn, unsupported) { + if (isDefined(unsupported)) throw jqLiteMinErr('onargs', 'jqLite#on() does not support the `selector` or `eventData` parameters'); + + // Do not add event handlers to non-elements because they will not be cleaned up. + if (!jqLiteAcceptsData(element)) { + return; + } + + var expandoStore = jqLiteExpandoStore(element, true); + var events = expandoStore.events; + var handle = expandoStore.handle; + + if (!handle) { + handle = expandoStore.handle = createEventHandler(element, events); + } + + // http://jsperf.com/string-indexof-vs-split + var types = type.indexOf(' ') >= 0 ? type.split(' ') : [type]; + var i = types.length; + + var addHandler = function(type, specialHandlerWrapper, noEventListener) { + var eventFns = events[type]; + + if (!eventFns) { + eventFns = events[type] = []; + eventFns.specialHandlerWrapper = specialHandlerWrapper; + if (type !== '$destroy' && !noEventListener) { + addEventListenerFn(element, type, handle); + } + } + + eventFns.push(fn); + }; + + while (i--) { + type = types[i]; + if (MOUSE_EVENT_MAP[type]) { + addHandler(MOUSE_EVENT_MAP[type], specialMouseHandlerWrapper); + addHandler(type, undefined, true); + } else { + addHandler(type); + } + } + }, + + off: jqLiteOff, + + one: function(element, type, fn) { + element = jqLite(element); + + //add the listener twice so that when it is called + //you can remove the original function and still be + //able to call element.off(ev, fn) normally + element.on(type, function onFn() { + element.off(type, fn); + element.off(type, onFn); + }); + element.on(type, fn); + }, + + replaceWith: function(element, replaceNode) { + var index, parent = element.parentNode; + jqLiteDealoc(element); + forEach(new JQLite(replaceNode), function(node) { + if (index) { + parent.insertBefore(node, index.nextSibling); + } else { + parent.replaceChild(node, element); + } + index = node; + }); + }, + + children: function(element) { + var children = []; + forEach(element.childNodes, function(element) { + if (element.nodeType === NODE_TYPE_ELEMENT) { + children.push(element); + } + }); + return children; + }, + + contents: function(element) { + return element.contentDocument || element.childNodes || []; + }, + + append: function(element, node) { + var nodeType = element.nodeType; + if (nodeType !== NODE_TYPE_ELEMENT && nodeType !== NODE_TYPE_DOCUMENT_FRAGMENT) return; + + node = new JQLite(node); + + for (var i = 0, ii = node.length; i < ii; i++) { + var child = node[i]; + element.appendChild(child); + } + }, + + prepend: function(element, node) { + if (element.nodeType === NODE_TYPE_ELEMENT) { + var index = element.firstChild; + forEach(new JQLite(node), function(child) { + element.insertBefore(child, index); + }); + } + }, + + wrap: function(element, wrapNode) { + jqLiteWrapNode(element, jqLite(wrapNode).eq(0).clone()[0]); + }, + + remove: jqLiteRemove, + + detach: function(element) { + jqLiteRemove(element, true); + }, + + after: function(element, newElement) { + var index = element, parent = element.parentNode; + newElement = new JQLite(newElement); + + for (var i = 0, ii = newElement.length; i < ii; i++) { + var node = newElement[i]; + parent.insertBefore(node, index.nextSibling); + index = node; + } + }, + + addClass: jqLiteAddClass, + removeClass: jqLiteRemoveClass, + + toggleClass: function(element, selector, condition) { + if (selector) { + forEach(selector.split(' '), function(className) { + var classCondition = condition; + if (isUndefined(classCondition)) { + classCondition = !jqLiteHasClass(element, className); + } + (classCondition ? jqLiteAddClass : jqLiteRemoveClass)(element, className); + }); + } + }, + + parent: function(element) { + var parent = element.parentNode; + return parent && parent.nodeType !== NODE_TYPE_DOCUMENT_FRAGMENT ? parent : null; + }, + + next: function(element) { + return element.nextElementSibling; + }, + + find: function(element, selector) { + if (element.getElementsByTagName) { + return element.getElementsByTagName(selector); + } else { + return []; + } + }, + + clone: jqLiteClone, + + triggerHandler: function(element, event, extraParameters) { + + var dummyEvent, eventFnsCopy, handlerArgs; + var eventName = event.type || event; + var expandoStore = jqLiteExpandoStore(element); + var events = expandoStore && expandoStore.events; + var eventFns = events && events[eventName]; + + if (eventFns) { + // Create a dummy event to pass to the handlers + dummyEvent = { + preventDefault: function() { this.defaultPrevented = true; }, + isDefaultPrevented: function() { return this.defaultPrevented === true; }, + stopImmediatePropagation: function() { this.immediatePropagationStopped = true; }, + isImmediatePropagationStopped: function() { return this.immediatePropagationStopped === true; }, + stopPropagation: noop, + type: eventName, + target: element + }; + + // If a custom event was provided then extend our dummy event with it + if (event.type) { + dummyEvent = extend(dummyEvent, event); + } + + // Copy event handlers in case event handlers array is modified during execution. + eventFnsCopy = shallowCopy(eventFns); + handlerArgs = extraParameters ? [dummyEvent].concat(extraParameters) : [dummyEvent]; + + forEach(eventFnsCopy, function(fn) { + if (!dummyEvent.isImmediatePropagationStopped()) { + fn.apply(element, handlerArgs); + } + }); + } + } +}, function(fn, name) { + /** + * chaining functions + */ + JQLite.prototype[name] = function(arg1, arg2, arg3) { + var value; + + for (var i = 0, ii = this.length; i < ii; i++) { + if (isUndefined(value)) { + value = fn(this[i], arg1, arg2, arg3); + if (isDefined(value)) { + // any function which returns a value needs to be wrapped + value = jqLite(value); + } + } else { + jqLiteAddNodes(value, fn(this[i], arg1, arg2, arg3)); + } + } + return isDefined(value) ? value : this; + }; + + // bind legacy bind/unbind to on/off + JQLite.prototype.bind = JQLite.prototype.on; + JQLite.prototype.unbind = JQLite.prototype.off; +}); + + +// Provider for private $$jqLite service +function $$jqLiteProvider() { + this.$get = function $$jqLite() { + return extend(JQLite, { + hasClass: function(node, classes) { + if (node.attr) node = node[0]; + return jqLiteHasClass(node, classes); + }, + addClass: function(node, classes) { + if (node.attr) node = node[0]; + return jqLiteAddClass(node, classes); + }, + removeClass: function(node, classes) { + if (node.attr) node = node[0]; + return jqLiteRemoveClass(node, classes); + } + }); + }; +} + +/** + * Computes a hash of an 'obj'. + * Hash of a: + * string is string + * number is number as string + * object is either result of calling $$hashKey function on the object or uniquely generated id, + * that is also assigned to the $$hashKey property of the object. + * + * @param obj + * @returns {string} hash string such that the same input will have the same hash string. + * The resulting string key is in 'type:hashKey' format. + */ +function hashKey(obj, nextUidFn) { + var key = obj && obj.$$hashKey; + + if (key) { + if (typeof key === 'function') { + key = obj.$$hashKey(); + } + return key; + } + + var objType = typeof obj; + if (objType == 'function' || (objType == 'object' && obj !== null)) { + key = obj.$$hashKey = objType + ':' + (nextUidFn || nextUid)(); + } else { + key = objType + ':' + obj; + } + + return key; +} + +/** + * HashMap which can use objects as keys + */ +function HashMap(array, isolatedUid) { + if (isolatedUid) { + var uid = 0; + this.nextUid = function() { + return ++uid; + }; + } + forEach(array, this.put, this); +} +HashMap.prototype = { + /** + * Store key value pair + * @param key key to store can be any type + * @param value value to store can be any type + */ + put: function(key, value) { + this[hashKey(key, this.nextUid)] = value; + }, + + /** + * @param key + * @returns {Object} the value for the key + */ + get: function(key) { + return this[hashKey(key, this.nextUid)]; + }, + + /** + * Remove the key/value pair + * @param key + */ + remove: function(key) { + var value = this[key = hashKey(key, this.nextUid)]; + delete this[key]; + return value; + } +}; + +var $$HashMapProvider = [function() { + this.$get = [function() { + return HashMap; + }]; +}]; + +/** + * @ngdoc function + * @module ng + * @name angular.injector + * @kind function + * + * @description + * Creates an injector object that can be used for retrieving services as well as for + * dependency injection (see {@link guide/di dependency injection}). + * + * @param {Array.} modules A list of module functions or their aliases. See + * {@link angular.module}. The `ng` module must be explicitly added. + * @param {boolean=} [strictDi=false] Whether the injector should be in strict mode, which + * disallows argument name annotation inference. + * @returns {injector} Injector object. See {@link auto.$injector $injector}. + * + * @example + * Typical usage + * ```js + * // create an injector + * var $injector = angular.injector(['ng']); + * + * // use the injector to kick off your application + * // use the type inference to auto inject arguments, or use implicit injection + * $injector.invoke(function($rootScope, $compile, $document) { + * $compile($document)($rootScope); + * $rootScope.$digest(); + * }); + * ``` + * + * Sometimes you want to get access to the injector of a currently running Angular app + * from outside Angular. Perhaps, you want to inject and compile some markup after the + * application has been bootstrapped. You can do this using the extra `injector()` added + * to JQuery/jqLite elements. See {@link angular.element}. + * + * *This is fairly rare but could be the case if a third party library is injecting the + * markup.* + * + * In the following example a new block of HTML containing a `ng-controller` + * directive is added to the end of the document body by JQuery. We then compile and link + * it into the current AngularJS scope. + * + * ```js + * var $div = $('
    {{content.label}}
    '); + * $(document.body).append($div); + * + * angular.element(document).injector().invoke(function($compile) { + * var scope = angular.element($div).scope(); + * $compile($div)(scope); + * }); + * ``` + */ + + +/** + * @ngdoc module + * @name auto + * @description + * + * Implicit module which gets automatically added to each {@link auto.$injector $injector}. + */ + +var ARROW_ARG = /^([^\(]+?)=>/; +var FN_ARGS = /^[^\(]*\(\s*([^\)]*)\)/m; +var FN_ARG_SPLIT = /,/; +var FN_ARG = /^\s*(_?)(\S+?)\1\s*$/; +var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg; +var $injectorMinErr = minErr('$injector'); + +function extractArgs(fn) { + var fnText = fn.toString().replace(STRIP_COMMENTS, ''), + args = fnText.match(ARROW_ARG) || fnText.match(FN_ARGS); + return args; +} + +function anonFn(fn) { + // For anonymous functions, showing at the very least the function signature can help in + // debugging. + var args = extractArgs(fn); + if (args) { + return 'function(' + (args[1] || '').replace(/[\s\r\n]+/, ' ') + ')'; + } + return 'fn'; +} + +function annotate(fn, strictDi, name) { + var $inject, + argDecl, + last; + + if (typeof fn === 'function') { + if (!($inject = fn.$inject)) { + $inject = []; + if (fn.length) { + if (strictDi) { + if (!isString(name) || !name) { + name = fn.name || anonFn(fn); + } + throw $injectorMinErr('strictdi', + '{0} is not using explicit annotation and cannot be invoked in strict mode', name); + } + argDecl = extractArgs(fn); + forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg) { + arg.replace(FN_ARG, function(all, underscore, name) { + $inject.push(name); + }); + }); + } + fn.$inject = $inject; + } + } else if (isArray(fn)) { + last = fn.length - 1; + assertArgFn(fn[last], 'fn'); + $inject = fn.slice(0, last); + } else { + assertArgFn(fn, 'fn', true); + } + return $inject; +} + +/////////////////////////////////////// + +/** + * @ngdoc service + * @name $injector + * + * @description + * + * `$injector` is used to retrieve object instances as defined by + * {@link auto.$provide provider}, instantiate types, invoke methods, + * and load modules. + * + * The following always holds true: + * + * ```js + * var $injector = angular.injector(); + * expect($injector.get('$injector')).toBe($injector); + * expect($injector.invoke(function($injector) { + * return $injector; + * })).toBe($injector); + * ``` + * + * # Injection Function Annotation + * + * JavaScript does not have annotations, and annotations are needed for dependency injection. The + * following are all valid ways of annotating function with injection arguments and are equivalent. + * + * ```js + * // inferred (only works if code not minified/obfuscated) + * $injector.invoke(function(serviceA){}); + * + * // annotated + * function explicit(serviceA) {}; + * explicit.$inject = ['serviceA']; + * $injector.invoke(explicit); + * + * // inline + * $injector.invoke(['serviceA', function(serviceA){}]); + * ``` + * + * ## Inference + * + * In JavaScript calling `toString()` on a function returns the function definition. The definition + * can then be parsed and the function arguments can be extracted. This method of discovering + * annotations is disallowed when the injector is in strict mode. + * *NOTE:* This does not work with minification, and obfuscation tools since these tools change the + * argument names. + * + * ## `$inject` Annotation + * By adding an `$inject` property onto a function the injection parameters can be specified. + * + * ## Inline + * As an array of injection names, where the last item in the array is the function to call. + */ + +/** + * @ngdoc method + * @name $injector#get + * + * @description + * Return an instance of the service. + * + * @param {string} name The name of the instance to retrieve. + * @param {string=} caller An optional string to provide the origin of the function call for error messages. + * @return {*} The instance. + */ + +/** + * @ngdoc method + * @name $injector#invoke + * + * @description + * Invoke the method and supply the method arguments from the `$injector`. + * + * @param {Function|Array.} fn The injectable function to invoke. Function parameters are + * injected according to the {@link guide/di $inject Annotation} rules. + * @param {Object=} self The `this` for the invoked method. + * @param {Object=} locals Optional object. If preset then any argument names are read from this + * object first, before the `$injector` is consulted. + * @returns {*} the value returned by the invoked `fn` function. + */ + +/** + * @ngdoc method + * @name $injector#has + * + * @description + * Allows the user to query if the particular service exists. + * + * @param {string} name Name of the service to query. + * @returns {boolean} `true` if injector has given service. + */ + +/** + * @ngdoc method + * @name $injector#instantiate + * @description + * Create a new instance of JS type. The method takes a constructor function, invokes the new + * operator, and supplies all of the arguments to the constructor function as specified by the + * constructor annotation. + * + * @param {Function} Type Annotated constructor function. + * @param {Object=} locals Optional object. If preset then any argument names are read from this + * object first, before the `$injector` is consulted. + * @returns {Object} new instance of `Type`. + */ + +/** + * @ngdoc method + * @name $injector#annotate + * + * @description + * Returns an array of service names which the function is requesting for injection. This API is + * used by the injector to determine which services need to be injected into the function when the + * function is invoked. There are three ways in which the function can be annotated with the needed + * dependencies. + * + * # Argument names + * + * The simplest form is to extract the dependencies from the arguments of the function. This is done + * by converting the function into a string using `toString()` method and extracting the argument + * names. + * ```js + * // Given + * function MyController($scope, $route) { + * // ... + * } + * + * // Then + * expect(injector.annotate(MyController)).toEqual(['$scope', '$route']); + * ``` + * + * You can disallow this method by using strict injection mode. + * + * This method does not work with code minification / obfuscation. For this reason the following + * annotation strategies are supported. + * + * # The `$inject` property + * + * If a function has an `$inject` property and its value is an array of strings, then the strings + * represent names of services to be injected into the function. + * ```js + * // Given + * var MyController = function(obfuscatedScope, obfuscatedRoute) { + * // ... + * } + * // Define function dependencies + * MyController['$inject'] = ['$scope', '$route']; + * + * // Then + * expect(injector.annotate(MyController)).toEqual(['$scope', '$route']); + * ``` + * + * # The array notation + * + * It is often desirable to inline Injected functions and that's when setting the `$inject` property + * is very inconvenient. In these situations using the array notation to specify the dependencies in + * a way that survives minification is a better choice: + * + * ```js + * // We wish to write this (not minification / obfuscation safe) + * injector.invoke(function($compile, $rootScope) { + * // ... + * }); + * + * // We are forced to write break inlining + * var tmpFn = function(obfuscatedCompile, obfuscatedRootScope) { + * // ... + * }; + * tmpFn.$inject = ['$compile', '$rootScope']; + * injector.invoke(tmpFn); + * + * // To better support inline function the inline annotation is supported + * injector.invoke(['$compile', '$rootScope', function(obfCompile, obfRootScope) { + * // ... + * }]); + * + * // Therefore + * expect(injector.annotate( + * ['$compile', '$rootScope', function(obfus_$compile, obfus_$rootScope) {}]) + * ).toEqual(['$compile', '$rootScope']); + * ``` + * + * @param {Function|Array.} fn Function for which dependent service names need to + * be retrieved as described above. + * + * @param {boolean=} [strictDi=false] Disallow argument name annotation inference. + * + * @returns {Array.} The names of the services which the function requires. + */ + + + + +/** + * @ngdoc service + * @name $provide + * + * @description + * + * The {@link auto.$provide $provide} service has a number of methods for registering components + * with the {@link auto.$injector $injector}. Many of these functions are also exposed on + * {@link angular.Module}. + * + * An Angular **service** is a singleton object created by a **service factory**. These **service + * factories** are functions which, in turn, are created by a **service provider**. + * The **service providers** are constructor functions. When instantiated they must contain a + * property called `$get`, which holds the **service factory** function. + * + * When you request a service, the {@link auto.$injector $injector} is responsible for finding the + * correct **service provider**, instantiating it and then calling its `$get` **service factory** + * function to get the instance of the **service**. + * + * Often services have no configuration options and there is no need to add methods to the service + * provider. The provider will be no more than a constructor function with a `$get` property. For + * these cases the {@link auto.$provide $provide} service has additional helper methods to register + * services without specifying a provider. + * + * * {@link auto.$provide#provider provider(provider)} - registers a **service provider** with the + * {@link auto.$injector $injector} + * * {@link auto.$provide#constant constant(obj)} - registers a value/object that can be accessed by + * providers and services. + * * {@link auto.$provide#value value(obj)} - registers a value/object that can only be accessed by + * services, not providers. + * * {@link auto.$provide#factory factory(fn)} - registers a service **factory function**, `fn`, + * that will be wrapped in a **service provider** object, whose `$get` property will contain the + * given factory function. + * * {@link auto.$provide#service service(class)} - registers a **constructor function**, `class` + * that will be wrapped in a **service provider** object, whose `$get` property will instantiate + * a new object using the given constructor function. + * + * See the individual methods for more information and examples. + */ + +/** + * @ngdoc method + * @name $provide#provider + * @description + * + * Register a **provider function** with the {@link auto.$injector $injector}. Provider functions + * are constructor functions, whose instances are responsible for "providing" a factory for a + * service. + * + * Service provider names start with the name of the service they provide followed by `Provider`. + * For example, the {@link ng.$log $log} service has a provider called + * {@link ng.$logProvider $logProvider}. + * + * Service provider objects can have additional methods which allow configuration of the provider + * and its service. Importantly, you can configure what kind of service is created by the `$get` + * method, or how that service will act. For example, the {@link ng.$logProvider $logProvider} has a + * method {@link ng.$logProvider#debugEnabled debugEnabled} + * which lets you specify whether the {@link ng.$log $log} service will log debug messages to the + * console or not. + * + * @param {string} name The name of the instance. NOTE: the provider will be available under `name + + 'Provider'` key. + * @param {(Object|function())} provider If the provider is: + * + * - `Object`: then it should have a `$get` method. The `$get` method will be invoked using + * {@link auto.$injector#invoke $injector.invoke()} when an instance needs to be created. + * - `Constructor`: a new instance of the provider will be created using + * {@link auto.$injector#instantiate $injector.instantiate()}, then treated as `object`. + * + * @returns {Object} registered provider instance + + * @example + * + * The following example shows how to create a simple event tracking service and register it using + * {@link auto.$provide#provider $provide.provider()}. + * + * ```js + * // Define the eventTracker provider + * function EventTrackerProvider() { + * var trackingUrl = '/track'; + * + * // A provider method for configuring where the tracked events should been saved + * this.setTrackingUrl = function(url) { + * trackingUrl = url; + * }; + * + * // The service factory function + * this.$get = ['$http', function($http) { + * var trackedEvents = {}; + * return { + * // Call this to track an event + * event: function(event) { + * var count = trackedEvents[event] || 0; + * count += 1; + * trackedEvents[event] = count; + * return count; + * }, + * // Call this to save the tracked events to the trackingUrl + * save: function() { + * $http.post(trackingUrl, trackedEvents); + * } + * }; + * }]; + * } + * + * describe('eventTracker', function() { + * var postSpy; + * + * beforeEach(module(function($provide) { + * // Register the eventTracker provider + * $provide.provider('eventTracker', EventTrackerProvider); + * })); + * + * beforeEach(module(function(eventTrackerProvider) { + * // Configure eventTracker provider + * eventTrackerProvider.setTrackingUrl('/custom-track'); + * })); + * + * it('tracks events', inject(function(eventTracker) { + * expect(eventTracker.event('login')).toEqual(1); + * expect(eventTracker.event('login')).toEqual(2); + * })); + * + * it('saves to the tracking url', inject(function(eventTracker, $http) { + * postSpy = spyOn($http, 'post'); + * eventTracker.event('login'); + * eventTracker.save(); + * expect(postSpy).toHaveBeenCalled(); + * expect(postSpy.mostRecentCall.args[0]).not.toEqual('/track'); + * expect(postSpy.mostRecentCall.args[0]).toEqual('/custom-track'); + * expect(postSpy.mostRecentCall.args[1]).toEqual({ 'login': 1 }); + * })); + * }); + * ``` + */ + +/** + * @ngdoc method + * @name $provide#factory + * @description + * + * Register a **service factory**, which will be called to return the service instance. + * This is short for registering a service where its provider consists of only a `$get` property, + * which is the given service factory function. + * You should use {@link auto.$provide#factory $provide.factory(getFn)} if you do not need to + * configure your service in a provider. + * + * @param {string} name The name of the instance. + * @param {Function|Array.} $getFn The injectable $getFn for the instance creation. + * Internally this is a short hand for `$provide.provider(name, {$get: $getFn})`. + * @returns {Object} registered provider instance + * + * @example + * Here is an example of registering a service + * ```js + * $provide.factory('ping', ['$http', function($http) { + * return function ping() { + * return $http.send('/ping'); + * }; + * }]); + * ``` + * You would then inject and use this service like this: + * ```js + * someModule.controller('Ctrl', ['ping', function(ping) { + * ping(); + * }]); + * ``` + */ + + +/** + * @ngdoc method + * @name $provide#service + * @description + * + * Register a **service constructor**, which will be invoked with `new` to create the service + * instance. + * This is short for registering a service where its provider's `$get` property is a factory + * function that returns an instance instantiated by the injector from the service constructor + * function. + * + * Internally it looks a bit like this: + * + * ``` + * { + * $get: function() { + * return $injector.instantiate(constructor); + * } + * } + * ``` + * + * + * You should use {@link auto.$provide#service $provide.service(class)} if you define your service + * as a type/class. + * + * @param {string} name The name of the instance. + * @param {Function|Array.} constructor An injectable class (constructor function) + * that will be instantiated. + * @returns {Object} registered provider instance + * + * @example + * Here is an example of registering a service using + * {@link auto.$provide#service $provide.service(class)}. + * ```js + * var Ping = function($http) { + * this.$http = $http; + * }; + * + * Ping.$inject = ['$http']; + * + * Ping.prototype.send = function() { + * return this.$http.get('/ping'); + * }; + * $provide.service('ping', Ping); + * ``` + * You would then inject and use this service like this: + * ```js + * someModule.controller('Ctrl', ['ping', function(ping) { + * ping.send(); + * }]); + * ``` + */ + + +/** + * @ngdoc method + * @name $provide#value + * @description + * + * Register a **value service** with the {@link auto.$injector $injector}, such as a string, a + * number, an array, an object or a function. This is short for registering a service where its + * provider's `$get` property is a factory function that takes no arguments and returns the **value + * service**. That also means it is not possible to inject other services into a value service. + * + * Value services are similar to constant services, except that they cannot be injected into a + * module configuration function (see {@link angular.Module#config}) but they can be overridden by + * an Angular {@link auto.$provide#decorator decorator}. + * + * @param {string} name The name of the instance. + * @param {*} value The value. + * @returns {Object} registered provider instance + * + * @example + * Here are some examples of creating value services. + * ```js + * $provide.value('ADMIN_USER', 'admin'); + * + * $provide.value('RoleLookup', { admin: 0, writer: 1, reader: 2 }); + * + * $provide.value('halfOf', function(value) { + * return value / 2; + * }); + * ``` + */ + + +/** + * @ngdoc method + * @name $provide#constant + * @description + * + * Register a **constant service** with the {@link auto.$injector $injector}, such as a string, + * a number, an array, an object or a function. Like the {@link auto.$provide#value value}, it is not + * possible to inject other services into a constant. + * + * But unlike {@link auto.$provide#value value}, a constant can be + * injected into a module configuration function (see {@link angular.Module#config}) and it cannot + * be overridden by an Angular {@link auto.$provide#decorator decorator}. + * + * @param {string} name The name of the constant. + * @param {*} value The constant value. + * @returns {Object} registered instance + * + * @example + * Here a some examples of creating constants: + * ```js + * $provide.constant('SHARD_HEIGHT', 306); + * + * $provide.constant('MY_COLOURS', ['red', 'blue', 'grey']); + * + * $provide.constant('double', function(value) { + * return value * 2; + * }); + * ``` + */ + + +/** + * @ngdoc method + * @name $provide#decorator + * @description + * + * Register a **service decorator** with the {@link auto.$injector $injector}. A service decorator + * intercepts the creation of a service, allowing it to override or modify the behavior of the + * service. The object returned by the decorator may be the original service, or a new service + * object which replaces or wraps and delegates to the original service. + * + * @param {string} name The name of the service to decorate. + * @param {Function|Array.} decorator This function will be invoked when the service needs to be + * instantiated and should return the decorated service instance. The function is called using + * the {@link auto.$injector#invoke injector.invoke} method and is therefore fully injectable. + * Local injection arguments: + * + * * `$delegate` - The original service instance, which can be monkey patched, configured, + * decorated or delegated to. + * + * @example + * Here we decorate the {@link ng.$log $log} service to convert warnings to errors by intercepting + * calls to {@link ng.$log#error $log.warn()}. + * ```js + * $provide.decorator('$log', ['$delegate', function($delegate) { + * $delegate.warn = $delegate.error; + * return $delegate; + * }]); + * ``` + */ + + +function createInjector(modulesToLoad, strictDi) { + strictDi = (strictDi === true); + var INSTANTIATING = {}, + providerSuffix = 'Provider', + path = [], + loadedModules = new HashMap([], true), + providerCache = { + $provide: { + provider: supportObject(provider), + factory: supportObject(factory), + service: supportObject(service), + value: supportObject(value), + constant: supportObject(constant), + decorator: decorator + } + }, + providerInjector = (providerCache.$injector = + createInternalInjector(providerCache, function(serviceName, caller) { + if (angular.isString(caller)) { + path.push(caller); + } + throw $injectorMinErr('unpr', "Unknown provider: {0}", path.join(' <- ')); + })), + instanceCache = {}, + protoInstanceInjector = + createInternalInjector(instanceCache, function(serviceName, caller) { + var provider = providerInjector.get(serviceName + providerSuffix, caller); + return instanceInjector.invoke( + provider.$get, provider, undefined, serviceName); + }), + instanceInjector = protoInstanceInjector; + + providerCache['$injector' + providerSuffix] = { $get: valueFn(protoInstanceInjector) }; + var runBlocks = loadModules(modulesToLoad); + instanceInjector = protoInstanceInjector.get('$injector'); + instanceInjector.strictDi = strictDi; + forEach(runBlocks, function(fn) { if (fn) instanceInjector.invoke(fn); }); + + return instanceInjector; + + //////////////////////////////////// + // $provider + //////////////////////////////////// + + function supportObject(delegate) { + return function(key, value) { + if (isObject(key)) { + forEach(key, reverseParams(delegate)); + } else { + return delegate(key, value); + } + }; + } + + function provider(name, provider_) { + assertNotHasOwnProperty(name, 'service'); + if (isFunction(provider_) || isArray(provider_)) { + provider_ = providerInjector.instantiate(provider_); + } + if (!provider_.$get) { + throw $injectorMinErr('pget', "Provider '{0}' must define $get factory method.", name); + } + return providerCache[name + providerSuffix] = provider_; + } + + function enforceReturnValue(name, factory) { + return function enforcedReturnValue() { + var result = instanceInjector.invoke(factory, this); + if (isUndefined(result)) { + throw $injectorMinErr('undef', "Provider '{0}' must return a value from $get factory method.", name); + } + return result; + }; + } + + function factory(name, factoryFn, enforce) { + return provider(name, { + $get: enforce !== false ? enforceReturnValue(name, factoryFn) : factoryFn + }); + } + + function service(name, constructor) { + return factory(name, ['$injector', function($injector) { + return $injector.instantiate(constructor); + }]); + } + + function value(name, val) { return factory(name, valueFn(val), false); } + + function constant(name, value) { + assertNotHasOwnProperty(name, 'constant'); + providerCache[name] = value; + instanceCache[name] = value; + } + + function decorator(serviceName, decorFn) { + var origProvider = providerInjector.get(serviceName + providerSuffix), + orig$get = origProvider.$get; + + origProvider.$get = function() { + var origInstance = instanceInjector.invoke(orig$get, origProvider); + return instanceInjector.invoke(decorFn, null, {$delegate: origInstance}); + }; + } + + //////////////////////////////////// + // Module Loading + //////////////////////////////////// + function loadModules(modulesToLoad) { + assertArg(isUndefined(modulesToLoad) || isArray(modulesToLoad), 'modulesToLoad', 'not an array'); + var runBlocks = [], moduleFn; + forEach(modulesToLoad, function(module) { + if (loadedModules.get(module)) return; + loadedModules.put(module, true); + + function runInvokeQueue(queue) { + var i, ii; + for (i = 0, ii = queue.length; i < ii; i++) { + var invokeArgs = queue[i], + provider = providerInjector.get(invokeArgs[0]); + + provider[invokeArgs[1]].apply(provider, invokeArgs[2]); + } + } + + try { + if (isString(module)) { + moduleFn = angularModule(module); + runBlocks = runBlocks.concat(loadModules(moduleFn.requires)).concat(moduleFn._runBlocks); + runInvokeQueue(moduleFn._invokeQueue); + runInvokeQueue(moduleFn._configBlocks); + } else if (isFunction(module)) { + runBlocks.push(providerInjector.invoke(module)); + } else if (isArray(module)) { + runBlocks.push(providerInjector.invoke(module)); + } else { + assertArgFn(module, 'module'); + } + } catch (e) { + if (isArray(module)) { + module = module[module.length - 1]; + } + if (e.message && e.stack && e.stack.indexOf(e.message) == -1) { + // Safari & FF's stack traces don't contain error.message content + // unlike those of Chrome and IE + // So if stack doesn't contain message, we create a new string that contains both. + // Since error.stack is read-only in Safari, I'm overriding e and not e.stack here. + /* jshint -W022 */ + e = e.message + '\n' + e.stack; + } + throw $injectorMinErr('modulerr', "Failed to instantiate module {0} due to:\n{1}", + module, e.stack || e.message || e); + } + }); + return runBlocks; + } + + //////////////////////////////////// + // internal Injector + //////////////////////////////////// + + function createInternalInjector(cache, factory) { + + function getService(serviceName, caller) { + if (cache.hasOwnProperty(serviceName)) { + if (cache[serviceName] === INSTANTIATING) { + throw $injectorMinErr('cdep', 'Circular dependency found: {0}', + serviceName + ' <- ' + path.join(' <- ')); + } + return cache[serviceName]; + } else { + try { + path.unshift(serviceName); + cache[serviceName] = INSTANTIATING; + return cache[serviceName] = factory(serviceName, caller); + } catch (err) { + if (cache[serviceName] === INSTANTIATING) { + delete cache[serviceName]; + } + throw err; + } finally { + path.shift(); + } + } + } + + + function injectionArgs(fn, locals, serviceName) { + var args = [], + $inject = createInjector.$$annotate(fn, strictDi, serviceName); + + for (var i = 0, length = $inject.length; i < length; i++) { + var key = $inject[i]; + if (typeof key !== 'string') { + throw $injectorMinErr('itkn', + 'Incorrect injection token! Expected service name as string, got {0}', key); + } + args.push(locals && locals.hasOwnProperty(key) ? locals[key] : + getService(key, serviceName)); + } + return args; + } + + function isClass(func) { + // IE 9-11 do not support classes and IE9 leaks with the code below. + if (msie <= 11) { + return false; + } + // Workaround for MS Edge. + // Check https://connect.microsoft.com/IE/Feedback/Details/2211653 + return typeof func === 'function' + && /^(?:class\s|constructor\()/.test(Function.prototype.toString.call(func)); + } + + function invoke(fn, self, locals, serviceName) { + if (typeof locals === 'string') { + serviceName = locals; + locals = null; + } + + var args = injectionArgs(fn, locals, serviceName); + if (isArray(fn)) { + fn = fn[fn.length - 1]; + } + + if (!isClass(fn)) { + // http://jsperf.com/angularjs-invoke-apply-vs-switch + // #5388 + return fn.apply(self, args); + } else { + args.unshift(null); + return new (Function.prototype.bind.apply(fn, args))(); + } + } + + + function instantiate(Type, locals, serviceName) { + // Check if Type is annotated and use just the given function at n-1 as parameter + // e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]); + var ctor = (isArray(Type) ? Type[Type.length - 1] : Type); + var args = injectionArgs(Type, locals, serviceName); + // Empty object at position 0 is ignored for invocation with `new`, but required. + args.unshift(null); + return new (Function.prototype.bind.apply(ctor, args))(); + } + + + return { + invoke: invoke, + instantiate: instantiate, + get: getService, + annotate: createInjector.$$annotate, + has: function(name) { + return providerCache.hasOwnProperty(name + providerSuffix) || cache.hasOwnProperty(name); + } + }; + } +} + +createInjector.$$annotate = annotate; + +/** + * @ngdoc provider + * @name $anchorScrollProvider + * + * @description + * Use `$anchorScrollProvider` to disable automatic scrolling whenever + * {@link ng.$location#hash $location.hash()} changes. + */ +function $AnchorScrollProvider() { + + var autoScrollingEnabled = true; + + /** + * @ngdoc method + * @name $anchorScrollProvider#disableAutoScrolling + * + * @description + * By default, {@link ng.$anchorScroll $anchorScroll()} will automatically detect changes to + * {@link ng.$location#hash $location.hash()} and scroll to the element matching the new hash.
    + * Use this method to disable automatic scrolling. + * + * If automatic scrolling is disabled, one must explicitly call + * {@link ng.$anchorScroll $anchorScroll()} in order to scroll to the element related to the + * current hash. + */ + this.disableAutoScrolling = function() { + autoScrollingEnabled = false; + }; + + /** + * @ngdoc service + * @name $anchorScroll + * @kind function + * @requires $window + * @requires $location + * @requires $rootScope + * + * @description + * When called, it scrolls to the element related to the specified `hash` or (if omitted) to the + * current value of {@link ng.$location#hash $location.hash()}, according to the rules specified + * in the + * [HTML5 spec](http://www.w3.org/html/wg/drafts/html/master/browsers.html#the-indicated-part-of-the-document). + * + * It also watches the {@link ng.$location#hash $location.hash()} and automatically scrolls to + * match any anchor whenever it changes. This can be disabled by calling + * {@link ng.$anchorScrollProvider#disableAutoScrolling $anchorScrollProvider.disableAutoScrolling()}. + * + * Additionally, you can use its {@link ng.$anchorScroll#yOffset yOffset} property to specify a + * vertical scroll-offset (either fixed or dynamic). + * + * @param {string=} hash The hash specifying the element to scroll to. If omitted, the value of + * {@link ng.$location#hash $location.hash()} will be used. + * + * @property {(number|function|jqLite)} yOffset + * If set, specifies a vertical scroll-offset. This is often useful when there are fixed + * positioned elements at the top of the page, such as navbars, headers etc. + * + * `yOffset` can be specified in various ways: + * - **number**: A fixed number of pixels to be used as offset.

    + * - **function**: A getter function called everytime `$anchorScroll()` is executed. Must return + * a number representing the offset (in pixels).

    + * - **jqLite**: A jqLite/jQuery element to be used for specifying the offset. The distance from + * the top of the page to the element's bottom will be used as offset.
    + * **Note**: The element will be taken into account only as long as its `position` is set to + * `fixed`. This option is useful, when dealing with responsive navbars/headers that adjust + * their height and/or positioning according to the viewport's size. + * + *
    + *
    + * In order for `yOffset` to work properly, scrolling should take place on the document's root and + * not some child element. + *
    + * + * @example + + +
    + Go to bottom + You're at the bottom! +
    +
    + + angular.module('anchorScrollExample', []) + .controller('ScrollController', ['$scope', '$location', '$anchorScroll', + function ($scope, $location, $anchorScroll) { + $scope.gotoBottom = function() { + // set the location.hash to the id of + // the element you wish to scroll to. + $location.hash('bottom'); + + // call $anchorScroll() + $anchorScroll(); + }; + }]); + + + #scrollArea { + height: 280px; + overflow: auto; + } + + #bottom { + display: block; + margin-top: 2000px; + } + +
    + * + *
    + * The example below illustrates the use of a vertical scroll-offset (specified as a fixed value). + * See {@link ng.$anchorScroll#yOffset $anchorScroll.yOffset} for more details. + * + * @example + + + +
    + Anchor {{x}} of 5 +
    +
    + + angular.module('anchorScrollOffsetExample', []) + .run(['$anchorScroll', function($anchorScroll) { + $anchorScroll.yOffset = 50; // always scroll by 50 extra pixels + }]) + .controller('headerCtrl', ['$anchorScroll', '$location', '$scope', + function ($anchorScroll, $location, $scope) { + $scope.gotoAnchor = function(x) { + var newHash = 'anchor' + x; + if ($location.hash() !== newHash) { + // set the $location.hash to `newHash` and + // $anchorScroll will automatically scroll to it + $location.hash('anchor' + x); + } else { + // call $anchorScroll() explicitly, + // since $location.hash hasn't changed + $anchorScroll(); + } + }; + } + ]); + + + body { + padding-top: 50px; + } + + .anchor { + border: 2px dashed DarkOrchid; + padding: 10px 10px 200px 10px; + } + + .fixed-header { + background-color: rgba(0, 0, 0, 0.2); + height: 50px; + position: fixed; + top: 0; left: 0; right: 0; + } + + .fixed-header > a { + display: inline-block; + margin: 5px 15px; + } + +
    + */ + this.$get = ['$window', '$location', '$rootScope', function($window, $location, $rootScope) { + var document = $window.document; + + // Helper function to get first anchor from a NodeList + // (using `Array#some()` instead of `angular#forEach()` since it's more performant + // and working in all supported browsers.) + function getFirstAnchor(list) { + var result = null; + Array.prototype.some.call(list, function(element) { + if (nodeName_(element) === 'a') { + result = element; + return true; + } + }); + return result; + } + + function getYOffset() { + + var offset = scroll.yOffset; + + if (isFunction(offset)) { + offset = offset(); + } else if (isElement(offset)) { + var elem = offset[0]; + var style = $window.getComputedStyle(elem); + if (style.position !== 'fixed') { + offset = 0; + } else { + offset = elem.getBoundingClientRect().bottom; + } + } else if (!isNumber(offset)) { + offset = 0; + } + + return offset; + } + + function scrollTo(elem) { + if (elem) { + elem.scrollIntoView(); + + var offset = getYOffset(); + + if (offset) { + // `offset` is the number of pixels we should scroll UP in order to align `elem` properly. + // This is true ONLY if the call to `elem.scrollIntoView()` initially aligns `elem` at the + // top of the viewport. + // + // IF the number of pixels from the top of `elem` to the end of the page's content is less + // than the height of the viewport, then `elem.scrollIntoView()` will align the `elem` some + // way down the page. + // + // This is often the case for elements near the bottom of the page. + // + // In such cases we do not need to scroll the whole `offset` up, just the difference between + // the top of the element and the offset, which is enough to align the top of `elem` at the + // desired position. + var elemTop = elem.getBoundingClientRect().top; + $window.scrollBy(0, elemTop - offset); + } + } else { + $window.scrollTo(0, 0); + } + } + + function scroll(hash) { + hash = isString(hash) ? hash : $location.hash(); + var elm; + + // empty hash, scroll to the top of the page + if (!hash) scrollTo(null); + + // element with given id + else if ((elm = document.getElementById(hash))) scrollTo(elm); + + // first anchor with given name :-D + else if ((elm = getFirstAnchor(document.getElementsByName(hash)))) scrollTo(elm); + + // no element and hash == 'top', scroll to the top of the page + else if (hash === 'top') scrollTo(null); + } + + // does not scroll when user clicks on anchor link that is currently on + // (no url change, no $location.hash() change), browser native does scroll + if (autoScrollingEnabled) { + $rootScope.$watch(function autoScrollWatch() {return $location.hash();}, + function autoScrollWatchAction(newVal, oldVal) { + // skip the initial scroll if $location.hash is empty + if (newVal === oldVal && newVal === '') return; + + jqLiteDocumentLoaded(function() { + $rootScope.$evalAsync(scroll); + }); + }); + } + + return scroll; + }]; +} + +var $animateMinErr = minErr('$animate'); +var ELEMENT_NODE = 1; +var NG_ANIMATE_CLASSNAME = 'ng-animate'; + +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 extractElementNode(element) { + for (var i = 0; i < element.length; i++) { + var elm = element[i]; + if (elm.nodeType === ELEMENT_NODE) { + return elm; + } + } +} + +function splitClasses(classes) { + if (isString(classes)) { + classes = classes.split(' '); + } + + // Use createMap() to prevent class assumptions involving property names in + // Object.prototype + var obj = createMap(); + 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; +} + +// if any other type of options value besides an Object value is +// passed into the $animate.method() animation then this helper code +// will be run which will ignore it. While this patch is not the +// greatest solution to this, a lot of existing plugins depend on +// $animate to either call the callback (< 1.2) or return a promise +// that can be changed. This helper function ensures that the options +// are wiped clean incase a callback function is provided. +function prepareAnimateOptions(options) { + return isObject(options) + ? options + : {}; +} + +var $$CoreAnimateJsProvider = function() { + this.$get = noop; +}; + +// this is prefixed with Core since it conflicts with +// the animateQueueProvider defined in ngAnimate/animateQueue.js +var $$CoreAnimateQueueProvider = function() { + var postDigestQueue = new HashMap(); + var postDigestElements = []; + + this.$get = ['$$AnimateRunner', '$rootScope', + function($$AnimateRunner, $rootScope) { + return { + enabled: noop, + on: noop, + off: noop, + pin: noop, + + push: function(element, event, options, domOperation) { + domOperation && domOperation(); + + options = options || {}; + options.from && element.css(options.from); + options.to && element.css(options.to); + + if (options.addClass || options.removeClass) { + addRemoveClassesPostDigest(element, options.addClass, options.removeClass); + } + + var runner = new $$AnimateRunner(); // jshint ignore:line + + // since there are no animations to run the runner needs to be + // notified that the animation call is complete. + runner.complete(); + return runner; + } + }; + + + function updateData(data, classes, value) { + var changed = false; + if (classes) { + classes = isString(classes) ? classes.split(' ') : + isArray(classes) ? classes : []; + forEach(classes, function(className) { + if (className) { + changed = true; + data[className] = value; + } + }); + } + return changed; + } + + function handleCSSClassChanges() { + forEach(postDigestElements, function(element) { + var data = postDigestQueue.get(element); + if (data) { + var existing = splitClasses(element.attr('class')); + var toAdd = ''; + var toRemove = ''; + forEach(data, function(status, className) { + var hasClass = !!existing[className]; + if (status !== hasClass) { + if (status) { + toAdd += (toAdd.length ? ' ' : '') + className; + } else { + toRemove += (toRemove.length ? ' ' : '') + className; + } + } + }); + + forEach(element, function(elm) { + toAdd && jqLiteAddClass(elm, toAdd); + toRemove && jqLiteRemoveClass(elm, toRemove); + }); + postDigestQueue.remove(element); + } + }); + postDigestElements.length = 0; + } + + + function addRemoveClassesPostDigest(element, add, remove) { + var data = postDigestQueue.get(element) || {}; + + var classesAdded = updateData(data, add, true); + var classesRemoved = updateData(data, remove, false); + + if (classesAdded || classesRemoved) { + + postDigestQueue.put(element, data); + postDigestElements.push(element); + + if (postDigestElements.length === 1) { + $rootScope.$$postDigest(handleCSSClassChanges); + } + } + } + }]; +}; + +/** + * @ngdoc provider + * @name $animateProvider + * + * @description + * Default implementation of $animate that doesn't perform any animations, instead just + * synchronously performs DOM updates and resolves the returned runner promise. + * + * In order to enable animations the `ngAnimate` module has to be loaded. + * + * To see the functional implementation check out `src/ngAnimate/animate.js`. + */ +var $AnimateProvider = ['$provide', function($provide) { + var provider = this; + + this.$$registeredAnimations = Object.create(null); + + /** + * @ngdoc method + * @name $animateProvider#register + * + * @description + * Registers a new injectable animation factory function. The factory function produces the + * animation object which contains callback functions for each event that is expected to be + * animated. + * + * * `eventFn`: `function(element, ... , doneFunction, options)` + * The element to animate, the `doneFunction` and the options fed into the animation. Depending + * on the type of animation additional arguments will be injected into the animation function. The + * list below explains the function signatures for the different animation methods: + * + * - setClass: function(element, addedClasses, removedClasses, doneFunction, options) + * - addClass: function(element, addedClasses, doneFunction, options) + * - removeClass: function(element, removedClasses, doneFunction, options) + * - enter, leave, move: function(element, doneFunction, options) + * - animate: function(element, fromStyles, toStyles, doneFunction, options) + * + * Make sure to trigger the `doneFunction` once the animation is fully complete. + * + * ```js + * return { + * //enter, leave, move signature + * eventFn : function(element, done, options) { + * //code to run the animation + * //once complete, then run done() + * return function endFunction(wasCancelled) { + * //code to cancel the animation + * } + * } + * } + * ``` + * + * @param {string} name The name of the animation (this is what the class-based CSS value will be compared to). + * @param {Function} factory The factory function that will be executed to return the animation + * object. + */ + this.register = function(name, factory) { + if (name && name.charAt(0) !== '.') { + throw $animateMinErr('notcsel', "Expecting class selector starting with '.' got '{0}'.", name); + } + + var key = name + '-animation'; + provider.$$registeredAnimations[name.substr(1)] = key; + $provide.factory(key, factory); + }; + + /** + * @ngdoc method + * @name $animateProvider#classNameFilter + * + * @description + * Sets and/or returns the CSS class regular expression that is checked when performing + * an animation. Upon bootstrap the classNameFilter value is not set at all and will + * therefore enable $animate to attempt to perform an animation on any element that is triggered. + * When setting the `classNameFilter` value, animations will only be performed on elements + * that successfully match the filter expression. This in turn can boost performance + * for low-powered devices as well as applications containing a lot of structural operations. + * @param {RegExp=} expression The className expression which will be checked against all animations + * @return {RegExp} The current CSS className expression value. If null then there is no expression value + */ + this.classNameFilter = function(expression) { + if (arguments.length === 1) { + this.$$classNameFilter = (expression instanceof RegExp) ? expression : null; + if (this.$$classNameFilter) { + var reservedRegex = new RegExp("(\\s+|\\/)" + NG_ANIMATE_CLASSNAME + "(\\s+|\\/)"); + if (reservedRegex.test(this.$$classNameFilter.toString())) { + throw $animateMinErr('nongcls','$animateProvider.classNameFilter(regex) prohibits accepting a regex value which matches/contains the "{0}" CSS class.', NG_ANIMATE_CLASSNAME); + + } + } + } + return this.$$classNameFilter; + }; + + this.$get = ['$$animateQueue', function($$animateQueue) { + function domInsert(element, parentElement, afterElement) { + // if for some reason the previous element was removed + // from the dom sometime before this code runs then let's + // just stick to using the parent element as the anchor + if (afterElement) { + var afterNode = extractElementNode(afterElement); + if (afterNode && !afterNode.parentNode && !afterNode.previousElementSibling) { + afterElement = null; + } + } + afterElement ? afterElement.after(element) : parentElement.prepend(element); + } + + /** + * @ngdoc service + * @name $animate + * @description The $animate service exposes a series of DOM utility methods that provide support + * for animation hooks. The default behavior is the application of DOM operations, however, + * when an animation is detected (and animations are enabled), $animate will do the heavy lifting + * to ensure that animation runs with the triggered DOM operation. + * + * By default $animate doesn't trigger any animations. This is because the `ngAnimate` module isn't + * included and only when it is active then the animation hooks that `$animate` triggers will be + * functional. Once active then all structural `ng-` directives will trigger animations as they perform + * their DOM-related operations (enter, leave and move). Other directives such as `ngClass`, + * `ngShow`, `ngHide` and `ngMessages` also provide support for animations. + * + * It is recommended that the`$animate` service is always used when executing DOM-related procedures within directives. + * + * To learn more about enabling animation support, click here to visit the + * {@link ngAnimate ngAnimate module page}. + */ + return { + // we don't call it directly since non-existant arguments may + // be interpreted as null within the sub enabled function + + /** + * + * @ngdoc method + * @name $animate#on + * @kind function + * @description Sets up an event listener to fire whenever the animation event (enter, leave, move, etc...) + * has fired on the given element or among any of its children. Once the listener is fired, the provided callback + * is fired with the following params: + * + * ```js + * $animate.on('enter', container, + * function callback(element, phase) { + * // cool we detected an enter animation within the container + * } + * ); + * ``` + * + * @param {string} event the animation event that will be captured (e.g. enter, leave, move, addClass, removeClass, etc...) + * @param {DOMElement} container the container element that will capture each of the animation events that are fired on itself + * as well as among its children + * @param {Function} callback the callback function that will be fired when the listener is triggered + * + * The arguments present in the callback function are: + * * `element` - The captured DOM element that the animation was fired on. + * * `phase` - The phase of the animation. The two possible phases are **start** (when the animation starts) and **close** (when it ends). + */ + on: $$animateQueue.on, + + /** + * + * @ngdoc method + * @name $animate#off + * @kind function + * @description Deregisters an event listener based on the event which has been associated with the provided element. This method + * can be used in three different ways depending on the arguments: + * + * ```js + * // remove all the animation event listeners listening for `enter` + * $animate.off('enter'); + * + * // remove all the animation event listeners listening for `enter` on the given element and its children + * $animate.off('enter', container); + * + * // remove the event listener function provided by `callback` that is set + * // to listen for `enter` on the given `container` as well as its children + * $animate.off('enter', container, callback); + * ``` + * + * @param {string} event the animation event (e.g. enter, leave, move, addClass, removeClass, etc...) + * @param {DOMElement=} container the container element the event listener was placed on + * @param {Function=} callback the callback function that was registered as the listener + */ + off: $$animateQueue.off, + + /** + * @ngdoc method + * @name $animate#pin + * @kind function + * @description Associates the provided element with a host parent element to allow the element to be animated even if it exists + * outside of the DOM structure of the Angular application. By doing so, any animation triggered via `$animate` can be issued on the + * element despite being outside the realm of the application or within another application. Say for example if the application + * was bootstrapped on an element that is somewhere inside of the `` tag, but we wanted to allow for an element to be situated + * as a direct child of `document.body`, then this can be achieved by pinning the element via `$animate.pin(element)`. Keep in mind + * that calling `$animate.pin(element, parentElement)` will not actually insert into the DOM anywhere; it will just create the association. + * + * Note that this feature is only active when the `ngAnimate` module is used. + * + * @param {DOMElement} element the external element that will be pinned + * @param {DOMElement} parentElement the host parent element that will be associated with the external element + */ + pin: $$animateQueue.pin, + + /** + * + * @ngdoc method + * @name $animate#enabled + * @kind function + * @description Used to get and set whether animations are enabled or not on the entire application or on an element and its children. This + * function can be called in four ways: + * + * ```js + * // returns true or false + * $animate.enabled(); + * + * // changes the enabled state for all animations + * $animate.enabled(false); + * $animate.enabled(true); + * + * // returns true or false if animations are enabled for an element + * $animate.enabled(element); + * + * // changes the enabled state for an element and its children + * $animate.enabled(element, true); + * $animate.enabled(element, false); + * ``` + * + * @param {DOMElement=} element the element that will be considered for checking/setting the enabled state + * @param {boolean=} enabled whether or not the animations will be enabled for the element + * + * @return {boolean} whether or not animations are enabled + */ + enabled: $$animateQueue.enabled, + + /** + * @ngdoc method + * @name $animate#cancel + * @kind function + * @description Cancels the provided animation. + * + * @param {Promise} animationPromise The animation promise that is returned when an animation is started. + */ + cancel: function(runner) { + runner.end && runner.end(); + }, + + /** + * + * @ngdoc method + * @name $animate#enter + * @kind function + * @description Inserts the element into the DOM either after the `after` element (if provided) or + * as the first child within the `parent` element and then triggers an animation. + * A promise is returned that will be resolved during the next digest once the animation + * has completed. + * + * @param {DOMElement} element the element which will be inserted into the DOM + * @param {DOMElement} parent the parent element which will append the element as + * a child (so long as the after element is not present) + * @param {DOMElement=} after the sibling element after which the element will be appended + * @param {object=} options an optional collection of options/styles that will be applied to the element + * + * @return {Promise} the animation callback promise + */ + enter: function(element, parent, after, options) { + parent = parent && jqLite(parent); + after = after && jqLite(after); + parent = parent || after.parent(); + domInsert(element, parent, after); + return $$animateQueue.push(element, 'enter', prepareAnimateOptions(options)); + }, + + /** + * + * @ngdoc method + * @name $animate#move + * @kind function + * @description Inserts (moves) the element into its new position in the DOM either after + * the `after` element (if provided) or as the first child within the `parent` element + * and then triggers an animation. A promise is returned that will be resolved + * during the next digest once the animation has completed. + * + * @param {DOMElement} element the element which will be moved into the new DOM position + * @param {DOMElement} parent the parent element which will append the element as + * a child (so long as the after element is not present) + * @param {DOMElement=} after the sibling element after which the element will be appended + * @param {object=} options an optional collection of options/styles that will be applied to the element + * + * @return {Promise} the animation callback promise + */ + move: function(element, parent, after, options) { + parent = parent && jqLite(parent); + after = after && jqLite(after); + parent = parent || after.parent(); + domInsert(element, parent, after); + return $$animateQueue.push(element, 'move', prepareAnimateOptions(options)); + }, + + /** + * @ngdoc method + * @name $animate#leave + * @kind function + * @description Triggers an animation and then removes the element from the DOM. + * When the function is called a promise is returned that will be resolved during the next + * digest once the animation has completed. + * + * @param {DOMElement} element the element which will be removed from the DOM + * @param {object=} options an optional collection of options/styles that will be applied to the element + * + * @return {Promise} the animation callback promise + */ + leave: function(element, options) { + return $$animateQueue.push(element, 'leave', prepareAnimateOptions(options), function() { + element.remove(); + }); + }, + + /** + * @ngdoc method + * @name $animate#addClass + * @kind function + * + * @description Triggers an addClass animation surrounding the addition of the provided CSS class(es). Upon + * execution, the addClass operation will only be handled after the next digest and it will not trigger an + * animation if element already contains the CSS class or if the class is removed at a later step. + * Note that class-based animations are treated differently compared to structural animations + * (like enter, move and leave) since the CSS classes may be added/removed at different points + * depending if CSS or JavaScript animations are used. + * + * @param {DOMElement} element the element which the CSS classes will be applied to + * @param {string} className the CSS class(es) that will be added (multiple classes are separated via spaces) + * @param {object=} options an optional collection of options/styles that will be applied to the element + * + * @return {Promise} the animation callback promise + */ + addClass: function(element, className, options) { + options = prepareAnimateOptions(options); + options.addClass = mergeClasses(options.addclass, className); + return $$animateQueue.push(element, 'addClass', options); + }, + + /** + * @ngdoc method + * @name $animate#removeClass + * @kind function + * + * @description Triggers a removeClass animation surrounding the removal of the provided CSS class(es). Upon + * execution, the removeClass operation will only be handled after the next digest and it will not trigger an + * animation if element does not contain the CSS class or if the class is added at a later step. + * Note that class-based animations are treated differently compared to structural animations + * (like enter, move and leave) since the CSS classes may be added/removed at different points + * depending if CSS or JavaScript animations are used. + * + * @param {DOMElement} element the element which the CSS classes will be applied to + * @param {string} className the CSS class(es) that will be removed (multiple classes are separated via spaces) + * @param {object=} options an optional collection of options/styles that will be applied to the element + * + * @return {Promise} the animation callback promise + */ + removeClass: function(element, className, options) { + options = prepareAnimateOptions(options); + options.removeClass = mergeClasses(options.removeClass, className); + return $$animateQueue.push(element, 'removeClass', options); + }, + + /** + * @ngdoc method + * @name $animate#setClass + * @kind function + * + * @description Performs both the addition and removal of a CSS classes on an element and (during the process) + * triggers an animation surrounding the class addition/removal. Much like `$animate.addClass` and + * `$animate.removeClass`, `setClass` will only evaluate the classes being added/removed once a digest has + * passed. Note that class-based animations are treated differently compared to structural animations + * (like enter, move and leave) since the CSS classes may be added/removed at different points + * depending if CSS or JavaScript animations are used. + * + * @param {DOMElement} element the element which the CSS classes will be applied to + * @param {string} add the CSS class(es) that will be added (multiple classes are separated via spaces) + * @param {string} remove the CSS class(es) that will be removed (multiple classes are separated via spaces) + * @param {object=} options an optional collection of options/styles that will be applied to the element + * + * @return {Promise} the animation callback promise + */ + setClass: function(element, add, remove, options) { + options = prepareAnimateOptions(options); + options.addClass = mergeClasses(options.addClass, add); + options.removeClass = mergeClasses(options.removeClass, remove); + return $$animateQueue.push(element, 'setClass', options); + }, + + /** + * @ngdoc method + * @name $animate#animate + * @kind function + * + * @description Performs an inline animation on the element which applies the provided to and from CSS styles to the element. + * If any detected CSS transition, keyframe or JavaScript matches the provided className value, then the animation will take + * on the provided styles. For example, if a transition animation is set for the given classNamem, then the provided `from` and + * `to` styles will be applied alongside the given transition. If the CSS style provided in `from` does not have a corresponding + * style in `to`, the style in `from` is applied immediately, and no animation is run. + * If a JavaScript animation is detected then the provided styles will be given in as function parameters into the `animate` + * method (or as part of the `options` parameter): + * + * ```js + * ngModule.animation('.my-inline-animation', function() { + * return { + * animate : function(element, from, to, done, options) { + * //animation + * done(); + * } + * } + * }); + * ``` + * + * @param {DOMElement} element the element which the CSS styles will be applied to + * @param {object} from the from (starting) CSS styles that will be applied to the element and across the animation. + * @param {object} to the to (destination) CSS styles that will be applied to the element and across the animation. + * @param {string=} className an optional CSS class that will be applied to the element for the duration of the animation. If + * this value is left as empty then a CSS class of `ng-inline-animate` will be applied to the element. + * (Note that if no animation is detected then this value will not be applied to the element.) + * @param {object=} options an optional collection of options/styles that will be applied to the element + * + * @return {Promise} the animation callback promise + */ + animate: function(element, from, to, className, options) { + options = prepareAnimateOptions(options); + options.from = options.from ? extend(options.from, from) : from; + options.to = options.to ? extend(options.to, to) : to; + + className = className || 'ng-inline-animate'; + options.tempClasses = mergeClasses(options.tempClasses, className); + return $$animateQueue.push(element, 'animate', options); + } + }; + }]; +}]; + +var $$AnimateAsyncRunFactoryProvider = function() { + this.$get = ['$$rAF', function($$rAF) { + var waitQueue = []; + + function waitForTick(fn) { + waitQueue.push(fn); + if (waitQueue.length > 1) return; + $$rAF(function() { + for (var i = 0; i < waitQueue.length; i++) { + waitQueue[i](); + } + waitQueue = []; + }); + } + + return function() { + var passed = false; + waitForTick(function() { + passed = true; + }); + return function(callback) { + passed ? callback() : waitForTick(callback); + }; + }; + }]; +}; + +var $$AnimateRunnerFactoryProvider = function() { + this.$get = ['$q', '$sniffer', '$$animateAsyncRun', '$document', '$timeout', + function($q, $sniffer, $$animateAsyncRun, $document, $timeout) { + + var INITIAL_STATE = 0; + var DONE_PENDING_STATE = 1; + var DONE_COMPLETE_STATE = 2; + + AnimateRunner.chain = function(chain, callback) { + var index = 0; + + next(); + function next() { + if (index === chain.length) { + callback(true); + return; + } + + chain[index](function(response) { + if (response === false) { + callback(false); + return; + } + index++; + next(); + }); + } + }; + + AnimateRunner.all = function(runners, callback) { + var count = 0; + var status = true; + forEach(runners, function(runner) { + runner.done(onProgress); + }); + + function onProgress(response) { + status = status && response; + if (++count === runners.length) { + callback(status); + } + } + }; + + function AnimateRunner(host) { + this.setHost(host); + + var rafTick = $$animateAsyncRun(); + var timeoutTick = function(fn) { + $timeout(fn, 0, false); + }; + + this._doneCallbacks = []; + this._tick = function(fn) { + var doc = $document[0]; + + // the document may not be ready or attached + // to the module for some internal tests + if (doc && doc.hidden) { + timeoutTick(fn); + } else { + rafTick(fn); + } + }; + this._state = 0; + } + + AnimateRunner.prototype = { + setHost: function(host) { + this.host = host || {}; + }, + + done: function(fn) { + if (this._state === DONE_COMPLETE_STATE) { + fn(); + } else { + this._doneCallbacks.push(fn); + } + }, + + progress: noop, + + getPromise: function() { + if (!this.promise) { + var self = this; + this.promise = $q(function(resolve, reject) { + self.done(function(status) { + status === false ? reject() : resolve(); + }); + }); + } + return this.promise; + }, + + then: function(resolveHandler, rejectHandler) { + return this.getPromise().then(resolveHandler, rejectHandler); + }, + + 'catch': function(handler) { + return this.getPromise()['catch'](handler); + }, + + 'finally': function(handler) { + return this.getPromise()['finally'](handler); + }, + + pause: function() { + if (this.host.pause) { + this.host.pause(); + } + }, + + resume: function() { + if (this.host.resume) { + this.host.resume(); + } + }, + + end: function() { + if (this.host.end) { + this.host.end(); + } + this._resolve(true); + }, + + cancel: function() { + if (this.host.cancel) { + this.host.cancel(); + } + this._resolve(false); + }, + + complete: function(response) { + var self = this; + if (self._state === INITIAL_STATE) { + self._state = DONE_PENDING_STATE; + self._tick(function() { + self._resolve(response); + }); + } + }, + + _resolve: function(response) { + if (this._state !== DONE_COMPLETE_STATE) { + forEach(this._doneCallbacks, function(fn) { + fn(response); + }); + this._doneCallbacks.length = 0; + this._state = DONE_COMPLETE_STATE; + } + } + }; + + return AnimateRunner; + }]; +}; + +/** + * @ngdoc service + * @name $animateCss + * @kind object + * + * @description + * This is the core version of `$animateCss`. By default, only when the `ngAnimate` is included, + * then the `$animateCss` service will actually perform animations. + * + * Click here {@link ngAnimate.$animateCss to read the documentation for $animateCss}. + */ +var $CoreAnimateCssProvider = function() { + this.$get = ['$$rAF', '$q', '$$AnimateRunner', function($$rAF, $q, $$AnimateRunner) { + + return function(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 = copy(options); + } + + // there is no point in applying the styles since + // there is no animation that goes on at all in + // this version of $animateCss. + if (options.cleanupStyles) { + options.from = options.to = null; + } + + if (options.from) { + element.css(options.from); + options.from = null; + } + + /* jshint newcap: false */ + var closed, runner = new $$AnimateRunner(); + return { + start: run, + end: run + }; + + function run() { + $$rAF(function() { + applyAnimationContents(); + if (!closed) { + runner.complete(); + } + closed = true; + }); + return runner; + } + + function applyAnimationContents() { + if (options.addClass) { + element.addClass(options.addClass); + options.addClass = null; + } + if (options.removeClass) { + element.removeClass(options.removeClass); + options.removeClass = null; + } + if (options.to) { + element.css(options.to); + options.to = null; + } + } + }; + }]; +}; + +/* global stripHash: true */ + +/** + * ! This is a private undocumented service ! + * + * @name $browser + * @requires $log + * @description + * This object has two goals: + * + * - hide all the global state in the browser caused by the window object + * - abstract away all the browser specific features and inconsistencies + * + * For tests we provide {@link ngMock.$browser mock implementation} of the `$browser` + * service, which can be used for convenient testing of the application without the interaction with + * the real browser apis. + */ +/** + * @param {object} window The global window object. + * @param {object} document jQuery wrapped document. + * @param {object} $log window.console or an object with the same interface. + * @param {object} $sniffer $sniffer service + */ +function Browser(window, document, $log, $sniffer) { + var self = this, + location = window.location, + history = window.history, + setTimeout = window.setTimeout, + clearTimeout = window.clearTimeout, + pendingDeferIds = {}; + + self.isMock = false; + + var outstandingRequestCount = 0; + var outstandingRequestCallbacks = []; + + // TODO(vojta): remove this temporary api + self.$$completeOutstandingRequest = completeOutstandingRequest; + self.$$incOutstandingRequestCount = function() { outstandingRequestCount++; }; + + /** + * Executes the `fn` function(supports currying) and decrements the `outstandingRequestCallbacks` + * counter. If the counter reaches 0, all the `outstandingRequestCallbacks` are executed. + */ + function completeOutstandingRequest(fn) { + try { + fn.apply(null, sliceArgs(arguments, 1)); + } finally { + outstandingRequestCount--; + if (outstandingRequestCount === 0) { + while (outstandingRequestCallbacks.length) { + try { + outstandingRequestCallbacks.pop()(); + } catch (e) { + $log.error(e); + } + } + } + } + } + + function getHash(url) { + var index = url.indexOf('#'); + return index === -1 ? '' : url.substr(index); + } + + /** + * @private + * Note: this method is used only by scenario runner + * TODO(vojta): prefix this method with $$ ? + * @param {function()} callback Function that will be called when no outstanding request + */ + self.notifyWhenNoOutstandingRequests = function(callback) { + if (outstandingRequestCount === 0) { + callback(); + } else { + outstandingRequestCallbacks.push(callback); + } + }; + + ////////////////////////////////////////////////////////////// + // URL API + ////////////////////////////////////////////////////////////// + + var cachedState, lastHistoryState, + lastBrowserUrl = location.href, + baseElement = document.find('base'), + pendingLocation = null, + getCurrentState = !$sniffer.history ? noop : function getCurrentState() { + try { + return history.state; + } catch (e) { + // MSIE can reportedly throw when there is no state (UNCONFIRMED). + } + }; + + cacheState(); + lastHistoryState = cachedState; + + /** + * @name $browser#url + * + * @description + * GETTER: + * Without any argument, this method just returns current value of location.href. + * + * SETTER: + * With at least one argument, this method sets url to new value. + * If html5 history api supported, pushState/replaceState is used, otherwise + * location.href/location.replace is used. + * Returns its own instance to allow chaining + * + * NOTE: this api is intended for use only by the $location service. Please use the + * {@link ng.$location $location service} to change url. + * + * @param {string} url New url (when used as setter) + * @param {boolean=} replace Should new url replace current history record? + * @param {object=} state object to use with pushState/replaceState + */ + self.url = function(url, replace, state) { + // In modern browsers `history.state` is `null` by default; treating it separately + // from `undefined` would cause `$browser.url('/foo')` to change `history.state` + // to undefined via `pushState`. Instead, let's change `undefined` to `null` here. + if (isUndefined(state)) { + state = null; + } + + // Android Browser BFCache causes location, history reference to become stale. + if (location !== window.location) location = window.location; + if (history !== window.history) history = window.history; + + // setter + if (url) { + var sameState = lastHistoryState === state; + + // Don't change anything if previous and current URLs and states match. This also prevents + // IE<10 from getting into redirect loop when in LocationHashbangInHtml5Url mode. + // See https://github.com/angular/angular.js/commit/ffb2701 + if (lastBrowserUrl === url && (!$sniffer.history || sameState)) { + return self; + } + var sameBase = lastBrowserUrl && stripHash(lastBrowserUrl) === stripHash(url); + lastBrowserUrl = url; + lastHistoryState = state; + // Don't use history API if only the hash changed + // due to a bug in IE10/IE11 which leads + // to not firing a `hashchange` nor `popstate` event + // in some cases (see #9143). + if ($sniffer.history && (!sameBase || !sameState)) { + history[replace ? 'replaceState' : 'pushState'](state, '', url); + cacheState(); + // Do the assignment again so that those two variables are referentially identical. + lastHistoryState = cachedState; + } else { + if (!sameBase || pendingLocation) { + pendingLocation = url; + } + if (replace) { + location.replace(url); + } else if (!sameBase) { + location.href = url; + } else { + location.hash = getHash(url); + } + if (location.href !== url) { + pendingLocation = url; + } + } + return self; + // getter + } else { + // - pendingLocation is needed as browsers don't allow to read out + // the new location.href if a reload happened or if there is a bug like in iOS 9 (see + // https://openradar.appspot.com/22186109). + // - the replacement is a workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=407172 + return pendingLocation || location.href.replace(/%27/g,"'"); + } + }; + + /** + * @name $browser#state + * + * @description + * This method is a getter. + * + * Return history.state or null if history.state is undefined. + * + * @returns {object} state + */ + self.state = function() { + return cachedState; + }; + + var urlChangeListeners = [], + urlChangeInit = false; + + function cacheStateAndFireUrlChange() { + pendingLocation = null; + cacheState(); + fireUrlChange(); + } + + // This variable should be used *only* inside the cacheState function. + var lastCachedState = null; + function cacheState() { + // This should be the only place in $browser where `history.state` is read. + cachedState = getCurrentState(); + cachedState = isUndefined(cachedState) ? null : cachedState; + + // Prevent callbacks fo fire twice if both hashchange & popstate were fired. + if (equals(cachedState, lastCachedState)) { + cachedState = lastCachedState; + } + lastCachedState = cachedState; + } + + function fireUrlChange() { + if (lastBrowserUrl === self.url() && lastHistoryState === cachedState) { + return; + } + + lastBrowserUrl = self.url(); + lastHistoryState = cachedState; + forEach(urlChangeListeners, function(listener) { + listener(self.url(), cachedState); + }); + } + + /** + * @name $browser#onUrlChange + * + * @description + * Register callback function that will be called, when url changes. + * + * It's only called when the url is changed from outside of angular: + * - user types different url into address bar + * - user clicks on history (forward/back) button + * - user clicks on a link + * + * It's not called when url is changed by $browser.url() method + * + * The listener gets called with new url as parameter. + * + * NOTE: this api is intended for use only by the $location service. Please use the + * {@link ng.$location $location service} to monitor url changes in angular apps. + * + * @param {function(string)} listener Listener function to be called when url changes. + * @return {function(string)} Returns the registered listener fn - handy if the fn is anonymous. + */ + self.onUrlChange = function(callback) { + // TODO(vojta): refactor to use node's syntax for events + if (!urlChangeInit) { + // We listen on both (hashchange/popstate) when available, as some browsers (e.g. Opera) + // don't fire popstate when user change the address bar and don't fire hashchange when url + // changed by push/replaceState + + // html5 history api - popstate event + if ($sniffer.history) jqLite(window).on('popstate', cacheStateAndFireUrlChange); + // hashchange event + jqLite(window).on('hashchange', cacheStateAndFireUrlChange); + + urlChangeInit = true; + } + + urlChangeListeners.push(callback); + return callback; + }; + + /** + * @private + * Remove popstate and hashchange handler from window. + * + * NOTE: this api is intended for use only by $rootScope. + */ + self.$$applicationDestroyed = function() { + jqLite(window).off('hashchange popstate', cacheStateAndFireUrlChange); + }; + + /** + * Checks whether the url has changed outside of Angular. + * Needs to be exported to be able to check for changes that have been done in sync, + * as hashchange/popstate events fire in async. + */ + self.$$checkUrlChange = fireUrlChange; + + ////////////////////////////////////////////////////////////// + // Misc API + ////////////////////////////////////////////////////////////// + + /** + * @name $browser#baseHref + * + * @description + * Returns current + * (always relative - without domain) + * + * @returns {string} The current base href + */ + self.baseHref = function() { + var href = baseElement.attr('href'); + return href ? href.replace(/^(https?\:)?\/\/[^\/]*/, '') : ''; + }; + + /** + * @name $browser#defer + * @param {function()} fn A function, who's execution should be deferred. + * @param {number=} [delay=0] of milliseconds to defer the function execution. + * @returns {*} DeferId that can be used to cancel the task via `$browser.defer.cancel()`. + * + * @description + * Executes a fn asynchronously via `setTimeout(fn, delay)`. + * + * Unlike when calling `setTimeout` directly, in test this function is mocked and instead of using + * `setTimeout` in tests, the fns are queued in an array, which can be programmatically flushed + * via `$browser.defer.flush()`. + * + */ + self.defer = function(fn, delay) { + var timeoutId; + outstandingRequestCount++; + timeoutId = setTimeout(function() { + delete pendingDeferIds[timeoutId]; + completeOutstandingRequest(fn); + }, delay || 0); + pendingDeferIds[timeoutId] = true; + return timeoutId; + }; + + + /** + * @name $browser#defer.cancel + * + * @description + * Cancels a deferred task identified with `deferId`. + * + * @param {*} deferId Token returned by the `$browser.defer` function. + * @returns {boolean} Returns `true` if the task hasn't executed yet and was successfully + * canceled. + */ + self.defer.cancel = function(deferId) { + if (pendingDeferIds[deferId]) { + delete pendingDeferIds[deferId]; + clearTimeout(deferId); + completeOutstandingRequest(noop); + return true; + } + return false; + }; + +} + +function $BrowserProvider() { + this.$get = ['$window', '$log', '$sniffer', '$document', + function($window, $log, $sniffer, $document) { + return new Browser($window, $document, $log, $sniffer); + }]; +} + +/** + * @ngdoc service + * @name $cacheFactory + * + * @description + * Factory that constructs {@link $cacheFactory.Cache Cache} objects and gives access to + * them. + * + * ```js + * + * var cache = $cacheFactory('cacheId'); + * expect($cacheFactory.get('cacheId')).toBe(cache); + * expect($cacheFactory.get('noSuchCacheId')).not.toBeDefined(); + * + * cache.put("key", "value"); + * cache.put("another key", "another value"); + * + * // We've specified no options on creation + * expect(cache.info()).toEqual({id: 'cacheId', size: 2}); + * + * ``` + * + * + * @param {string} cacheId Name or id of the newly created cache. + * @param {object=} options Options object that specifies the cache behavior. Properties: + * + * - `{number=}` `capacity` — turns the cache into LRU cache. + * + * @returns {object} Newly created cache object with the following set of methods: + * + * - `{object}` `info()` — Returns id, size, and options of cache. + * - `{{*}}` `put({string} key, {*} value)` — Puts a new key-value pair into the cache and returns + * it. + * - `{{*}}` `get({string} key)` — Returns cached value for `key` or undefined for cache miss. + * - `{void}` `remove({string} key)` — Removes a key-value pair from the cache. + * - `{void}` `removeAll()` — Removes all cached values. + * - `{void}` `destroy()` — Removes references to this cache from $cacheFactory. + * + * @example + + +
    + + + + +

    Cached Values

    +
    + + : + +
    + +

    Cache Info

    +
    + + : + +
    +
    +
    + + angular.module('cacheExampleApp', []). + controller('CacheController', ['$scope', '$cacheFactory', function($scope, $cacheFactory) { + $scope.keys = []; + $scope.cache = $cacheFactory('cacheId'); + $scope.put = function(key, value) { + if (angular.isUndefined($scope.cache.get(key))) { + $scope.keys.push(key); + } + $scope.cache.put(key, angular.isUndefined(value) ? null : value); + }; + }]); + + + p { + margin: 10px 0 3px; + } + +
    + */ +function $CacheFactoryProvider() { + + this.$get = function() { + var caches = {}; + + function cacheFactory(cacheId, options) { + if (cacheId in caches) { + throw minErr('$cacheFactory')('iid', "CacheId '{0}' is already taken!", cacheId); + } + + var size = 0, + stats = extend({}, options, {id: cacheId}), + data = createMap(), + capacity = (options && options.capacity) || Number.MAX_VALUE, + lruHash = createMap(), + freshEnd = null, + staleEnd = null; + + /** + * @ngdoc type + * @name $cacheFactory.Cache + * + * @description + * A cache object used to store and retrieve data, primarily used by + * {@link $http $http} and the {@link ng.directive:script script} directive to cache + * templates and other data. + * + * ```js + * angular.module('superCache') + * .factory('superCache', ['$cacheFactory', function($cacheFactory) { + * return $cacheFactory('super-cache'); + * }]); + * ``` + * + * Example test: + * + * ```js + * it('should behave like a cache', inject(function(superCache) { + * superCache.put('key', 'value'); + * superCache.put('another key', 'another value'); + * + * expect(superCache.info()).toEqual({ + * id: 'super-cache', + * size: 2 + * }); + * + * superCache.remove('another key'); + * expect(superCache.get('another key')).toBeUndefined(); + * + * superCache.removeAll(); + * expect(superCache.info()).toEqual({ + * id: 'super-cache', + * size: 0 + * }); + * })); + * ``` + */ + return caches[cacheId] = { + + /** + * @ngdoc method + * @name $cacheFactory.Cache#put + * @kind function + * + * @description + * Inserts a named entry into the {@link $cacheFactory.Cache Cache} object to be + * retrieved later, and incrementing the size of the cache if the key was not already + * present in the cache. If behaving like an LRU cache, it will also remove stale + * entries from the set. + * + * It will not insert undefined values into the cache. + * + * @param {string} key the key under which the cached data is stored. + * @param {*} value the value to store alongside the key. If it is undefined, the key + * will not be stored. + * @returns {*} the value stored. + */ + put: function(key, value) { + if (isUndefined(value)) return; + if (capacity < Number.MAX_VALUE) { + var lruEntry = lruHash[key] || (lruHash[key] = {key: key}); + + refresh(lruEntry); + } + + if (!(key in data)) size++; + data[key] = value; + + if (size > capacity) { + this.remove(staleEnd.key); + } + + return value; + }, + + /** + * @ngdoc method + * @name $cacheFactory.Cache#get + * @kind function + * + * @description + * Retrieves named data stored in the {@link $cacheFactory.Cache Cache} object. + * + * @param {string} key the key of the data to be retrieved + * @returns {*} the value stored. + */ + get: function(key) { + if (capacity < Number.MAX_VALUE) { + var lruEntry = lruHash[key]; + + if (!lruEntry) return; + + refresh(lruEntry); + } + + return data[key]; + }, + + + /** + * @ngdoc method + * @name $cacheFactory.Cache#remove + * @kind function + * + * @description + * Removes an entry from the {@link $cacheFactory.Cache Cache} object. + * + * @param {string} key the key of the entry to be removed + */ + remove: function(key) { + if (capacity < Number.MAX_VALUE) { + var lruEntry = lruHash[key]; + + if (!lruEntry) return; + + if (lruEntry == freshEnd) freshEnd = lruEntry.p; + if (lruEntry == staleEnd) staleEnd = lruEntry.n; + link(lruEntry.n,lruEntry.p); + + delete lruHash[key]; + } + + if (!(key in data)) return; + + delete data[key]; + size--; + }, + + + /** + * @ngdoc method + * @name $cacheFactory.Cache#removeAll + * @kind function + * + * @description + * Clears the cache object of any entries. + */ + removeAll: function() { + data = createMap(); + size = 0; + lruHash = createMap(); + freshEnd = staleEnd = null; + }, + + + /** + * @ngdoc method + * @name $cacheFactory.Cache#destroy + * @kind function + * + * @description + * Destroys the {@link $cacheFactory.Cache Cache} object entirely, + * removing it from the {@link $cacheFactory $cacheFactory} set. + */ + destroy: function() { + data = null; + stats = null; + lruHash = null; + delete caches[cacheId]; + }, + + + /** + * @ngdoc method + * @name $cacheFactory.Cache#info + * @kind function + * + * @description + * Retrieve information regarding a particular {@link $cacheFactory.Cache Cache}. + * + * @returns {object} an object with the following properties: + *
      + *
    • **id**: the id of the cache instance
    • + *
    • **size**: the number of entries kept in the cache instance
    • + *
    • **...**: any additional properties from the options object when creating the + * cache.
    • + *
    + */ + info: function() { + return extend({}, stats, {size: size}); + } + }; + + + /** + * makes the `entry` the freshEnd of the LRU linked list + */ + function refresh(entry) { + if (entry != freshEnd) { + if (!staleEnd) { + staleEnd = entry; + } else if (staleEnd == entry) { + staleEnd = entry.n; + } + + link(entry.n, entry.p); + link(entry, freshEnd); + freshEnd = entry; + freshEnd.n = null; + } + } + + + /** + * bidirectionally links two entries of the LRU linked list + */ + function link(nextEntry, prevEntry) { + if (nextEntry != prevEntry) { + if (nextEntry) nextEntry.p = prevEntry; //p stands for previous, 'prev' didn't minify + if (prevEntry) prevEntry.n = nextEntry; //n stands for next, 'next' didn't minify + } + } + } + + + /** + * @ngdoc method + * @name $cacheFactory#info + * + * @description + * Get information about all the caches that have been created + * + * @returns {Object} - key-value map of `cacheId` to the result of calling `cache#info` + */ + cacheFactory.info = function() { + var info = {}; + forEach(caches, function(cache, cacheId) { + info[cacheId] = cache.info(); + }); + return info; + }; + + + /** + * @ngdoc method + * @name $cacheFactory#get + * + * @description + * Get access to a cache object by the `cacheId` used when it was created. + * + * @param {string} cacheId Name or id of a cache to access. + * @returns {object} Cache object identified by the cacheId or undefined if no such cache. + */ + cacheFactory.get = function(cacheId) { + return caches[cacheId]; + }; + + + return cacheFactory; + }; +} + +/** + * @ngdoc service + * @name $templateCache + * + * @description + * The first time a template is used, it is loaded in the template cache for quick retrieval. You + * can load templates directly into the cache in a `script` tag, or by consuming the + * `$templateCache` service directly. + * + * Adding via the `script` tag: + * + * ```html + * + * ``` + * + * **Note:** the `script` tag containing the template does not need to be included in the `head` of + * the document, but it must be a descendent of the {@link ng.$rootElement $rootElement} (IE, + * element with ng-app attribute), otherwise the template will be ignored. + * + * Adding via the `$templateCache` service: + * + * ```js + * var myApp = angular.module('myApp', []); + * myApp.run(function($templateCache) { + * $templateCache.put('templateId.html', 'This is the content of the template'); + * }); + * ``` + * + * To retrieve the template later, simply use it in your HTML: + * ```html + *
    + * ``` + * + * or get it via Javascript: + * ```js + * $templateCache.get('templateId.html') + * ``` + * + * See {@link ng.$cacheFactory $cacheFactory}. + * + */ +function $TemplateCacheProvider() { + this.$get = ['$cacheFactory', function($cacheFactory) { + return $cacheFactory('templates'); + }]; +} + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Any commits to this file should be reviewed with security in mind. * + * Changes to this file can potentially create security vulnerabilities. * + * An approval from 2 Core members with history of modifying * + * this file is required. * + * * + * Does the change somehow allow for arbitrary javascript to be executed? * + * Or allows for someone to change the prototype of built-in objects? * + * Or gives undesired access to variables likes document or window? * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* ! VARIABLE/FUNCTION NAMING CONVENTIONS THAT APPLY TO THIS FILE! + * + * DOM-related variables: + * + * - "node" - DOM Node + * - "element" - DOM Element or Node + * - "$node" or "$element" - jqLite-wrapped node or element + * + * + * Compiler related stuff: + * + * - "linkFn" - linking fn of a single directive + * - "nodeLinkFn" - function that aggregates all linking fns for a particular node + * - "childLinkFn" - function that aggregates all linking fns for child nodes of a particular node + * - "compositeLinkFn" - function that aggregates all linking fns for a compilation root (nodeList) + */ + + +/** + * @ngdoc service + * @name $compile + * @kind function + * + * @description + * Compiles an HTML string or DOM into a template and produces a template function, which + * can then be used to link {@link ng.$rootScope.Scope `scope`} and the template together. + * + * The compilation is a process of walking the DOM tree and matching DOM elements to + * {@link ng.$compileProvider#directive directives}. + * + *
    + * **Note:** This document is an in-depth reference of all directive options. + * For a gentle introduction to directives with examples of common use cases, + * see the {@link guide/directive directive guide}. + *
    + * + * ## Comprehensive Directive API + * + * There are many different options for a directive. + * + * The difference resides in the return value of the factory function. + * You can either return a "Directive Definition Object" (see below) that defines the directive properties, + * or just the `postLink` function (all other properties will have the default values). + * + *
    + * **Best Practice:** It's recommended to use the "directive definition object" form. + *
    + * + * Here's an example directive declared with a Directive Definition Object: + * + * ```js + * var myModule = angular.module(...); + * + * myModule.directive('directiveName', function factory(injectables) { + * var directiveDefinitionObject = { + * priority: 0, + * template: '
    ', // or // function(tElement, tAttrs) { ... }, + * // or + * // templateUrl: 'directive.html', // or // function(tElement, tAttrs) { ... }, + * transclude: false, + * restrict: 'A', + * templateNamespace: 'html', + * scope: false, + * controller: function($scope, $element, $attrs, $transclude, otherInjectables) { ... }, + * controllerAs: 'stringIdentifier', + * bindToController: false, + * require: 'siblingDirectiveName', // or // ['^parentDirectiveName', '?optionalDirectiveName', '?^optionalParent'], + * compile: function compile(tElement, tAttrs, transclude) { + * return { + * pre: function preLink(scope, iElement, iAttrs, controller) { ... }, + * post: function postLink(scope, iElement, iAttrs, controller) { ... } + * } + * // or + * // return function postLink( ... ) { ... } + * }, + * // or + * // link: { + * // pre: function preLink(scope, iElement, iAttrs, controller) { ... }, + * // post: function postLink(scope, iElement, iAttrs, controller) { ... } + * // } + * // or + * // link: function postLink( ... ) { ... } + * }; + * return directiveDefinitionObject; + * }); + * ``` + * + *
    + * **Note:** Any unspecified options will use the default value. You can see the default values below. + *
    + * + * Therefore the above can be simplified as: + * + * ```js + * var myModule = angular.module(...); + * + * myModule.directive('directiveName', function factory(injectables) { + * var directiveDefinitionObject = { + * link: function postLink(scope, iElement, iAttrs) { ... } + * }; + * return directiveDefinitionObject; + * // or + * // return function postLink(scope, iElement, iAttrs) { ... } + * }); + * ``` + * + * + * + * ### Directive Definition Object + * + * The directive definition object provides instructions to the {@link ng.$compile + * compiler}. The attributes are: + * + * #### `multiElement` + * When this property is set to true, the HTML compiler will collect DOM nodes between + * nodes with the attributes `directive-name-start` and `directive-name-end`, and group them + * together as the directive elements. It is recommended that this feature be used on directives + * which are not strictly behavioral (such as {@link ngClick}), and which + * do not manipulate or replace child nodes (such as {@link ngInclude}). + * + * #### `priority` + * When there are multiple directives defined on a single DOM element, sometimes it + * is necessary to specify the order in which the directives are applied. The `priority` is used + * to sort the directives before their `compile` functions get called. Priority is defined as a + * number. Directives with greater numerical `priority` are compiled first. Pre-link functions + * are also run in priority order, but post-link functions are run in reverse order. The order + * of directives with the same priority is undefined. The default priority is `0`. + * + * #### `terminal` + * If set to true then the current `priority` will be the last set of directives + * which will execute (any directives at the current priority will still execute + * as the order of execution on same `priority` is undefined). Note that expressions + * and other directives used in the directive's template will also be excluded from execution. + * + * #### `scope` + * The scope property can be `true`, an object or a falsy value: + * + * * **falsy:** No scope will be created for the directive. The directive will use its parent's scope. + * + * * **`true`:** A new child scope that prototypically inherits from its parent will be created for + * the directive's element. If multiple directives on the same element request a new scope, + * only one new scope is created. The new scope rule does not apply for the root of the template + * since the root of the template always gets a new scope. + * + * * **`{...}` (an object hash):** A new "isolate" scope is created for the directive's element. The + * 'isolate' scope differs from normal scope in that it does not prototypically inherit from its parent + * scope. This is useful when creating reusable components, which should not accidentally read or modify + * data in the parent scope. + * + * The 'isolate' scope object hash defines a set of local scope properties derived from attributes on the + * directive's element. These local properties are useful for aliasing values for templates. The keys in + * the object hash map to the name of the property on the isolate scope; the values define how the property + * is bound to the parent scope, via matching attributes on the directive's element: + * + * * `@` or `@attr` - bind a local scope property to the value of DOM attribute. The result is + * always a string since DOM attributes are strings. If no `attr` name is specified then the + * attribute name is assumed to be the same as the local name. Given `` and the isolate scope definition `scope: { localName:'@myAttr' }`, + * the directive's scope property `localName` will reflect the interpolated value of `hello + * {{name}}`. As the `name` attribute changes so will the `localName` property on the directive's + * scope. The `name` is read from the parent scope (not the directive's scope). + * + * * `=` or `=attr` - set up a bidirectional binding between a local scope property and an expression + * passed via the attribute `attr`. The expression is evaluated in the context of the parent scope. + * If no `attr` name is specified then the attribute name is assumed to be the same as the local + * name. Given `` and the isolate scope definition `scope: { + * localModel: '=myAttr' }`, the property `localModel` on the directive's scope will reflect the + * value of `parentModel` on the parent scope. Changes to `parentModel` will be reflected in + * `localModel` and vice versa. Optional attributes should be marked as such with a question mark: + * `=?` or `=?attr`. If the binding expression is non-assignable, or if the attribute isn't + * optional and doesn't exist, an exception ({@link error/$compile/nonassign `$compile:nonassign`}) + * will be thrown upon discovering changes to the local value, since it will be impossible to sync + * them back to the parent scope. By default, the {@link ng.$rootScope.Scope#$watch `$watch`} + * method is used for tracking changes, and the equality check is based on object identity. + * However, if an object literal or an array literal is passed as the binding expression, the + * equality check is done by value (using the {@link angular.equals} function). It's also possible + * to watch the evaluated value shallowly with {@link ng.$rootScope.Scope#$watchCollection + * `$watchCollection`}: use `=*` or `=*attr` (`=*?` or `=*?attr` if the attribute is optional). + * + * * `<` or `` and directive definition of + * `scope: { localModel:'` and the isolate scope definition `scope: { + * localFn:'&myAttr' }`, the isolate scope property `localFn` will point to a function wrapper for + * the `count = count + value` expression. Often it's desirable to pass data from the isolated scope + * via an expression to the parent scope. This can be done by passing a map of local variable names + * and values into the expression wrapper fn. For example, if the expression is `increment(amount)` + * then we can specify the amount value by calling the `localFn` as `localFn({amount: 22})`. + * + * In general it's possible to apply more than one directive to one element, but there might be limitations + * depending on the type of scope required by the directives. The following points will help explain these limitations. + * For simplicity only two directives are taken into account, but it is also applicable for several directives: + * + * * **no scope** + **no scope** => Two directives which don't require their own scope will use their parent's scope + * * **child scope** + **no scope** => Both directives will share one single child scope + * * **child scope** + **child scope** => Both directives will share one single child scope + * * **isolated scope** + **no scope** => The isolated directive will use it's own created isolated scope. The other directive will use + * its parent's scope + * * **isolated scope** + **child scope** => **Won't work!** Only one scope can be related to one element. Therefore these directives cannot + * be applied to the same element. + * * **isolated scope** + **isolated scope** => **Won't work!** Only one scope can be related to one element. Therefore these directives + * cannot be applied to the same element. + * + * + * #### `bindToController` + * This property is used to bind scope properties directly to the controller. It can be either + * `true` or an object hash with the same format as the `scope` property. Additionally, a controller + * alias must be set, either by using `controllerAs: 'myAlias'` or by specifying the alias in the controller + * definition: `controller: 'myCtrl as myAlias'`. + * + * When an isolate scope is used for a directive (see above), `bindToController: true` will + * allow a component to have its properties bound to the controller, rather than to scope. + * + * After the controller is instantiated, the initial values of the isolate scope bindings will be bound to the controller + * properties. You can access these bindings once they have been initialized by providing a controller method called + * `$onInit`, which is called after all the controllers on an element have been constructed and had their bindings + * initialized. + * + *
    + * **Deprecation warning:** although bindings for non-ES6 class controllers are currently + * bound to `this` before the controller constructor is called, this use is now deprecated. Please place initialization + * code that relies upon bindings inside a `$onInit` method on the controller, instead. + *
    + * + * It is also possible to set `bindToController` to an object hash with the same format as the `scope` property. + * This will set up the scope bindings to the controller directly. Note that `scope` can still be used + * to define which kind of scope is created. By default, no scope is created. Use `scope: {}` to create an isolate + * scope (useful for component directives). + * + * If both `bindToController` and `scope` are defined and have object hashes, `bindToController` overrides `scope`. + * + * + * #### `controller` + * Controller constructor function. The controller is instantiated before the + * pre-linking phase and can be accessed by other directives (see + * `require` attribute). This allows the directives to communicate with each other and augment + * each other's behavior. The controller is injectable (and supports bracket notation) with the following locals: + * + * * `$scope` - Current scope associated with the element + * * `$element` - Current element + * * `$attrs` - Current attributes object for the element + * * `$transclude` - A transclude linking function pre-bound to the correct transclusion scope: + * `function([scope], cloneLinkingFn, futureParentElement, slotName)`: + * * `scope`: (optional) override the scope. + * * `cloneLinkingFn`: (optional) argument to create clones of the original transcluded content. + * * `futureParentElement` (optional): + * * defines the parent to which the `cloneLinkingFn` will add the cloned elements. + * * default: `$element.parent()` resp. `$element` for `transclude:'element'` resp. `transclude:true`. + * * only needed for transcludes that are allowed to contain non html elements (e.g. SVG elements) + * and when the `cloneLinkinFn` is passed, + * as those elements need to created and cloned in a special way when they are defined outside their + * usual containers (e.g. like ``). + * * See also the `directive.templateNamespace` property. + * * `slotName`: (optional) the name of the slot to transclude. If falsy (e.g. `null`, `undefined` or `''`) + * then the default translusion is provided. + * The `$transclude` function also has a method on it, `$transclude.isSlotFilled(slotName)`, which returns + * `true` if the specified slot contains content (i.e. one or more DOM nodes). + * + * The controller can provide the following methods that act as life-cycle hooks: + * * `$onInit()` - Called on each controller after all the controllers on an element have been constructed and + * had their bindings initialized (and before the pre & post linking functions for the directives on + * this element). This is a good place to put initialization code for your controller. + * * `$onChanges(changesObj)` - Called whenever one-way (`<`) or interpolation (`@`) bindings are updated. The + * `changesObj` is a hash whose keys are the names of the bound properties that have changed, and the values are an + * object of the form `{ currentValue: ..., previousValue: ... }`. Use this hook to trigger updates within a component + * such as cloning the bound value to prevent accidental mutation of the outer value. + * * `$onDestroy()` - Called on a controller when its containing scope is destroyed. Use this hook for releasing + * external resources, watches and event handlers. Note that components have their `$onDestroy()` hooks called in + * the same order as the `$scope.$broadcast` events are triggered, which is top down. This means that parent + * components will have their `$onDestroy()` hook called before child components. + * * `$postLink()` - Called after this controller's element and its children have been linked. Similar to the post-link + * function this hook can be used to set up DOM event handlers and do direct DOM manipulation. + * Note that child elements that contain `templateUrl` directives will not have been compiled and linked since + * they are waiting for their template to load asynchronously and their own compilation and linking has been + * suspended until that occurs. + * + * + * #### `require` + * Require another directive and inject its controller as the fourth argument to the linking function. The + * `require` property can be a string, an array or an object: + * * a **string** containing the name of the directive to pass to the linking function + * * an **array** containing the names of directives to pass to the linking function. The argument passed to the + * linking function will be an array of controllers in the same order as the names in the `require` property + * * an **object** whose property values are the names of the directives to pass to the linking function. The argument + * passed to the linking function will also be an object with matching keys, whose values will hold the corresponding + * controllers. + * + * If the `require` property is an object and `bindToController` is truthy, then the required controllers are + * bound to the controller using the keys of the `require` property. This binding occurs after all the controllers + * have been constructed but before `$onInit` is called. + * See the {@link $compileProvider#component} helper for an example of how this can be used. + * + * If no such required directive(s) can be found, or if the directive does not have a controller, then an error is + * raised (unless no link function is specified and the required controllers are not being bound to the directive + * controller, in which case error checking is skipped). The name can be prefixed with: + * + * * (no prefix) - Locate the required controller on the current element. Throw an error if not found. + * * `?` - Attempt to locate the required controller or pass `null` to the `link` fn if not found. + * * `^` - Locate the required controller by searching the element and its parents. Throw an error if not found. + * * `^^` - Locate the required controller by searching the element's parents. Throw an error if not found. + * * `?^` - Attempt to locate the required controller by searching the element and its parents or pass + * `null` to the `link` fn if not found. + * * `?^^` - Attempt to locate the required controller by searching the element's parents, or pass + * `null` to the `link` fn if not found. + * + * + * #### `controllerAs` + * Identifier name for a reference to the controller in the directive's scope. + * This allows the controller to be referenced from the directive template. This is especially + * useful when a directive is used as component, i.e. with an `isolate` scope. It's also possible + * to use it in a directive without an `isolate` / `new` scope, but you need to be aware that the + * `controllerAs` reference might overwrite a property that already exists on the parent scope. + * + * + * #### `restrict` + * String of subset of `EACM` which restricts the directive to a specific directive + * declaration style. If omitted, the defaults (elements and attributes) are used. + * + * * `E` - Element name (default): `` + * * `A` - Attribute (default): `
    ` + * * `C` - Class: `
    ` + * * `M` - Comment: `` + * + * + * #### `templateNamespace` + * String representing the document type used by the markup in the template. + * AngularJS needs this information as those elements need to be created and cloned + * in a special way when they are defined outside their usual containers like `` and ``. + * + * * `html` - All root nodes in the template are HTML. Root nodes may also be + * top-level elements such as `` or ``. + * * `svg` - The root nodes in the template are SVG elements (excluding ``). + * * `math` - The root nodes in the template are MathML elements (excluding ``). + * + * If no `templateNamespace` is specified, then the namespace is considered to be `html`. + * + * #### `template` + * HTML markup that may: + * * Replace the contents of the directive's element (default). + * * Replace the directive's element itself (if `replace` is true - DEPRECATED). + * * Wrap the contents of the directive's element (if `transclude` is true). + * + * Value may be: + * + * * A string. For example `
    {{delete_str}}
    `. + * * A function which takes two arguments `tElement` and `tAttrs` (described in the `compile` + * function api below) and returns a string value. + * + * + * #### `templateUrl` + * This is similar to `template` but the template is loaded from the specified URL, asynchronously. + * + * Because template loading is asynchronous the compiler will suspend compilation of directives on that element + * for later when the template has been resolved. In the meantime it will continue to compile and link + * sibling and parent elements as though this element had not contained any directives. + * + * The compiler does not suspend the entire compilation to wait for templates to be loaded because this + * would result in the whole app "stalling" until all templates are loaded asynchronously - even in the + * case when only one deeply nested directive has `templateUrl`. + * + * Template loading is asynchronous even if the template has been preloaded into the {@link $templateCache} + * + * You can specify `templateUrl` as a string representing the URL or as a function which takes two + * arguments `tElement` and `tAttrs` (described in the `compile` function api below) and returns + * a string value representing the url. In either case, the template URL is passed through {@link + * $sce#getTrustedResourceUrl $sce.getTrustedResourceUrl}. + * + * + * #### `replace` ([*DEPRECATED*!], will be removed in next major release - i.e. v2.0) + * specify what the template should replace. Defaults to `false`. + * + * * `true` - the template will replace the directive's element. + * * `false` - the template will replace the contents of the directive's element. + * + * The replacement process migrates all of the attributes / classes from the old element to the new + * one. See the {@link guide/directive#template-expanding-directive + * Directives Guide} for an example. + * + * There are very few scenarios where element replacement is required for the application function, + * the main one being reusable custom components that are used within SVG contexts + * (because SVG doesn't work with custom elements in the DOM tree). + * + * #### `transclude` + * Extract the contents of the element where the directive appears and make it available to the directive. + * The contents are compiled and provided to the directive as a **transclusion function**. See the + * {@link $compile#transclusion Transclusion} section below. + * + * + * #### `compile` + * + * ```js + * function compile(tElement, tAttrs, transclude) { ... } + * ``` + * + * The compile function deals with transforming the template DOM. Since most directives do not do + * template transformation, it is not used often. The compile function takes the following arguments: + * + * * `tElement` - template element - The element where the directive has been declared. It is + * safe to do template transformation on the element and child elements only. + * + * * `tAttrs` - template attributes - Normalized list of attributes declared on this element shared + * between all directive compile functions. + * + * * `transclude` - [*DEPRECATED*!] A transclude linking function: `function(scope, cloneLinkingFn)` + * + *
    + * **Note:** The template instance and the link instance may be different objects if the template has + * been cloned. For this reason it is **not** safe to do anything other than DOM transformations that + * apply to all cloned DOM nodes within the compile function. Specifically, DOM listener registration + * should be done in a linking function rather than in a compile function. + *
    + + *
    + * **Note:** The compile function cannot handle directives that recursively use themselves in their + * own templates or compile functions. Compiling these directives results in an infinite loop and + * stack overflow errors. + * + * This can be avoided by manually using $compile in the postLink function to imperatively compile + * a directive's template instead of relying on automatic template compilation via `template` or + * `templateUrl` declaration or manual compilation inside the compile function. + *
    + * + *
    + * **Note:** The `transclude` function that is passed to the compile function is deprecated, as it + * e.g. does not know about the right outer scope. Please use the transclude function that is passed + * to the link function instead. + *
    + + * A compile function can have a return value which can be either a function or an object. + * + * * returning a (post-link) function - is equivalent to registering the linking function via the + * `link` property of the config object when the compile function is empty. + * + * * returning an object with function(s) registered via `pre` and `post` properties - allows you to + * control when a linking function should be called during the linking phase. See info about + * pre-linking and post-linking functions below. + * + * + * #### `link` + * This property is used only if the `compile` property is not defined. + * + * ```js + * function link(scope, iElement, iAttrs, controller, transcludeFn) { ... } + * ``` + * + * The link function is responsible for registering DOM listeners as well as updating the DOM. It is + * executed after the template has been cloned. This is where most of the directive logic will be + * put. + * + * * `scope` - {@link ng.$rootScope.Scope Scope} - The scope to be used by the + * directive for registering {@link ng.$rootScope.Scope#$watch watches}. + * + * * `iElement` - instance element - The element where the directive is to be used. It is safe to + * manipulate the children of the element only in `postLink` function since the children have + * already been linked. + * + * * `iAttrs` - instance attributes - Normalized list of attributes declared on this element shared + * between all directive linking functions. + * + * * `controller` - the directive's required controller instance(s) - Instances are shared + * among all directives, which allows the directives to use the controllers as a communication + * channel. The exact value depends on the directive's `require` property: + * * no controller(s) required: the directive's own controller, or `undefined` if it doesn't have one + * * `string`: the controller instance + * * `array`: array of controller instances + * + * If a required controller cannot be found, and it is optional, the instance is `null`, + * otherwise the {@link error:$compile:ctreq Missing Required Controller} error is thrown. + * + * Note that you can also require the directive's own controller - it will be made available like + * any other controller. + * + * * `transcludeFn` - A transclude linking function pre-bound to the correct transclusion scope. + * This is the same as the `$transclude` + * parameter of directive controllers, see there for details. + * `function([scope], cloneLinkingFn, futureParentElement)`. + * + * #### Pre-linking function + * + * Executed before the child elements are linked. Not safe to do DOM transformation since the + * compiler linking function will fail to locate the correct elements for linking. + * + * #### Post-linking function + * + * Executed after the child elements are linked. + * + * Note that child elements that contain `templateUrl` directives will not have been compiled + * and linked since they are waiting for their template to load asynchronously and their own + * compilation and linking has been suspended until that occurs. + * + * It is safe to do DOM transformation in the post-linking function on elements that are not waiting + * for their async templates to be resolved. + * + * + * ### Transclusion + * + * Transclusion is the process of extracting a collection of DOM elements from one part of the DOM and + * copying them to another part of the DOM, while maintaining their connection to the original AngularJS + * scope from where they were taken. + * + * Transclusion is used (often with {@link ngTransclude}) to insert the + * original contents of a directive's element into a specified place in the template of the directive. + * The benefit of transclusion, over simply moving the DOM elements manually, is that the transcluded + * content has access to the properties on the scope from which it was taken, even if the directive + * has isolated scope. + * See the {@link guide/directive#creating-a-directive-that-wraps-other-elements Directives Guide}. + * + * This makes it possible for the widget to have private state for its template, while the transcluded + * content has access to its originating scope. + * + *
    + * **Note:** When testing an element transclude directive you must not place the directive at the root of the + * DOM fragment that is being compiled. See {@link guide/unit-testing#testing-transclusion-directives + * Testing Transclusion Directives}. + *
    + * + * There are three kinds of transclusion depending upon whether you want to transclude just the contents of the + * directive's element, the entire element or multiple parts of the element contents: + * + * * `true` - transclude the content (i.e. the child nodes) of the directive's element. + * * `'element'` - transclude the whole of the directive's element including any directives on this + * element that defined at a lower priority than this directive. When used, the `template` + * property is ignored. + * * **`{...}` (an object hash):** - map elements of the content onto transclusion "slots" in the template. + * + * **Mult-slot transclusion** is declared by providing an object for the `transclude` property. + * + * This object is a map where the keys are the name of the slot to fill and the value is an element selector + * used to match the HTML to the slot. The element selector should be in normalized form (e.g. `myElement`) + * and will match the standard element variants (e.g. `my-element`, `my:element`, `data-my-element`, etc). + * + * For further information check out the guide on {@link guide/directive#matching-directives Matching Directives} + * + * If the element selector is prefixed with a `?` then that slot is optional. + * + * For example, the transclude object `{ slotA: '?myCustomElement' }` maps `` elements to + * the `slotA` slot, which can be accessed via the `$transclude` function or via the {@link ngTransclude} directive. + * + * Slots that are not marked as optional (`?`) will trigger a compile time error if there are no matching elements + * in the transclude content. If you wish to know if an optional slot was filled with content, then you can call + * `$transclude.isSlotFilled(slotName)` on the transclude function passed to the directive's link function and + * injectable into the directive's controller. + * + * + * #### Transclusion Functions + * + * When a directive requests transclusion, the compiler extracts its contents and provides a **transclusion + * function** to the directive's `link` function and `controller`. This transclusion function is a special + * **linking function** that will return the compiled contents linked to a new transclusion scope. + * + *
    + * If you are just using {@link ngTransclude} then you don't need to worry about this function, since + * ngTransclude will deal with it for us. + *
    + * + * If you want to manually control the insertion and removal of the transcluded content in your directive + * then you must use this transclude function. When you call a transclude function it returns a a jqLite/JQuery + * object that contains the compiled DOM, which is linked to the correct transclusion scope. + * + * When you call a transclusion function you can pass in a **clone attach function**. This function accepts + * two parameters, `function(clone, scope) { ... }`, where the `clone` is a fresh compiled copy of your transcluded + * content and the `scope` is the newly created transclusion scope, to which the clone is bound. + * + *
    + * **Best Practice**: Always provide a `cloneFn` (clone attach function) when you call a transclude function + * since you then get a fresh clone of the original DOM and also have access to the new transclusion scope. + *
    + * + * It is normal practice to attach your transcluded content (`clone`) to the DOM inside your **clone + * attach function**: + * + * ```js + * var transcludedContent, transclusionScope; + * + * $transclude(function(clone, scope) { + * element.append(clone); + * transcludedContent = clone; + * transclusionScope = scope; + * }); + * ``` + * + * Later, if you want to remove the transcluded content from your DOM then you should also destroy the + * associated transclusion scope: + * + * ```js + * transcludedContent.remove(); + * transclusionScope.$destroy(); + * ``` + * + *
    + * **Best Practice**: if you intend to add and remove transcluded content manually in your directive + * (by calling the transclude function to get the DOM and calling `element.remove()` to remove it), + * then you are also responsible for calling `$destroy` on the transclusion scope. + *
    + * + * The built-in DOM manipulation directives, such as {@link ngIf}, {@link ngSwitch} and {@link ngRepeat} + * automatically destroy their transcluded clones as necessary so you do not need to worry about this if + * you are simply using {@link ngTransclude} to inject the transclusion into your directive. + * + * + * #### Transclusion Scopes + * + * When you call a transclude function it returns a DOM fragment that is pre-bound to a **transclusion + * scope**. This scope is special, in that it is a child of the directive's scope (and so gets destroyed + * when the directive's scope gets destroyed) but it inherits the properties of the scope from which it + * was taken. + * + * For example consider a directive that uses transclusion and isolated scope. The DOM hierarchy might look + * like this: + * + * ```html + *
    + *
    + *
    + *
    + *
    + *
    + * ``` + * + * The `$parent` scope hierarchy will look like this: + * + ``` + - $rootScope + - isolate + - transclusion + ``` + * + * but the scopes will inherit prototypically from different scopes to their `$parent`. + * + ``` + - $rootScope + - transclusion + - isolate + ``` + * + * + * ### Attributes + * + * The {@link ng.$compile.directive.Attributes Attributes} object - passed as a parameter in the + * `link()` or `compile()` functions. It has a variety of uses. + * + * * *Accessing normalized attribute names:* Directives like 'ngBind' can be expressed in many ways: + * 'ng:bind', `data-ng-bind`, or 'x-ng-bind'. The attributes object allows for normalized access + * to the attributes. + * + * * *Directive inter-communication:* All directives share the same instance of the attributes + * object which allows the directives to use the attributes object as inter directive + * communication. + * + * * *Supports interpolation:* Interpolation attributes are assigned to the attribute object + * allowing other directives to read the interpolated value. + * + * * *Observing interpolated attributes:* Use `$observe` to observe the value changes of attributes + * that contain interpolation (e.g. `src="{{bar}}"`). Not only is this very efficient but it's also + * the only way to easily get the actual value because during the linking phase the interpolation + * hasn't been evaluated yet and so the value is at this time set to `undefined`. + * + * ```js + * function linkingFn(scope, elm, attrs, ctrl) { + * // get the attribute value + * console.log(attrs.ngModel); + * + * // change the attribute + * attrs.$set('ngModel', 'new value'); + * + * // observe changes to interpolated attribute + * attrs.$observe('ngModel', function(value) { + * console.log('ngModel has changed value to ' + value); + * }); + * } + * ``` + * + * ## Example + * + *
    + * **Note**: Typically directives are registered with `module.directive`. The example below is + * to illustrate how `$compile` works. + *
    + * + + + +
    +
    +
    +
    +
    +
    + + it('should auto compile', function() { + var textarea = $('textarea'); + var output = $('div[compile]'); + // The initial state reads 'Hello Angular'. + expect(output.getText()).toBe('Hello Angular'); + textarea.clear(); + textarea.sendKeys('{{name}}!'); + expect(output.getText()).toBe('Angular!'); + }); + +
    + + * + * + * @param {string|DOMElement} element Element or HTML string to compile into a template function. + * @param {function(angular.Scope, cloneAttachFn=)} transclude function available to directives - DEPRECATED. + * + *
    + * **Note:** Passing a `transclude` function to the $compile function is deprecated, as it + * e.g. will not use the right outer scope. Please pass the transclude function as a + * `parentBoundTranscludeFn` to the link function instead. + *
    + * + * @param {number} maxPriority only apply directives lower than given priority (Only effects the + * root element(s), not their children) + * @returns {function(scope, cloneAttachFn=, options=)} a link function which is used to bind template + * (a DOM element/tree) to a scope. Where: + * + * * `scope` - A {@link ng.$rootScope.Scope Scope} to bind to. + * * `cloneAttachFn` - If `cloneAttachFn` is provided, then the link function will clone the + * `template` and call the `cloneAttachFn` function allowing the caller to attach the + * cloned elements to the DOM document at the appropriate place. The `cloneAttachFn` is + * called as:
    `cloneAttachFn(clonedElement, scope)` where: + * + * * `clonedElement` - is a clone of the original `element` passed into the compiler. + * * `scope` - is the current scope with which the linking function is working with. + * + * * `options` - An optional object hash with linking options. If `options` is provided, then the following + * keys may be used to control linking behavior: + * + * * `parentBoundTranscludeFn` - the transclude function made available to + * directives; if given, it will be passed through to the link functions of + * directives found in `element` during compilation. + * * `transcludeControllers` - an object hash with keys that map controller names + * to a hash with the key `instance`, which maps to the controller instance; + * if given, it will make the controllers available to directives on the compileNode: + * ``` + * { + * parent: { + * instance: parentControllerInstance + * } + * } + * ``` + * * `futureParentElement` - defines the parent to which the `cloneAttachFn` will add + * the cloned elements; only needed for transcludes that are allowed to contain non html + * elements (e.g. SVG elements). See also the directive.controller property. + * + * Calling the linking function returns the element of the template. It is either the original + * element passed in, or the clone of the element if the `cloneAttachFn` is provided. + * + * After linking the view is not updated until after a call to $digest which typically is done by + * Angular automatically. + * + * If you need access to the bound view, there are two ways to do it: + * + * - If you are not asking the linking function to clone the template, create the DOM element(s) + * before you send them to the compiler and keep this reference around. + * ```js + * var element = $compile('

    {{total}}

    ')(scope); + * ``` + * + * - if on the other hand, you need the element to be cloned, the view reference from the original + * example would not point to the clone, but rather to the original template that was cloned. In + * this case, you can access the clone via the cloneAttachFn: + * ```js + * var templateElement = angular.element('

    {{total}}

    '), + * scope = ....; + * + * var clonedElement = $compile(templateElement)(scope, function(clonedElement, scope) { + * //attach the clone to DOM document at the right place + * }); + * + * //now we have reference to the cloned DOM via `clonedElement` + * ``` + * + * + * For information on how the compiler works, see the + * {@link guide/compiler Angular HTML Compiler} section of the Developer Guide. + */ + +var $compileMinErr = minErr('$compile'); + +/** + * @ngdoc provider + * @name $compileProvider + * + * @description + */ +$CompileProvider.$inject = ['$provide', '$$sanitizeUriProvider']; +function $CompileProvider($provide, $$sanitizeUriProvider) { + var hasDirectives = {}, + Suffix = 'Directive', + COMMENT_DIRECTIVE_REGEXP = /^\s*directive\:\s*([\w\-]+)\s+(.*)$/, + CLASS_DIRECTIVE_REGEXP = /(([\w\-]+)(?:\:([^;]+))?;?)/, + ALL_OR_NOTHING_ATTRS = makeMap('ngSrc,ngSrcset,src,srcset'), + REQUIRE_PREFIX_REGEXP = /^(?:(\^\^?)?(\?)?(\^\^?)?)?/; + + // Ref: http://developers.whatwg.org/webappapis.html#event-handler-idl-attributes + // The assumption is that future DOM event attribute names will begin with + // 'on' and be composed of only English letters. + var EVENT_HANDLER_ATTR_REGEXP = /^(on[a-z]+|formaction)$/; + var bindingCache = createMap(); + + function parseIsolateBindings(scope, directiveName, isController) { + var LOCAL_REGEXP = /^\s*([@&<]|=(\*?))(\??)\s*(\w*)\s*$/; + + var bindings = {}; + + forEach(scope, function(definition, scopeName) { + if (definition in bindingCache) { + bindings[scopeName] = bindingCache[definition]; + return; + } + var match = definition.match(LOCAL_REGEXP); + + if (!match) { + throw $compileMinErr('iscp', + "Invalid {3} for directive '{0}'." + + " Definition: {... {1}: '{2}' ...}", + directiveName, scopeName, definition, + (isController ? "controller bindings definition" : + "isolate scope definition")); + } + + bindings[scopeName] = { + mode: match[1][0], + collection: match[2] === '*', + optional: match[3] === '?', + attrName: match[4] || scopeName + }; + if (match[4]) { + bindingCache[definition] = bindings[scopeName]; + } + }); + + return bindings; + } + + function parseDirectiveBindings(directive, directiveName) { + var bindings = { + isolateScope: null, + bindToController: null + }; + if (isObject(directive.scope)) { + if (directive.bindToController === true) { + bindings.bindToController = parseIsolateBindings(directive.scope, + directiveName, true); + bindings.isolateScope = {}; + } else { + bindings.isolateScope = parseIsolateBindings(directive.scope, + directiveName, false); + } + } + if (isObject(directive.bindToController)) { + bindings.bindToController = + parseIsolateBindings(directive.bindToController, directiveName, true); + } + if (isObject(bindings.bindToController)) { + var controller = directive.controller; + var controllerAs = directive.controllerAs; + if (!controller) { + // There is no controller, there may or may not be a controllerAs property + throw $compileMinErr('noctrl', + "Cannot bind to controller without directive '{0}'s controller.", + directiveName); + } else if (!identifierForController(controller, controllerAs)) { + // There is a controller, but no identifier or controllerAs property + throw $compileMinErr('noident', + "Cannot bind to controller without identifier for directive '{0}'.", + directiveName); + } + } + return bindings; + } + + function assertValidDirectiveName(name) { + var letter = name.charAt(0); + if (!letter || letter !== lowercase(letter)) { + throw $compileMinErr('baddir', "Directive/Component name '{0}' is invalid. The first character must be a lowercase letter", name); + } + if (name !== name.trim()) { + throw $compileMinErr('baddir', + "Directive/Component name '{0}' is invalid. The name should not contain leading or trailing whitespaces", + name); + } + } + + /** + * @ngdoc method + * @name $compileProvider#directive + * @kind function + * + * @description + * Register a new directive with the compiler. + * + * @param {string|Object} name Name of the directive in camel-case (i.e. ngBind which + * will match as ng-bind), or an object map of directives where the keys are the + * names and the values are the factories. + * @param {Function|Array} directiveFactory An injectable directive factory function. See the + * {@link guide/directive directive guide} and the {@link $compile compile API} for more info. + * @returns {ng.$compileProvider} Self for chaining. + */ + this.directive = function registerDirective(name, directiveFactory) { + assertNotHasOwnProperty(name, 'directive'); + if (isString(name)) { + assertValidDirectiveName(name); + assertArg(directiveFactory, 'directiveFactory'); + if (!hasDirectives.hasOwnProperty(name)) { + hasDirectives[name] = []; + $provide.factory(name + Suffix, ['$injector', '$exceptionHandler', + function($injector, $exceptionHandler) { + var directives = []; + forEach(hasDirectives[name], function(directiveFactory, index) { + try { + var directive = $injector.invoke(directiveFactory); + if (isFunction(directive)) { + directive = { compile: valueFn(directive) }; + } else if (!directive.compile && directive.link) { + directive.compile = valueFn(directive.link); + } + directive.priority = directive.priority || 0; + directive.index = index; + directive.name = directive.name || name; + directive.require = directive.require || (directive.controller && directive.name); + directive.restrict = directive.restrict || 'EA'; + directive.$$moduleName = directiveFactory.$$moduleName; + directives.push(directive); + } catch (e) { + $exceptionHandler(e); + } + }); + return directives; + }]); + } + hasDirectives[name].push(directiveFactory); + } else { + forEach(name, reverseParams(registerDirective)); + } + return this; + }; + + /** + * @ngdoc method + * @name $compileProvider#component + * @module ng + * @param {string} name Name of the component in camelCase (i.e. `myComp` which will match ``) + * @param {Object} options Component definition object (a simplified + * {@link ng.$compile#directive-definition-object directive definition object}), + * with the following properties (all optional): + * + * - `controller` – `{(string|function()=}` – controller constructor function that should be + * associated with newly created scope or the name of a {@link ng.$compile#-controller- + * registered controller} if passed as a string. An empty `noop` function by default. + * - `controllerAs` – `{string=}` – identifier name for to reference the controller in the component's scope. + * If present, the controller will be published to scope under the `controllerAs` name. + * If not present, this will default to be `$ctrl`. + * - `template` – `{string=|function()=}` – html template as a string or a function that + * returns an html template as a string which should be used as the contents of this component. + * Empty string by default. + * + * If `template` is a function, then it is {@link auto.$injector#invoke injected} with + * the following locals: + * + * - `$element` - Current element + * - `$attrs` - Current attributes object for the element + * + * - `templateUrl` – `{string=|function()=}` – path or function that returns a path to an html + * template that should be used as the contents of this component. + * + * If `templateUrl` is a function, then it is {@link auto.$injector#invoke injected} with + * the following locals: + * + * - `$element` - Current element + * - `$attrs` - Current attributes object for the element + * + * - `bindings` – `{object=}` – defines bindings between DOM attributes and component properties. + * Component properties are always bound to the component controller and not to the scope. + * See {@link ng.$compile#-bindtocontroller- `bindToController`}. + * - `transclude` – `{boolean=}` – whether {@link $compile#transclusion content transclusion} is enabled. + * Disabled by default. + * - `$...` – additional properties to attach to the directive factory function and the controller + * constructor function. (This is used by the component router to annotate) + * + * @returns {ng.$compileProvider} the compile provider itself, for chaining of function calls. + * @description + * Register a **component definition** with the compiler. This is a shorthand for registering a special + * type of directive, which represents a self-contained UI component in your application. Such components + * are always isolated (i.e. `scope: {}`) and are always restricted to elements (i.e. `restrict: 'E'`). + * + * Component definitions are very simple and do not require as much configuration as defining general + * directives. Component definitions usually consist only of a template and a controller backing it. + * + * In order to make the definition easier, components enforce best practices like use of `controllerAs`, + * `bindToController`. They always have **isolate scope** and are restricted to elements. + * + * Here are a few examples of how you would usually define components: + * + * ```js + * var myMod = angular.module(...); + * myMod.component('myComp', { + * template: '
    My name is {{$ctrl.name}}
    ', + * controller: function() { + * this.name = 'shahar'; + * } + * }); + * + * myMod.component('myComp', { + * template: '
    My name is {{$ctrl.name}}
    ', + * bindings: {name: '@'} + * }); + * + * myMod.component('myComp', { + * templateUrl: 'views/my-comp.html', + * controller: 'MyCtrl', + * controllerAs: 'ctrl', + * bindings: {name: '@'} + * }); + * + * ``` + * For more examples, and an in-depth guide, see the {@link guide/component component guide}. + * + *
    + * See also {@link ng.$compileProvider#directive $compileProvider.directive()}. + */ + this.component = function registerComponent(name, options) { + var controller = options.controller || noop; + + function factory($injector) { + function makeInjectable(fn) { + if (isFunction(fn) || isArray(fn)) { + return function(tElement, tAttrs) { + return $injector.invoke(fn, this, {$element: tElement, $attrs: tAttrs}); + }; + } else { + return fn; + } + } + + var template = (!options.template && !options.templateUrl ? '' : options.template); + return { + controller: controller, + controllerAs: identifierForController(options.controller) || options.controllerAs || '$ctrl', + template: makeInjectable(template), + templateUrl: makeInjectable(options.templateUrl), + transclude: options.transclude, + scope: {}, + bindToController: options.bindings || {}, + restrict: 'E', + require: options.require + }; + } + + // Copy any annotation properties (starting with $) over to the factory function + // These could be used by libraries such as the new component router + forEach(options, function(val, key) { + if (key.charAt(0) === '$') { + factory[key] = val; + controller[key] = val; + } + }); + + factory.$inject = ['$injector']; + + return this.directive(name, factory); + }; + + + /** + * @ngdoc method + * @name $compileProvider#aHrefSanitizationWhitelist + * @kind function + * + * @description + * Retrieves or overrides the default regular expression that is used for whitelisting of safe + * urls during a[href] sanitization. + * + * The sanitization is a security measure aimed at preventing XSS attacks via html links. + * + * Any url about to be assigned to a[href] via data-binding is first normalized and turned into + * an absolute url. Afterwards, the url is matched against the `aHrefSanitizationWhitelist` + * regular expression. If a match is found, the original url is written into the dom. Otherwise, + * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM. + * + * @param {RegExp=} regexp New regexp to whitelist urls with. + * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for + * chaining otherwise. + */ + this.aHrefSanitizationWhitelist = function(regexp) { + if (isDefined(regexp)) { + $$sanitizeUriProvider.aHrefSanitizationWhitelist(regexp); + return this; + } else { + return $$sanitizeUriProvider.aHrefSanitizationWhitelist(); + } + }; + + + /** + * @ngdoc method + * @name $compileProvider#imgSrcSanitizationWhitelist + * @kind function + * + * @description + * Retrieves or overrides the default regular expression that is used for whitelisting of safe + * urls during img[src] sanitization. + * + * The sanitization is a security measure aimed at prevent XSS attacks via html links. + * + * Any url about to be assigned to img[src] via data-binding is first normalized and turned into + * an absolute url. Afterwards, the url is matched against the `imgSrcSanitizationWhitelist` + * regular expression. If a match is found, the original url is written into the dom. Otherwise, + * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM. + * + * @param {RegExp=} regexp New regexp to whitelist urls with. + * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for + * chaining otherwise. + */ + this.imgSrcSanitizationWhitelist = function(regexp) { + if (isDefined(regexp)) { + $$sanitizeUriProvider.imgSrcSanitizationWhitelist(regexp); + return this; + } else { + return $$sanitizeUriProvider.imgSrcSanitizationWhitelist(); + } + }; + + /** + * @ngdoc method + * @name $compileProvider#debugInfoEnabled + * + * @param {boolean=} enabled update the debugInfoEnabled state if provided, otherwise just return the + * current debugInfoEnabled state + * @returns {*} current value if used as getter or itself (chaining) if used as setter + * + * @kind function + * + * @description + * Call this method to enable/disable various debug runtime information in the compiler such as adding + * binding information and a reference to the current scope on to DOM elements. + * If enabled, the compiler will add the following to DOM elements that have been bound to the scope + * * `ng-binding` CSS class + * * `$binding` data property containing an array of the binding expressions + * + * You may want to disable this in production for a significant performance boost. See + * {@link guide/production#disabling-debug-data Disabling Debug Data} for more. + * + * The default value is true. + */ + var debugInfoEnabled = true; + this.debugInfoEnabled = function(enabled) { + if (isDefined(enabled)) { + debugInfoEnabled = enabled; + return this; + } + return debugInfoEnabled; + }; + + + var TTL = 10; + /** + * @ngdoc method + * @name $compileProvider#onChangesTtl + * @description + * + * Sets the number of times `$onChanges` hooks can trigger new changes before giving up and + * assuming that the model is unstable. + * + * The current default is 10 iterations. + * + * In complex applications it's possible that dependencies between `$onChanges` hooks and bindings will result + * in several iterations of calls to these hooks. However if an application needs more than the default 10 + * iterations to stabilize then you should investigate what is causing the model to continuously change during + * the `$onChanges` hook execution. + * + * Increasing the TTL could have performance implications, so you should not change it without proper justification. + * + * @param {number} limit The number of `$onChanges` hook iterations. + * @returns {number|object} the current limit (or `this` if called as a setter for chaining) + */ + this.onChangesTtl = function(value) { + if (arguments.length) { + TTL = value; + return this; + } + return TTL; + }; + + this.$get = [ + '$injector', '$interpolate', '$exceptionHandler', '$templateRequest', '$parse', + '$controller', '$rootScope', '$sce', '$animate', '$$sanitizeUri', + function($injector, $interpolate, $exceptionHandler, $templateRequest, $parse, + $controller, $rootScope, $sce, $animate, $$sanitizeUri) { + + var SIMPLE_ATTR_NAME = /^\w/; + var specialAttrHolder = document.createElement('div'); + + + + var onChangesTtl = TTL; + // The onChanges hooks should all be run together in a single digest + // When changes occur, the call to trigger their hooks will be added to this queue + var onChangesQueue; + + // This function is called in a $$postDigest to trigger all the onChanges hooks in a single digest + function flushOnChangesQueue() { + try { + if (!(--onChangesTtl)) { + // We have hit the TTL limit so reset everything + onChangesQueue = undefined; + throw $compileMinErr('infchng', '{0} $onChanges() iterations reached. Aborting!\n', TTL); + } + // We must run this hook in an apply since the $$postDigest runs outside apply + $rootScope.$apply(function() { + for (var i = 0, ii = onChangesQueue.length; i < ii; ++i) { + onChangesQueue[i](); + } + // Reset the queue to trigger a new schedule next time there is a change + onChangesQueue = undefined; + }); + } finally { + onChangesTtl++; + } + } + + + function Attributes(element, attributesToCopy) { + if (attributesToCopy) { + var keys = Object.keys(attributesToCopy); + var i, l, key; + + for (i = 0, l = keys.length; i < l; i++) { + key = keys[i]; + this[key] = attributesToCopy[key]; + } + } else { + this.$attr = {}; + } + + this.$$element = element; + } + + Attributes.prototype = { + /** + * @ngdoc method + * @name $compile.directive.Attributes#$normalize + * @kind function + * + * @description + * Converts an attribute name (e.g. dash/colon/underscore-delimited string, optionally prefixed with `x-` or + * `data-`) to its normalized, camelCase form. + * + * Also there is special case for Moz prefix starting with upper case letter. + * + * For further information check out the guide on {@link guide/directive#matching-directives Matching Directives} + * + * @param {string} name Name to normalize + */ + $normalize: directiveNormalize, + + + /** + * @ngdoc method + * @name $compile.directive.Attributes#$addClass + * @kind function + * + * @description + * Adds the CSS class value specified by the classVal parameter to the element. If animations + * are enabled then an animation will be triggered for the class addition. + * + * @param {string} classVal The className value that will be added to the element + */ + $addClass: function(classVal) { + if (classVal && classVal.length > 0) { + $animate.addClass(this.$$element, classVal); + } + }, + + /** + * @ngdoc method + * @name $compile.directive.Attributes#$removeClass + * @kind function + * + * @description + * Removes the CSS class value specified by the classVal parameter from the element. If + * animations are enabled then an animation will be triggered for the class removal. + * + * @param {string} classVal The className value that will be removed from the element + */ + $removeClass: function(classVal) { + if (classVal && classVal.length > 0) { + $animate.removeClass(this.$$element, classVal); + } + }, + + /** + * @ngdoc method + * @name $compile.directive.Attributes#$updateClass + * @kind function + * + * @description + * Adds and removes the appropriate CSS class values to the element based on the difference + * between the new and old CSS class values (specified as newClasses and oldClasses). + * + * @param {string} newClasses The current CSS className value + * @param {string} oldClasses The former CSS className value + */ + $updateClass: function(newClasses, oldClasses) { + var toAdd = tokenDifference(newClasses, oldClasses); + if (toAdd && toAdd.length) { + $animate.addClass(this.$$element, toAdd); + } + + var toRemove = tokenDifference(oldClasses, newClasses); + if (toRemove && toRemove.length) { + $animate.removeClass(this.$$element, toRemove); + } + }, + + /** + * Set a normalized attribute on the element in a way such that all directives + * can share the attribute. This function properly handles boolean attributes. + * @param {string} key Normalized key. (ie ngAttribute) + * @param {string|boolean} value The value to set. If `null` attribute will be deleted. + * @param {boolean=} writeAttr If false, does not write the value to DOM element attribute. + * Defaults to true. + * @param {string=} attrName Optional none normalized name. Defaults to key. + */ + $set: function(key, value, writeAttr, attrName) { + // TODO: decide whether or not to throw an error if "class" + //is set through this function since it may cause $updateClass to + //become unstable. + + var node = this.$$element[0], + booleanKey = getBooleanAttrName(node, key), + aliasedKey = getAliasedAttrName(key), + observer = key, + nodeName; + + if (booleanKey) { + this.$$element.prop(key, value); + attrName = booleanKey; + } else if (aliasedKey) { + this[aliasedKey] = value; + observer = aliasedKey; + } + + this[key] = value; + + // translate normalized key to actual key + if (attrName) { + this.$attr[key] = attrName; + } else { + attrName = this.$attr[key]; + if (!attrName) { + this.$attr[key] = attrName = snake_case(key, '-'); + } + } + + nodeName = nodeName_(this.$$element); + + if ((nodeName === 'a' && (key === 'href' || key === 'xlinkHref')) || + (nodeName === 'img' && key === 'src')) { + // sanitize a[href] and img[src] values + this[key] = value = $$sanitizeUri(value, key === 'src'); + } else if (nodeName === 'img' && key === 'srcset') { + // sanitize img[srcset] values + var result = ""; + + // first check if there are spaces because it's not the same pattern + var trimmedSrcset = trim(value); + // ( 999x ,| 999w ,| ,|, ) + var srcPattern = /(\s+\d+x\s*,|\s+\d+w\s*,|\s+,|,\s+)/; + var pattern = /\s/.test(trimmedSrcset) ? srcPattern : /(,)/; + + // split srcset into tuple of uri and descriptor except for the last item + var rawUris = trimmedSrcset.split(pattern); + + // for each tuples + var nbrUrisWith2parts = Math.floor(rawUris.length / 2); + for (var i = 0; i < nbrUrisWith2parts; i++) { + var innerIdx = i * 2; + // sanitize the uri + result += $$sanitizeUri(trim(rawUris[innerIdx]), true); + // add the descriptor + result += (" " + trim(rawUris[innerIdx + 1])); + } + + // split the last item into uri and descriptor + var lastTuple = trim(rawUris[i * 2]).split(/\s/); + + // sanitize the last uri + result += $$sanitizeUri(trim(lastTuple[0]), true); + + // and add the last descriptor if any + if (lastTuple.length === 2) { + result += (" " + trim(lastTuple[1])); + } + this[key] = value = result; + } + + if (writeAttr !== false) { + if (value === null || isUndefined(value)) { + this.$$element.removeAttr(attrName); + } else { + if (SIMPLE_ATTR_NAME.test(attrName)) { + this.$$element.attr(attrName, value); + } else { + setSpecialAttr(this.$$element[0], attrName, value); + } + } + } + + // fire observers + var $$observers = this.$$observers; + $$observers && forEach($$observers[observer], function(fn) { + try { + fn(value); + } catch (e) { + $exceptionHandler(e); + } + }); + }, + + + /** + * @ngdoc method + * @name $compile.directive.Attributes#$observe + * @kind function + * + * @description + * Observes an interpolated attribute. + * + * The observer function will be invoked once during the next `$digest` following + * compilation. The observer is then invoked whenever the interpolated value + * changes. + * + * @param {string} key Normalized key. (ie ngAttribute) . + * @param {function(interpolatedValue)} fn Function that will be called whenever + the interpolated value of the attribute changes. + * See the {@link guide/interpolation#how-text-and-attribute-bindings-work Interpolation + * guide} for more info. + * @returns {function()} Returns a deregistration function for this observer. + */ + $observe: function(key, fn) { + var attrs = this, + $$observers = (attrs.$$observers || (attrs.$$observers = createMap())), + listeners = ($$observers[key] || ($$observers[key] = [])); + + listeners.push(fn); + $rootScope.$evalAsync(function() { + if (!listeners.$$inter && attrs.hasOwnProperty(key) && !isUndefined(attrs[key])) { + // no one registered attribute interpolation function, so lets call it manually + fn(attrs[key]); + } + }); + + return function() { + arrayRemove(listeners, fn); + }; + } + }; + + function setSpecialAttr(element, attrName, value) { + // Attributes names that do not start with letters (such as `(click)`) cannot be set using `setAttribute` + // so we have to jump through some hoops to get such an attribute + // https://github.com/angular/angular.js/pull/13318 + specialAttrHolder.innerHTML = ""; + var attributes = specialAttrHolder.firstChild.attributes; + var attribute = attributes[0]; + // We have to remove the attribute from its container element before we can add it to the destination element + attributes.removeNamedItem(attribute.name); + attribute.value = value; + element.attributes.setNamedItem(attribute); + } + + function safeAddClass($element, className) { + try { + $element.addClass(className); + } catch (e) { + // ignore, since it means that we are trying to set class on + // SVG element, where class name is read-only. + } + } + + + var startSymbol = $interpolate.startSymbol(), + endSymbol = $interpolate.endSymbol(), + denormalizeTemplate = (startSymbol == '{{' && endSymbol == '}}') + ? identity + : function denormalizeTemplate(template) { + return template.replace(/\{\{/g, startSymbol).replace(/}}/g, endSymbol); + }, + NG_ATTR_BINDING = /^ngAttr[A-Z]/; + var MULTI_ELEMENT_DIR_RE = /^(.+)Start$/; + + compile.$$addBindingInfo = debugInfoEnabled ? function $$addBindingInfo($element, binding) { + var bindings = $element.data('$binding') || []; + + if (isArray(binding)) { + bindings = bindings.concat(binding); + } else { + bindings.push(binding); + } + + $element.data('$binding', bindings); + } : noop; + + compile.$$addBindingClass = debugInfoEnabled ? function $$addBindingClass($element) { + safeAddClass($element, 'ng-binding'); + } : noop; + + compile.$$addScopeInfo = debugInfoEnabled ? function $$addScopeInfo($element, scope, isolated, noTemplate) { + var dataName = isolated ? (noTemplate ? '$isolateScopeNoTemplate' : '$isolateScope') : '$scope'; + $element.data(dataName, scope); + } : noop; + + compile.$$addScopeClass = debugInfoEnabled ? function $$addScopeClass($element, isolated) { + safeAddClass($element, isolated ? 'ng-isolate-scope' : 'ng-scope'); + } : noop; + + compile.$$createComment = function(directiveName, comment) { + var content = ''; + if (debugInfoEnabled) { + content = ' ' + (directiveName || '') + ': ' + (comment || '') + ' '; + } + return document.createComment(content); + }; + + return compile; + + //================================ + + function compile($compileNodes, transcludeFn, maxPriority, ignoreDirective, + previousCompileContext) { + if (!($compileNodes instanceof jqLite)) { + // jquery always rewraps, whereas we need to preserve the original selector so that we can + // modify it. + $compileNodes = jqLite($compileNodes); + } + + var NOT_EMPTY = /\S+/; + + // We can not compile top level text elements since text nodes can be merged and we will + // not be able to attach scope data to them, so we will wrap them in + for (var i = 0, len = $compileNodes.length; i < len; i++) { + var domNode = $compileNodes[i]; + + if (domNode.nodeType === NODE_TYPE_TEXT && domNode.nodeValue.match(NOT_EMPTY) /* non-empty */) { + jqLiteWrapNode(domNode, $compileNodes[i] = document.createElement('span')); + } + } + + var compositeLinkFn = + compileNodes($compileNodes, transcludeFn, $compileNodes, + maxPriority, ignoreDirective, previousCompileContext); + compile.$$addScopeClass($compileNodes); + var namespace = null; + return function publicLinkFn(scope, cloneConnectFn, options) { + assertArg(scope, 'scope'); + + if (previousCompileContext && previousCompileContext.needsNewScope) { + // A parent directive did a replace and a directive on this element asked + // for transclusion, which caused us to lose a layer of element on which + // we could hold the new transclusion scope, so we will create it manually + // here. + scope = scope.$parent.$new(); + } + + options = options || {}; + var parentBoundTranscludeFn = options.parentBoundTranscludeFn, + transcludeControllers = options.transcludeControllers, + futureParentElement = options.futureParentElement; + + // When `parentBoundTranscludeFn` is passed, it is a + // `controllersBoundTransclude` function (it was previously passed + // as `transclude` to directive.link) so we must unwrap it to get + // its `boundTranscludeFn` + if (parentBoundTranscludeFn && parentBoundTranscludeFn.$$boundTransclude) { + parentBoundTranscludeFn = parentBoundTranscludeFn.$$boundTransclude; + } + + if (!namespace) { + namespace = detectNamespaceForChildElements(futureParentElement); + } + var $linkNode; + if (namespace !== 'html') { + // When using a directive with replace:true and templateUrl the $compileNodes + // (or a child element inside of them) + // might change, so we need to recreate the namespace adapted compileNodes + // for call to the link function. + // Note: This will already clone the nodes... + $linkNode = jqLite( + wrapTemplate(namespace, jqLite('
    ').append($compileNodes).html()) + ); + } else if (cloneConnectFn) { + // important!!: we must call our jqLite.clone() since the jQuery one is trying to be smart + // and sometimes changes the structure of the DOM. + $linkNode = JQLitePrototype.clone.call($compileNodes); + } else { + $linkNode = $compileNodes; + } + + if (transcludeControllers) { + for (var controllerName in transcludeControllers) { + $linkNode.data('$' + controllerName + 'Controller', transcludeControllers[controllerName].instance); + } + } + + compile.$$addScopeInfo($linkNode, scope); + + if (cloneConnectFn) cloneConnectFn($linkNode, scope); + if (compositeLinkFn) compositeLinkFn(scope, $linkNode, $linkNode, parentBoundTranscludeFn); + return $linkNode; + }; + } + + function detectNamespaceForChildElements(parentElement) { + // TODO: Make this detect MathML as well... + var node = parentElement && parentElement[0]; + if (!node) { + return 'html'; + } else { + return nodeName_(node) !== 'foreignobject' && toString.call(node).match(/SVG/) ? 'svg' : 'html'; + } + } + + /** + * Compile function matches each node in nodeList against the directives. Once all directives + * for a particular node are collected their compile functions are executed. The compile + * functions return values - the linking functions - are combined into a composite linking + * function, which is the a linking function for the node. + * + * @param {NodeList} nodeList an array of nodes or NodeList to compile + * @param {function(angular.Scope, cloneAttachFn=)} transcludeFn A linking function, where the + * scope argument is auto-generated to the new child of the transcluded parent scope. + * @param {DOMElement=} $rootElement If the nodeList is the root of the compilation tree then + * the rootElement must be set the jqLite collection of the compile root. This is + * needed so that the jqLite collection items can be replaced with widgets. + * @param {number=} maxPriority Max directive priority. + * @returns {Function} A composite linking function of all of the matched directives or null. + */ + function compileNodes(nodeList, transcludeFn, $rootElement, maxPriority, ignoreDirective, + previousCompileContext) { + var linkFns = [], + attrs, directives, nodeLinkFn, childNodes, childLinkFn, linkFnFound, nodeLinkFnFound; + + for (var i = 0; i < nodeList.length; i++) { + attrs = new Attributes(); + + // we must always refer to nodeList[i] since the nodes can be replaced underneath us. + directives = collectDirectives(nodeList[i], [], attrs, i === 0 ? maxPriority : undefined, + ignoreDirective); + + nodeLinkFn = (directives.length) + ? applyDirectivesToNode(directives, nodeList[i], attrs, transcludeFn, $rootElement, + null, [], [], previousCompileContext) + : null; + + if (nodeLinkFn && nodeLinkFn.scope) { + compile.$$addScopeClass(attrs.$$element); + } + + childLinkFn = (nodeLinkFn && nodeLinkFn.terminal || + !(childNodes = nodeList[i].childNodes) || + !childNodes.length) + ? null + : compileNodes(childNodes, + nodeLinkFn ? ( + (nodeLinkFn.transcludeOnThisElement || !nodeLinkFn.templateOnThisElement) + && nodeLinkFn.transclude) : transcludeFn); + + if (nodeLinkFn || childLinkFn) { + linkFns.push(i, nodeLinkFn, childLinkFn); + linkFnFound = true; + nodeLinkFnFound = nodeLinkFnFound || nodeLinkFn; + } + + //use the previous context only for the first element in the virtual group + previousCompileContext = null; + } + + // return a linking function if we have found anything, null otherwise + return linkFnFound ? compositeLinkFn : null; + + function compositeLinkFn(scope, nodeList, $rootElement, parentBoundTranscludeFn) { + var nodeLinkFn, childLinkFn, node, childScope, i, ii, idx, childBoundTranscludeFn; + var stableNodeList; + + + if (nodeLinkFnFound) { + // copy nodeList so that if a nodeLinkFn removes or adds an element at this DOM level our + // offsets don't get screwed up + var nodeListLength = nodeList.length; + stableNodeList = new Array(nodeListLength); + + // create a sparse array by only copying the elements which have a linkFn + for (i = 0; i < linkFns.length; i+=3) { + idx = linkFns[i]; + stableNodeList[idx] = nodeList[idx]; + } + } else { + stableNodeList = nodeList; + } + + for (i = 0, ii = linkFns.length; i < ii;) { + node = stableNodeList[linkFns[i++]]; + nodeLinkFn = linkFns[i++]; + childLinkFn = linkFns[i++]; + + if (nodeLinkFn) { + if (nodeLinkFn.scope) { + childScope = scope.$new(); + compile.$$addScopeInfo(jqLite(node), childScope); + } else { + childScope = scope; + } + + if (nodeLinkFn.transcludeOnThisElement) { + childBoundTranscludeFn = createBoundTranscludeFn( + scope, nodeLinkFn.transclude, parentBoundTranscludeFn); + + } else if (!nodeLinkFn.templateOnThisElement && parentBoundTranscludeFn) { + childBoundTranscludeFn = parentBoundTranscludeFn; + + } else if (!parentBoundTranscludeFn && transcludeFn) { + childBoundTranscludeFn = createBoundTranscludeFn(scope, transcludeFn); + + } else { + childBoundTranscludeFn = null; + } + + nodeLinkFn(childLinkFn, childScope, node, $rootElement, childBoundTranscludeFn); + + } else if (childLinkFn) { + childLinkFn(scope, node.childNodes, undefined, parentBoundTranscludeFn); + } + } + } + } + + function createBoundTranscludeFn(scope, transcludeFn, previousBoundTranscludeFn) { + function boundTranscludeFn(transcludedScope, cloneFn, controllers, futureParentElement, containingScope) { + + if (!transcludedScope) { + transcludedScope = scope.$new(false, containingScope); + transcludedScope.$$transcluded = true; + } + + return transcludeFn(transcludedScope, cloneFn, { + parentBoundTranscludeFn: previousBoundTranscludeFn, + transcludeControllers: controllers, + futureParentElement: futureParentElement + }); + } + + // We need to attach the transclusion slots onto the `boundTranscludeFn` + // so that they are available inside the `controllersBoundTransclude` function + var boundSlots = boundTranscludeFn.$$slots = createMap(); + for (var slotName in transcludeFn.$$slots) { + if (transcludeFn.$$slots[slotName]) { + boundSlots[slotName] = createBoundTranscludeFn(scope, transcludeFn.$$slots[slotName], previousBoundTranscludeFn); + } else { + boundSlots[slotName] = null; + } + } + + return boundTranscludeFn; + } + + /** + * Looks for directives on the given node and adds them to the directive collection which is + * sorted. + * + * @param node Node to search. + * @param directives An array to which the directives are added to. This array is sorted before + * the function returns. + * @param attrs The shared attrs object which is used to populate the normalized attributes. + * @param {number=} maxPriority Max directive priority. + */ + function collectDirectives(node, directives, attrs, maxPriority, ignoreDirective) { + var nodeType = node.nodeType, + attrsMap = attrs.$attr, + match, + className; + + switch (nodeType) { + case NODE_TYPE_ELEMENT: /* Element */ + // use the node name: + addDirective(directives, + directiveNormalize(nodeName_(node)), 'E', maxPriority, ignoreDirective); + + // iterate over the attributes + for (var attr, name, nName, ngAttrName, value, isNgAttr, nAttrs = node.attributes, + j = 0, jj = nAttrs && nAttrs.length; j < jj; j++) { + var attrStartName = false; + var attrEndName = false; + + attr = nAttrs[j]; + name = attr.name; + value = trim(attr.value); + + // support ngAttr attribute binding + ngAttrName = directiveNormalize(name); + if (isNgAttr = NG_ATTR_BINDING.test(ngAttrName)) { + name = name.replace(PREFIX_REGEXP, '') + .substr(8).replace(/_(.)/g, function(match, letter) { + return letter.toUpperCase(); + }); + } + + var multiElementMatch = ngAttrName.match(MULTI_ELEMENT_DIR_RE); + if (multiElementMatch && directiveIsMultiElement(multiElementMatch[1])) { + attrStartName = name; + attrEndName = name.substr(0, name.length - 5) + 'end'; + name = name.substr(0, name.length - 6); + } + + nName = directiveNormalize(name.toLowerCase()); + attrsMap[nName] = name; + if (isNgAttr || !attrs.hasOwnProperty(nName)) { + attrs[nName] = value; + if (getBooleanAttrName(node, nName)) { + attrs[nName] = true; // presence means true + } + } + addAttrInterpolateDirective(node, directives, value, nName, isNgAttr); + addDirective(directives, nName, 'A', maxPriority, ignoreDirective, attrStartName, + attrEndName); + } + + // use class as directive + className = node.className; + if (isObject(className)) { + // Maybe SVGAnimatedString + className = className.animVal; + } + if (isString(className) && className !== '') { + while (match = CLASS_DIRECTIVE_REGEXP.exec(className)) { + nName = directiveNormalize(match[2]); + if (addDirective(directives, nName, 'C', maxPriority, ignoreDirective)) { + attrs[nName] = trim(match[3]); + } + className = className.substr(match.index + match[0].length); + } + } + break; + case NODE_TYPE_TEXT: /* Text Node */ + if (msie === 11) { + // Workaround for #11781 + while (node.parentNode && node.nextSibling && node.nextSibling.nodeType === NODE_TYPE_TEXT) { + node.nodeValue = node.nodeValue + node.nextSibling.nodeValue; + node.parentNode.removeChild(node.nextSibling); + } + } + addTextInterpolateDirective(directives, node.nodeValue); + break; + case NODE_TYPE_COMMENT: /* Comment */ + try { + match = COMMENT_DIRECTIVE_REGEXP.exec(node.nodeValue); + if (match) { + nName = directiveNormalize(match[1]); + if (addDirective(directives, nName, 'M', maxPriority, ignoreDirective)) { + attrs[nName] = trim(match[2]); + } + } + } catch (e) { + // turns out that under some circumstances IE9 throws errors when one attempts to read + // comment's node value. + // Just ignore it and continue. (Can't seem to reproduce in test case.) + } + break; + } + + directives.sort(byPriority); + return directives; + } + + /** + * Given a node with an directive-start it collects all of the siblings until it finds + * directive-end. + * @param node + * @param attrStart + * @param attrEnd + * @returns {*} + */ + function groupScan(node, attrStart, attrEnd) { + var nodes = []; + var depth = 0; + if (attrStart && node.hasAttribute && node.hasAttribute(attrStart)) { + do { + if (!node) { + throw $compileMinErr('uterdir', + "Unterminated attribute, found '{0}' but no matching '{1}' found.", + attrStart, attrEnd); + } + if (node.nodeType == NODE_TYPE_ELEMENT) { + if (node.hasAttribute(attrStart)) depth++; + if (node.hasAttribute(attrEnd)) depth--; + } + nodes.push(node); + node = node.nextSibling; + } while (depth > 0); + } else { + nodes.push(node); + } + + return jqLite(nodes); + } + + /** + * Wrapper for linking function which converts normal linking function into a grouped + * linking function. + * @param linkFn + * @param attrStart + * @param attrEnd + * @returns {Function} + */ + function groupElementsLinkFnWrapper(linkFn, attrStart, attrEnd) { + return function groupedElementsLink(scope, element, attrs, controllers, transcludeFn) { + element = groupScan(element[0], attrStart, attrEnd); + return linkFn(scope, element, attrs, controllers, transcludeFn); + }; + } + + /** + * A function generator that is used to support both eager and lazy compilation + * linking function. + * @param eager + * @param $compileNodes + * @param transcludeFn + * @param maxPriority + * @param ignoreDirective + * @param previousCompileContext + * @returns {Function} + */ + function compilationGenerator(eager, $compileNodes, transcludeFn, maxPriority, ignoreDirective, previousCompileContext) { + var compiled; + + if (eager) { + return compile($compileNodes, transcludeFn, maxPriority, ignoreDirective, previousCompileContext); + } + return function lazyCompilation() { + if (!compiled) { + compiled = compile($compileNodes, transcludeFn, maxPriority, ignoreDirective, previousCompileContext); + + // Null out all of these references in order to make them eligible for garbage collection + // since this is a potentially long lived closure + $compileNodes = transcludeFn = previousCompileContext = null; + } + return compiled.apply(this, arguments); + }; + } + + /** + * Once the directives have been collected, their compile functions are executed. This method + * is responsible for inlining directive templates as well as terminating the application + * of the directives if the terminal directive has been reached. + * + * @param {Array} directives Array of collected directives to execute their compile function. + * this needs to be pre-sorted by priority order. + * @param {Node} compileNode The raw DOM node to apply the compile functions to + * @param {Object} templateAttrs The shared attribute function + * @param {function(angular.Scope, cloneAttachFn=)} transcludeFn A linking function, where the + * scope argument is auto-generated to the new + * child of the transcluded parent scope. + * @param {JQLite} jqCollection If we are working on the root of the compile tree then this + * argument has the root jqLite array so that we can replace nodes + * on it. + * @param {Object=} originalReplaceDirective An optional directive that will be ignored when + * compiling the transclusion. + * @param {Array.} preLinkFns + * @param {Array.} postLinkFns + * @param {Object} previousCompileContext Context used for previous compilation of the current + * node + * @returns {Function} linkFn + */ + function applyDirectivesToNode(directives, compileNode, templateAttrs, transcludeFn, + jqCollection, originalReplaceDirective, preLinkFns, postLinkFns, + previousCompileContext) { + previousCompileContext = previousCompileContext || {}; + + var terminalPriority = -Number.MAX_VALUE, + newScopeDirective = previousCompileContext.newScopeDirective, + controllerDirectives = previousCompileContext.controllerDirectives, + newIsolateScopeDirective = previousCompileContext.newIsolateScopeDirective, + templateDirective = previousCompileContext.templateDirective, + nonTlbTranscludeDirective = previousCompileContext.nonTlbTranscludeDirective, + hasTranscludeDirective = false, + hasTemplate = false, + hasElementTranscludeDirective = previousCompileContext.hasElementTranscludeDirective, + $compileNode = templateAttrs.$$element = jqLite(compileNode), + directive, + directiveName, + $template, + replaceDirective = originalReplaceDirective, + childTranscludeFn = transcludeFn, + linkFn, + didScanForMultipleTransclusion = false, + mightHaveMultipleTransclusionError = false, + directiveValue; + + // executes all directives on the current element + for (var i = 0, ii = directives.length; i < ii; i++) { + directive = directives[i]; + var attrStart = directive.$$start; + var attrEnd = directive.$$end; + + // collect multiblock sections + if (attrStart) { + $compileNode = groupScan(compileNode, attrStart, attrEnd); + } + $template = undefined; + + if (terminalPriority > directive.priority) { + break; // prevent further processing of directives + } + + if (directiveValue = directive.scope) { + + // skip the check for directives with async templates, we'll check the derived sync + // directive when the template arrives + if (!directive.templateUrl) { + if (isObject(directiveValue)) { + // This directive is trying to add an isolated scope. + // Check that there is no scope of any kind already + assertNoDuplicate('new/isolated scope', newIsolateScopeDirective || newScopeDirective, + directive, $compileNode); + newIsolateScopeDirective = directive; + } else { + // This directive is trying to add a child scope. + // Check that there is no isolated scope already + assertNoDuplicate('new/isolated scope', newIsolateScopeDirective, directive, + $compileNode); + } + } + + newScopeDirective = newScopeDirective || directive; + } + + directiveName = directive.name; + + // If we encounter a condition that can result in transclusion on the directive, + // then scan ahead in the remaining directives for others that may cause a multiple + // transclusion error to be thrown during the compilation process. If a matching directive + // is found, then we know that when we encounter a transcluded directive, we need to eagerly + // compile the `transclude` function rather than doing it lazily in order to throw + // exceptions at the correct time + if (!didScanForMultipleTransclusion && ((directive.replace && (directive.templateUrl || directive.template)) + || (directive.transclude && !directive.$$tlb))) { + var candidateDirective; + + for (var scanningIndex = i + 1; candidateDirective = directives[scanningIndex++];) { + if ((candidateDirective.transclude && !candidateDirective.$$tlb) + || (candidateDirective.replace && (candidateDirective.templateUrl || candidateDirective.template))) { + mightHaveMultipleTransclusionError = true; + break; + } + } + + didScanForMultipleTransclusion = true; + } + + if (!directive.templateUrl && directive.controller) { + directiveValue = directive.controller; + controllerDirectives = controllerDirectives || createMap(); + assertNoDuplicate("'" + directiveName + "' controller", + controllerDirectives[directiveName], directive, $compileNode); + controllerDirectives[directiveName] = directive; + } + + if (directiveValue = directive.transclude) { + hasTranscludeDirective = true; + + // Special case ngIf and ngRepeat so that we don't complain about duplicate transclusion. + // This option should only be used by directives that know how to safely handle element transclusion, + // where the transcluded nodes are added or replaced after linking. + if (!directive.$$tlb) { + assertNoDuplicate('transclusion', nonTlbTranscludeDirective, directive, $compileNode); + nonTlbTranscludeDirective = directive; + } + + if (directiveValue == 'element') { + hasElementTranscludeDirective = true; + terminalPriority = directive.priority; + $template = $compileNode; + $compileNode = templateAttrs.$$element = + jqLite(compile.$$createComment(directiveName, templateAttrs[directiveName])); + compileNode = $compileNode[0]; + replaceWith(jqCollection, sliceArgs($template), compileNode); + + // Support: Chrome < 50 + // https://github.com/angular/angular.js/issues/14041 + + // In the versions of V8 prior to Chrome 50, the document fragment that is created + // in the `replaceWith` function is improperly garbage collected despite still + // being referenced by the `parentNode` property of all of the child nodes. By adding + // a reference to the fragment via a different property, we can avoid that incorrect + // behavior. + // TODO: remove this line after Chrome 50 has been released + $template[0].$$parentNode = $template[0].parentNode; + + childTranscludeFn = compilationGenerator(mightHaveMultipleTransclusionError, $template, transcludeFn, terminalPriority, + replaceDirective && replaceDirective.name, { + // Don't pass in: + // - controllerDirectives - otherwise we'll create duplicates controllers + // - newIsolateScopeDirective or templateDirective - combining templates with + // element transclusion doesn't make sense. + // + // We need only nonTlbTranscludeDirective so that we prevent putting transclusion + // on the same element more than once. + nonTlbTranscludeDirective: nonTlbTranscludeDirective + }); + } else { + + var slots = createMap(); + + $template = jqLite(jqLiteClone(compileNode)).contents(); + + if (isObject(directiveValue)) { + + // We have transclusion slots, + // collect them up, compile them and store their transclusion functions + $template = []; + + var slotMap = createMap(); + var filledSlots = createMap(); + + // Parse the element selectors + forEach(directiveValue, function(elementSelector, slotName) { + // If an element selector starts with a ? then it is optional + var optional = (elementSelector.charAt(0) === '?'); + elementSelector = optional ? elementSelector.substring(1) : elementSelector; + + slotMap[elementSelector] = slotName; + + // We explicitly assign `null` since this implies that a slot was defined but not filled. + // Later when calling boundTransclusion functions with a slot name we only error if the + // slot is `undefined` + slots[slotName] = null; + + // filledSlots contains `true` for all slots that are either optional or have been + // filled. This is used to check that we have not missed any required slots + filledSlots[slotName] = optional; + }); + + // Add the matching elements into their slot + forEach($compileNode.contents(), function(node) { + var slotName = slotMap[directiveNormalize(nodeName_(node))]; + if (slotName) { + filledSlots[slotName] = true; + slots[slotName] = slots[slotName] || []; + slots[slotName].push(node); + } else { + $template.push(node); + } + }); + + // Check for required slots that were not filled + forEach(filledSlots, function(filled, slotName) { + if (!filled) { + throw $compileMinErr('reqslot', 'Required transclusion slot `{0}` was not filled.', slotName); + } + }); + + for (var slotName in slots) { + if (slots[slotName]) { + // Only define a transclusion function if the slot was filled + slots[slotName] = compilationGenerator(mightHaveMultipleTransclusionError, slots[slotName], transcludeFn); + } + } + } + + $compileNode.empty(); // clear contents + childTranscludeFn = compilationGenerator(mightHaveMultipleTransclusionError, $template, transcludeFn, undefined, + undefined, { needsNewScope: directive.$$isolateScope || directive.$$newScope}); + childTranscludeFn.$$slots = slots; + } + } + + if (directive.template) { + hasTemplate = true; + assertNoDuplicate('template', templateDirective, directive, $compileNode); + templateDirective = directive; + + directiveValue = (isFunction(directive.template)) + ? directive.template($compileNode, templateAttrs) + : directive.template; + + directiveValue = denormalizeTemplate(directiveValue); + + if (directive.replace) { + replaceDirective = directive; + if (jqLiteIsTextNode(directiveValue)) { + $template = []; + } else { + $template = removeComments(wrapTemplate(directive.templateNamespace, trim(directiveValue))); + } + compileNode = $template[0]; + + if ($template.length != 1 || compileNode.nodeType !== NODE_TYPE_ELEMENT) { + throw $compileMinErr('tplrt', + "Template for directive '{0}' must have exactly one root element. {1}", + directiveName, ''); + } + + replaceWith(jqCollection, $compileNode, compileNode); + + var newTemplateAttrs = {$attr: {}}; + + // combine directives from the original node and from the template: + // - take the array of directives for this element + // - split it into two parts, those that already applied (processed) and those that weren't (unprocessed) + // - collect directives from the template and sort them by priority + // - combine directives as: processed + template + unprocessed + var templateDirectives = collectDirectives(compileNode, [], newTemplateAttrs); + var unprocessedDirectives = directives.splice(i + 1, directives.length - (i + 1)); + + if (newIsolateScopeDirective || newScopeDirective) { + // The original directive caused the current element to be replaced but this element + // also needs to have a new scope, so we need to tell the template directives + // that they would need to get their scope from further up, if they require transclusion + markDirectiveScope(templateDirectives, newIsolateScopeDirective, newScopeDirective); + } + directives = directives.concat(templateDirectives).concat(unprocessedDirectives); + mergeTemplateAttributes(templateAttrs, newTemplateAttrs); + + ii = directives.length; + } else { + $compileNode.html(directiveValue); + } + } + + if (directive.templateUrl) { + hasTemplate = true; + assertNoDuplicate('template', templateDirective, directive, $compileNode); + templateDirective = directive; + + if (directive.replace) { + replaceDirective = directive; + } + + nodeLinkFn = compileTemplateUrl(directives.splice(i, directives.length - i), $compileNode, + templateAttrs, jqCollection, hasTranscludeDirective && childTranscludeFn, preLinkFns, postLinkFns, { + controllerDirectives: controllerDirectives, + newScopeDirective: (newScopeDirective !== directive) && newScopeDirective, + newIsolateScopeDirective: newIsolateScopeDirective, + templateDirective: templateDirective, + nonTlbTranscludeDirective: nonTlbTranscludeDirective + }); + ii = directives.length; + } else if (directive.compile) { + try { + linkFn = directive.compile($compileNode, templateAttrs, childTranscludeFn); + if (isFunction(linkFn)) { + addLinkFns(null, linkFn, attrStart, attrEnd); + } else if (linkFn) { + addLinkFns(linkFn.pre, linkFn.post, attrStart, attrEnd); + } + } catch (e) { + $exceptionHandler(e, startingTag($compileNode)); + } + } + + if (directive.terminal) { + nodeLinkFn.terminal = true; + terminalPriority = Math.max(terminalPriority, directive.priority); + } + + } + + nodeLinkFn.scope = newScopeDirective && newScopeDirective.scope === true; + nodeLinkFn.transcludeOnThisElement = hasTranscludeDirective; + nodeLinkFn.templateOnThisElement = hasTemplate; + nodeLinkFn.transclude = childTranscludeFn; + + previousCompileContext.hasElementTranscludeDirective = hasElementTranscludeDirective; + + // might be normal or delayed nodeLinkFn depending on if templateUrl is present + return nodeLinkFn; + + //////////////////// + + function addLinkFns(pre, post, attrStart, attrEnd) { + if (pre) { + if (attrStart) pre = groupElementsLinkFnWrapper(pre, attrStart, attrEnd); + pre.require = directive.require; + pre.directiveName = directiveName; + if (newIsolateScopeDirective === directive || directive.$$isolateScope) { + pre = cloneAndAnnotateFn(pre, {isolateScope: true}); + } + preLinkFns.push(pre); + } + if (post) { + if (attrStart) post = groupElementsLinkFnWrapper(post, attrStart, attrEnd); + post.require = directive.require; + post.directiveName = directiveName; + if (newIsolateScopeDirective === directive || directive.$$isolateScope) { + post = cloneAndAnnotateFn(post, {isolateScope: true}); + } + postLinkFns.push(post); + } + } + + function nodeLinkFn(childLinkFn, scope, linkNode, $rootElement, boundTranscludeFn) { + var i, ii, linkFn, isolateScope, controllerScope, elementControllers, transcludeFn, $element, + attrs, removeScopeBindingWatches, removeControllerBindingWatches; + + if (compileNode === linkNode) { + attrs = templateAttrs; + $element = templateAttrs.$$element; + } else { + $element = jqLite(linkNode); + attrs = new Attributes($element, templateAttrs); + } + + controllerScope = scope; + if (newIsolateScopeDirective) { + isolateScope = scope.$new(true); + } else if (newScopeDirective) { + controllerScope = scope.$parent; + } + + if (boundTranscludeFn) { + // track `boundTranscludeFn` so it can be unwrapped if `transcludeFn` + // is later passed as `parentBoundTranscludeFn` to `publicLinkFn` + transcludeFn = controllersBoundTransclude; + transcludeFn.$$boundTransclude = boundTranscludeFn; + // expose the slots on the `$transclude` function + transcludeFn.isSlotFilled = function(slotName) { + return !!boundTranscludeFn.$$slots[slotName]; + }; + } + + if (controllerDirectives) { + elementControllers = setupControllers($element, attrs, transcludeFn, controllerDirectives, isolateScope, scope, newIsolateScopeDirective); + } + + if (newIsolateScopeDirective) { + // Initialize isolate scope bindings for new isolate scope directive. + compile.$$addScopeInfo($element, isolateScope, true, !(templateDirective && (templateDirective === newIsolateScopeDirective || + templateDirective === newIsolateScopeDirective.$$originalDirective))); + compile.$$addScopeClass($element, true); + isolateScope.$$isolateBindings = + newIsolateScopeDirective.$$isolateBindings; + removeScopeBindingWatches = initializeDirectiveBindings(scope, attrs, isolateScope, + isolateScope.$$isolateBindings, + newIsolateScopeDirective); + if (removeScopeBindingWatches) { + isolateScope.$on('$destroy', removeScopeBindingWatches); + } + } + + // Initialize bindToController bindings + for (var name in elementControllers) { + var controllerDirective = controllerDirectives[name]; + var controller = elementControllers[name]; + var bindings = controllerDirective.$$bindings.bindToController; + + if (controller.identifier && bindings) { + removeControllerBindingWatches = + initializeDirectiveBindings(controllerScope, attrs, controller.instance, bindings, controllerDirective); + } + + var controllerResult = controller(); + if (controllerResult !== controller.instance) { + // If the controller constructor has a return value, overwrite the instance + // from setupControllers + controller.instance = controllerResult; + $element.data('$' + controllerDirective.name + 'Controller', controllerResult); + removeControllerBindingWatches && removeControllerBindingWatches(); + removeControllerBindingWatches = + initializeDirectiveBindings(controllerScope, attrs, controller.instance, bindings, controllerDirective); + } + } + + // Bind the required controllers to the controller, if `require` is an object and `bindToController` is truthy + forEach(controllerDirectives, function(controllerDirective, name) { + var require = controllerDirective.require; + if (controllerDirective.bindToController && !isArray(require) && isObject(require)) { + extend(elementControllers[name].instance, getControllers(name, require, $element, elementControllers)); + } + }); + + // Handle the init and destroy lifecycle hooks on all controllers that have them + forEach(elementControllers, function(controller) { + var controllerInstance = controller.instance; + if (isFunction(controllerInstance.$onInit)) { + controllerInstance.$onInit(); + } + if (isFunction(controllerInstance.$onDestroy)) { + controllerScope.$on('$destroy', function callOnDestroyHook() { + controllerInstance.$onDestroy(); + }); + } + }); + + // PRELINKING + for (i = 0, ii = preLinkFns.length; i < ii; i++) { + linkFn = preLinkFns[i]; + invokeLinkFn(linkFn, + linkFn.isolateScope ? isolateScope : scope, + $element, + attrs, + linkFn.require && getControllers(linkFn.directiveName, linkFn.require, $element, elementControllers), + transcludeFn + ); + } + + // RECURSION + // We only pass the isolate scope, if the isolate directive has a template, + // otherwise the child elements do not belong to the isolate directive. + var scopeToChild = scope; + if (newIsolateScopeDirective && (newIsolateScopeDirective.template || newIsolateScopeDirective.templateUrl === null)) { + scopeToChild = isolateScope; + } + childLinkFn && childLinkFn(scopeToChild, linkNode.childNodes, undefined, boundTranscludeFn); + + // POSTLINKING + for (i = postLinkFns.length - 1; i >= 0; i--) { + linkFn = postLinkFns[i]; + invokeLinkFn(linkFn, + linkFn.isolateScope ? isolateScope : scope, + $element, + attrs, + linkFn.require && getControllers(linkFn.directiveName, linkFn.require, $element, elementControllers), + transcludeFn + ); + } + + // Trigger $postLink lifecycle hooks + forEach(elementControllers, function(controller) { + var controllerInstance = controller.instance; + if (isFunction(controllerInstance.$postLink)) { + controllerInstance.$postLink(); + } + }); + + // This is the function that is injected as `$transclude`. + // Note: all arguments are optional! + function controllersBoundTransclude(scope, cloneAttachFn, futureParentElement, slotName) { + var transcludeControllers; + // No scope passed in: + if (!isScope(scope)) { + slotName = futureParentElement; + futureParentElement = cloneAttachFn; + cloneAttachFn = scope; + scope = undefined; + } + + if (hasElementTranscludeDirective) { + transcludeControllers = elementControllers; + } + if (!futureParentElement) { + futureParentElement = hasElementTranscludeDirective ? $element.parent() : $element; + } + if (slotName) { + // slotTranscludeFn can be one of three things: + // * a transclude function - a filled slot + // * `null` - an optional slot that was not filled + // * `undefined` - a slot that was not declared (i.e. invalid) + var slotTranscludeFn = boundTranscludeFn.$$slots[slotName]; + if (slotTranscludeFn) { + return slotTranscludeFn(scope, cloneAttachFn, transcludeControllers, futureParentElement, scopeToChild); + } else if (isUndefined(slotTranscludeFn)) { + throw $compileMinErr('noslot', + 'No parent directive that requires a transclusion with slot name "{0}". ' + + 'Element: {1}', + slotName, startingTag($element)); + } + } else { + return boundTranscludeFn(scope, cloneAttachFn, transcludeControllers, futureParentElement, scopeToChild); + } + } + } + } + + function getControllers(directiveName, require, $element, elementControllers) { + var value; + + if (isString(require)) { + var match = require.match(REQUIRE_PREFIX_REGEXP); + var name = require.substring(match[0].length); + var inheritType = match[1] || match[3]; + var optional = match[2] === '?'; + + //If only parents then start at the parent element + if (inheritType === '^^') { + $element = $element.parent(); + //Otherwise attempt getting the controller from elementControllers in case + //the element is transcluded (and has no data) and to avoid .data if possible + } else { + value = elementControllers && elementControllers[name]; + value = value && value.instance; + } + + if (!value) { + var dataName = '$' + name + 'Controller'; + value = inheritType ? $element.inheritedData(dataName) : $element.data(dataName); + } + + if (!value && !optional) { + throw $compileMinErr('ctreq', + "Controller '{0}', required by directive '{1}', can't be found!", + name, directiveName); + } + } else if (isArray(require)) { + value = []; + for (var i = 0, ii = require.length; i < ii; i++) { + value[i] = getControllers(directiveName, require[i], $element, elementControllers); + } + } else if (isObject(require)) { + value = {}; + forEach(require, function(controller, property) { + value[property] = getControllers(directiveName, controller, $element, elementControllers); + }); + } + + return value || null; + } + + function setupControllers($element, attrs, transcludeFn, controllerDirectives, isolateScope, scope, newIsolateScopeDirective) { + var elementControllers = createMap(); + for (var controllerKey in controllerDirectives) { + var directive = controllerDirectives[controllerKey]; + var locals = { + $scope: directive === newIsolateScopeDirective || directive.$$isolateScope ? isolateScope : scope, + $element: $element, + $attrs: attrs, + $transclude: transcludeFn + }; + + var controller = directive.controller; + if (controller == '@') { + controller = attrs[directive.name]; + } + + var controllerInstance = $controller(controller, locals, true, directive.controllerAs); + + // For directives with element transclusion the element is a comment. + // In this case .data will not attach any data. + // Instead, we save the controllers for the element in a local hash and attach to .data + // later, once we have the actual element. + elementControllers[directive.name] = controllerInstance; + $element.data('$' + directive.name + 'Controller', controllerInstance.instance); + } + return elementControllers; + } + + // Depending upon the context in which a directive finds itself it might need to have a new isolated + // or child scope created. For instance: + // * if the directive has been pulled into a template because another directive with a higher priority + // asked for element transclusion + // * if the directive itself asks for transclusion but it is at the root of a template and the original + // element was replaced. See https://github.com/angular/angular.js/issues/12936 + function markDirectiveScope(directives, isolateScope, newScope) { + for (var j = 0, jj = directives.length; j < jj; j++) { + directives[j] = inherit(directives[j], {$$isolateScope: isolateScope, $$newScope: newScope}); + } + } + + /** + * looks up the directive and decorates it with exception handling and proper parameters. We + * call this the boundDirective. + * + * @param {string} name name of the directive to look up. + * @param {string} location The directive must be found in specific format. + * String containing any of theses characters: + * + * * `E`: element name + * * `A': attribute + * * `C`: class + * * `M`: comment + * @returns {boolean} true if directive was added. + */ + function addDirective(tDirectives, name, location, maxPriority, ignoreDirective, startAttrName, + endAttrName) { + if (name === ignoreDirective) return null; + var match = null; + if (hasDirectives.hasOwnProperty(name)) { + for (var directive, directives = $injector.get(name + Suffix), + i = 0, ii = directives.length; i < ii; i++) { + try { + directive = directives[i]; + if ((isUndefined(maxPriority) || maxPriority > directive.priority) && + directive.restrict.indexOf(location) != -1) { + if (startAttrName) { + directive = inherit(directive, {$$start: startAttrName, $$end: endAttrName}); + } + if (!directive.$$bindings) { + var bindings = directive.$$bindings = + parseDirectiveBindings(directive, directive.name); + if (isObject(bindings.isolateScope)) { + directive.$$isolateBindings = bindings.isolateScope; + } + } + tDirectives.push(directive); + match = directive; + } + } catch (e) { $exceptionHandler(e); } + } + } + return match; + } + + + /** + * looks up the directive and returns true if it is a multi-element directive, + * and therefore requires DOM nodes between -start and -end markers to be grouped + * together. + * + * @param {string} name name of the directive to look up. + * @returns true if directive was registered as multi-element. + */ + function directiveIsMultiElement(name) { + if (hasDirectives.hasOwnProperty(name)) { + for (var directive, directives = $injector.get(name + Suffix), + i = 0, ii = directives.length; i < ii; i++) { + directive = directives[i]; + if (directive.multiElement) { + return true; + } + } + } + return false; + } + + /** + * When the element is replaced with HTML template then the new attributes + * on the template need to be merged with the existing attributes in the DOM. + * The desired effect is to have both of the attributes present. + * + * @param {object} dst destination attributes (original DOM) + * @param {object} src source attributes (from the directive template) + */ + function mergeTemplateAttributes(dst, src) { + var srcAttr = src.$attr, + dstAttr = dst.$attr, + $element = dst.$$element; + + // reapply the old attributes to the new element + forEach(dst, function(value, key) { + if (key.charAt(0) != '$') { + if (src[key] && src[key] !== value) { + value += (key === 'style' ? ';' : ' ') + src[key]; + } + dst.$set(key, value, true, srcAttr[key]); + } + }); + + // copy the new attributes on the old attrs object + forEach(src, function(value, key) { + if (key == 'class') { + safeAddClass($element, value); + dst['class'] = (dst['class'] ? dst['class'] + ' ' : '') + value; + } else if (key == 'style') { + $element.attr('style', $element.attr('style') + ';' + value); + dst['style'] = (dst['style'] ? dst['style'] + ';' : '') + value; + // `dst` will never contain hasOwnProperty as DOM parser won't let it. + // You will get an "InvalidCharacterError: DOM Exception 5" error if you + // have an attribute like "has-own-property" or "data-has-own-property", etc. + } else if (key.charAt(0) != '$' && !dst.hasOwnProperty(key)) { + dst[key] = value; + dstAttr[key] = srcAttr[key]; + } + }); + } + + + function compileTemplateUrl(directives, $compileNode, tAttrs, + $rootElement, childTranscludeFn, preLinkFns, postLinkFns, previousCompileContext) { + var linkQueue = [], + afterTemplateNodeLinkFn, + afterTemplateChildLinkFn, + beforeTemplateCompileNode = $compileNode[0], + origAsyncDirective = directives.shift(), + derivedSyncDirective = inherit(origAsyncDirective, { + templateUrl: null, transclude: null, replace: null, $$originalDirective: origAsyncDirective + }), + templateUrl = (isFunction(origAsyncDirective.templateUrl)) + ? origAsyncDirective.templateUrl($compileNode, tAttrs) + : origAsyncDirective.templateUrl, + templateNamespace = origAsyncDirective.templateNamespace; + + $compileNode.empty(); + + $templateRequest(templateUrl) + .then(function(content) { + var compileNode, tempTemplateAttrs, $template, childBoundTranscludeFn; + + content = denormalizeTemplate(content); + + if (origAsyncDirective.replace) { + if (jqLiteIsTextNode(content)) { + $template = []; + } else { + $template = removeComments(wrapTemplate(templateNamespace, trim(content))); + } + compileNode = $template[0]; + + if ($template.length != 1 || compileNode.nodeType !== NODE_TYPE_ELEMENT) { + throw $compileMinErr('tplrt', + "Template for directive '{0}' must have exactly one root element. {1}", + origAsyncDirective.name, templateUrl); + } + + tempTemplateAttrs = {$attr: {}}; + replaceWith($rootElement, $compileNode, compileNode); + var templateDirectives = collectDirectives(compileNode, [], tempTemplateAttrs); + + if (isObject(origAsyncDirective.scope)) { + // the original directive that caused the template to be loaded async required + // an isolate scope + markDirectiveScope(templateDirectives, true); + } + directives = templateDirectives.concat(directives); + mergeTemplateAttributes(tAttrs, tempTemplateAttrs); + } else { + compileNode = beforeTemplateCompileNode; + $compileNode.html(content); + } + + directives.unshift(derivedSyncDirective); + + afterTemplateNodeLinkFn = applyDirectivesToNode(directives, compileNode, tAttrs, + childTranscludeFn, $compileNode, origAsyncDirective, preLinkFns, postLinkFns, + previousCompileContext); + forEach($rootElement, function(node, i) { + if (node == compileNode) { + $rootElement[i] = $compileNode[0]; + } + }); + afterTemplateChildLinkFn = compileNodes($compileNode[0].childNodes, childTranscludeFn); + + while (linkQueue.length) { + var scope = linkQueue.shift(), + beforeTemplateLinkNode = linkQueue.shift(), + linkRootElement = linkQueue.shift(), + boundTranscludeFn = linkQueue.shift(), + linkNode = $compileNode[0]; + + if (scope.$$destroyed) continue; + + if (beforeTemplateLinkNode !== beforeTemplateCompileNode) { + var oldClasses = beforeTemplateLinkNode.className; + + if (!(previousCompileContext.hasElementTranscludeDirective && + origAsyncDirective.replace)) { + // it was cloned therefore we have to clone as well. + linkNode = jqLiteClone(compileNode); + } + replaceWith(linkRootElement, jqLite(beforeTemplateLinkNode), linkNode); + + // Copy in CSS classes from original node + safeAddClass(jqLite(linkNode), oldClasses); + } + if (afterTemplateNodeLinkFn.transcludeOnThisElement) { + childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn); + } else { + childBoundTranscludeFn = boundTranscludeFn; + } + afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, linkNode, $rootElement, + childBoundTranscludeFn); + } + linkQueue = null; + }); + + return function delayedNodeLinkFn(ignoreChildLinkFn, scope, node, rootElement, boundTranscludeFn) { + var childBoundTranscludeFn = boundTranscludeFn; + if (scope.$$destroyed) return; + if (linkQueue) { + linkQueue.push(scope, + node, + rootElement, + childBoundTranscludeFn); + } else { + if (afterTemplateNodeLinkFn.transcludeOnThisElement) { + childBoundTranscludeFn = createBoundTranscludeFn(scope, afterTemplateNodeLinkFn.transclude, boundTranscludeFn); + } + afterTemplateNodeLinkFn(afterTemplateChildLinkFn, scope, node, rootElement, childBoundTranscludeFn); + } + }; + } + + + /** + * Sorting function for bound directives. + */ + function byPriority(a, b) { + var diff = b.priority - a.priority; + if (diff !== 0) return diff; + if (a.name !== b.name) return (a.name < b.name) ? -1 : 1; + return a.index - b.index; + } + + function assertNoDuplicate(what, previousDirective, directive, element) { + + function wrapModuleNameIfDefined(moduleName) { + return moduleName ? + (' (module: ' + moduleName + ')') : + ''; + } + + if (previousDirective) { + throw $compileMinErr('multidir', 'Multiple directives [{0}{1}, {2}{3}] asking for {4} on: {5}', + previousDirective.name, wrapModuleNameIfDefined(previousDirective.$$moduleName), + directive.name, wrapModuleNameIfDefined(directive.$$moduleName), what, startingTag(element)); + } + } + + + function addTextInterpolateDirective(directives, text) { + var interpolateFn = $interpolate(text, true); + if (interpolateFn) { + directives.push({ + priority: 0, + compile: function textInterpolateCompileFn(templateNode) { + var templateNodeParent = templateNode.parent(), + hasCompileParent = !!templateNodeParent.length; + + // When transcluding a template that has bindings in the root + // we don't have a parent and thus need to add the class during linking fn. + if (hasCompileParent) compile.$$addBindingClass(templateNodeParent); + + return function textInterpolateLinkFn(scope, node) { + var parent = node.parent(); + if (!hasCompileParent) compile.$$addBindingClass(parent); + compile.$$addBindingInfo(parent, interpolateFn.expressions); + scope.$watch(interpolateFn, function interpolateFnWatchAction(value) { + node[0].nodeValue = value; + }); + }; + } + }); + } + } + + + function wrapTemplate(type, template) { + type = lowercase(type || 'html'); + switch (type) { + case 'svg': + case 'math': + var wrapper = document.createElement('div'); + wrapper.innerHTML = '<' + type + '>' + template + ''; + return wrapper.childNodes[0].childNodes; + default: + return template; + } + } + + + function getTrustedContext(node, attrNormalizedName) { + if (attrNormalizedName == "srcdoc") { + return $sce.HTML; + } + var tag = nodeName_(node); + // maction[xlink:href] can source SVG. It's not limited to . + if (attrNormalizedName == "xlinkHref" || + (tag == "form" && attrNormalizedName == "action") || + (tag != "img" && (attrNormalizedName == "src" || + attrNormalizedName == "ngSrc"))) { + return $sce.RESOURCE_URL; + } + } + + + function addAttrInterpolateDirective(node, directives, value, name, allOrNothing) { + var trustedContext = getTrustedContext(node, name); + allOrNothing = ALL_OR_NOTHING_ATTRS[name] || allOrNothing; + + var interpolateFn = $interpolate(value, true, trustedContext, allOrNothing); + + // no interpolation found -> ignore + if (!interpolateFn) return; + + + if (name === "multiple" && nodeName_(node) === "select") { + throw $compileMinErr("selmulti", + "Binding to the 'multiple' attribute is not supported. Element: {0}", + startingTag(node)); + } + + directives.push({ + priority: 100, + compile: function() { + return { + pre: function attrInterpolatePreLinkFn(scope, element, attr) { + var $$observers = (attr.$$observers || (attr.$$observers = createMap())); + + if (EVENT_HANDLER_ATTR_REGEXP.test(name)) { + throw $compileMinErr('nodomevents', + "Interpolations for HTML DOM event attributes are disallowed. Please use the " + + "ng- versions (such as ng-click instead of onclick) instead."); + } + + // If the attribute has changed since last $interpolate()ed + var newValue = attr[name]; + if (newValue !== value) { + // we need to interpolate again since the attribute value has been updated + // (e.g. by another directive's compile function) + // ensure unset/empty values make interpolateFn falsy + interpolateFn = newValue && $interpolate(newValue, true, trustedContext, allOrNothing); + value = newValue; + } + + // if attribute was updated so that there is no interpolation going on we don't want to + // register any observers + if (!interpolateFn) return; + + // initialize attr object so that it's ready in case we need the value for isolate + // scope initialization, otherwise the value would not be available from isolate + // directive's linking fn during linking phase + attr[name] = interpolateFn(scope); + + ($$observers[name] || ($$observers[name] = [])).$$inter = true; + (attr.$$observers && attr.$$observers[name].$$scope || scope). + $watch(interpolateFn, function interpolateFnWatchAction(newValue, oldValue) { + //special case for class attribute addition + removal + //so that class changes can tap into the animation + //hooks provided by the $animate service. Be sure to + //skip animations when the first digest occurs (when + //both the new and the old values are the same) since + //the CSS classes are the non-interpolated values + if (name === 'class' && newValue != oldValue) { + attr.$updateClass(newValue, oldValue); + } else { + attr.$set(name, newValue); + } + }); + } + }; + } + }); + } + + + /** + * This is a special jqLite.replaceWith, which can replace items which + * have no parents, provided that the containing jqLite collection is provided. + * + * @param {JqLite=} $rootElement The root of the compile tree. Used so that we can replace nodes + * in the root of the tree. + * @param {JqLite} elementsToRemove The jqLite element which we are going to replace. We keep + * the shell, but replace its DOM node reference. + * @param {Node} newNode The new DOM node. + */ + function replaceWith($rootElement, elementsToRemove, newNode) { + var firstElementToRemove = elementsToRemove[0], + removeCount = elementsToRemove.length, + parent = firstElementToRemove.parentNode, + i, ii; + + if ($rootElement) { + for (i = 0, ii = $rootElement.length; i < ii; i++) { + if ($rootElement[i] == firstElementToRemove) { + $rootElement[i++] = newNode; + for (var j = i, j2 = j + removeCount - 1, + jj = $rootElement.length; + j < jj; j++, j2++) { + if (j2 < jj) { + $rootElement[j] = $rootElement[j2]; + } else { + delete $rootElement[j]; + } + } + $rootElement.length -= removeCount - 1; + + // If the replaced element is also the jQuery .context then replace it + // .context is a deprecated jQuery api, so we should set it only when jQuery set it + // http://api.jquery.com/context/ + if ($rootElement.context === firstElementToRemove) { + $rootElement.context = newNode; + } + break; + } + } + } + + if (parent) { + parent.replaceChild(newNode, firstElementToRemove); + } + + // Append all the `elementsToRemove` to a fragment. This will... + // - remove them from the DOM + // - allow them to still be traversed with .nextSibling + // - allow a single fragment.qSA to fetch all elements being removed + var fragment = document.createDocumentFragment(); + for (i = 0; i < removeCount; i++) { + fragment.appendChild(elementsToRemove[i]); + } + + if (jqLite.hasData(firstElementToRemove)) { + // Copy over user data (that includes Angular's $scope etc.). Don't copy private + // data here because there's no public interface in jQuery to do that and copying over + // event listeners (which is the main use of private data) wouldn't work anyway. + jqLite.data(newNode, jqLite.data(firstElementToRemove)); + + // Remove $destroy event listeners from `firstElementToRemove` + jqLite(firstElementToRemove).off('$destroy'); + } + + // Cleanup any data/listeners on the elements and children. + // This includes invoking the $destroy event on any elements with listeners. + jqLite.cleanData(fragment.querySelectorAll('*')); + + // Update the jqLite collection to only contain the `newNode` + for (i = 1; i < removeCount; i++) { + delete elementsToRemove[i]; + } + elementsToRemove[0] = newNode; + elementsToRemove.length = 1; + } + + + function cloneAndAnnotateFn(fn, annotation) { + return extend(function() { return fn.apply(null, arguments); }, fn, annotation); + } + + + function invokeLinkFn(linkFn, scope, $element, attrs, controllers, transcludeFn) { + try { + linkFn(scope, $element, attrs, controllers, transcludeFn); + } catch (e) { + $exceptionHandler(e, startingTag($element)); + } + } + + + // Set up $watches for isolate scope and controller bindings. This process + // only occurs for isolate scopes and new scopes with controllerAs. + function initializeDirectiveBindings(scope, attrs, destination, bindings, directive) { + var removeWatchCollection = []; + var changes; + forEach(bindings, function initializeBinding(definition, scopeName) { + var attrName = definition.attrName, + optional = definition.optional, + mode = definition.mode, // @, =, or & + lastValue, + parentGet, parentSet, compare, removeWatch; + + switch (mode) { + + case '@': + if (!optional && !hasOwnProperty.call(attrs, attrName)) { + destination[scopeName] = attrs[attrName] = void 0; + } + attrs.$observe(attrName, function(value) { + if (isString(value)) { + var oldValue = destination[scopeName]; + recordChanges(scopeName, value, oldValue); + destination[scopeName] = value; + } + }); + attrs.$$observers[attrName].$$scope = scope; + lastValue = attrs[attrName]; + if (isString(lastValue)) { + // If the attribute has been provided then we trigger an interpolation to ensure + // the value is there for use in the link fn + destination[scopeName] = $interpolate(lastValue)(scope); + } else if (isBoolean(lastValue)) { + // If the attributes is one of the BOOLEAN_ATTR then Angular will have converted + // the value to boolean rather than a string, so we special case this situation + destination[scopeName] = lastValue; + } + break; + + case '=': + if (!hasOwnProperty.call(attrs, attrName)) { + if (optional) break; + attrs[attrName] = void 0; + } + if (optional && !attrs[attrName]) break; + + parentGet = $parse(attrs[attrName]); + if (parentGet.literal) { + compare = equals; + } else { + compare = function simpleCompare(a, b) { return a === b || (a !== a && b !== b); }; + } + parentSet = parentGet.assign || function() { + // reset the change, or we will throw this exception on every $digest + lastValue = destination[scopeName] = parentGet(scope); + throw $compileMinErr('nonassign', + "Expression '{0}' in attribute '{1}' used with directive '{2}' is non-assignable!", + attrs[attrName], attrName, directive.name); + }; + lastValue = destination[scopeName] = parentGet(scope); + var parentValueWatch = function parentValueWatch(parentValue) { + if (!compare(parentValue, destination[scopeName])) { + // we are out of sync and need to copy + if (!compare(parentValue, lastValue)) { + // parent changed and it has precedence + destination[scopeName] = parentValue; + } else { + // if the parent can be assigned then do so + parentSet(scope, parentValue = destination[scopeName]); + } + } + return lastValue = parentValue; + }; + parentValueWatch.$stateful = true; + if (definition.collection) { + removeWatch = scope.$watchCollection(attrs[attrName], parentValueWatch); + } else { + removeWatch = scope.$watch($parse(attrs[attrName], parentValueWatch), null, parentGet.literal); + } + removeWatchCollection.push(removeWatch); + break; + + case '<': + if (!hasOwnProperty.call(attrs, attrName)) { + if (optional) break; + attrs[attrName] = void 0; + } + if (optional && !attrs[attrName]) break; + + parentGet = $parse(attrs[attrName]); + + destination[scopeName] = parentGet(scope); + + removeWatch = scope.$watch(parentGet, function parentValueWatchAction(newParentValue) { + var oldValue = destination[scopeName]; + recordChanges(scopeName, newParentValue, oldValue); + destination[scopeName] = newParentValue; + }, parentGet.literal); + + removeWatchCollection.push(removeWatch); + break; + + case '&': + // Don't assign Object.prototype method to scope + parentGet = attrs.hasOwnProperty(attrName) ? $parse(attrs[attrName]) : noop; + + // Don't assign noop to destination if expression is not valid + if (parentGet === noop && optional) break; + + destination[scopeName] = function(locals) { + return parentGet(scope, locals); + }; + break; + } + }); + + function recordChanges(key, currentValue, previousValue) { + if (isFunction(destination.$onChanges) && currentValue !== previousValue) { + // If we have not already scheduled the top level onChangesQueue handler then do so now + if (!onChangesQueue) { + scope.$$postDigest(flushOnChangesQueue); + onChangesQueue = []; + } + // If we have not already queued a trigger of onChanges for this controller then do so now + if (!changes) { + changes = {}; + onChangesQueue.push(triggerOnChangesHook); + } + // If the has been a change on this property already then we need to reuse the previous value + if (changes[key]) { + previousValue = changes[key].previousValue; + } + // Store this change + changes[key] = {previousValue: previousValue, currentValue: currentValue}; + } + } + + function triggerOnChangesHook() { + destination.$onChanges(changes); + // Now clear the changes so that we schedule onChanges when more changes arrive + changes = undefined; + } + + return removeWatchCollection.length && function removeWatches() { + for (var i = 0, ii = removeWatchCollection.length; i < ii; ++i) { + removeWatchCollection[i](); + } + }; + } + }]; +} + +var PREFIX_REGEXP = /^((?:x|data)[\:\-_])/i; +/** + * Converts all accepted directives format into proper directive name. + * @param name Name to normalize + */ +function directiveNormalize(name) { + return camelCase(name.replace(PREFIX_REGEXP, '')); +} + +/** + * @ngdoc type + * @name $compile.directive.Attributes + * + * @description + * A shared object between directive compile / linking functions which contains normalized DOM + * element attributes. The values reflect current binding state `{{ }}`. The normalization is + * needed since all of these are treated as equivalent in Angular: + * + * ``` + * + * ``` + */ + +/** + * @ngdoc property + * @name $compile.directive.Attributes#$attr + * + * @description + * A map of DOM element attribute names to the normalized name. This is + * needed to do reverse lookup from normalized name back to actual name. + */ + + +/** + * @ngdoc method + * @name $compile.directive.Attributes#$set + * @kind function + * + * @description + * Set DOM element attribute value. + * + * + * @param {string} name Normalized element attribute name of the property to modify. The name is + * reverse-translated using the {@link ng.$compile.directive.Attributes#$attr $attr} + * property to the original name. + * @param {string} value Value to set the attribute to. The value can be an interpolated string. + */ + + + +/** + * Closure compiler type information + */ + +function nodesetLinkingFn( + /* angular.Scope */ scope, + /* NodeList */ nodeList, + /* Element */ rootElement, + /* function(Function) */ boundTranscludeFn +) {} + +function directiveLinkingFn( + /* nodesetLinkingFn */ nodesetLinkingFn, + /* angular.Scope */ scope, + /* Node */ node, + /* Element */ rootElement, + /* function(Function) */ boundTranscludeFn +) {} + +function tokenDifference(str1, str2) { + var values = '', + tokens1 = str1.split(/\s+/), + tokens2 = str2.split(/\s+/); + + outer: + for (var i = 0; i < tokens1.length; i++) { + var token = tokens1[i]; + for (var j = 0; j < tokens2.length; j++) { + if (token == tokens2[j]) continue outer; + } + values += (values.length > 0 ? ' ' : '') + token; + } + return values; +} + +function removeComments(jqNodes) { + jqNodes = jqLite(jqNodes); + var i = jqNodes.length; + + if (i <= 1) { + return jqNodes; + } + + while (i--) { + var node = jqNodes[i]; + if (node.nodeType === NODE_TYPE_COMMENT) { + splice.call(jqNodes, i, 1); + } + } + return jqNodes; +} + +var $controllerMinErr = minErr('$controller'); + + +var CNTRL_REG = /^(\S+)(\s+as\s+([\w$]+))?$/; +function identifierForController(controller, ident) { + if (ident && isString(ident)) return ident; + if (isString(controller)) { + var match = CNTRL_REG.exec(controller); + if (match) return match[3]; + } +} + + +/** + * @ngdoc provider + * @name $controllerProvider + * @description + * The {@link ng.$controller $controller service} is used by Angular to create new + * controllers. + * + * This provider allows controller registration via the + * {@link ng.$controllerProvider#register register} method. + */ +function $ControllerProvider() { + var controllers = {}, + globals = false; + + /** + * @ngdoc method + * @name $controllerProvider#has + * @param {string} name Controller name to check. + */ + this.has = function(name) { + return controllers.hasOwnProperty(name); + }; + + /** + * @ngdoc method + * @name $controllerProvider#register + * @param {string|Object} name Controller name, or an object map of controllers where the keys are + * the names and the values are the constructors. + * @param {Function|Array} constructor Controller constructor fn (optionally decorated with DI + * annotations in the array notation). + */ + this.register = function(name, constructor) { + assertNotHasOwnProperty(name, 'controller'); + if (isObject(name)) { + extend(controllers, name); + } else { + controllers[name] = constructor; + } + }; + + /** + * @ngdoc method + * @name $controllerProvider#allowGlobals + * @description If called, allows `$controller` to find controller constructors on `window` + */ + this.allowGlobals = function() { + globals = true; + }; + + + this.$get = ['$injector', '$window', function($injector, $window) { + + /** + * @ngdoc service + * @name $controller + * @requires $injector + * + * @param {Function|string} constructor If called with a function then it's considered to be the + * controller constructor function. Otherwise it's considered to be a string which is used + * to retrieve the controller constructor using the following steps: + * + * * check if a controller with given name is registered via `$controllerProvider` + * * check if evaluating the string on the current scope returns a constructor + * * if $controllerProvider#allowGlobals, check `window[constructor]` on the global + * `window` object (not recommended) + * + * The string can use the `controller as property` syntax, where the controller instance is published + * as the specified property on the `scope`; the `scope` must be injected into `locals` param for this + * to work correctly. + * + * @param {Object} locals Injection locals for Controller. + * @return {Object} Instance of given controller. + * + * @description + * `$controller` service is responsible for instantiating controllers. + * + * It's just a simple call to {@link auto.$injector $injector}, but extracted into + * a service, so that one can override this service with [BC version](https://gist.github.com/1649788). + */ + return function $controller(expression, locals, later, ident) { + // PRIVATE API: + // param `later` --- indicates that the controller's constructor is invoked at a later time. + // If true, $controller will allocate the object with the correct + // prototype chain, but will not invoke the controller until a returned + // callback is invoked. + // param `ident` --- An optional label which overrides the label parsed from the controller + // expression, if any. + var instance, match, constructor, identifier; + later = later === true; + if (ident && isString(ident)) { + identifier = ident; + } + + if (isString(expression)) { + match = expression.match(CNTRL_REG); + if (!match) { + throw $controllerMinErr('ctrlfmt', + "Badly formed controller string '{0}'. " + + "Must match `__name__ as __id__` or `__name__`.", expression); + } + constructor = match[1], + identifier = identifier || match[3]; + expression = controllers.hasOwnProperty(constructor) + ? controllers[constructor] + : getter(locals.$scope, constructor, true) || + (globals ? getter($window, constructor, true) : undefined); + + assertArgFn(expression, constructor, true); + } + + if (later) { + // Instantiate controller later: + // This machinery is used to create an instance of the object before calling the + // controller's constructor itself. + // + // This allows properties to be added to the controller before the constructor is + // invoked. Primarily, this is used for isolate scope bindings in $compile. + // + // This feature is not intended for use by applications, and is thus not documented + // publicly. + // Object creation: http://jsperf.com/create-constructor/2 + var controllerPrototype = (isArray(expression) ? + expression[expression.length - 1] : expression).prototype; + instance = Object.create(controllerPrototype || null); + + if (identifier) { + addIdentifier(locals, identifier, instance, constructor || expression.name); + } + + var instantiate; + return instantiate = extend(function $controllerInit() { + var result = $injector.invoke(expression, instance, locals, constructor); + if (result !== instance && (isObject(result) || isFunction(result))) { + instance = result; + if (identifier) { + // If result changed, re-assign controllerAs value to scope. + addIdentifier(locals, identifier, instance, constructor || expression.name); + } + } + return instance; + }, { + instance: instance, + identifier: identifier + }); + } + + instance = $injector.instantiate(expression, locals, constructor); + + if (identifier) { + addIdentifier(locals, identifier, instance, constructor || expression.name); + } + + return instance; + }; + + function addIdentifier(locals, identifier, instance, name) { + if (!(locals && isObject(locals.$scope))) { + throw minErr('$controller')('noscp', + "Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.", + name, identifier); + } + + locals.$scope[identifier] = instance; + } + }]; +} + +/** + * @ngdoc service + * @name $document + * @requires $window + * + * @description + * A {@link angular.element jQuery or jqLite} wrapper for the browser's `window.document` object. + * + * @example + + +
    +

    $document title:

    +

    window.document title:

    +
    +
    + + angular.module('documentExample', []) + .controller('ExampleController', ['$scope', '$document', function($scope, $document) { + $scope.title = $document[0].title; + $scope.windowTitle = angular.element(window.document)[0].title; + }]); + +
    + */ +function $DocumentProvider() { + this.$get = ['$window', function(window) { + return jqLite(window.document); + }]; +} + +/** + * @ngdoc service + * @name $exceptionHandler + * @requires ng.$log + * + * @description + * Any uncaught exception in angular expressions is delegated to this service. + * The default implementation simply delegates to `$log.error` which logs it into + * the browser console. + * + * In unit tests, if `angular-mocks.js` is loaded, this service is overridden by + * {@link ngMock.$exceptionHandler mock $exceptionHandler} which aids in testing. + * + * ## Example: + * + * ```js + * angular.module('exceptionOverride', []).factory('$exceptionHandler', function() { + * return function(exception, cause) { + * exception.message += ' (caused by "' + cause + '")'; + * throw exception; + * }; + * }); + * ``` + * + * This example will override the normal action of `$exceptionHandler`, to make angular + * exceptions fail hard when they happen, instead of just logging to the console. + * + *
    + * Note, that code executed in event-listeners (even those registered using jqLite's `on`/`bind` + * methods) does not delegate exceptions to the {@link ng.$exceptionHandler $exceptionHandler} + * (unless executed during a digest). + * + * If you wish, you can manually delegate exceptions, e.g. + * `try { ... } catch(e) { $exceptionHandler(e); }` + * + * @param {Error} exception Exception associated with the error. + * @param {string=} cause optional information about the context in which + * the error was thrown. + * + */ +function $ExceptionHandlerProvider() { + this.$get = ['$log', function($log) { + return function(exception, cause) { + $log.error.apply($log, arguments); + }; + }]; +} + +var $$ForceReflowProvider = function() { + this.$get = ['$document', function($document) { + return function(domNode) { + //the line below will force the browser to perform a repaint so + //that all the animated elements within the animation frame will + //be properly updated and drawn on screen. This is required to + //ensure that the preparation animation is properly flushed so that + //the active state picks up from there. DO NOT REMOVE THIS LINE. + //DO NOT OPTIMIZE THIS LINE. THE MINIFIER WILL REMOVE IT OTHERWISE WHICH + //WILL RESULT IN AN UNPREDICTABLE BUG THAT IS VERY HARD TO TRACK DOWN AND + //WILL TAKE YEARS AWAY FROM YOUR LIFE. + if (domNode) { + if (!domNode.nodeType && domNode instanceof jqLite) { + domNode = domNode[0]; + } + } else { + domNode = $document[0].body; + } + return domNode.offsetWidth + 1; + }; + }]; +}; + +var APPLICATION_JSON = 'application/json'; +var CONTENT_TYPE_APPLICATION_JSON = {'Content-Type': APPLICATION_JSON + ';charset=utf-8'}; +var JSON_START = /^\[|^\{(?!\{)/; +var JSON_ENDS = { + '[': /]$/, + '{': /}$/ +}; +var JSON_PROTECTION_PREFIX = /^\)\]\}',?\n/; +var $httpMinErr = minErr('$http'); +var $httpMinErrLegacyFn = function(method) { + return function() { + throw $httpMinErr('legacy', 'The method `{0}` on the promise returned from `$http` has been disabled.', method); + }; +}; + +function serializeValue(v) { + if (isObject(v)) { + return isDate(v) ? v.toISOString() : toJson(v); + } + return v; +} + + +function $HttpParamSerializerProvider() { + /** + * @ngdoc service + * @name $httpParamSerializer + * @description + * + * Default {@link $http `$http`} params serializer that converts objects to strings + * according to the following rules: + * + * * `{'foo': 'bar'}` results in `foo=bar` + * * `{'foo': Date.now()}` results in `foo=2015-04-01T09%3A50%3A49.262Z` (`toISOString()` and encoded representation of a Date object) + * * `{'foo': ['bar', 'baz']}` results in `foo=bar&foo=baz` (repeated key for each array element) + * * `{'foo': {'bar':'baz'}}` results in `foo=%7B%22bar%22%3A%22baz%22%7D"` (stringified and encoded representation of an object) + * + * Note that serializer will sort the request parameters alphabetically. + * */ + + this.$get = function() { + return function ngParamSerializer(params) { + if (!params) return ''; + var parts = []; + forEachSorted(params, function(value, key) { + if (value === null || isUndefined(value)) return; + if (isArray(value)) { + forEach(value, function(v) { + parts.push(encodeUriQuery(key) + '=' + encodeUriQuery(serializeValue(v))); + }); + } else { + parts.push(encodeUriQuery(key) + '=' + encodeUriQuery(serializeValue(value))); + } + }); + + return parts.join('&'); + }; + }; +} + +function $HttpParamSerializerJQLikeProvider() { + /** + * @ngdoc service + * @name $httpParamSerializerJQLike + * @description + * + * Alternative {@link $http `$http`} params serializer that follows + * jQuery's [`param()`](http://api.jquery.com/jquery.param/) method logic. + * The serializer will also sort the params alphabetically. + * + * To use it for serializing `$http` request parameters, set it as the `paramSerializer` property: + * + * ```js + * $http({ + * url: myUrl, + * method: 'GET', + * params: myParams, + * paramSerializer: '$httpParamSerializerJQLike' + * }); + * ``` + * + * It is also possible to set it as the default `paramSerializer` in the + * {@link $httpProvider#defaults `$httpProvider`}. + * + * Additionally, you can inject the serializer and use it explicitly, for example to serialize + * form data for submission: + * + * ```js + * .controller(function($http, $httpParamSerializerJQLike) { + * //... + * + * $http({ + * url: myUrl, + * method: 'POST', + * data: $httpParamSerializerJQLike(myData), + * headers: { + * 'Content-Type': 'application/x-www-form-urlencoded' + * } + * }); + * + * }); + * ``` + * + * */ + this.$get = function() { + return function jQueryLikeParamSerializer(params) { + if (!params) return ''; + var parts = []; + serialize(params, '', true); + return parts.join('&'); + + function serialize(toSerialize, prefix, topLevel) { + if (toSerialize === null || isUndefined(toSerialize)) return; + if (isArray(toSerialize)) { + forEach(toSerialize, function(value, index) { + serialize(value, prefix + '[' + (isObject(value) ? index : '') + ']'); + }); + } else if (isObject(toSerialize) && !isDate(toSerialize)) { + forEachSorted(toSerialize, function(value, key) { + serialize(value, prefix + + (topLevel ? '' : '[') + + key + + (topLevel ? '' : ']')); + }); + } else { + parts.push(encodeUriQuery(prefix) + '=' + encodeUriQuery(serializeValue(toSerialize))); + } + } + }; + }; +} + +function defaultHttpResponseTransform(data, headers) { + if (isString(data)) { + // Strip json vulnerability protection prefix and trim whitespace + var tempData = data.replace(JSON_PROTECTION_PREFIX, '').trim(); + + if (tempData) { + var contentType = headers('Content-Type'); + if ((contentType && (contentType.indexOf(APPLICATION_JSON) === 0)) || isJsonLike(tempData)) { + data = fromJson(tempData); + } + } + } + + return data; +} + +function isJsonLike(str) { + var jsonStart = str.match(JSON_START); + return jsonStart && JSON_ENDS[jsonStart[0]].test(str); +} + +/** + * Parse headers into key value object + * + * @param {string} headers Raw headers as a string + * @returns {Object} Parsed headers as key value object + */ +function parseHeaders(headers) { + var parsed = createMap(), i; + + function fillInParsed(key, val) { + if (key) { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + } + + if (isString(headers)) { + forEach(headers.split('\n'), function(line) { + i = line.indexOf(':'); + fillInParsed(lowercase(trim(line.substr(0, i))), trim(line.substr(i + 1))); + }); + } else if (isObject(headers)) { + forEach(headers, function(headerVal, headerKey) { + fillInParsed(lowercase(headerKey), trim(headerVal)); + }); + } + + return parsed; +} + + +/** + * Returns a function that provides access to parsed headers. + * + * Headers are lazy parsed when first requested. + * @see parseHeaders + * + * @param {(string|Object)} headers Headers to provide access to. + * @returns {function(string=)} Returns a getter function which if called with: + * + * - if called with single an argument returns a single header value or null + * - if called with no arguments returns an object containing all headers. + */ +function headersGetter(headers) { + var headersObj; + + return function(name) { + if (!headersObj) headersObj = parseHeaders(headers); + + if (name) { + var value = headersObj[lowercase(name)]; + if (value === void 0) { + value = null; + } + return value; + } + + return headersObj; + }; +} + + +/** + * Chain all given functions + * + * This function is used for both request and response transforming + * + * @param {*} data Data to transform. + * @param {function(string=)} headers HTTP headers getter fn. + * @param {number} status HTTP status code of the response. + * @param {(Function|Array.)} fns Function or an array of functions. + * @returns {*} Transformed data. + */ +function transformData(data, headers, status, fns) { + if (isFunction(fns)) { + return fns(data, headers, status); + } + + forEach(fns, function(fn) { + data = fn(data, headers, status); + }); + + return data; +} + + +function isSuccess(status) { + return 200 <= status && status < 300; +} + + +/** + * @ngdoc provider + * @name $httpProvider + * @description + * Use `$httpProvider` to change the default behavior of the {@link ng.$http $http} service. + * */ +function $HttpProvider() { + /** + * @ngdoc property + * @name $httpProvider#defaults + * @description + * + * Object containing default values for all {@link ng.$http $http} requests. + * + * - **`defaults.cache`** - {boolean|Object} - A boolean value or object created with + * {@link ng.$cacheFactory `$cacheFactory`} to enable or disable caching of HTTP responses + * by default. See {@link $http#caching $http Caching} for more information. + * + * - **`defaults.xsrfCookieName`** - {string} - Name of cookie containing the XSRF token. + * Defaults value is `'XSRF-TOKEN'`. + * + * - **`defaults.xsrfHeaderName`** - {string} - Name of HTTP header to populate with the + * XSRF token. Defaults value is `'X-XSRF-TOKEN'`. + * + * - **`defaults.headers`** - {Object} - Default headers for all $http requests. + * Refer to {@link ng.$http#setting-http-headers $http} for documentation on + * setting default headers. + * - **`defaults.headers.common`** + * - **`defaults.headers.post`** + * - **`defaults.headers.put`** + * - **`defaults.headers.patch`** + * + * + * - **`defaults.paramSerializer`** - `{string|function(Object):string}` - A function + * used to the prepare string representation of request parameters (specified as an object). + * If specified as string, it is interpreted as a function registered with the {@link auto.$injector $injector}. + * Defaults to {@link ng.$httpParamSerializer $httpParamSerializer}. + * + **/ + var defaults = this.defaults = { + // transform incoming response data + transformResponse: [defaultHttpResponseTransform], + + // transform outgoing request data + transformRequest: [function(d) { + return isObject(d) && !isFile(d) && !isBlob(d) && !isFormData(d) ? toJson(d) : d; + }], + + // default headers + headers: { + common: { + 'Accept': 'application/json, text/plain, */*' + }, + post: shallowCopy(CONTENT_TYPE_APPLICATION_JSON), + put: shallowCopy(CONTENT_TYPE_APPLICATION_JSON), + patch: shallowCopy(CONTENT_TYPE_APPLICATION_JSON) + }, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + + paramSerializer: '$httpParamSerializer' + }; + + var useApplyAsync = false; + /** + * @ngdoc method + * @name $httpProvider#useApplyAsync + * @description + * + * Configure $http service to combine processing of multiple http responses received at around + * the same time via {@link ng.$rootScope.Scope#$applyAsync $rootScope.$applyAsync}. This can result in + * significant performance improvement for bigger applications that make many HTTP requests + * concurrently (common during application bootstrap). + * + * Defaults to false. If no value is specified, returns the current configured value. + * + * @param {boolean=} value If true, when requests are loaded, they will schedule a deferred + * "apply" on the next tick, giving time for subsequent requests in a roughly ~10ms window + * to load and share the same digest cycle. + * + * @returns {boolean|Object} If a value is specified, returns the $httpProvider for chaining. + * otherwise, returns the current configured value. + **/ + this.useApplyAsync = function(value) { + if (isDefined(value)) { + useApplyAsync = !!value; + return this; + } + return useApplyAsync; + }; + + var useLegacyPromise = true; + /** + * @ngdoc method + * @name $httpProvider#useLegacyPromiseExtensions + * @description + * + * Configure `$http` service to return promises without the shorthand methods `success` and `error`. + * This should be used to make sure that applications work without these methods. + * + * Defaults to true. If no value is specified, returns the current configured value. + * + * @param {boolean=} value If true, `$http` will return a promise with the deprecated legacy `success` and `error` methods. + * + * @returns {boolean|Object} If a value is specified, returns the $httpProvider for chaining. + * otherwise, returns the current configured value. + **/ + this.useLegacyPromiseExtensions = function(value) { + if (isDefined(value)) { + useLegacyPromise = !!value; + return this; + } + return useLegacyPromise; + }; + + /** + * @ngdoc property + * @name $httpProvider#interceptors + * @description + * + * Array containing service factories for all synchronous or asynchronous {@link ng.$http $http} + * pre-processing of request or postprocessing of responses. + * + * These service factories are ordered by request, i.e. they are applied in the same order as the + * array, on request, but reverse order, on response. + * + * {@link ng.$http#interceptors Interceptors detailed info} + **/ + var interceptorFactories = this.interceptors = []; + + this.$get = ['$httpBackend', '$$cookieReader', '$cacheFactory', '$rootScope', '$q', '$injector', + function($httpBackend, $$cookieReader, $cacheFactory, $rootScope, $q, $injector) { + + var defaultCache = $cacheFactory('$http'); + + /** + * Make sure that default param serializer is exposed as a function + */ + defaults.paramSerializer = isString(defaults.paramSerializer) ? + $injector.get(defaults.paramSerializer) : defaults.paramSerializer; + + /** + * Interceptors stored in reverse order. Inner interceptors before outer interceptors. + * The reversal is needed so that we can build up the interception chain around the + * server request. + */ + var reversedInterceptors = []; + + forEach(interceptorFactories, function(interceptorFactory) { + reversedInterceptors.unshift(isString(interceptorFactory) + ? $injector.get(interceptorFactory) : $injector.invoke(interceptorFactory)); + }); + + /** + * @ngdoc service + * @kind function + * @name $http + * @requires ng.$httpBackend + * @requires $cacheFactory + * @requires $rootScope + * @requires $q + * @requires $injector + * + * @description + * The `$http` service is a core Angular service that facilitates communication with the remote + * HTTP servers via the browser's [XMLHttpRequest](https://developer.mozilla.org/en/xmlhttprequest) + * object or via [JSONP](http://en.wikipedia.org/wiki/JSONP). + * + * For unit testing applications that use `$http` service, see + * {@link ngMock.$httpBackend $httpBackend mock}. + * + * For a higher level of abstraction, please check out the {@link ngResource.$resource + * $resource} service. + * + * The $http API is based on the {@link ng.$q deferred/promise APIs} exposed by + * the $q service. While for simple usage patterns this doesn't matter much, for advanced usage + * it is important to familiarize yourself with these APIs and the guarantees they provide. + * + * + * ## General usage + * The `$http` service is a function which takes a single argument — a {@link $http#usage configuration object} — + * that is used to generate an HTTP request and returns a {@link ng.$q promise}. + * + * ```js + * // Simple GET request example: + * $http({ + * method: 'GET', + * url: '/someUrl' + * }).then(function successCallback(response) { + * // this callback will be called asynchronously + * // when the response is available + * }, function errorCallback(response) { + * // called asynchronously if an error occurs + * // or server returns response with an error status. + * }); + * ``` + * + * The response object has these properties: + * + * - **data** – `{string|Object}` – The response body transformed with the transform + * functions. + * - **status** – `{number}` – HTTP status code of the response. + * - **headers** – `{function([headerName])}` – Header getter function. + * - **config** – `{Object}` – The configuration object that was used to generate the request. + * - **statusText** – `{string}` – HTTP status text of the response. + * + * A response status code between 200 and 299 is considered a success status and + * will result in the success callback being called. Note that if the response is a redirect, + * XMLHttpRequest will transparently follow it, meaning that the error callback will not be + * called for such responses. + * + * + * ## Shortcut methods + * + * Shortcut methods are also available. All shortcut methods require passing in the URL, and + * request data must be passed in for POST/PUT requests. An optional config can be passed as the + * last argument. + * + * ```js + * $http.get('/someUrl', config).then(successCallback, errorCallback); + * $http.post('/someUrl', data, config).then(successCallback, errorCallback); + * ``` + * + * Complete list of shortcut methods: + * + * - {@link ng.$http#get $http.get} + * - {@link ng.$http#head $http.head} + * - {@link ng.$http#post $http.post} + * - {@link ng.$http#put $http.put} + * - {@link ng.$http#delete $http.delete} + * - {@link ng.$http#jsonp $http.jsonp} + * - {@link ng.$http#patch $http.patch} + * + * + * ## Writing Unit Tests that use $http + * When unit testing (using {@link ngMock ngMock}), it is necessary to call + * {@link ngMock.$httpBackend#flush $httpBackend.flush()} to flush each pending + * request using trained responses. + * + * ``` + * $httpBackend.expectGET(...); + * $http.get(...); + * $httpBackend.flush(); + * ``` + * + * ## Deprecation Notice + *
    + * The `$http` legacy promise methods `success` and `error` have been deprecated. + * Use the standard `then` method instead. + * If {@link $httpProvider#useLegacyPromiseExtensions `$httpProvider.useLegacyPromiseExtensions`} is set to + * `false` then these methods will throw {@link $http:legacy `$http/legacy`} error. + *
    + * + * ## Setting HTTP Headers + * + * The $http service will automatically add certain HTTP headers to all requests. These defaults + * can be fully configured by accessing the `$httpProvider.defaults.headers` configuration + * object, which currently contains this default configuration: + * + * - `$httpProvider.defaults.headers.common` (headers that are common for all requests): + * - `Accept: application/json, text/plain, * / *` + * - `$httpProvider.defaults.headers.post`: (header defaults for POST requests) + * - `Content-Type: application/json` + * - `$httpProvider.defaults.headers.put` (header defaults for PUT requests) + * - `Content-Type: application/json` + * + * To add or overwrite these defaults, simply add or remove a property from these configuration + * objects. To add headers for an HTTP method other than POST or PUT, simply add a new object + * with the lowercased HTTP method name as the key, e.g. + * `$httpProvider.defaults.headers.get = { 'My-Header' : 'value' }`. + * + * The defaults can also be set at runtime via the `$http.defaults` object in the same + * fashion. For example: + * + * ``` + * module.run(function($http) { + * $http.defaults.headers.common.Authorization = 'Basic YmVlcDpib29w'; + * }); + * ``` + * + * In addition, you can supply a `headers` property in the config object passed when + * calling `$http(config)`, which overrides the defaults without changing them globally. + * + * To explicitly remove a header automatically added via $httpProvider.defaults.headers on a per request basis, + * Use the `headers` property, setting the desired header to `undefined`. For example: + * + * ```js + * var req = { + * method: 'POST', + * url: 'http://example.com', + * headers: { + * 'Content-Type': undefined + * }, + * data: { test: 'test' } + * } + * + * $http(req).then(function(){...}, function(){...}); + * ``` + * + * ## Transforming Requests and Responses + * + * Both requests and responses can be transformed using transformation functions: `transformRequest` + * and `transformResponse`. These properties can be a single function that returns + * the transformed value (`function(data, headersGetter, status)`) or an array of such transformation functions, + * which allows you to `push` or `unshift` a new transformation function into the transformation chain. + * + *
    + * **Note:** Angular does not make a copy of the `data` parameter before it is passed into the `transformRequest` pipeline. + * That means changes to the properties of `data` are not local to the transform function (since Javascript passes objects by reference). + * For example, when calling `$http.get(url, $scope.myObject)`, modifications to the object's properties in a transformRequest + * function will be reflected on the scope and in any templates where the object is data-bound. + * To prevent his, transform functions should have no side-effects. + * If you need to modify properties, it is recommended to make a copy of the data, or create new object to return. + *
    + * + * ### Default Transformations + * + * The `$httpProvider` provider and `$http` service expose `defaults.transformRequest` and + * `defaults.transformResponse` properties. If a request does not provide its own transformations + * then these will be applied. + * + * You can augment or replace the default transformations by modifying these properties by adding to or + * replacing the array. + * + * Angular provides the following default transformations: + * + * Request transformations (`$httpProvider.defaults.transformRequest` and `$http.defaults.transformRequest`): + * + * - If the `data` property of the request configuration object contains an object, serialize it + * into JSON format. + * + * Response transformations (`$httpProvider.defaults.transformResponse` and `$http.defaults.transformResponse`): + * + * - If XSRF prefix is detected, strip it (see Security Considerations section below). + * - If JSON response is detected, deserialize it using a JSON parser. + * + * + * ### Overriding the Default Transformations Per Request + * + * If you wish override the request/response transformations only for a single request then provide + * `transformRequest` and/or `transformResponse` properties on the configuration object passed + * into `$http`. + * + * Note that if you provide these properties on the config object the default transformations will be + * overwritten. If you wish to augment the default transformations then you must include them in your + * local transformation array. + * + * The following code demonstrates adding a new response transformation to be run after the default response + * transformations have been run. + * + * ```js + * function appendTransform(defaults, transform) { + * + * // We can't guarantee that the default transformation is an array + * defaults = angular.isArray(defaults) ? defaults : [defaults]; + * + * // Append the new transformation to the defaults + * return defaults.concat(transform); + * } + * + * $http({ + * url: '...', + * method: 'GET', + * transformResponse: appendTransform($http.defaults.transformResponse, function(value) { + * return doTransform(value); + * }) + * }); + * ``` + * + * + * ## Caching + * + * {@link ng.$http `$http`} responses are not cached by default. To enable caching, you must + * set the config.cache value or the default cache value to TRUE or to a cache object (created + * with {@link ng.$cacheFactory `$cacheFactory`}). If defined, the value of config.cache takes + * precedence over the default cache value. + * + * In order to: + * * cache all responses - set the default cache value to TRUE or to a cache object + * * cache a specific response - set config.cache value to TRUE or to a cache object + * + * If caching is enabled, but neither the default cache nor config.cache are set to a cache object, + * then the default `$cacheFactory($http)` object is used. + * + * The default cache value can be set by updating the + * {@link ng.$http#defaults `$http.defaults.cache`} property or the + * {@link $httpProvider#defaults `$httpProvider.defaults.cache`} property. + * + * When caching is enabled, {@link ng.$http `$http`} stores the response from the server using + * the relevant cache object. The next time the same request is made, the response is returned + * from the cache without sending a request to the server. + * + * Take note that: + * + * * Only GET and JSONP requests are cached. + * * The cache key is the request URL including search parameters; headers are not considered. + * * Cached responses are returned asynchronously, in the same way as responses from the server. + * * If multiple identical requests are made using the same cache, which is not yet populated, + * one request will be made to the server and remaining requests will return the same response. + * * A cache-control header on the response does not affect if or how responses are cached. + * + * + * ## Interceptors + * + * Before you start creating interceptors, be sure to understand the + * {@link ng.$q $q and deferred/promise APIs}. + * + * For purposes of global error handling, authentication, or any kind of synchronous or + * asynchronous pre-processing of request or postprocessing of responses, it is desirable to be + * able to intercept requests before they are handed to the server and + * responses before they are handed over to the application code that + * initiated these requests. The interceptors leverage the {@link ng.$q + * promise APIs} to fulfill this need for both synchronous and asynchronous pre-processing. + * + * The interceptors are service factories that are registered with the `$httpProvider` by + * adding them to the `$httpProvider.interceptors` array. The factory is called and + * injected with dependencies (if specified) and returns the interceptor. + * + * There are two kinds of interceptors (and two kinds of rejection interceptors): + * + * * `request`: interceptors get called with a http {@link $http#usage config} object. The function is free to + * modify the `config` object or create a new one. The function needs to return the `config` + * object directly, or a promise containing the `config` or a new `config` object. + * * `requestError`: interceptor gets called when a previous interceptor threw an error or + * resolved with a rejection. + * * `response`: interceptors get called with http `response` object. The function is free to + * modify the `response` object or create a new one. The function needs to return the `response` + * object directly, or as a promise containing the `response` or a new `response` object. + * * `responseError`: interceptor gets called when a previous interceptor threw an error or + * resolved with a rejection. + * + * + * ```js + * // register the interceptor as a service + * $provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) { + * return { + * // optional method + * 'request': function(config) { + * // do something on success + * return config; + * }, + * + * // optional method + * 'requestError': function(rejection) { + * // do something on error + * if (canRecover(rejection)) { + * return responseOrNewPromise + * } + * return $q.reject(rejection); + * }, + * + * + * + * // optional method + * 'response': function(response) { + * // do something on success + * return response; + * }, + * + * // optional method + * 'responseError': function(rejection) { + * // do something on error + * if (canRecover(rejection)) { + * return responseOrNewPromise + * } + * return $q.reject(rejection); + * } + * }; + * }); + * + * $httpProvider.interceptors.push('myHttpInterceptor'); + * + * + * // alternatively, register the interceptor via an anonymous factory + * $httpProvider.interceptors.push(function($q, dependency1, dependency2) { + * return { + * 'request': function(config) { + * // same as above + * }, + * + * 'response': function(response) { + * // same as above + * } + * }; + * }); + * ``` + * + * ## Security Considerations + * + * When designing web applications, consider security threats from: + * + * - [JSON vulnerability](http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx) + * - [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery) + * + * Both server and the client must cooperate in order to eliminate these threats. Angular comes + * pre-configured with strategies that address these issues, but for this to work backend server + * cooperation is required. + * + * ### JSON Vulnerability Protection + * + * A [JSON vulnerability](http://haacked.com/archive/2008/11/20/anatomy-of-a-subtle-json-vulnerability.aspx) + * allows third party website to turn your JSON resource URL into + * [JSONP](http://en.wikipedia.org/wiki/JSONP) request under some conditions. To + * counter this your server can prefix all JSON requests with following string `")]}',\n"`. + * Angular will automatically strip the prefix before processing it as JSON. + * + * For example if your server needs to return: + * ```js + * ['one','two'] + * ``` + * + * which is vulnerable to attack, your server can return: + * ```js + * )]}', + * ['one','two'] + * ``` + * + * Angular will strip the prefix, before processing the JSON. + * + * + * ### Cross Site Request Forgery (XSRF) Protection + * + * [XSRF](http://en.wikipedia.org/wiki/Cross-site_request_forgery) is an attack technique by + * which the attacker can trick an authenticated user into unknowingly executing actions on your + * website. Angular provides a mechanism to counter XSRF. When performing XHR requests, the + * $http service reads a token from a cookie (by default, `XSRF-TOKEN`) and sets it as an HTTP + * header (`X-XSRF-TOKEN`). Since only JavaScript that runs on your domain could read the + * cookie, your server can be assured that the XHR came from JavaScript running on your domain. + * The header will not be set for cross-domain requests. + * + * To take advantage of this, your server needs to set a token in a JavaScript readable session + * cookie called `XSRF-TOKEN` on the first HTTP GET request. On subsequent XHR requests the + * server can verify that the cookie matches `X-XSRF-TOKEN` HTTP header, and therefore be sure + * that only JavaScript running on your domain could have sent the request. The token must be + * unique for each user and must be verifiable by the server (to prevent the JavaScript from + * making up its own tokens). We recommend that the token is a digest of your site's + * authentication cookie with a [salt](https://en.wikipedia.org/wiki/Salt_(cryptography)) + * for added security. + * + * The name of the headers can be specified using the xsrfHeaderName and xsrfCookieName + * properties of either $httpProvider.defaults at config-time, $http.defaults at run-time, + * or the per-request config object. + * + * In order to prevent collisions in environments where multiple Angular apps share the + * same domain or subdomain, we recommend that each application uses unique cookie name. + * + * @param {object} config Object describing the request to be made and how it should be + * processed. The object has following properties: + * + * - **method** – `{string}` – HTTP method (e.g. 'GET', 'POST', etc) + * - **url** – `{string}` – Absolute or relative URL of the resource that is being requested. + * - **params** – `{Object.}` – Map of strings or objects which will be serialized + * with the `paramSerializer` and appended as GET parameters. + * - **data** – `{string|Object}` – Data to be sent as the request message data. + * - **headers** – `{Object}` – Map of strings or functions which return strings representing + * HTTP headers to send to the server. If the return value of a function is null, the + * header will not be sent. Functions accept a config object as an argument. + * - **xsrfHeaderName** – `{string}` – Name of HTTP header to populate with the XSRF token. + * - **xsrfCookieName** – `{string}` – Name of cookie containing the XSRF token. + * - **transformRequest** – + * `{function(data, headersGetter)|Array.}` – + * transform function or an array of such functions. The transform function takes the http + * request body and headers and returns its transformed (typically serialized) version. + * See {@link ng.$http#overriding-the-default-transformations-per-request + * Overriding the Default Transformations} + * - **transformResponse** – + * `{function(data, headersGetter, status)|Array.}` – + * transform function or an array of such functions. The transform function takes the http + * response body, headers and status and returns its transformed (typically deserialized) version. + * See {@link ng.$http#overriding-the-default-transformations-per-request + * Overriding the Default Transformations} + * - **paramSerializer** - `{string|function(Object):string}` - A function used to + * prepare the string representation of request parameters (specified as an object). + * If specified as string, it is interpreted as function registered with the + * {@link $injector $injector}, which means you can create your own serializer + * by registering it as a {@link auto.$provide#service service}. + * The default serializer is the {@link $httpParamSerializer $httpParamSerializer}; + * alternatively, you can use the {@link $httpParamSerializerJQLike $httpParamSerializerJQLike} + * - **cache** – `{boolean|Object}` – A boolean value or object created with + * {@link ng.$cacheFactory `$cacheFactory`} to enable or disable caching of the HTTP response. + * See {@link $http#caching $http Caching} for more information. + * - **timeout** – `{number|Promise}` – timeout in milliseconds, or {@link ng.$q promise} + * that should abort the request when resolved. + * - **withCredentials** - `{boolean}` - whether to set the `withCredentials` flag on the + * XHR object. See [requests with credentials](https://developer.mozilla.org/docs/Web/HTTP/Access_control_CORS#Requests_with_credentials) + * for more information. + * - **responseType** - `{string}` - see + * [XMLHttpRequest.responseType](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#xmlhttprequest-responsetype). + * + * @returns {HttpPromise} Returns a {@link ng.$q `Promise}` that will be resolved to a response object + * when the request succeeds or fails. + * + * + * @property {Array.} pendingRequests Array of config objects for currently pending + * requests. This is primarily meant to be used for debugging purposes. + * + * + * @example + + +
    + + +
    + + + +
    http status code: {{status}}
    +
    http response data: {{data}}
    +
    +
    + + angular.module('httpExample', []) + .controller('FetchController', ['$scope', '$http', '$templateCache', + function($scope, $http, $templateCache) { + $scope.method = 'GET'; + $scope.url = 'http-hello.html'; + + $scope.fetch = function() { + $scope.code = null; + $scope.response = null; + + $http({method: $scope.method, url: $scope.url, cache: $templateCache}). + then(function(response) { + $scope.status = response.status; + $scope.data = response.data; + }, function(response) { + $scope.data = response.data || "Request failed"; + $scope.status = response.status; + }); + }; + + $scope.updateModel = function(method, url) { + $scope.method = method; + $scope.url = url; + }; + }]); + + + Hello, $http! + + + var status = element(by.binding('status')); + var data = element(by.binding('data')); + var fetchBtn = element(by.id('fetchbtn')); + var sampleGetBtn = element(by.id('samplegetbtn')); + var sampleJsonpBtn = element(by.id('samplejsonpbtn')); + var invalidJsonpBtn = element(by.id('invalidjsonpbtn')); + + it('should make an xhr GET request', function() { + sampleGetBtn.click(); + fetchBtn.click(); + expect(status.getText()).toMatch('200'); + expect(data.getText()).toMatch(/Hello, \$http!/); + }); + +// Commented out due to flakes. See https://github.com/angular/angular.js/issues/9185 +// it('should make a JSONP request to angularjs.org', function() { +// sampleJsonpBtn.click(); +// fetchBtn.click(); +// expect(status.getText()).toMatch('200'); +// expect(data.getText()).toMatch(/Super Hero!/); +// }); + + it('should make JSONP request to invalid URL and invoke the error handler', + function() { + invalidJsonpBtn.click(); + fetchBtn.click(); + expect(status.getText()).toMatch('0'); + expect(data.getText()).toMatch('Request failed'); + }); + +
    + */ + function $http(requestConfig) { + + if (!isObject(requestConfig)) { + throw minErr('$http')('badreq', 'Http request configuration must be an object. Received: {0}', requestConfig); + } + + if (!isString(requestConfig.url)) { + throw minErr('$http')('badreq', 'Http request configuration url must be a string. Received: {0}', requestConfig.url); + } + + var config = extend({ + method: 'get', + transformRequest: defaults.transformRequest, + transformResponse: defaults.transformResponse, + paramSerializer: defaults.paramSerializer + }, requestConfig); + + config.headers = mergeHeaders(requestConfig); + config.method = uppercase(config.method); + config.paramSerializer = isString(config.paramSerializer) ? + $injector.get(config.paramSerializer) : config.paramSerializer; + + var serverRequest = function(config) { + var headers = config.headers; + var reqData = transformData(config.data, headersGetter(headers), undefined, config.transformRequest); + + // strip content-type if data is undefined + if (isUndefined(reqData)) { + forEach(headers, function(value, header) { + if (lowercase(header) === 'content-type') { + delete headers[header]; + } + }); + } + + if (isUndefined(config.withCredentials) && !isUndefined(defaults.withCredentials)) { + config.withCredentials = defaults.withCredentials; + } + + // send request + return sendReq(config, reqData).then(transformResponse, transformResponse); + }; + + var chain = [serverRequest, undefined]; + var promise = $q.when(config); + + // apply interceptors + forEach(reversedInterceptors, function(interceptor) { + if (interceptor.request || interceptor.requestError) { + chain.unshift(interceptor.request, interceptor.requestError); + } + if (interceptor.response || interceptor.responseError) { + chain.push(interceptor.response, interceptor.responseError); + } + }); + + while (chain.length) { + var thenFn = chain.shift(); + var rejectFn = chain.shift(); + + promise = promise.then(thenFn, rejectFn); + } + + if (useLegacyPromise) { + promise.success = function(fn) { + assertArgFn(fn, 'fn'); + + promise.then(function(response) { + fn(response.data, response.status, response.headers, config); + }); + return promise; + }; + + promise.error = function(fn) { + assertArgFn(fn, 'fn'); + + promise.then(null, function(response) { + fn(response.data, response.status, response.headers, config); + }); + return promise; + }; + } else { + promise.success = $httpMinErrLegacyFn('success'); + promise.error = $httpMinErrLegacyFn('error'); + } + + return promise; + + function transformResponse(response) { + // make a copy since the response must be cacheable + var resp = extend({}, response); + resp.data = transformData(response.data, response.headers, response.status, + config.transformResponse); + return (isSuccess(response.status)) + ? resp + : $q.reject(resp); + } + + function executeHeaderFns(headers, config) { + var headerContent, processedHeaders = {}; + + forEach(headers, function(headerFn, header) { + if (isFunction(headerFn)) { + headerContent = headerFn(config); + if (headerContent != null) { + processedHeaders[header] = headerContent; + } + } else { + processedHeaders[header] = headerFn; + } + }); + + return processedHeaders; + } + + function mergeHeaders(config) { + var defHeaders = defaults.headers, + reqHeaders = extend({}, config.headers), + defHeaderName, lowercaseDefHeaderName, reqHeaderName; + + defHeaders = extend({}, defHeaders.common, defHeaders[lowercase(config.method)]); + + // using for-in instead of forEach to avoid unnecessary iteration after header has been found + defaultHeadersIteration: + for (defHeaderName in defHeaders) { + lowercaseDefHeaderName = lowercase(defHeaderName); + + for (reqHeaderName in reqHeaders) { + if (lowercase(reqHeaderName) === lowercaseDefHeaderName) { + continue defaultHeadersIteration; + } + } + + reqHeaders[defHeaderName] = defHeaders[defHeaderName]; + } + + // execute if header value is a function for merged headers + return executeHeaderFns(reqHeaders, shallowCopy(config)); + } + } + + $http.pendingRequests = []; + + /** + * @ngdoc method + * @name $http#get + * + * @description + * Shortcut method to perform `GET` request. + * + * @param {string} url Relative or absolute URL specifying the destination of the request + * @param {Object=} config Optional configuration object + * @returns {HttpPromise} Future object + */ + + /** + * @ngdoc method + * @name $http#delete + * + * @description + * Shortcut method to perform `DELETE` request. + * + * @param {string} url Relative or absolute URL specifying the destination of the request + * @param {Object=} config Optional configuration object + * @returns {HttpPromise} Future object + */ + + /** + * @ngdoc method + * @name $http#head + * + * @description + * Shortcut method to perform `HEAD` request. + * + * @param {string} url Relative or absolute URL specifying the destination of the request + * @param {Object=} config Optional configuration object + * @returns {HttpPromise} Future object + */ + + /** + * @ngdoc method + * @name $http#jsonp + * + * @description + * Shortcut method to perform `JSONP` request. + * + * @param {string} url Relative or absolute URL specifying the destination of the request. + * The name of the callback should be the string `JSON_CALLBACK`. + * @param {Object=} config Optional configuration object + * @returns {HttpPromise} Future object + */ + createShortMethods('get', 'delete', 'head', 'jsonp'); + + /** + * @ngdoc method + * @name $http#post + * + * @description + * Shortcut method to perform `POST` request. + * + * @param {string} url Relative or absolute URL specifying the destination of the request + * @param {*} data Request content + * @param {Object=} config Optional configuration object + * @returns {HttpPromise} Future object + */ + + /** + * @ngdoc method + * @name $http#put + * + * @description + * Shortcut method to perform `PUT` request. + * + * @param {string} url Relative or absolute URL specifying the destination of the request + * @param {*} data Request content + * @param {Object=} config Optional configuration object + * @returns {HttpPromise} Future object + */ + + /** + * @ngdoc method + * @name $http#patch + * + * @description + * Shortcut method to perform `PATCH` request. + * + * @param {string} url Relative or absolute URL specifying the destination of the request + * @param {*} data Request content + * @param {Object=} config Optional configuration object + * @returns {HttpPromise} Future object + */ + createShortMethodsWithData('post', 'put', 'patch'); + + /** + * @ngdoc property + * @name $http#defaults + * + * @description + * Runtime equivalent of the `$httpProvider.defaults` property. Allows configuration of + * default headers, withCredentials as well as request and response transformations. + * + * See "Setting HTTP Headers" and "Transforming Requests and Responses" sections above. + */ + $http.defaults = defaults; + + + return $http; + + + function createShortMethods(names) { + forEach(arguments, function(name) { + $http[name] = function(url, config) { + return $http(extend({}, config || {}, { + method: name, + url: url + })); + }; + }); + } + + + function createShortMethodsWithData(name) { + forEach(arguments, function(name) { + $http[name] = function(url, data, config) { + return $http(extend({}, config || {}, { + method: name, + url: url, + data: data + })); + }; + }); + } + + + /** + * Makes the request. + * + * !!! ACCESSES CLOSURE VARS: + * $httpBackend, defaults, $log, $rootScope, defaultCache, $http.pendingRequests + */ + function sendReq(config, reqData) { + var deferred = $q.defer(), + promise = deferred.promise, + cache, + cachedResp, + reqHeaders = config.headers, + url = buildUrl(config.url, config.paramSerializer(config.params)); + + $http.pendingRequests.push(config); + promise.then(removePendingReq, removePendingReq); + + + if ((config.cache || defaults.cache) && config.cache !== false && + (config.method === 'GET' || config.method === 'JSONP')) { + cache = isObject(config.cache) ? config.cache + : isObject(defaults.cache) ? defaults.cache + : defaultCache; + } + + if (cache) { + cachedResp = cache.get(url); + if (isDefined(cachedResp)) { + if (isPromiseLike(cachedResp)) { + // cached request has already been sent, but there is no response yet + cachedResp.then(resolvePromiseWithResult, resolvePromiseWithResult); + } else { + // serving from cache + if (isArray(cachedResp)) { + resolvePromise(cachedResp[1], cachedResp[0], shallowCopy(cachedResp[2]), cachedResp[3]); + } else { + resolvePromise(cachedResp, 200, {}, 'OK'); + } + } + } else { + // put the promise for the non-transformed response into cache as a placeholder + cache.put(url, promise); + } + } + + + // if we won't have the response in cache, set the xsrf headers and + // send the request to the backend + if (isUndefined(cachedResp)) { + var xsrfValue = urlIsSameOrigin(config.url) + ? $$cookieReader()[config.xsrfCookieName || defaults.xsrfCookieName] + : undefined; + if (xsrfValue) { + reqHeaders[(config.xsrfHeaderName || defaults.xsrfHeaderName)] = xsrfValue; + } + + $httpBackend(config.method, url, reqData, done, reqHeaders, config.timeout, + config.withCredentials, config.responseType); + } + + return promise; + + + /** + * Callback registered to $httpBackend(): + * - caches the response if desired + * - resolves the raw $http promise + * - calls $apply + */ + function done(status, response, headersString, statusText) { + if (cache) { + if (isSuccess(status)) { + cache.put(url, [status, response, parseHeaders(headersString), statusText]); + } else { + // remove promise from the cache + cache.remove(url); + } + } + + function resolveHttpPromise() { + resolvePromise(response, status, headersString, statusText); + } + + if (useApplyAsync) { + $rootScope.$applyAsync(resolveHttpPromise); + } else { + resolveHttpPromise(); + if (!$rootScope.$$phase) $rootScope.$apply(); + } + } + + + /** + * Resolves the raw $http promise. + */ + function resolvePromise(response, status, headers, statusText) { + //status: HTTP response status code, 0, -1 (aborted by timeout / promise) + status = status >= -1 ? status : 0; + + (isSuccess(status) ? deferred.resolve : deferred.reject)({ + data: response, + status: status, + headers: headersGetter(headers), + config: config, + statusText: statusText + }); + } + + function resolvePromiseWithResult(result) { + resolvePromise(result.data, result.status, shallowCopy(result.headers()), result.statusText); + } + + function removePendingReq() { + var idx = $http.pendingRequests.indexOf(config); + if (idx !== -1) $http.pendingRequests.splice(idx, 1); + } + } + + + function buildUrl(url, serializedParams) { + if (serializedParams.length > 0) { + url += ((url.indexOf('?') == -1) ? '?' : '&') + serializedParams; + } + return url; + } + }]; +} + +/** + * @ngdoc service + * @name $xhrFactory + * + * @description + * Factory function used to create XMLHttpRequest objects. + * + * Replace or decorate this service to create your own custom XMLHttpRequest objects. + * + * ``` + * angular.module('myApp', []) + * .factory('$xhrFactory', function() { + * return function createXhr(method, url) { + * return new window.XMLHttpRequest({mozSystem: true}); + * }; + * }); + * ``` + * + * @param {string} method HTTP method of the request (GET, POST, PUT, ..) + * @param {string} url URL of the request. + */ +function $xhrFactoryProvider() { + this.$get = function() { + return function createXhr() { + return new window.XMLHttpRequest(); + }; + }; +} + +/** + * @ngdoc service + * @name $httpBackend + * @requires $window + * @requires $document + * @requires $xhrFactory + * + * @description + * HTTP backend used by the {@link ng.$http service} that delegates to + * XMLHttpRequest object or JSONP and deals with browser incompatibilities. + * + * You should never need to use this service directly, instead use the higher-level abstractions: + * {@link ng.$http $http} or {@link ngResource.$resource $resource}. + * + * During testing this implementation is swapped with {@link ngMock.$httpBackend mock + * $httpBackend} which can be trained with responses. + */ +function $HttpBackendProvider() { + this.$get = ['$browser', '$window', '$document', '$xhrFactory', function($browser, $window, $document, $xhrFactory) { + return createHttpBackend($browser, $xhrFactory, $browser.defer, $window.angular.callbacks, $document[0]); + }]; +} + +function createHttpBackend($browser, createXhr, $browserDefer, callbacks, rawDocument) { + // TODO(vojta): fix the signature + return function(method, url, post, callback, headers, timeout, withCredentials, responseType) { + $browser.$$incOutstandingRequestCount(); + url = url || $browser.url(); + + if (lowercase(method) == 'jsonp') { + var callbackId = '_' + (callbacks.counter++).toString(36); + callbacks[callbackId] = function(data) { + callbacks[callbackId].data = data; + callbacks[callbackId].called = true; + }; + + var jsonpDone = jsonpReq(url.replace('JSON_CALLBACK', 'angular.callbacks.' + callbackId), + callbackId, function(status, text) { + completeRequest(callback, status, callbacks[callbackId].data, "", text); + callbacks[callbackId] = noop; + }); + } else { + + var xhr = createXhr(method, url); + + xhr.open(method, url, true); + forEach(headers, function(value, key) { + if (isDefined(value)) { + xhr.setRequestHeader(key, value); + } + }); + + xhr.onload = function requestLoaded() { + var statusText = xhr.statusText || ''; + + // responseText is the old-school way of retrieving response (supported by IE9) + // response/responseType properties were introduced in XHR Level2 spec (supported by IE10) + var response = ('response' in xhr) ? xhr.response : xhr.responseText; + + // normalize IE9 bug (http://bugs.jquery.com/ticket/1450) + var status = xhr.status === 1223 ? 204 : xhr.status; + + // fix status code when it is 0 (0 status is undocumented). + // Occurs when accessing file resources or on Android 4.1 stock browser + // while retrieving files from application cache. + if (status === 0) { + status = response ? 200 : urlResolve(url).protocol == 'file' ? 404 : 0; + } + + completeRequest(callback, + status, + response, + xhr.getAllResponseHeaders(), + statusText); + }; + + var requestError = function() { + // The response is always empty + // See https://xhr.spec.whatwg.org/#request-error-steps and https://fetch.spec.whatwg.org/#concept-network-error + completeRequest(callback, -1, null, null, ''); + }; + + xhr.onerror = requestError; + xhr.onabort = requestError; + + if (withCredentials) { + xhr.withCredentials = true; + } + + if (responseType) { + try { + xhr.responseType = responseType; + } catch (e) { + // WebKit added support for the json responseType value on 09/03/2013 + // https://bugs.webkit.org/show_bug.cgi?id=73648. Versions of Safari prior to 7 are + // known to throw when setting the value "json" as the response type. Other older + // browsers implementing the responseType + // + // The json response type can be ignored if not supported, because JSON payloads are + // parsed on the client-side regardless. + if (responseType !== 'json') { + throw e; + } + } + } + + xhr.send(isUndefined(post) ? null : post); + } + + if (timeout > 0) { + var timeoutId = $browserDefer(timeoutRequest, timeout); + } else if (isPromiseLike(timeout)) { + timeout.then(timeoutRequest); + } + + + function timeoutRequest() { + jsonpDone && jsonpDone(); + xhr && xhr.abort(); + } + + function completeRequest(callback, status, response, headersString, statusText) { + // cancel timeout and subsequent timeout promise resolution + if (isDefined(timeoutId)) { + $browserDefer.cancel(timeoutId); + } + jsonpDone = xhr = null; + + callback(status, response, headersString, statusText); + $browser.$$completeOutstandingRequest(noop); + } + }; + + function jsonpReq(url, callbackId, done) { + // we can't use jQuery/jqLite here because jQuery does crazy stuff with script elements, e.g.: + // - fetches local scripts via XHR and evals them + // - adds and immediately removes script elements from the document + var script = rawDocument.createElement('script'), callback = null; + script.type = "text/javascript"; + script.src = url; + script.async = true; + + callback = function(event) { + removeEventListenerFn(script, "load", callback); + removeEventListenerFn(script, "error", callback); + rawDocument.body.removeChild(script); + script = null; + var status = -1; + var text = "unknown"; + + if (event) { + if (event.type === "load" && !callbacks[callbackId].called) { + event = { type: "error" }; + } + text = event.type; + status = event.type === "error" ? 404 : 200; + } + + if (done) { + done(status, text); + } + }; + + addEventListenerFn(script, "load", callback); + addEventListenerFn(script, "error", callback); + rawDocument.body.appendChild(script); + return callback; + } +} + +var $interpolateMinErr = angular.$interpolateMinErr = minErr('$interpolate'); +$interpolateMinErr.throwNoconcat = function(text) { + throw $interpolateMinErr('noconcat', + "Error while interpolating: {0}\nStrict Contextual Escaping disallows " + + "interpolations that concatenate multiple expressions when a trusted value is " + + "required. See http://docs.angularjs.org/api/ng.$sce", text); +}; + +$interpolateMinErr.interr = function(text, err) { + return $interpolateMinErr('interr', "Can't interpolate: {0}\n{1}", text, err.toString()); +}; + +/** + * @ngdoc provider + * @name $interpolateProvider + * + * @description + * + * Used for configuring the interpolation markup. Defaults to `{{` and `}}`. + * + *
    + * This feature is sometimes used to mix different markup languages, e.g. to wrap an Angular + * template within a Python Jinja template (or any other template language). Mixing templating + * languages is **very dangerous**. The embedding template language will not safely escape Angular + * expressions, so any user-controlled values in the template will cause Cross Site Scripting (XSS) + * security bugs! + *
    + * + * @example + + + +
    + //demo.label// +
    +
    + + it('should interpolate binding with custom symbols', function() { + expect(element(by.binding('demo.label')).getText()).toBe('This binding is brought you by // interpolation symbols.'); + }); + +
    + */ +function $InterpolateProvider() { + var startSymbol = '{{'; + var endSymbol = '}}'; + + /** + * @ngdoc method + * @name $interpolateProvider#startSymbol + * @description + * Symbol to denote start of expression in the interpolated string. Defaults to `{{`. + * + * @param {string=} value new value to set the starting symbol to. + * @returns {string|self} Returns the symbol when used as getter and self if used as setter. + */ + this.startSymbol = function(value) { + if (value) { + startSymbol = value; + return this; + } else { + return startSymbol; + } + }; + + /** + * @ngdoc method + * @name $interpolateProvider#endSymbol + * @description + * Symbol to denote the end of expression in the interpolated string. Defaults to `}}`. + * + * @param {string=} value new value to set the ending symbol to. + * @returns {string|self} Returns the symbol when used as getter and self if used as setter. + */ + this.endSymbol = function(value) { + if (value) { + endSymbol = value; + return this; + } else { + return endSymbol; + } + }; + + + this.$get = ['$parse', '$exceptionHandler', '$sce', function($parse, $exceptionHandler, $sce) { + var startSymbolLength = startSymbol.length, + endSymbolLength = endSymbol.length, + escapedStartRegexp = new RegExp(startSymbol.replace(/./g, escape), 'g'), + escapedEndRegexp = new RegExp(endSymbol.replace(/./g, escape), 'g'); + + function escape(ch) { + return '\\\\\\' + ch; + } + + function unescapeText(text) { + return text.replace(escapedStartRegexp, startSymbol). + replace(escapedEndRegexp, endSymbol); + } + + function stringify(value) { + if (value == null) { // null || undefined + return ''; + } + switch (typeof value) { + case 'string': + break; + case 'number': + value = '' + value; + break; + default: + value = toJson(value); + } + + return value; + } + + //TODO: this is the same as the constantWatchDelegate in parse.js + function constantWatchDelegate(scope, listener, objectEquality, constantInterp) { + var unwatch; + return unwatch = scope.$watch(function constantInterpolateWatch(scope) { + unwatch(); + return constantInterp(scope); + }, listener, objectEquality); + } + + /** + * @ngdoc service + * @name $interpolate + * @kind function + * + * @requires $parse + * @requires $sce + * + * @description + * + * Compiles a string with markup into an interpolation function. This service is used by the + * HTML {@link ng.$compile $compile} service for data binding. See + * {@link ng.$interpolateProvider $interpolateProvider} for configuring the + * interpolation markup. + * + * + * ```js + * var $interpolate = ...; // injected + * var exp = $interpolate('Hello {{name | uppercase}}!'); + * expect(exp({name:'Angular'})).toEqual('Hello ANGULAR!'); + * ``` + * + * `$interpolate` takes an optional fourth argument, `allOrNothing`. If `allOrNothing` is + * `true`, the interpolation function will return `undefined` unless all embedded expressions + * evaluate to a value other than `undefined`. + * + * ```js + * var $interpolate = ...; // injected + * var context = {greeting: 'Hello', name: undefined }; + * + * // default "forgiving" mode + * var exp = $interpolate('{{greeting}} {{name}}!'); + * expect(exp(context)).toEqual('Hello !'); + * + * // "allOrNothing" mode + * exp = $interpolate('{{greeting}} {{name}}!', false, null, true); + * expect(exp(context)).toBeUndefined(); + * context.name = 'Angular'; + * expect(exp(context)).toEqual('Hello Angular!'); + * ``` + * + * `allOrNothing` is useful for interpolating URLs. `ngSrc` and `ngSrcset` use this behavior. + * + * ####Escaped Interpolation + * $interpolate provides a mechanism for escaping interpolation markers. Start and end markers + * can be escaped by preceding each of their characters with a REVERSE SOLIDUS U+005C (backslash). + * It will be rendered as a regular start/end marker, and will not be interpreted as an expression + * or binding. + * + * This enables web-servers to prevent script injection attacks and defacing attacks, to some + * degree, while also enabling code examples to work without relying on the + * {@link ng.directive:ngNonBindable ngNonBindable} directive. + * + * **For security purposes, it is strongly encouraged that web servers escape user-supplied data, + * replacing angle brackets (<, >) with &lt; and &gt; respectively, and replacing all + * interpolation start/end markers with their escaped counterparts.** + * + * Escaped interpolation markers are only replaced with the actual interpolation markers in rendered + * output when the $interpolate service processes the text. So, for HTML elements interpolated + * by {@link ng.$compile $compile}, or otherwise interpolated with the `mustHaveExpression` parameter + * set to `true`, the interpolated text must contain an unescaped interpolation expression. As such, + * this is typically useful only when user-data is used in rendering a template from the server, or + * when otherwise untrusted data is used by a directive. + * + * + * + *
    + *

    {{apptitle}}: \{\{ username = "defaced value"; \}\} + *

    + *

    {{username}} attempts to inject code which will deface the + * application, but fails to accomplish their task, because the server has correctly + * escaped the interpolation start/end markers with REVERSE SOLIDUS U+005C (backslash) + * characters.

    + *

    Instead, the result of the attempted script injection is visible, and can be removed + * from the database by an administrator.

    + *
    + *
    + *
    + * + * @param {string} text The text with markup to interpolate. + * @param {boolean=} mustHaveExpression if set to true then the interpolation string must have + * embedded expression in order to return an interpolation function. Strings with no + * embedded expression will return null for the interpolation function. + * @param {string=} trustedContext when provided, the returned function passes the interpolated + * result through {@link ng.$sce#getTrusted $sce.getTrusted(interpolatedResult, + * trustedContext)} before returning it. Refer to the {@link ng.$sce $sce} service that + * provides Strict Contextual Escaping for details. + * @param {boolean=} allOrNothing if `true`, then the returned function returns undefined + * unless all embedded expressions evaluate to a value other than `undefined`. + * @returns {function(context)} an interpolation function which is used to compute the + * interpolated string. The function has these parameters: + * + * - `context`: evaluation context for all expressions embedded in the interpolated text + */ + function $interpolate(text, mustHaveExpression, trustedContext, allOrNothing) { + // Provide a quick exit and simplified result function for text with no interpolation + if (!text.length || text.indexOf(startSymbol) === -1) { + var constantInterp; + if (!mustHaveExpression) { + var unescapedText = unescapeText(text); + constantInterp = valueFn(unescapedText); + constantInterp.exp = text; + constantInterp.expressions = []; + constantInterp.$$watchDelegate = constantWatchDelegate; + } + return constantInterp; + } + + allOrNothing = !!allOrNothing; + var startIndex, + endIndex, + index = 0, + expressions = [], + parseFns = [], + textLength = text.length, + exp, + concat = [], + expressionPositions = []; + + while (index < textLength) { + if (((startIndex = text.indexOf(startSymbol, index)) != -1) && + ((endIndex = text.indexOf(endSymbol, startIndex + startSymbolLength)) != -1)) { + if (index !== startIndex) { + concat.push(unescapeText(text.substring(index, startIndex))); + } + exp = text.substring(startIndex + startSymbolLength, endIndex); + expressions.push(exp); + parseFns.push($parse(exp, parseStringifyInterceptor)); + index = endIndex + endSymbolLength; + expressionPositions.push(concat.length); + concat.push(''); + } else { + // we did not find an interpolation, so we have to add the remainder to the separators array + if (index !== textLength) { + concat.push(unescapeText(text.substring(index))); + } + break; + } + } + + // Concatenating expressions makes it hard to reason about whether some combination of + // concatenated values are unsafe to use and could easily lead to XSS. By requiring that a + // single expression be used for iframe[src], object[src], etc., we ensure that the value + // that's used is assigned or constructed by some JS code somewhere that is more testable or + // make it obvious that you bound the value to some user controlled value. This helps reduce + // the load when auditing for XSS issues. + if (trustedContext && concat.length > 1) { + $interpolateMinErr.throwNoconcat(text); + } + + if (!mustHaveExpression || expressions.length) { + var compute = function(values) { + for (var i = 0, ii = expressions.length; i < ii; i++) { + if (allOrNothing && isUndefined(values[i])) return; + concat[expressionPositions[i]] = values[i]; + } + return concat.join(''); + }; + + var getValue = function(value) { + return trustedContext ? + $sce.getTrusted(trustedContext, value) : + $sce.valueOf(value); + }; + + return extend(function interpolationFn(context) { + var i = 0; + var ii = expressions.length; + var values = new Array(ii); + + try { + for (; i < ii; i++) { + values[i] = parseFns[i](context); + } + + return compute(values); + } catch (err) { + $exceptionHandler($interpolateMinErr.interr(text, err)); + } + + }, { + // all of these properties are undocumented for now + exp: text, //just for compatibility with regular watchers created via $watch + expressions: expressions, + $$watchDelegate: function(scope, listener) { + var lastValue; + return scope.$watchGroup(parseFns, function interpolateFnWatcher(values, oldValues) { + var currValue = compute(values); + if (isFunction(listener)) { + listener.call(this, currValue, values !== oldValues ? lastValue : currValue, scope); + } + lastValue = currValue; + }); + } + }); + } + + function parseStringifyInterceptor(value) { + try { + value = getValue(value); + return allOrNothing && !isDefined(value) ? value : stringify(value); + } catch (err) { + $exceptionHandler($interpolateMinErr.interr(text, err)); + } + } + } + + + /** + * @ngdoc method + * @name $interpolate#startSymbol + * @description + * Symbol to denote the start of expression in the interpolated string. Defaults to `{{`. + * + * Use {@link ng.$interpolateProvider#startSymbol `$interpolateProvider.startSymbol`} to change + * the symbol. + * + * @returns {string} start symbol. + */ + $interpolate.startSymbol = function() { + return startSymbol; + }; + + + /** + * @ngdoc method + * @name $interpolate#endSymbol + * @description + * Symbol to denote the end of expression in the interpolated string. Defaults to `}}`. + * + * Use {@link ng.$interpolateProvider#endSymbol `$interpolateProvider.endSymbol`} to change + * the symbol. + * + * @returns {string} end symbol. + */ + $interpolate.endSymbol = function() { + return endSymbol; + }; + + return $interpolate; + }]; +} + +function $IntervalProvider() { + this.$get = ['$rootScope', '$window', '$q', '$$q', '$browser', + function($rootScope, $window, $q, $$q, $browser) { + var intervals = {}; + + + /** + * @ngdoc service + * @name $interval + * + * @description + * Angular's wrapper for `window.setInterval`. The `fn` function is executed every `delay` + * milliseconds. + * + * The return value of registering an interval function is a promise. This promise will be + * notified upon each tick of the interval, and will be resolved after `count` iterations, or + * run indefinitely if `count` is not defined. The value of the notification will be the + * number of iterations that have run. + * To cancel an interval, call `$interval.cancel(promise)`. + * + * In tests you can use {@link ngMock.$interval#flush `$interval.flush(millis)`} to + * move forward by `millis` milliseconds and trigger any functions scheduled to run in that + * time. + * + *
    + * **Note**: Intervals created by this service must be explicitly destroyed when you are finished + * with them. In particular they are not automatically destroyed when a controller's scope or a + * directive's element are destroyed. + * You should take this into consideration and make sure to always cancel the interval at the + * appropriate moment. See the example below for more details on how and when to do this. + *
    + * + * @param {function()} fn A function that should be called repeatedly. + * @param {number} delay Number of milliseconds between each function call. + * @param {number=} [count=0] Number of times to repeat. If not set, or 0, will repeat + * indefinitely. + * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise + * will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block. + * @param {...*=} Pass additional parameters to the executed function. + * @returns {promise} A promise which will be notified on each iteration. + * + * @example + * + * + * + * + *
    + *
    + *
    + * Current time is: + *
    + * Blood 1 : {{blood_1}} + * Blood 2 : {{blood_2}} + * + * + * + *
    + *
    + * + *
    + *
    + */ + function interval(fn, delay, count, invokeApply) { + var hasParams = arguments.length > 4, + args = hasParams ? sliceArgs(arguments, 4) : [], + setInterval = $window.setInterval, + clearInterval = $window.clearInterval, + iteration = 0, + skipApply = (isDefined(invokeApply) && !invokeApply), + deferred = (skipApply ? $$q : $q).defer(), + promise = deferred.promise; + + count = isDefined(count) ? count : 0; + + promise.$$intervalId = setInterval(function tick() { + if (skipApply) { + $browser.defer(callback); + } else { + $rootScope.$evalAsync(callback); + } + deferred.notify(iteration++); + + if (count > 0 && iteration >= count) { + deferred.resolve(iteration); + clearInterval(promise.$$intervalId); + delete intervals[promise.$$intervalId]; + } + + if (!skipApply) $rootScope.$apply(); + + }, delay); + + intervals[promise.$$intervalId] = deferred; + + return promise; + + function callback() { + if (!hasParams) { + fn(iteration); + } else { + fn.apply(null, args); + } + } + } + + + /** + * @ngdoc method + * @name $interval#cancel + * + * @description + * Cancels a task associated with the `promise`. + * + * @param {Promise=} promise returned by the `$interval` function. + * @returns {boolean} Returns `true` if the task was successfully canceled. + */ + interval.cancel = function(promise) { + if (promise && promise.$$intervalId in intervals) { + intervals[promise.$$intervalId].reject('canceled'); + $window.clearInterval(promise.$$intervalId); + delete intervals[promise.$$intervalId]; + return true; + } + return false; + }; + + return interval; + }]; +} + +/** + * @ngdoc service + * @name $locale + * + * @description + * $locale service provides localization rules for various Angular components. As of right now the + * only public api is: + * + * * `id` – `{string}` – locale id formatted as `languageId-countryId` (e.g. `en-us`) + */ + +var PATH_MATCH = /^([^\?#]*)(\?([^#]*))?(#(.*))?$/, + DEFAULT_PORTS = {'http': 80, 'https': 443, 'ftp': 21}; +var $locationMinErr = minErr('$location'); + + +/** + * Encode path using encodeUriSegment, ignoring forward slashes + * + * @param {string} path Path to encode + * @returns {string} + */ +function encodePath(path) { + var segments = path.split('/'), + i = segments.length; + + while (i--) { + segments[i] = encodeUriSegment(segments[i]); + } + + return segments.join('/'); +} + +function parseAbsoluteUrl(absoluteUrl, locationObj) { + var parsedUrl = urlResolve(absoluteUrl); + + locationObj.$$protocol = parsedUrl.protocol; + locationObj.$$host = parsedUrl.hostname; + locationObj.$$port = toInt(parsedUrl.port) || DEFAULT_PORTS[parsedUrl.protocol] || null; +} + + +function parseAppUrl(relativeUrl, locationObj) { + var prefixed = (relativeUrl.charAt(0) !== '/'); + if (prefixed) { + relativeUrl = '/' + relativeUrl; + } + var match = urlResolve(relativeUrl); + locationObj.$$path = decodeURIComponent(prefixed && match.pathname.charAt(0) === '/' ? + match.pathname.substring(1) : match.pathname); + locationObj.$$search = parseKeyValue(match.search); + locationObj.$$hash = decodeURIComponent(match.hash); + + // make sure path starts with '/'; + if (locationObj.$$path && locationObj.$$path.charAt(0) != '/') { + locationObj.$$path = '/' + locationObj.$$path; + } +} + + +/** + * + * @param {string} begin + * @param {string} whole + * @returns {string} returns text from whole after begin or undefined if it does not begin with + * expected string. + */ +function beginsWith(begin, whole) { + if (whole.indexOf(begin) === 0) { + return whole.substr(begin.length); + } +} + + +function stripHash(url) { + var index = url.indexOf('#'); + return index == -1 ? url : url.substr(0, index); +} + +function trimEmptyHash(url) { + return url.replace(/(#.+)|#$/, '$1'); +} + + +function stripFile(url) { + return url.substr(0, stripHash(url).lastIndexOf('/') + 1); +} + +/* return the server only (scheme://host:port) */ +function serverBase(url) { + return url.substring(0, url.indexOf('/', url.indexOf('//') + 2)); +} + + +/** + * LocationHtml5Url represents an url + * This object is exposed as $location service when HTML5 mode is enabled and supported + * + * @constructor + * @param {string} appBase application base URL + * @param {string} appBaseNoFile application base URL stripped of any filename + * @param {string} basePrefix url path prefix + */ +function LocationHtml5Url(appBase, appBaseNoFile, basePrefix) { + this.$$html5 = true; + basePrefix = basePrefix || ''; + parseAbsoluteUrl(appBase, this); + + + /** + * Parse given html5 (regular) url string into properties + * @param {string} url HTML5 url + * @private + */ + this.$$parse = function(url) { + var pathUrl = beginsWith(appBaseNoFile, url); + if (!isString(pathUrl)) { + throw $locationMinErr('ipthprfx', 'Invalid url "{0}", missing path prefix "{1}".', url, + appBaseNoFile); + } + + parseAppUrl(pathUrl, this); + + if (!this.$$path) { + this.$$path = '/'; + } + + this.$$compose(); + }; + + /** + * Compose url and update `absUrl` property + * @private + */ + this.$$compose = function() { + var search = toKeyValue(this.$$search), + hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : ''; + + this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash; + this.$$absUrl = appBaseNoFile + this.$$url.substr(1); // first char is always '/' + }; + + this.$$parseLinkUrl = function(url, relHref) { + if (relHref && relHref[0] === '#') { + // special case for links to hash fragments: + // keep the old url and only replace the hash fragment + this.hash(relHref.slice(1)); + return true; + } + var appUrl, prevAppUrl; + var rewrittenUrl; + + if (isDefined(appUrl = beginsWith(appBase, url))) { + prevAppUrl = appUrl; + if (isDefined(appUrl = beginsWith(basePrefix, appUrl))) { + rewrittenUrl = appBaseNoFile + (beginsWith('/', appUrl) || appUrl); + } else { + rewrittenUrl = appBase + prevAppUrl; + } + } else if (isDefined(appUrl = beginsWith(appBaseNoFile, url))) { + rewrittenUrl = appBaseNoFile + appUrl; + } else if (appBaseNoFile == url + '/') { + rewrittenUrl = appBaseNoFile; + } + if (rewrittenUrl) { + this.$$parse(rewrittenUrl); + } + return !!rewrittenUrl; + }; +} + + +/** + * LocationHashbangUrl represents url + * This object is exposed as $location service when developer doesn't opt into html5 mode. + * It also serves as the base class for html5 mode fallback on legacy browsers. + * + * @constructor + * @param {string} appBase application base URL + * @param {string} appBaseNoFile application base URL stripped of any filename + * @param {string} hashPrefix hashbang prefix + */ +function LocationHashbangUrl(appBase, appBaseNoFile, hashPrefix) { + + parseAbsoluteUrl(appBase, this); + + + /** + * Parse given hashbang url into properties + * @param {string} url Hashbang url + * @private + */ + this.$$parse = function(url) { + var withoutBaseUrl = beginsWith(appBase, url) || beginsWith(appBaseNoFile, url); + var withoutHashUrl; + + if (!isUndefined(withoutBaseUrl) && withoutBaseUrl.charAt(0) === '#') { + + // The rest of the url starts with a hash so we have + // got either a hashbang path or a plain hash fragment + withoutHashUrl = beginsWith(hashPrefix, withoutBaseUrl); + if (isUndefined(withoutHashUrl)) { + // There was no hashbang prefix so we just have a hash fragment + withoutHashUrl = withoutBaseUrl; + } + + } else { + // There was no hashbang path nor hash fragment: + // If we are in HTML5 mode we use what is left as the path; + // Otherwise we ignore what is left + if (this.$$html5) { + withoutHashUrl = withoutBaseUrl; + } else { + withoutHashUrl = ''; + if (isUndefined(withoutBaseUrl)) { + appBase = url; + this.replace(); + } + } + } + + parseAppUrl(withoutHashUrl, this); + + this.$$path = removeWindowsDriveName(this.$$path, withoutHashUrl, appBase); + + this.$$compose(); + + /* + * In Windows, on an anchor node on documents loaded from + * the filesystem, the browser will return a pathname + * prefixed with the drive name ('/C:/path') when a + * pathname without a drive is set: + * * a.setAttribute('href', '/foo') + * * a.pathname === '/C:/foo' //true + * + * Inside of Angular, we're always using pathnames that + * do not include drive names for routing. + */ + function removeWindowsDriveName(path, url, base) { + /* + Matches paths for file protocol on windows, + such as /C:/foo/bar, and captures only /foo/bar. + */ + var windowsFilePathExp = /^\/[A-Z]:(\/.*)/; + + var firstPathSegmentMatch; + + //Get the relative path from the input URL. + if (url.indexOf(base) === 0) { + url = url.replace(base, ''); + } + + // The input URL intentionally contains a first path segment that ends with a colon. + if (windowsFilePathExp.exec(url)) { + return path; + } + + firstPathSegmentMatch = windowsFilePathExp.exec(path); + return firstPathSegmentMatch ? firstPathSegmentMatch[1] : path; + } + }; + + /** + * Compose hashbang url and update `absUrl` property + * @private + */ + this.$$compose = function() { + var search = toKeyValue(this.$$search), + hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : ''; + + this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash; + this.$$absUrl = appBase + (this.$$url ? hashPrefix + this.$$url : ''); + }; + + this.$$parseLinkUrl = function(url, relHref) { + if (stripHash(appBase) == stripHash(url)) { + this.$$parse(url); + return true; + } + return false; + }; +} + + +/** + * LocationHashbangUrl represents url + * This object is exposed as $location service when html5 history api is enabled but the browser + * does not support it. + * + * @constructor + * @param {string} appBase application base URL + * @param {string} appBaseNoFile application base URL stripped of any filename + * @param {string} hashPrefix hashbang prefix + */ +function LocationHashbangInHtml5Url(appBase, appBaseNoFile, hashPrefix) { + this.$$html5 = true; + LocationHashbangUrl.apply(this, arguments); + + this.$$parseLinkUrl = function(url, relHref) { + if (relHref && relHref[0] === '#') { + // special case for links to hash fragments: + // keep the old url and only replace the hash fragment + this.hash(relHref.slice(1)); + return true; + } + + var rewrittenUrl; + var appUrl; + + if (appBase == stripHash(url)) { + rewrittenUrl = url; + } else if ((appUrl = beginsWith(appBaseNoFile, url))) { + rewrittenUrl = appBase + hashPrefix + appUrl; + } else if (appBaseNoFile === url + '/') { + rewrittenUrl = appBaseNoFile; + } + if (rewrittenUrl) { + this.$$parse(rewrittenUrl); + } + return !!rewrittenUrl; + }; + + this.$$compose = function() { + var search = toKeyValue(this.$$search), + hash = this.$$hash ? '#' + encodeUriSegment(this.$$hash) : ''; + + this.$$url = encodePath(this.$$path) + (search ? '?' + search : '') + hash; + // include hashPrefix in $$absUrl when $$url is empty so IE9 does not reload page because of removal of '#' + this.$$absUrl = appBase + hashPrefix + this.$$url; + }; + +} + + +var locationPrototype = { + + /** + * Are we in html5 mode? + * @private + */ + $$html5: false, + + /** + * Has any change been replacing? + * @private + */ + $$replace: false, + + /** + * @ngdoc method + * @name $location#absUrl + * + * @description + * This method is getter only. + * + * Return full url representation with all segments encoded according to rules specified in + * [RFC 3986](http://www.ietf.org/rfc/rfc3986.txt). + * + * + * ```js + * // given url http://example.com/#/some/path?foo=bar&baz=xoxo + * var absUrl = $location.absUrl(); + * // => "http://example.com/#/some/path?foo=bar&baz=xoxo" + * ``` + * + * @return {string} full url + */ + absUrl: locationGetter('$$absUrl'), + + /** + * @ngdoc method + * @name $location#url + * + * @description + * This method is getter / setter. + * + * Return url (e.g. `/path?a=b#hash`) when called without any parameter. + * + * Change path, search and hash, when called with parameter and return `$location`. + * + * + * ```js + * // given url http://example.com/#/some/path?foo=bar&baz=xoxo + * var url = $location.url(); + * // => "/some/path?foo=bar&baz=xoxo" + * ``` + * + * @param {string=} url New url without base prefix (e.g. `/path?a=b#hash`) + * @return {string} url + */ + url: function(url) { + if (isUndefined(url)) { + return this.$$url; + } + + var match = PATH_MATCH.exec(url); + if (match[1] || url === '') this.path(decodeURIComponent(match[1])); + if (match[2] || match[1] || url === '') this.search(match[3] || ''); + this.hash(match[5] || ''); + + return this; + }, + + /** + * @ngdoc method + * @name $location#protocol + * + * @description + * This method is getter only. + * + * Return protocol of current url. + * + * + * ```js + * // given url http://example.com/#/some/path?foo=bar&baz=xoxo + * var protocol = $location.protocol(); + * // => "http" + * ``` + * + * @return {string} protocol of current url + */ + protocol: locationGetter('$$protocol'), + + /** + * @ngdoc method + * @name $location#host + * + * @description + * This method is getter only. + * + * Return host of current url. + * + * Note: compared to the non-angular version `location.host` which returns `hostname:port`, this returns the `hostname` portion only. + * + * + * ```js + * // given url http://example.com/#/some/path?foo=bar&baz=xoxo + * var host = $location.host(); + * // => "example.com" + * + * // given url http://user:password@example.com:8080/#/some/path?foo=bar&baz=xoxo + * host = $location.host(); + * // => "example.com" + * host = location.host; + * // => "example.com:8080" + * ``` + * + * @return {string} host of current url. + */ + host: locationGetter('$$host'), + + /** + * @ngdoc method + * @name $location#port + * + * @description + * This method is getter only. + * + * Return port of current url. + * + * + * ```js + * // given url http://example.com/#/some/path?foo=bar&baz=xoxo + * var port = $location.port(); + * // => 80 + * ``` + * + * @return {Number} port + */ + port: locationGetter('$$port'), + + /** + * @ngdoc method + * @name $location#path + * + * @description + * This method is getter / setter. + * + * Return path of current url when called without any parameter. + * + * Change path when called with parameter and return `$location`. + * + * Note: Path should always begin with forward slash (/), this method will add the forward slash + * if it is missing. + * + * + * ```js + * // given url http://example.com/#/some/path?foo=bar&baz=xoxo + * var path = $location.path(); + * // => "/some/path" + * ``` + * + * @param {(string|number)=} path New path + * @return {string} path + */ + path: locationGetterSetter('$$path', function(path) { + path = path !== null ? path.toString() : ''; + return path.charAt(0) == '/' ? path : '/' + path; + }), + + /** + * @ngdoc method + * @name $location#search + * + * @description + * This method is getter / setter. + * + * Return search part (as object) of current url when called without any parameter. + * + * Change search part when called with parameter and return `$location`. + * + * + * ```js + * // given url http://example.com/#/some/path?foo=bar&baz=xoxo + * var searchObject = $location.search(); + * // => {foo: 'bar', baz: 'xoxo'} + * + * // set foo to 'yipee' + * $location.search('foo', 'yipee'); + * // $location.search() => {foo: 'yipee', baz: 'xoxo'} + * ``` + * + * @param {string|Object.|Object.>} search New search params - string or + * hash object. + * + * When called with a single argument the method acts as a setter, setting the `search` component + * of `$location` to the specified value. + * + * If the argument is a hash object containing an array of values, these values will be encoded + * as duplicate search parameters in the url. + * + * @param {(string|Number|Array|boolean)=} paramValue If `search` is a string or number, then `paramValue` + * will override only a single search property. + * + * If `paramValue` is an array, it will override the property of the `search` component of + * `$location` specified via the first argument. + * + * If `paramValue` is `null`, the property specified via the first argument will be deleted. + * + * If `paramValue` is `true`, the property specified via the first argument will be added with no + * value nor trailing equal sign. + * + * @return {Object} If called with no arguments returns the parsed `search` object. If called with + * one or more arguments returns `$location` object itself. + */ + search: function(search, paramValue) { + switch (arguments.length) { + case 0: + return this.$$search; + case 1: + if (isString(search) || isNumber(search)) { + search = search.toString(); + this.$$search = parseKeyValue(search); + } else if (isObject(search)) { + search = copy(search, {}); + // remove object undefined or null properties + forEach(search, function(value, key) { + if (value == null) delete search[key]; + }); + + this.$$search = search; + } else { + throw $locationMinErr('isrcharg', + 'The first argument of the `$location#search()` call must be a string or an object.'); + } + break; + default: + if (isUndefined(paramValue) || paramValue === null) { + delete this.$$search[search]; + } else { + this.$$search[search] = paramValue; + } + } + + this.$$compose(); + return this; + }, + + /** + * @ngdoc method + * @name $location#hash + * + * @description + * This method is getter / setter. + * + * Returns the hash fragment when called without any parameters. + * + * Changes the hash fragment when called with a parameter and returns `$location`. + * + * + * ```js + * // given url http://example.com/#/some/path?foo=bar&baz=xoxo#hashValue + * var hash = $location.hash(); + * // => "hashValue" + * ``` + * + * @param {(string|number)=} hash New hash fragment + * @return {string} hash + */ + hash: locationGetterSetter('$$hash', function(hash) { + return hash !== null ? hash.toString() : ''; + }), + + /** + * @ngdoc method + * @name $location#replace + * + * @description + * If called, all changes to $location during the current `$digest` will replace the current history + * record, instead of adding a new one. + */ + replace: function() { + this.$$replace = true; + return this; + } +}; + +forEach([LocationHashbangInHtml5Url, LocationHashbangUrl, LocationHtml5Url], function(Location) { + Location.prototype = Object.create(locationPrototype); + + /** + * @ngdoc method + * @name $location#state + * + * @description + * This method is getter / setter. + * + * Return the history state object when called without any parameter. + * + * Change the history state object when called with one parameter and return `$location`. + * The state object is later passed to `pushState` or `replaceState`. + * + * NOTE: This method is supported only in HTML5 mode and only in browsers supporting + * the HTML5 History API (i.e. methods `pushState` and `replaceState`). If you need to support + * older browsers (like IE9 or Android < 4.0), don't use this method. + * + * @param {object=} state State object for pushState or replaceState + * @return {object} state + */ + Location.prototype.state = function(state) { + if (!arguments.length) { + return this.$$state; + } + + if (Location !== LocationHtml5Url || !this.$$html5) { + throw $locationMinErr('nostate', 'History API state support is available only ' + + 'in HTML5 mode and only in browsers supporting HTML5 History API'); + } + // The user might modify `stateObject` after invoking `$location.state(stateObject)` + // but we're changing the $$state reference to $browser.state() during the $digest + // so the modification window is narrow. + this.$$state = isUndefined(state) ? null : state; + + return this; + }; +}); + + +function locationGetter(property) { + return function() { + return this[property]; + }; +} + + +function locationGetterSetter(property, preprocess) { + return function(value) { + if (isUndefined(value)) { + return this[property]; + } + + this[property] = preprocess(value); + this.$$compose(); + + return this; + }; +} + + +/** + * @ngdoc service + * @name $location + * + * @requires $rootElement + * + * @description + * The $location service parses the URL in the browser address bar (based on the + * [window.location](https://developer.mozilla.org/en/window.location)) and makes the URL + * available to your application. Changes to the URL in the address bar are reflected into + * $location service and changes to $location are reflected into the browser address bar. + * + * **The $location service:** + * + * - Exposes the current URL in the browser address bar, so you can + * - Watch and observe the URL. + * - Change the URL. + * - Synchronizes the URL with the browser when the user + * - Changes the address bar. + * - Clicks the back or forward button (or clicks a History link). + * - Clicks on a link. + * - Represents the URL object as a set of methods (protocol, host, port, path, search, hash). + * + * For more information see {@link guide/$location Developer Guide: Using $location} + */ + +/** + * @ngdoc provider + * @name $locationProvider + * @description + * Use the `$locationProvider` to configure how the application deep linking paths are stored. + */ +function $LocationProvider() { + var hashPrefix = '', + html5Mode = { + enabled: false, + requireBase: true, + rewriteLinks: true + }; + + /** + * @ngdoc method + * @name $locationProvider#hashPrefix + * @description + * @param {string=} prefix Prefix for hash part (containing path and search) + * @returns {*} current value if used as getter or itself (chaining) if used as setter + */ + this.hashPrefix = function(prefix) { + if (isDefined(prefix)) { + hashPrefix = prefix; + return this; + } else { + return hashPrefix; + } + }; + + /** + * @ngdoc method + * @name $locationProvider#html5Mode + * @description + * @param {(boolean|Object)=} mode If boolean, sets `html5Mode.enabled` to value. + * If object, sets `enabled`, `requireBase` and `rewriteLinks` to respective values. Supported + * properties: + * - **enabled** – `{boolean}` – (default: false) If true, will rely on `history.pushState` to + * change urls where supported. Will fall back to hash-prefixed paths in browsers that do not + * support `pushState`. + * - **requireBase** - `{boolean}` - (default: `true`) When html5Mode is enabled, specifies + * whether or not a tag is required to be present. If `enabled` and `requireBase` are + * true, and a base tag is not present, an error will be thrown when `$location` is injected. + * See the {@link guide/$location $location guide for more information} + * - **rewriteLinks** - `{boolean}` - (default: `true`) When html5Mode is enabled, + * enables/disables url rewriting for relative links. + * + * @returns {Object} html5Mode object if used as getter or itself (chaining) if used as setter + */ + this.html5Mode = function(mode) { + if (isBoolean(mode)) { + html5Mode.enabled = mode; + return this; + } else if (isObject(mode)) { + + if (isBoolean(mode.enabled)) { + html5Mode.enabled = mode.enabled; + } + + if (isBoolean(mode.requireBase)) { + html5Mode.requireBase = mode.requireBase; + } + + if (isBoolean(mode.rewriteLinks)) { + html5Mode.rewriteLinks = mode.rewriteLinks; + } + + return this; + } else { + return html5Mode; + } + }; + + /** + * @ngdoc event + * @name $location#$locationChangeStart + * @eventType broadcast on root scope + * @description + * Broadcasted before a URL will change. + * + * This change can be prevented by calling + * `preventDefault` method of the event. See {@link ng.$rootScope.Scope#$on} for more + * details about event object. Upon successful change + * {@link ng.$location#$locationChangeSuccess $locationChangeSuccess} is fired. + * + * The `newState` and `oldState` parameters may be defined only in HTML5 mode and when + * the browser supports the HTML5 History API. + * + * @param {Object} angularEvent Synthetic event object. + * @param {string} newUrl New URL + * @param {string=} oldUrl URL that was before it was changed. + * @param {string=} newState New history state object + * @param {string=} oldState History state object that was before it was changed. + */ + + /** + * @ngdoc event + * @name $location#$locationChangeSuccess + * @eventType broadcast on root scope + * @description + * Broadcasted after a URL was changed. + * + * The `newState` and `oldState` parameters may be defined only in HTML5 mode and when + * the browser supports the HTML5 History API. + * + * @param {Object} angularEvent Synthetic event object. + * @param {string} newUrl New URL + * @param {string=} oldUrl URL that was before it was changed. + * @param {string=} newState New history state object + * @param {string=} oldState History state object that was before it was changed. + */ + + this.$get = ['$rootScope', '$browser', '$sniffer', '$rootElement', '$window', + function($rootScope, $browser, $sniffer, $rootElement, $window) { + var $location, + LocationMode, + baseHref = $browser.baseHref(), // if base[href] is undefined, it defaults to '' + initialUrl = $browser.url(), + appBase; + + if (html5Mode.enabled) { + if (!baseHref && html5Mode.requireBase) { + throw $locationMinErr('nobase', + "$location in HTML5 mode requires a tag to be present!"); + } + appBase = serverBase(initialUrl) + (baseHref || '/'); + LocationMode = $sniffer.history ? LocationHtml5Url : LocationHashbangInHtml5Url; + } else { + appBase = stripHash(initialUrl); + LocationMode = LocationHashbangUrl; + } + var appBaseNoFile = stripFile(appBase); + + $location = new LocationMode(appBase, appBaseNoFile, '#' + hashPrefix); + $location.$$parseLinkUrl(initialUrl, initialUrl); + + $location.$$state = $browser.state(); + + var IGNORE_URI_REGEXP = /^\s*(javascript|mailto):/i; + + function setBrowserUrlWithFallback(url, replace, state) { + var oldUrl = $location.url(); + var oldState = $location.$$state; + try { + $browser.url(url, replace, state); + + // Make sure $location.state() returns referentially identical (not just deeply equal) + // state object; this makes possible quick checking if the state changed in the digest + // loop. Checking deep equality would be too expensive. + $location.$$state = $browser.state(); + } catch (e) { + // Restore old values if pushState fails + $location.url(oldUrl); + $location.$$state = oldState; + + throw e; + } + } + + $rootElement.on('click', function(event) { + // TODO(vojta): rewrite link when opening in new tab/window (in legacy browser) + // currently we open nice url link and redirect then + + if (!html5Mode.rewriteLinks || event.ctrlKey || event.metaKey || event.shiftKey || event.which == 2 || event.button == 2) return; + + var elm = jqLite(event.target); + + // traverse the DOM up to find first A tag + while (nodeName_(elm[0]) !== 'a') { + // ignore rewriting if no A tag (reached root element, or no parent - removed from document) + if (elm[0] === $rootElement[0] || !(elm = elm.parent())[0]) return; + } + + var absHref = elm.prop('href'); + // get the actual href attribute - see + // http://msdn.microsoft.com/en-us/library/ie/dd347148(v=vs.85).aspx + var relHref = elm.attr('href') || elm.attr('xlink:href'); + + if (isObject(absHref) && absHref.toString() === '[object SVGAnimatedString]') { + // SVGAnimatedString.animVal should be identical to SVGAnimatedString.baseVal, unless during + // an animation. + absHref = urlResolve(absHref.animVal).href; + } + + // Ignore when url is started with javascript: or mailto: + if (IGNORE_URI_REGEXP.test(absHref)) return; + + if (absHref && !elm.attr('target') && !event.isDefaultPrevented()) { + if ($location.$$parseLinkUrl(absHref, relHref)) { + // We do a preventDefault for all urls that are part of the angular application, + // in html5mode and also without, so that we are able to abort navigation without + // getting double entries in the location history. + event.preventDefault(); + // update location manually + if ($location.absUrl() != $browser.url()) { + $rootScope.$apply(); + // hack to work around FF6 bug 684208 when scenario runner clicks on links + $window.angular['ff-684208-preventDefault'] = true; + } + } + } + }); + + + // rewrite hashbang url <> html5 url + if (trimEmptyHash($location.absUrl()) != trimEmptyHash(initialUrl)) { + $browser.url($location.absUrl(), true); + } + + var initializing = true; + + // update $location when $browser url changes + $browser.onUrlChange(function(newUrl, newState) { + + if (isUndefined(beginsWith(appBaseNoFile, newUrl))) { + // If we are navigating outside of the app then force a reload + $window.location.href = newUrl; + return; + } + + $rootScope.$evalAsync(function() { + var oldUrl = $location.absUrl(); + var oldState = $location.$$state; + var defaultPrevented; + newUrl = trimEmptyHash(newUrl); + $location.$$parse(newUrl); + $location.$$state = newState; + + defaultPrevented = $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl, + newState, oldState).defaultPrevented; + + // if the location was changed by a `$locationChangeStart` handler then stop + // processing this location change + if ($location.absUrl() !== newUrl) return; + + if (defaultPrevented) { + $location.$$parse(oldUrl); + $location.$$state = oldState; + setBrowserUrlWithFallback(oldUrl, false, oldState); + } else { + initializing = false; + afterLocationChange(oldUrl, oldState); + } + }); + if (!$rootScope.$$phase) $rootScope.$digest(); + }); + + // update browser + $rootScope.$watch(function $locationWatch() { + var oldUrl = trimEmptyHash($browser.url()); + var newUrl = trimEmptyHash($location.absUrl()); + var oldState = $browser.state(); + var currentReplace = $location.$$replace; + var urlOrStateChanged = oldUrl !== newUrl || + ($location.$$html5 && $sniffer.history && oldState !== $location.$$state); + + if (initializing || urlOrStateChanged) { + initializing = false; + + $rootScope.$evalAsync(function() { + var newUrl = $location.absUrl(); + var defaultPrevented = $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl, + $location.$$state, oldState).defaultPrevented; + + // if the location was changed by a `$locationChangeStart` handler then stop + // processing this location change + if ($location.absUrl() !== newUrl) return; + + if (defaultPrevented) { + $location.$$parse(oldUrl); + $location.$$state = oldState; + } else { + if (urlOrStateChanged) { + setBrowserUrlWithFallback(newUrl, currentReplace, + oldState === $location.$$state ? null : $location.$$state); + } + afterLocationChange(oldUrl, oldState); + } + }); + } + + $location.$$replace = false; + + // we don't need to return anything because $evalAsync will make the digest loop dirty when + // there is a change + }); + + return $location; + + function afterLocationChange(oldUrl, oldState) { + $rootScope.$broadcast('$locationChangeSuccess', $location.absUrl(), oldUrl, + $location.$$state, oldState); + } +}]; +} + +/** + * @ngdoc service + * @name $log + * @requires $window + * + * @description + * Simple service for logging. Default implementation safely writes the message + * into the browser's console (if present). + * + * The main purpose of this service is to simplify debugging and troubleshooting. + * + * The default is to log `debug` messages. You can use + * {@link ng.$logProvider ng.$logProvider#debugEnabled} to change this. + * + * @example + + + angular.module('logExample', []) + .controller('LogController', ['$scope', '$log', function($scope, $log) { + $scope.$log = $log; + $scope.message = 'Hello World!'; + }]); + + +
    +

    Reload this page with open console, enter text and hit the log button...

    + + + + + + +
    +
    +
    + */ + +/** + * @ngdoc provider + * @name $logProvider + * @description + * Use the `$logProvider` to configure how the application logs messages + */ +function $LogProvider() { + var debug = true, + self = this; + + /** + * @ngdoc method + * @name $logProvider#debugEnabled + * @description + * @param {boolean=} flag enable or disable debug level messages + * @returns {*} current value if used as getter or itself (chaining) if used as setter + */ + this.debugEnabled = function(flag) { + if (isDefined(flag)) { + debug = flag; + return this; + } else { + return debug; + } + }; + + this.$get = ['$window', function($window) { + return { + /** + * @ngdoc method + * @name $log#log + * + * @description + * Write a log message + */ + log: consoleLog('log'), + + /** + * @ngdoc method + * @name $log#info + * + * @description + * Write an information message + */ + info: consoleLog('info'), + + /** + * @ngdoc method + * @name $log#warn + * + * @description + * Write a warning message + */ + warn: consoleLog('warn'), + + /** + * @ngdoc method + * @name $log#error + * + * @description + * Write an error message + */ + error: consoleLog('error'), + + /** + * @ngdoc method + * @name $log#debug + * + * @description + * Write a debug message + */ + debug: (function() { + var fn = consoleLog('debug'); + + return function() { + if (debug) { + fn.apply(self, arguments); + } + }; + }()) + }; + + function formatError(arg) { + if (arg instanceof Error) { + if (arg.stack) { + arg = (arg.message && arg.stack.indexOf(arg.message) === -1) + ? 'Error: ' + arg.message + '\n' + arg.stack + : arg.stack; + } else if (arg.sourceURL) { + arg = arg.message + '\n' + arg.sourceURL + ':' + arg.line; + } + } + return arg; + } + + function consoleLog(type) { + var console = $window.console || {}, + logFn = console[type] || console.log || noop, + hasApply = false; + + // Note: reading logFn.apply throws an error in IE11 in IE8 document mode. + // The reason behind this is that console.log has type "object" in IE8... + try { + hasApply = !!logFn.apply; + } catch (e) {} + + if (hasApply) { + return function() { + var args = []; + forEach(arguments, function(arg) { + args.push(formatError(arg)); + }); + return logFn.apply(console, args); + }; + } + + // we are IE which either doesn't have window.console => this is noop and we do nothing, + // or we are IE where console.log doesn't have apply so we log at least first 2 args + return function(arg1, arg2) { + logFn(arg1, arg2 == null ? '' : arg2); + }; + } + }]; +} + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Any commits to this file should be reviewed with security in mind. * + * Changes to this file can potentially create security vulnerabilities. * + * An approval from 2 Core members with history of modifying * + * this file is required. * + * * + * Does the change somehow allow for arbitrary javascript to be executed? * + * Or allows for someone to change the prototype of built-in objects? * + * Or gives undesired access to variables likes document or window? * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +var $parseMinErr = minErr('$parse'); + +// Sandboxing Angular Expressions +// ------------------------------ +// Angular expressions are generally considered safe because these expressions only have direct +// access to `$scope` and locals. However, one can obtain the ability to execute arbitrary JS code by +// obtaining a reference to native JS functions such as the Function constructor. +// +// As an example, consider the following Angular expression: +// +// {}.toString.constructor('alert("evil JS code")') +// +// This sandboxing technique is not perfect and doesn't aim to be. The goal is to prevent exploits +// against the expression language, but not to prevent exploits that were enabled by exposing +// sensitive JavaScript or browser APIs on Scope. Exposing such objects on a Scope is never a good +// practice and therefore we are not even trying to protect against interaction with an object +// explicitly exposed in this way. +// +// In general, it is not possible to access a Window object from an angular expression unless a +// window or some DOM object that has a reference to window is published onto a Scope. +// Similarly we prevent invocations of function known to be dangerous, as well as assignments to +// native objects. +// +// See https://docs.angularjs.org/guide/security + + +function ensureSafeMemberName(name, fullExpression) { + if (name === "__defineGetter__" || name === "__defineSetter__" + || name === "__lookupGetter__" || name === "__lookupSetter__" + || name === "__proto__") { + throw $parseMinErr('isecfld', + 'Attempting to access a disallowed field in Angular expressions! ' + + 'Expression: {0}', fullExpression); + } + return name; +} + +function getStringValue(name) { + // Property names must be strings. This means that non-string objects cannot be used + // as keys in an object. Any non-string object, including a number, is typecasted + // into a string via the toString method. + // -- MDN, https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Property_accessors#Property_names + // + // So, to ensure that we are checking the same `name` that JavaScript would use, we cast it + // to a string. It's not always possible. If `name` is an object and its `toString` method is + // 'broken' (doesn't return a string, isn't a function, etc.), an error will be thrown: + // + // TypeError: Cannot convert object to primitive value + // + // For performance reasons, we don't catch this error here and allow it to propagate up the call + // stack. Note that you'll get the same error in JavaScript if you try to access a property using + // such a 'broken' object as a key. + return name + ''; +} + +function ensureSafeObject(obj, fullExpression) { + // nifty check if obj is Function that is fast and works across iframes and other contexts + if (obj) { + if (obj.constructor === obj) { + throw $parseMinErr('isecfn', + 'Referencing Function in Angular expressions is disallowed! Expression: {0}', + fullExpression); + } else if (// isWindow(obj) + obj.window === obj) { + throw $parseMinErr('isecwindow', + 'Referencing the Window in Angular expressions is disallowed! Expression: {0}', + fullExpression); + } else if (// isElement(obj) + obj.children && (obj.nodeName || (obj.prop && obj.attr && obj.find))) { + throw $parseMinErr('isecdom', + 'Referencing DOM nodes in Angular expressions is disallowed! Expression: {0}', + fullExpression); + } else if (// block Object so that we can't get hold of dangerous Object.* methods + obj === Object) { + throw $parseMinErr('isecobj', + 'Referencing Object in Angular expressions is disallowed! Expression: {0}', + fullExpression); + } + } + return obj; +} + +var CALL = Function.prototype.call; +var APPLY = Function.prototype.apply; +var BIND = Function.prototype.bind; + +function ensureSafeFunction(obj, fullExpression) { + if (obj) { + if (obj.constructor === obj) { + throw $parseMinErr('isecfn', + 'Referencing Function in Angular expressions is disallowed! Expression: {0}', + fullExpression); + } else if (obj === CALL || obj === APPLY || obj === BIND) { + throw $parseMinErr('isecff', + 'Referencing call, apply or bind in Angular expressions is disallowed! Expression: {0}', + fullExpression); + } + } +} + +function ensureSafeAssignContext(obj, fullExpression) { + if (obj) { + if (obj === (0).constructor || obj === (false).constructor || obj === ''.constructor || + obj === {}.constructor || obj === [].constructor || obj === Function.constructor) { + throw $parseMinErr('isecaf', + 'Assigning to a constructor is disallowed! Expression: {0}', fullExpression); + } + } +} + +var OPERATORS = createMap(); +forEach('+ - * / % === !== == != < > <= >= && || ! = |'.split(' '), function(operator) { OPERATORS[operator] = true; }); +var ESCAPE = {"n":"\n", "f":"\f", "r":"\r", "t":"\t", "v":"\v", "'":"'", '"':'"'}; + + +///////////////////////////////////////// + + +/** + * @constructor + */ +var Lexer = function(options) { + this.options = options; +}; + +Lexer.prototype = { + constructor: Lexer, + + lex: function(text) { + this.text = text; + this.index = 0; + this.tokens = []; + + while (this.index < this.text.length) { + var ch = this.text.charAt(this.index); + if (ch === '"' || ch === "'") { + this.readString(ch); + } else if (this.isNumber(ch) || ch === '.' && this.isNumber(this.peek())) { + this.readNumber(); + } else if (this.isIdent(ch)) { + this.readIdent(); + } else if (this.is(ch, '(){}[].,;:?')) { + this.tokens.push({index: this.index, text: ch}); + this.index++; + } else if (this.isWhitespace(ch)) { + this.index++; + } else { + var ch2 = ch + this.peek(); + var ch3 = ch2 + this.peek(2); + var op1 = OPERATORS[ch]; + var op2 = OPERATORS[ch2]; + var op3 = OPERATORS[ch3]; + if (op1 || op2 || op3) { + var token = op3 ? ch3 : (op2 ? ch2 : ch); + this.tokens.push({index: this.index, text: token, operator: true}); + this.index += token.length; + } else { + this.throwError('Unexpected next character ', this.index, this.index + 1); + } + } + } + return this.tokens; + }, + + is: function(ch, chars) { + return chars.indexOf(ch) !== -1; + }, + + peek: function(i) { + var num = i || 1; + return (this.index + num < this.text.length) ? this.text.charAt(this.index + num) : false; + }, + + isNumber: function(ch) { + return ('0' <= ch && ch <= '9') && typeof ch === "string"; + }, + + isWhitespace: function(ch) { + // IE treats non-breaking space as \u00A0 + return (ch === ' ' || ch === '\r' || ch === '\t' || + ch === '\n' || ch === '\v' || ch === '\u00A0'); + }, + + isIdent: function(ch) { + return ('a' <= ch && ch <= 'z' || + 'A' <= ch && ch <= 'Z' || + '_' === ch || ch === '$'); + }, + + isExpOperator: function(ch) { + return (ch === '-' || ch === '+' || this.isNumber(ch)); + }, + + throwError: function(error, start, end) { + end = end || this.index; + var colStr = (isDefined(start) + ? 's ' + start + '-' + this.index + ' [' + this.text.substring(start, end) + ']' + : ' ' + end); + throw $parseMinErr('lexerr', 'Lexer Error: {0} at column{1} in expression [{2}].', + error, colStr, this.text); + }, + + readNumber: function() { + var number = ''; + var start = this.index; + while (this.index < this.text.length) { + var ch = lowercase(this.text.charAt(this.index)); + if (ch == '.' || this.isNumber(ch)) { + number += ch; + } else { + var peekCh = this.peek(); + if (ch == 'e' && this.isExpOperator(peekCh)) { + number += ch; + } else if (this.isExpOperator(ch) && + peekCh && this.isNumber(peekCh) && + number.charAt(number.length - 1) == 'e') { + number += ch; + } else if (this.isExpOperator(ch) && + (!peekCh || !this.isNumber(peekCh)) && + number.charAt(number.length - 1) == 'e') { + this.throwError('Invalid exponent'); + } else { + break; + } + } + this.index++; + } + this.tokens.push({ + index: start, + text: number, + constant: true, + value: Number(number) + }); + }, + + readIdent: function() { + var start = this.index; + while (this.index < this.text.length) { + var ch = this.text.charAt(this.index); + if (!(this.isIdent(ch) || this.isNumber(ch))) { + break; + } + this.index++; + } + this.tokens.push({ + index: start, + text: this.text.slice(start, this.index), + identifier: true + }); + }, + + readString: function(quote) { + var start = this.index; + this.index++; + var string = ''; + var rawString = quote; + var escape = false; + while (this.index < this.text.length) { + var ch = this.text.charAt(this.index); + rawString += ch; + if (escape) { + if (ch === 'u') { + var hex = this.text.substring(this.index + 1, this.index + 5); + if (!hex.match(/[\da-f]{4}/i)) { + this.throwError('Invalid unicode escape [\\u' + hex + ']'); + } + this.index += 4; + string += String.fromCharCode(parseInt(hex, 16)); + } else { + var rep = ESCAPE[ch]; + string = string + (rep || ch); + } + escape = false; + } else if (ch === '\\') { + escape = true; + } else if (ch === quote) { + this.index++; + this.tokens.push({ + index: start, + text: rawString, + constant: true, + value: string + }); + return; + } else { + string += ch; + } + this.index++; + } + this.throwError('Unterminated quote', start); + } +}; + +var AST = function(lexer, options) { + this.lexer = lexer; + this.options = options; +}; + +AST.Program = 'Program'; +AST.ExpressionStatement = 'ExpressionStatement'; +AST.AssignmentExpression = 'AssignmentExpression'; +AST.ConditionalExpression = 'ConditionalExpression'; +AST.LogicalExpression = 'LogicalExpression'; +AST.BinaryExpression = 'BinaryExpression'; +AST.UnaryExpression = 'UnaryExpression'; +AST.CallExpression = 'CallExpression'; +AST.MemberExpression = 'MemberExpression'; +AST.Identifier = 'Identifier'; +AST.Literal = 'Literal'; +AST.ArrayExpression = 'ArrayExpression'; +AST.Property = 'Property'; +AST.ObjectExpression = 'ObjectExpression'; +AST.ThisExpression = 'ThisExpression'; +AST.LocalsExpression = 'LocalsExpression'; + +// Internal use only +AST.NGValueParameter = 'NGValueParameter'; + +AST.prototype = { + ast: function(text) { + this.text = text; + this.tokens = this.lexer.lex(text); + + var value = this.program(); + + if (this.tokens.length !== 0) { + this.throwError('is an unexpected token', this.tokens[0]); + } + + return value; + }, + + program: function() { + var body = []; + while (true) { + if (this.tokens.length > 0 && !this.peek('}', ')', ';', ']')) + body.push(this.expressionStatement()); + if (!this.expect(';')) { + return { type: AST.Program, body: body}; + } + } + }, + + expressionStatement: function() { + return { type: AST.ExpressionStatement, expression: this.filterChain() }; + }, + + filterChain: function() { + var left = this.expression(); + var token; + while ((token = this.expect('|'))) { + left = this.filter(left); + } + return left; + }, + + expression: function() { + return this.assignment(); + }, + + assignment: function() { + var result = this.ternary(); + if (this.expect('=')) { + result = { type: AST.AssignmentExpression, left: result, right: this.assignment(), operator: '='}; + } + return result; + }, + + ternary: function() { + var test = this.logicalOR(); + var alternate; + var consequent; + if (this.expect('?')) { + alternate = this.expression(); + if (this.consume(':')) { + consequent = this.expression(); + return { type: AST.ConditionalExpression, test: test, alternate: alternate, consequent: consequent}; + } + } + return test; + }, + + logicalOR: function() { + var left = this.logicalAND(); + while (this.expect('||')) { + left = { type: AST.LogicalExpression, operator: '||', left: left, right: this.logicalAND() }; + } + return left; + }, + + logicalAND: function() { + var left = this.equality(); + while (this.expect('&&')) { + left = { type: AST.LogicalExpression, operator: '&&', left: left, right: this.equality()}; + } + return left; + }, + + equality: function() { + var left = this.relational(); + var token; + while ((token = this.expect('==','!=','===','!=='))) { + left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.relational() }; + } + return left; + }, + + relational: function() { + var left = this.additive(); + var token; + while ((token = this.expect('<', '>', '<=', '>='))) { + left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.additive() }; + } + return left; + }, + + additive: function() { + var left = this.multiplicative(); + var token; + while ((token = this.expect('+','-'))) { + left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.multiplicative() }; + } + return left; + }, + + multiplicative: function() { + var left = this.unary(); + var token; + while ((token = this.expect('*','/','%'))) { + left = { type: AST.BinaryExpression, operator: token.text, left: left, right: this.unary() }; + } + return left; + }, + + unary: function() { + var token; + if ((token = this.expect('+', '-', '!'))) { + return { type: AST.UnaryExpression, operator: token.text, prefix: true, argument: this.unary() }; + } else { + return this.primary(); + } + }, + + primary: function() { + var primary; + if (this.expect('(')) { + primary = this.filterChain(); + this.consume(')'); + } else if (this.expect('[')) { + primary = this.arrayDeclaration(); + } else if (this.expect('{')) { + primary = this.object(); + } else if (this.selfReferential.hasOwnProperty(this.peek().text)) { + primary = copy(this.selfReferential[this.consume().text]); + } else if (this.options.literals.hasOwnProperty(this.peek().text)) { + primary = { type: AST.Literal, value: this.options.literals[this.consume().text]}; + } else if (this.peek().identifier) { + primary = this.identifier(); + } else if (this.peek().constant) { + primary = this.constant(); + } else { + this.throwError('not a primary expression', this.peek()); + } + + var next; + while ((next = this.expect('(', '[', '.'))) { + if (next.text === '(') { + primary = {type: AST.CallExpression, callee: primary, arguments: this.parseArguments() }; + this.consume(')'); + } else if (next.text === '[') { + primary = { type: AST.MemberExpression, object: primary, property: this.expression(), computed: true }; + this.consume(']'); + } else if (next.text === '.') { + primary = { type: AST.MemberExpression, object: primary, property: this.identifier(), computed: false }; + } else { + this.throwError('IMPOSSIBLE'); + } + } + return primary; + }, + + filter: function(baseExpression) { + var args = [baseExpression]; + var result = {type: AST.CallExpression, callee: this.identifier(), arguments: args, filter: true}; + + while (this.expect(':')) { + args.push(this.expression()); + } + + return result; + }, + + parseArguments: function() { + var args = []; + if (this.peekToken().text !== ')') { + do { + args.push(this.expression()); + } while (this.expect(',')); + } + return args; + }, + + identifier: function() { + var token = this.consume(); + if (!token.identifier) { + this.throwError('is not a valid identifier', token); + } + return { type: AST.Identifier, name: token.text }; + }, + + constant: function() { + // TODO check that it is a constant + return { type: AST.Literal, value: this.consume().value }; + }, + + arrayDeclaration: function() { + var elements = []; + if (this.peekToken().text !== ']') { + do { + if (this.peek(']')) { + // Support trailing commas per ES5.1. + break; + } + elements.push(this.expression()); + } while (this.expect(',')); + } + this.consume(']'); + + return { type: AST.ArrayExpression, elements: elements }; + }, + + object: function() { + var properties = [], property; + if (this.peekToken().text !== '}') { + do { + if (this.peek('}')) { + // Support trailing commas per ES5.1. + break; + } + property = {type: AST.Property, kind: 'init'}; + if (this.peek().constant) { + property.key = this.constant(); + } else if (this.peek().identifier) { + property.key = this.identifier(); + } else { + this.throwError("invalid key", this.peek()); + } + this.consume(':'); + property.value = this.expression(); + properties.push(property); + } while (this.expect(',')); + } + this.consume('}'); + + return {type: AST.ObjectExpression, properties: properties }; + }, + + throwError: function(msg, token) { + throw $parseMinErr('syntax', + 'Syntax Error: Token \'{0}\' {1} at column {2} of the expression [{3}] starting at [{4}].', + token.text, msg, (token.index + 1), this.text, this.text.substring(token.index)); + }, + + consume: function(e1) { + if (this.tokens.length === 0) { + throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text); + } + + var token = this.expect(e1); + if (!token) { + this.throwError('is unexpected, expecting [' + e1 + ']', this.peek()); + } + return token; + }, + + peekToken: function() { + if (this.tokens.length === 0) { + throw $parseMinErr('ueoe', 'Unexpected end of expression: {0}', this.text); + } + return this.tokens[0]; + }, + + peek: function(e1, e2, e3, e4) { + return this.peekAhead(0, e1, e2, e3, e4); + }, + + peekAhead: function(i, e1, e2, e3, e4) { + if (this.tokens.length > i) { + var token = this.tokens[i]; + var t = token.text; + if (t === e1 || t === e2 || t === e3 || t === e4 || + (!e1 && !e2 && !e3 && !e4)) { + return token; + } + } + return false; + }, + + expect: function(e1, e2, e3, e4) { + var token = this.peek(e1, e2, e3, e4); + if (token) { + this.tokens.shift(); + return token; + } + return false; + }, + + selfReferential: { + 'this': {type: AST.ThisExpression }, + '$locals': {type: AST.LocalsExpression } + } +}; + +function ifDefined(v, d) { + return typeof v !== 'undefined' ? v : d; +} + +function plusFn(l, r) { + if (typeof l === 'undefined') return r; + if (typeof r === 'undefined') return l; + return l + r; +} + +function isStateless($filter, filterName) { + var fn = $filter(filterName); + return !fn.$stateful; +} + +function findConstantAndWatchExpressions(ast, $filter) { + var allConstants; + var argsToWatch; + switch (ast.type) { + case AST.Program: + allConstants = true; + forEach(ast.body, function(expr) { + findConstantAndWatchExpressions(expr.expression, $filter); + allConstants = allConstants && expr.expression.constant; + }); + ast.constant = allConstants; + break; + case AST.Literal: + ast.constant = true; + ast.toWatch = []; + break; + case AST.UnaryExpression: + findConstantAndWatchExpressions(ast.argument, $filter); + ast.constant = ast.argument.constant; + ast.toWatch = ast.argument.toWatch; + break; + case AST.BinaryExpression: + findConstantAndWatchExpressions(ast.left, $filter); + findConstantAndWatchExpressions(ast.right, $filter); + ast.constant = ast.left.constant && ast.right.constant; + ast.toWatch = ast.left.toWatch.concat(ast.right.toWatch); + break; + case AST.LogicalExpression: + findConstantAndWatchExpressions(ast.left, $filter); + findConstantAndWatchExpressions(ast.right, $filter); + ast.constant = ast.left.constant && ast.right.constant; + ast.toWatch = ast.constant ? [] : [ast]; + break; + case AST.ConditionalExpression: + findConstantAndWatchExpressions(ast.test, $filter); + findConstantAndWatchExpressions(ast.alternate, $filter); + findConstantAndWatchExpressions(ast.consequent, $filter); + ast.constant = ast.test.constant && ast.alternate.constant && ast.consequent.constant; + ast.toWatch = ast.constant ? [] : [ast]; + break; + case AST.Identifier: + ast.constant = false; + ast.toWatch = [ast]; + break; + case AST.MemberExpression: + findConstantAndWatchExpressions(ast.object, $filter); + if (ast.computed) { + findConstantAndWatchExpressions(ast.property, $filter); + } + ast.constant = ast.object.constant && (!ast.computed || ast.property.constant); + ast.toWatch = [ast]; + break; + case AST.CallExpression: + allConstants = ast.filter ? isStateless($filter, ast.callee.name) : false; + argsToWatch = []; + forEach(ast.arguments, function(expr) { + findConstantAndWatchExpressions(expr, $filter); + allConstants = allConstants && expr.constant; + if (!expr.constant) { + argsToWatch.push.apply(argsToWatch, expr.toWatch); + } + }); + ast.constant = allConstants; + ast.toWatch = ast.filter && isStateless($filter, ast.callee.name) ? argsToWatch : [ast]; + break; + case AST.AssignmentExpression: + findConstantAndWatchExpressions(ast.left, $filter); + findConstantAndWatchExpressions(ast.right, $filter); + ast.constant = ast.left.constant && ast.right.constant; + ast.toWatch = [ast]; + break; + case AST.ArrayExpression: + allConstants = true; + argsToWatch = []; + forEach(ast.elements, function(expr) { + findConstantAndWatchExpressions(expr, $filter); + allConstants = allConstants && expr.constant; + if (!expr.constant) { + argsToWatch.push.apply(argsToWatch, expr.toWatch); + } + }); + ast.constant = allConstants; + ast.toWatch = argsToWatch; + break; + case AST.ObjectExpression: + allConstants = true; + argsToWatch = []; + forEach(ast.properties, function(property) { + findConstantAndWatchExpressions(property.value, $filter); + allConstants = allConstants && property.value.constant; + if (!property.value.constant) { + argsToWatch.push.apply(argsToWatch, property.value.toWatch); + } + }); + ast.constant = allConstants; + ast.toWatch = argsToWatch; + break; + case AST.ThisExpression: + ast.constant = false; + ast.toWatch = []; + break; + case AST.LocalsExpression: + ast.constant = false; + ast.toWatch = []; + break; + } +} + +function getInputs(body) { + if (body.length != 1) return; + var lastExpression = body[0].expression; + var candidate = lastExpression.toWatch; + if (candidate.length !== 1) return candidate; + return candidate[0] !== lastExpression ? candidate : undefined; +} + +function isAssignable(ast) { + return ast.type === AST.Identifier || ast.type === AST.MemberExpression; +} + +function assignableAST(ast) { + if (ast.body.length === 1 && isAssignable(ast.body[0].expression)) { + return {type: AST.AssignmentExpression, left: ast.body[0].expression, right: {type: AST.NGValueParameter}, operator: '='}; + } +} + +function isLiteral(ast) { + return ast.body.length === 0 || + ast.body.length === 1 && ( + ast.body[0].expression.type === AST.Literal || + ast.body[0].expression.type === AST.ArrayExpression || + ast.body[0].expression.type === AST.ObjectExpression); +} + +function isConstant(ast) { + return ast.constant; +} + +function ASTCompiler(astBuilder, $filter) { + this.astBuilder = astBuilder; + this.$filter = $filter; +} + +ASTCompiler.prototype = { + compile: function(expression, expensiveChecks) { + var self = this; + var ast = this.astBuilder.ast(expression); + this.state = { + nextId: 0, + filters: {}, + expensiveChecks: expensiveChecks, + fn: {vars: [], body: [], own: {}}, + assign: {vars: [], body: [], own: {}}, + inputs: [] + }; + findConstantAndWatchExpressions(ast, self.$filter); + var extra = ''; + var assignable; + this.stage = 'assign'; + if ((assignable = assignableAST(ast))) { + this.state.computing = 'assign'; + var result = this.nextId(); + this.recurse(assignable, result); + this.return_(result); + extra = 'fn.assign=' + this.generateFunction('assign', 's,v,l'); + } + var toWatch = getInputs(ast.body); + self.stage = 'inputs'; + forEach(toWatch, function(watch, key) { + var fnKey = 'fn' + key; + self.state[fnKey] = {vars: [], body: [], own: {}}; + self.state.computing = fnKey; + var intoId = self.nextId(); + self.recurse(watch, intoId); + self.return_(intoId); + self.state.inputs.push(fnKey); + watch.watchId = key; + }); + this.state.computing = 'fn'; + this.stage = 'main'; + this.recurse(ast); + var fnString = + // The build and minification steps remove the string "use strict" from the code, but this is done using a regex. + // This is a workaround for this until we do a better job at only removing the prefix only when we should. + '"' + this.USE + ' ' + this.STRICT + '";\n' + + this.filterPrefix() + + 'var fn=' + this.generateFunction('fn', 's,l,a,i') + + extra + + this.watchFns() + + 'return fn;'; + + /* jshint -W054 */ + var fn = (new Function('$filter', + 'ensureSafeMemberName', + 'ensureSafeObject', + 'ensureSafeFunction', + 'getStringValue', + 'ensureSafeAssignContext', + 'ifDefined', + 'plus', + 'text', + fnString))( + this.$filter, + ensureSafeMemberName, + ensureSafeObject, + ensureSafeFunction, + getStringValue, + ensureSafeAssignContext, + ifDefined, + plusFn, + expression); + /* jshint +W054 */ + this.state = this.stage = undefined; + fn.literal = isLiteral(ast); + fn.constant = isConstant(ast); + return fn; + }, + + USE: 'use', + + STRICT: 'strict', + + watchFns: function() { + var result = []; + var fns = this.state.inputs; + var self = this; + forEach(fns, function(name) { + result.push('var ' + name + '=' + self.generateFunction(name, 's')); + }); + if (fns.length) { + result.push('fn.inputs=[' + fns.join(',') + '];'); + } + return result.join(''); + }, + + generateFunction: function(name, params) { + return 'function(' + params + '){' + + this.varsPrefix(name) + + this.body(name) + + '};'; + }, + + filterPrefix: function() { + var parts = []; + var self = this; + forEach(this.state.filters, function(id, filter) { + parts.push(id + '=$filter(' + self.escape(filter) + ')'); + }); + if (parts.length) return 'var ' + parts.join(',') + ';'; + return ''; + }, + + varsPrefix: function(section) { + return this.state[section].vars.length ? 'var ' + this.state[section].vars.join(',') + ';' : ''; + }, + + body: function(section) { + return this.state[section].body.join(''); + }, + + recurse: function(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck) { + var left, right, self = this, args, expression; + recursionFn = recursionFn || noop; + if (!skipWatchIdCheck && isDefined(ast.watchId)) { + intoId = intoId || this.nextId(); + this.if_('i', + this.lazyAssign(intoId, this.computedMember('i', ast.watchId)), + this.lazyRecurse(ast, intoId, nameId, recursionFn, create, true) + ); + return; + } + switch (ast.type) { + case AST.Program: + forEach(ast.body, function(expression, pos) { + self.recurse(expression.expression, undefined, undefined, function(expr) { right = expr; }); + if (pos !== ast.body.length - 1) { + self.current().body.push(right, ';'); + } else { + self.return_(right); + } + }); + break; + case AST.Literal: + expression = this.escape(ast.value); + this.assign(intoId, expression); + recursionFn(expression); + break; + case AST.UnaryExpression: + this.recurse(ast.argument, undefined, undefined, function(expr) { right = expr; }); + expression = ast.operator + '(' + this.ifDefined(right, 0) + ')'; + this.assign(intoId, expression); + recursionFn(expression); + break; + case AST.BinaryExpression: + this.recurse(ast.left, undefined, undefined, function(expr) { left = expr; }); + this.recurse(ast.right, undefined, undefined, function(expr) { right = expr; }); + if (ast.operator === '+') { + expression = this.plus(left, right); + } else if (ast.operator === '-') { + expression = this.ifDefined(left, 0) + ast.operator + this.ifDefined(right, 0); + } else { + expression = '(' + left + ')' + ast.operator + '(' + right + ')'; + } + this.assign(intoId, expression); + recursionFn(expression); + break; + case AST.LogicalExpression: + intoId = intoId || this.nextId(); + self.recurse(ast.left, intoId); + self.if_(ast.operator === '&&' ? intoId : self.not(intoId), self.lazyRecurse(ast.right, intoId)); + recursionFn(intoId); + break; + case AST.ConditionalExpression: + intoId = intoId || this.nextId(); + self.recurse(ast.test, intoId); + self.if_(intoId, self.lazyRecurse(ast.alternate, intoId), self.lazyRecurse(ast.consequent, intoId)); + recursionFn(intoId); + break; + case AST.Identifier: + intoId = intoId || this.nextId(); + if (nameId) { + nameId.context = self.stage === 'inputs' ? 's' : this.assign(this.nextId(), this.getHasOwnProperty('l', ast.name) + '?l:s'); + nameId.computed = false; + nameId.name = ast.name; + } + ensureSafeMemberName(ast.name); + self.if_(self.stage === 'inputs' || self.not(self.getHasOwnProperty('l', ast.name)), + function() { + self.if_(self.stage === 'inputs' || 's', function() { + if (create && create !== 1) { + self.if_( + self.not(self.nonComputedMember('s', ast.name)), + self.lazyAssign(self.nonComputedMember('s', ast.name), '{}')); + } + self.assign(intoId, self.nonComputedMember('s', ast.name)); + }); + }, intoId && self.lazyAssign(intoId, self.nonComputedMember('l', ast.name)) + ); + if (self.state.expensiveChecks || isPossiblyDangerousMemberName(ast.name)) { + self.addEnsureSafeObject(intoId); + } + recursionFn(intoId); + break; + case AST.MemberExpression: + left = nameId && (nameId.context = this.nextId()) || this.nextId(); + intoId = intoId || this.nextId(); + self.recurse(ast.object, left, undefined, function() { + self.if_(self.notNull(left), function() { + if (create && create !== 1) { + self.addEnsureSafeAssignContext(left); + } + if (ast.computed) { + right = self.nextId(); + self.recurse(ast.property, right); + self.getStringValue(right); + self.addEnsureSafeMemberName(right); + if (create && create !== 1) { + self.if_(self.not(self.computedMember(left, right)), self.lazyAssign(self.computedMember(left, right), '{}')); + } + expression = self.ensureSafeObject(self.computedMember(left, right)); + self.assign(intoId, expression); + if (nameId) { + nameId.computed = true; + nameId.name = right; + } + } else { + ensureSafeMemberName(ast.property.name); + if (create && create !== 1) { + self.if_(self.not(self.nonComputedMember(left, ast.property.name)), self.lazyAssign(self.nonComputedMember(left, ast.property.name), '{}')); + } + expression = self.nonComputedMember(left, ast.property.name); + if (self.state.expensiveChecks || isPossiblyDangerousMemberName(ast.property.name)) { + expression = self.ensureSafeObject(expression); + } + self.assign(intoId, expression); + if (nameId) { + nameId.computed = false; + nameId.name = ast.property.name; + } + } + }, function() { + self.assign(intoId, 'undefined'); + }); + recursionFn(intoId); + }, !!create); + break; + case AST.CallExpression: + intoId = intoId || this.nextId(); + if (ast.filter) { + right = self.filter(ast.callee.name); + args = []; + forEach(ast.arguments, function(expr) { + var argument = self.nextId(); + self.recurse(expr, argument); + args.push(argument); + }); + expression = right + '(' + args.join(',') + ')'; + self.assign(intoId, expression); + recursionFn(intoId); + } else { + right = self.nextId(); + left = {}; + args = []; + self.recurse(ast.callee, right, left, function() { + self.if_(self.notNull(right), function() { + self.addEnsureSafeFunction(right); + forEach(ast.arguments, function(expr) { + self.recurse(expr, self.nextId(), undefined, function(argument) { + args.push(self.ensureSafeObject(argument)); + }); + }); + if (left.name) { + if (!self.state.expensiveChecks) { + self.addEnsureSafeObject(left.context); + } + expression = self.member(left.context, left.name, left.computed) + '(' + args.join(',') + ')'; + } else { + expression = right + '(' + args.join(',') + ')'; + } + expression = self.ensureSafeObject(expression); + self.assign(intoId, expression); + }, function() { + self.assign(intoId, 'undefined'); + }); + recursionFn(intoId); + }); + } + break; + case AST.AssignmentExpression: + right = this.nextId(); + left = {}; + if (!isAssignable(ast.left)) { + throw $parseMinErr('lval', 'Trying to assign a value to a non l-value'); + } + this.recurse(ast.left, undefined, left, function() { + self.if_(self.notNull(left.context), function() { + self.recurse(ast.right, right); + self.addEnsureSafeObject(self.member(left.context, left.name, left.computed)); + self.addEnsureSafeAssignContext(left.context); + expression = self.member(left.context, left.name, left.computed) + ast.operator + right; + self.assign(intoId, expression); + recursionFn(intoId || expression); + }); + }, 1); + break; + case AST.ArrayExpression: + args = []; + forEach(ast.elements, function(expr) { + self.recurse(expr, self.nextId(), undefined, function(argument) { + args.push(argument); + }); + }); + expression = '[' + args.join(',') + ']'; + this.assign(intoId, expression); + recursionFn(expression); + break; + case AST.ObjectExpression: + args = []; + forEach(ast.properties, function(property) { + self.recurse(property.value, self.nextId(), undefined, function(expr) { + args.push(self.escape( + property.key.type === AST.Identifier ? property.key.name : + ('' + property.key.value)) + + ':' + expr); + }); + }); + expression = '{' + args.join(',') + '}'; + this.assign(intoId, expression); + recursionFn(expression); + break; + case AST.ThisExpression: + this.assign(intoId, 's'); + recursionFn('s'); + break; + case AST.LocalsExpression: + this.assign(intoId, 'l'); + recursionFn('l'); + break; + case AST.NGValueParameter: + this.assign(intoId, 'v'); + recursionFn('v'); + break; + } + }, + + getHasOwnProperty: function(element, property) { + var key = element + '.' + property; + var own = this.current().own; + if (!own.hasOwnProperty(key)) { + own[key] = this.nextId(false, element + '&&(' + this.escape(property) + ' in ' + element + ')'); + } + return own[key]; + }, + + assign: function(id, value) { + if (!id) return; + this.current().body.push(id, '=', value, ';'); + return id; + }, + + filter: function(filterName) { + if (!this.state.filters.hasOwnProperty(filterName)) { + this.state.filters[filterName] = this.nextId(true); + } + return this.state.filters[filterName]; + }, + + ifDefined: function(id, defaultValue) { + return 'ifDefined(' + id + ',' + this.escape(defaultValue) + ')'; + }, + + plus: function(left, right) { + return 'plus(' + left + ',' + right + ')'; + }, + + return_: function(id) { + this.current().body.push('return ', id, ';'); + }, + + if_: function(test, alternate, consequent) { + if (test === true) { + alternate(); + } else { + var body = this.current().body; + body.push('if(', test, '){'); + alternate(); + body.push('}'); + if (consequent) { + body.push('else{'); + consequent(); + body.push('}'); + } + } + }, + + not: function(expression) { + return '!(' + expression + ')'; + }, + + notNull: function(expression) { + return expression + '!=null'; + }, + + nonComputedMember: function(left, right) { + return left + '.' + right; + }, + + computedMember: function(left, right) { + return left + '[' + right + ']'; + }, + + member: function(left, right, computed) { + if (computed) return this.computedMember(left, right); + return this.nonComputedMember(left, right); + }, + + addEnsureSafeObject: function(item) { + this.current().body.push(this.ensureSafeObject(item), ';'); + }, + + addEnsureSafeMemberName: function(item) { + this.current().body.push(this.ensureSafeMemberName(item), ';'); + }, + + addEnsureSafeFunction: function(item) { + this.current().body.push(this.ensureSafeFunction(item), ';'); + }, + + addEnsureSafeAssignContext: function(item) { + this.current().body.push(this.ensureSafeAssignContext(item), ';'); + }, + + ensureSafeObject: function(item) { + return 'ensureSafeObject(' + item + ',text)'; + }, + + ensureSafeMemberName: function(item) { + return 'ensureSafeMemberName(' + item + ',text)'; + }, + + ensureSafeFunction: function(item) { + return 'ensureSafeFunction(' + item + ',text)'; + }, + + getStringValue: function(item) { + this.assign(item, 'getStringValue(' + item + ')'); + }, + + ensureSafeAssignContext: function(item) { + return 'ensureSafeAssignContext(' + item + ',text)'; + }, + + lazyRecurse: function(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck) { + var self = this; + return function() { + self.recurse(ast, intoId, nameId, recursionFn, create, skipWatchIdCheck); + }; + }, + + lazyAssign: function(id, value) { + var self = this; + return function() { + self.assign(id, value); + }; + }, + + stringEscapeRegex: /[^ a-zA-Z0-9]/g, + + stringEscapeFn: function(c) { + return '\\u' + ('0000' + c.charCodeAt(0).toString(16)).slice(-4); + }, + + escape: function(value) { + if (isString(value)) return "'" + value.replace(this.stringEscapeRegex, this.stringEscapeFn) + "'"; + if (isNumber(value)) return value.toString(); + if (value === true) return 'true'; + if (value === false) return 'false'; + if (value === null) return 'null'; + if (typeof value === 'undefined') return 'undefined'; + + throw $parseMinErr('esc', 'IMPOSSIBLE'); + }, + + nextId: function(skip, init) { + var id = 'v' + (this.state.nextId++); + if (!skip) { + this.current().vars.push(id + (init ? '=' + init : '')); + } + return id; + }, + + current: function() { + return this.state[this.state.computing]; + } +}; + + +function ASTInterpreter(astBuilder, $filter) { + this.astBuilder = astBuilder; + this.$filter = $filter; +} + +ASTInterpreter.prototype = { + compile: function(expression, expensiveChecks) { + var self = this; + var ast = this.astBuilder.ast(expression); + this.expression = expression; + this.expensiveChecks = expensiveChecks; + findConstantAndWatchExpressions(ast, self.$filter); + var assignable; + var assign; + if ((assignable = assignableAST(ast))) { + assign = this.recurse(assignable); + } + var toWatch = getInputs(ast.body); + var inputs; + if (toWatch) { + inputs = []; + forEach(toWatch, function(watch, key) { + var input = self.recurse(watch); + watch.input = input; + inputs.push(input); + watch.watchId = key; + }); + } + var expressions = []; + forEach(ast.body, function(expression) { + expressions.push(self.recurse(expression.expression)); + }); + var fn = ast.body.length === 0 ? noop : + ast.body.length === 1 ? expressions[0] : + function(scope, locals) { + var lastValue; + forEach(expressions, function(exp) { + lastValue = exp(scope, locals); + }); + return lastValue; + }; + if (assign) { + fn.assign = function(scope, value, locals) { + return assign(scope, locals, value); + }; + } + if (inputs) { + fn.inputs = inputs; + } + fn.literal = isLiteral(ast); + fn.constant = isConstant(ast); + return fn; + }, + + recurse: function(ast, context, create) { + var left, right, self = this, args, expression; + if (ast.input) { + return this.inputs(ast.input, ast.watchId); + } + switch (ast.type) { + case AST.Literal: + return this.value(ast.value, context); + case AST.UnaryExpression: + right = this.recurse(ast.argument); + return this['unary' + ast.operator](right, context); + case AST.BinaryExpression: + left = this.recurse(ast.left); + right = this.recurse(ast.right); + return this['binary' + ast.operator](left, right, context); + case AST.LogicalExpression: + left = this.recurse(ast.left); + right = this.recurse(ast.right); + return this['binary' + ast.operator](left, right, context); + case AST.ConditionalExpression: + return this['ternary?:']( + this.recurse(ast.test), + this.recurse(ast.alternate), + this.recurse(ast.consequent), + context + ); + case AST.Identifier: + ensureSafeMemberName(ast.name, self.expression); + return self.identifier(ast.name, + self.expensiveChecks || isPossiblyDangerousMemberName(ast.name), + context, create, self.expression); + case AST.MemberExpression: + left = this.recurse(ast.object, false, !!create); + if (!ast.computed) { + ensureSafeMemberName(ast.property.name, self.expression); + right = ast.property.name; + } + if (ast.computed) right = this.recurse(ast.property); + return ast.computed ? + this.computedMember(left, right, context, create, self.expression) : + this.nonComputedMember(left, right, self.expensiveChecks, context, create, self.expression); + case AST.CallExpression: + args = []; + forEach(ast.arguments, function(expr) { + args.push(self.recurse(expr)); + }); + if (ast.filter) right = this.$filter(ast.callee.name); + if (!ast.filter) right = this.recurse(ast.callee, true); + return ast.filter ? + function(scope, locals, assign, inputs) { + var values = []; + for (var i = 0; i < args.length; ++i) { + values.push(args[i](scope, locals, assign, inputs)); + } + var value = right.apply(undefined, values, inputs); + return context ? {context: undefined, name: undefined, value: value} : value; + } : + function(scope, locals, assign, inputs) { + var rhs = right(scope, locals, assign, inputs); + var value; + if (rhs.value != null) { + ensureSafeObject(rhs.context, self.expression); + ensureSafeFunction(rhs.value, self.expression); + var values = []; + for (var i = 0; i < args.length; ++i) { + values.push(ensureSafeObject(args[i](scope, locals, assign, inputs), self.expression)); + } + value = ensureSafeObject(rhs.value.apply(rhs.context, values), self.expression); + } + return context ? {value: value} : value; + }; + case AST.AssignmentExpression: + left = this.recurse(ast.left, true, 1); + right = this.recurse(ast.right); + return function(scope, locals, assign, inputs) { + var lhs = left(scope, locals, assign, inputs); + var rhs = right(scope, locals, assign, inputs); + ensureSafeObject(lhs.value, self.expression); + ensureSafeAssignContext(lhs.context); + lhs.context[lhs.name] = rhs; + return context ? {value: rhs} : rhs; + }; + case AST.ArrayExpression: + args = []; + forEach(ast.elements, function(expr) { + args.push(self.recurse(expr)); + }); + return function(scope, locals, assign, inputs) { + var value = []; + for (var i = 0; i < args.length; ++i) { + value.push(args[i](scope, locals, assign, inputs)); + } + return context ? {value: value} : value; + }; + case AST.ObjectExpression: + args = []; + forEach(ast.properties, function(property) { + args.push({key: property.key.type === AST.Identifier ? + property.key.name : + ('' + property.key.value), + value: self.recurse(property.value) + }); + }); + return function(scope, locals, assign, inputs) { + var value = {}; + for (var i = 0; i < args.length; ++i) { + value[args[i].key] = args[i].value(scope, locals, assign, inputs); + } + return context ? {value: value} : value; + }; + case AST.ThisExpression: + return function(scope) { + return context ? {value: scope} : scope; + }; + case AST.LocalsExpression: + return function(scope, locals) { + return context ? {value: locals} : locals; + }; + case AST.NGValueParameter: + return function(scope, locals, assign) { + return context ? {value: assign} : assign; + }; + } + }, + + 'unary+': function(argument, context) { + return function(scope, locals, assign, inputs) { + var arg = argument(scope, locals, assign, inputs); + if (isDefined(arg)) { + arg = +arg; + } else { + arg = 0; + } + return context ? {value: arg} : arg; + }; + }, + 'unary-': function(argument, context) { + return function(scope, locals, assign, inputs) { + var arg = argument(scope, locals, assign, inputs); + if (isDefined(arg)) { + arg = -arg; + } else { + arg = 0; + } + return context ? {value: arg} : arg; + }; + }, + 'unary!': function(argument, context) { + return function(scope, locals, assign, inputs) { + var arg = !argument(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary+': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var lhs = left(scope, locals, assign, inputs); + var rhs = right(scope, locals, assign, inputs); + var arg = plusFn(lhs, rhs); + return context ? {value: arg} : arg; + }; + }, + 'binary-': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var lhs = left(scope, locals, assign, inputs); + var rhs = right(scope, locals, assign, inputs); + var arg = (isDefined(lhs) ? lhs : 0) - (isDefined(rhs) ? rhs : 0); + return context ? {value: arg} : arg; + }; + }, + 'binary*': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) * right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary/': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) / right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary%': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) % right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary===': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) === right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary!==': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) !== right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary==': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) == right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary!=': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) != right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary<': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) < right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary>': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) > right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary<=': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) <= right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary>=': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) >= right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary&&': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) && right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'binary||': function(left, right, context) { + return function(scope, locals, assign, inputs) { + var arg = left(scope, locals, assign, inputs) || right(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + 'ternary?:': function(test, alternate, consequent, context) { + return function(scope, locals, assign, inputs) { + var arg = test(scope, locals, assign, inputs) ? alternate(scope, locals, assign, inputs) : consequent(scope, locals, assign, inputs); + return context ? {value: arg} : arg; + }; + }, + value: function(value, context) { + return function() { return context ? {context: undefined, name: undefined, value: value} : value; }; + }, + identifier: function(name, expensiveChecks, context, create, expression) { + return function(scope, locals, assign, inputs) { + var base = locals && (name in locals) ? locals : scope; + if (create && create !== 1 && base && !(base[name])) { + base[name] = {}; + } + var value = base ? base[name] : undefined; + if (expensiveChecks) { + ensureSafeObject(value, expression); + } + if (context) { + return {context: base, name: name, value: value}; + } else { + return value; + } + }; + }, + computedMember: function(left, right, context, create, expression) { + return function(scope, locals, assign, inputs) { + var lhs = left(scope, locals, assign, inputs); + var rhs; + var value; + if (lhs != null) { + rhs = right(scope, locals, assign, inputs); + rhs = getStringValue(rhs); + ensureSafeMemberName(rhs, expression); + if (create && create !== 1) { + ensureSafeAssignContext(lhs); + if (lhs && !(lhs[rhs])) { + lhs[rhs] = {}; + } + } + value = lhs[rhs]; + ensureSafeObject(value, expression); + } + if (context) { + return {context: lhs, name: rhs, value: value}; + } else { + return value; + } + }; + }, + nonComputedMember: function(left, right, expensiveChecks, context, create, expression) { + return function(scope, locals, assign, inputs) { + var lhs = left(scope, locals, assign, inputs); + if (create && create !== 1) { + ensureSafeAssignContext(lhs); + if (lhs && !(lhs[right])) { + lhs[right] = {}; + } + } + var value = lhs != null ? lhs[right] : undefined; + if (expensiveChecks || isPossiblyDangerousMemberName(right)) { + ensureSafeObject(value, expression); + } + if (context) { + return {context: lhs, name: right, value: value}; + } else { + return value; + } + }; + }, + inputs: function(input, watchId) { + return function(scope, value, locals, inputs) { + if (inputs) return inputs[watchId]; + return input(scope, value, locals); + }; + } +}; + +/** + * @constructor + */ +var Parser = function(lexer, $filter, options) { + this.lexer = lexer; + this.$filter = $filter; + this.options = options; + this.ast = new AST(lexer, options); + this.astCompiler = options.csp ? new ASTInterpreter(this.ast, $filter) : + new ASTCompiler(this.ast, $filter); +}; + +Parser.prototype = { + constructor: Parser, + + parse: function(text) { + return this.astCompiler.compile(text, this.options.expensiveChecks); + } +}; + +function isPossiblyDangerousMemberName(name) { + return name == 'constructor'; +} + +var objectValueOf = Object.prototype.valueOf; + +function getValueOf(value) { + return isFunction(value.valueOf) ? value.valueOf() : objectValueOf.call(value); +} + +/////////////////////////////////// + +/** + * @ngdoc service + * @name $parse + * @kind function + * + * @description + * + * Converts Angular {@link guide/expression expression} into a function. + * + * ```js + * var getter = $parse('user.name'); + * var setter = getter.assign; + * var context = {user:{name:'angular'}}; + * var locals = {user:{name:'local'}}; + * + * expect(getter(context)).toEqual('angular'); + * setter(context, 'newValue'); + * expect(context.user.name).toEqual('newValue'); + * expect(getter(context, locals)).toEqual('local'); + * ``` + * + * + * @param {string} expression String expression to compile. + * @returns {function(context, locals)} a function which represents the compiled expression: + * + * * `context` – `{object}` – an object against which any expressions embedded in the strings + * are evaluated against (typically a scope object). + * * `locals` – `{object=}` – local variables context object, useful for overriding values in + * `context`. + * + * The returned function also has the following properties: + * * `literal` – `{boolean}` – whether the expression's top-level node is a JavaScript + * literal. + * * `constant` – `{boolean}` – whether the expression is made entirely of JavaScript + * constant literals. + * * `assign` – `{?function(context, value)}` – if the expression is assignable, this will be + * set to a function to change its value on the given context. + * + */ + + +/** + * @ngdoc provider + * @name $parseProvider + * + * @description + * `$parseProvider` can be used for configuring the default behavior of the {@link ng.$parse $parse} + * service. + */ +function $ParseProvider() { + var cacheDefault = createMap(); + var cacheExpensive = createMap(); + var literals = { + 'true': true, + 'false': false, + 'null': null, + 'undefined': undefined + }; + + /** + * @ngdoc method + * @name $parseProvider#addLiteral + * @description + * + * Configure $parse service to add literal values that will be present as literal at expressions. + * + * @param {string} literalName Token for the literal value. The literal name value must be a valid literal name. + * @param {*} literalValue Value for this literal. All literal values must be primitives or `undefined`. + * + **/ + this.addLiteral = function(literalName, literalValue) { + literals[literalName] = literalValue; + }; + + this.$get = ['$filter', function($filter) { + var noUnsafeEval = csp().noUnsafeEval; + var $parseOptions = { + csp: noUnsafeEval, + expensiveChecks: false, + literals: copy(literals) + }, + $parseOptionsExpensive = { + csp: noUnsafeEval, + expensiveChecks: true, + literals: copy(literals) + }; + var runningChecksEnabled = false; + + $parse.$$runningExpensiveChecks = function() { + return runningChecksEnabled; + }; + + return $parse; + + function $parse(exp, interceptorFn, expensiveChecks) { + var parsedExpression, oneTime, cacheKey; + + expensiveChecks = expensiveChecks || runningChecksEnabled; + + switch (typeof exp) { + case 'string': + exp = exp.trim(); + cacheKey = exp; + + var cache = (expensiveChecks ? cacheExpensive : cacheDefault); + parsedExpression = cache[cacheKey]; + + if (!parsedExpression) { + if (exp.charAt(0) === ':' && exp.charAt(1) === ':') { + oneTime = true; + exp = exp.substring(2); + } + var parseOptions = expensiveChecks ? $parseOptionsExpensive : $parseOptions; + var lexer = new Lexer(parseOptions); + var parser = new Parser(lexer, $filter, parseOptions); + parsedExpression = parser.parse(exp); + if (parsedExpression.constant) { + parsedExpression.$$watchDelegate = constantWatchDelegate; + } else if (oneTime) { + parsedExpression.$$watchDelegate = parsedExpression.literal ? + oneTimeLiteralWatchDelegate : oneTimeWatchDelegate; + } else if (parsedExpression.inputs) { + parsedExpression.$$watchDelegate = inputsWatchDelegate; + } + if (expensiveChecks) { + parsedExpression = expensiveChecksInterceptor(parsedExpression); + } + cache[cacheKey] = parsedExpression; + } + return addInterceptor(parsedExpression, interceptorFn); + + case 'function': + return addInterceptor(exp, interceptorFn); + + default: + return addInterceptor(noop, interceptorFn); + } + } + + function expensiveChecksInterceptor(fn) { + if (!fn) return fn; + expensiveCheckFn.$$watchDelegate = fn.$$watchDelegate; + expensiveCheckFn.assign = expensiveChecksInterceptor(fn.assign); + expensiveCheckFn.constant = fn.constant; + expensiveCheckFn.literal = fn.literal; + for (var i = 0; fn.inputs && i < fn.inputs.length; ++i) { + fn.inputs[i] = expensiveChecksInterceptor(fn.inputs[i]); + } + expensiveCheckFn.inputs = fn.inputs; + + return expensiveCheckFn; + + function expensiveCheckFn(scope, locals, assign, inputs) { + var expensiveCheckOldValue = runningChecksEnabled; + runningChecksEnabled = true; + try { + return fn(scope, locals, assign, inputs); + } finally { + runningChecksEnabled = expensiveCheckOldValue; + } + } + } + + function expressionInputDirtyCheck(newValue, oldValueOfValue) { + + if (newValue == null || oldValueOfValue == null) { // null/undefined + return newValue === oldValueOfValue; + } + + if (typeof newValue === 'object') { + + // attempt to convert the value to a primitive type + // TODO(docs): add a note to docs that by implementing valueOf even objects and arrays can + // be cheaply dirty-checked + newValue = getValueOf(newValue); + + if (typeof newValue === 'object') { + // objects/arrays are not supported - deep-watching them would be too expensive + return false; + } + + // fall-through to the primitive equality check + } + + //Primitive or NaN + return newValue === oldValueOfValue || (newValue !== newValue && oldValueOfValue !== oldValueOfValue); + } + + function inputsWatchDelegate(scope, listener, objectEquality, parsedExpression, prettyPrintExpression) { + var inputExpressions = parsedExpression.inputs; + var lastResult; + + if (inputExpressions.length === 1) { + var oldInputValueOf = expressionInputDirtyCheck; // init to something unique so that equals check fails + inputExpressions = inputExpressions[0]; + return scope.$watch(function expressionInputWatch(scope) { + var newInputValue = inputExpressions(scope); + if (!expressionInputDirtyCheck(newInputValue, oldInputValueOf)) { + lastResult = parsedExpression(scope, undefined, undefined, [newInputValue]); + oldInputValueOf = newInputValue && getValueOf(newInputValue); + } + return lastResult; + }, listener, objectEquality, prettyPrintExpression); + } + + var oldInputValueOfValues = []; + var oldInputValues = []; + for (var i = 0, ii = inputExpressions.length; i < ii; i++) { + oldInputValueOfValues[i] = expressionInputDirtyCheck; // init to something unique so that equals check fails + oldInputValues[i] = null; + } + + return scope.$watch(function expressionInputsWatch(scope) { + var changed = false; + + for (var i = 0, ii = inputExpressions.length; i < ii; i++) { + var newInputValue = inputExpressions[i](scope); + if (changed || (changed = !expressionInputDirtyCheck(newInputValue, oldInputValueOfValues[i]))) { + oldInputValues[i] = newInputValue; + oldInputValueOfValues[i] = newInputValue && getValueOf(newInputValue); + } + } + + if (changed) { + lastResult = parsedExpression(scope, undefined, undefined, oldInputValues); + } + + return lastResult; + }, listener, objectEquality, prettyPrintExpression); + } + + function oneTimeWatchDelegate(scope, listener, objectEquality, parsedExpression) { + var unwatch, lastValue; + return unwatch = scope.$watch(function oneTimeWatch(scope) { + return parsedExpression(scope); + }, function oneTimeListener(value, old, scope) { + lastValue = value; + if (isFunction(listener)) { + listener.apply(this, arguments); + } + if (isDefined(value)) { + scope.$$postDigest(function() { + if (isDefined(lastValue)) { + unwatch(); + } + }); + } + }, objectEquality); + } + + function oneTimeLiteralWatchDelegate(scope, listener, objectEquality, parsedExpression) { + var unwatch, lastValue; + return unwatch = scope.$watch(function oneTimeWatch(scope) { + return parsedExpression(scope); + }, function oneTimeListener(value, old, scope) { + lastValue = value; + if (isFunction(listener)) { + listener.call(this, value, old, scope); + } + if (isAllDefined(value)) { + scope.$$postDigest(function() { + if (isAllDefined(lastValue)) unwatch(); + }); + } + }, objectEquality); + + function isAllDefined(value) { + var allDefined = true; + forEach(value, function(val) { + if (!isDefined(val)) allDefined = false; + }); + return allDefined; + } + } + + function constantWatchDelegate(scope, listener, objectEquality, parsedExpression) { + var unwatch; + return unwatch = scope.$watch(function constantWatch(scope) { + unwatch(); + return parsedExpression(scope); + }, listener, objectEquality); + } + + function addInterceptor(parsedExpression, interceptorFn) { + if (!interceptorFn) return parsedExpression; + var watchDelegate = parsedExpression.$$watchDelegate; + var useInputs = false; + + var regularWatch = + watchDelegate !== oneTimeLiteralWatchDelegate && + watchDelegate !== oneTimeWatchDelegate; + + var fn = regularWatch ? function regularInterceptedExpression(scope, locals, assign, inputs) { + var value = useInputs && inputs ? inputs[0] : parsedExpression(scope, locals, assign, inputs); + return interceptorFn(value, scope, locals); + } : function oneTimeInterceptedExpression(scope, locals, assign, inputs) { + var value = parsedExpression(scope, locals, assign, inputs); + var result = interceptorFn(value, scope, locals); + // we only return the interceptor's result if the + // initial value is defined (for bind-once) + return isDefined(value) ? result : value; + }; + + // Propagate $$watchDelegates other then inputsWatchDelegate + if (parsedExpression.$$watchDelegate && + parsedExpression.$$watchDelegate !== inputsWatchDelegate) { + fn.$$watchDelegate = parsedExpression.$$watchDelegate; + } else if (!interceptorFn.$stateful) { + // If there is an interceptor, but no watchDelegate then treat the interceptor like + // we treat filters - it is assumed to be a pure function unless flagged with $stateful + fn.$$watchDelegate = inputsWatchDelegate; + useInputs = !parsedExpression.inputs; + fn.inputs = parsedExpression.inputs ? parsedExpression.inputs : [parsedExpression]; + } + + return fn; + } + }]; +} + +/** + * @ngdoc service + * @name $q + * @requires $rootScope + * + * @description + * A service that helps you run functions asynchronously, and use their return values (or exceptions) + * when they are done processing. + * + * This is an implementation of promises/deferred objects inspired by + * [Kris Kowal's Q](https://github.com/kriskowal/q). + * + * $q can be used in two fashions --- one which is more similar to Kris Kowal's Q or jQuery's Deferred + * implementations, and the other which resembles ES6 (ES2015) promises to some degree. + * + * # $q constructor + * + * The streamlined ES6 style promise is essentially just using $q as a constructor which takes a `resolver` + * function as the first argument. This is similar to the native Promise implementation from ES6, + * see [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise). + * + * While the constructor-style use is supported, not all of the supporting methods from ES6 promises are + * available yet. + * + * It can be used like so: + * + * ```js + * // for the purpose of this example let's assume that variables `$q` and `okToGreet` + * // are available in the current lexical scope (they could have been injected or passed in). + * + * function asyncGreet(name) { + * // perform some asynchronous operation, resolve or reject the promise when appropriate. + * return $q(function(resolve, reject) { + * setTimeout(function() { + * if (okToGreet(name)) { + * resolve('Hello, ' + name + '!'); + * } else { + * reject('Greeting ' + name + ' is not allowed.'); + * } + * }, 1000); + * }); + * } + * + * var promise = asyncGreet('Robin Hood'); + * promise.then(function(greeting) { + * alert('Success: ' + greeting); + * }, function(reason) { + * alert('Failed: ' + reason); + * }); + * ``` + * + * Note: progress/notify callbacks are not currently supported via the ES6-style interface. + * + * Note: unlike ES6 behavior, an exception thrown in the constructor function will NOT implicitly reject the promise. + * + * However, the more traditional CommonJS-style usage is still available, and documented below. + * + * [The CommonJS Promise proposal](http://wiki.commonjs.org/wiki/Promises) describes a promise as an + * interface for interacting with an object that represents the result of an action that is + * performed asynchronously, and may or may not be finished at any given point in time. + * + * From the perspective of dealing with error handling, deferred and promise APIs are to + * asynchronous programming what `try`, `catch` and `throw` keywords are to synchronous programming. + * + * ```js + * // for the purpose of this example let's assume that variables `$q` and `okToGreet` + * // are available in the current lexical scope (they could have been injected or passed in). + * + * function asyncGreet(name) { + * var deferred = $q.defer(); + * + * setTimeout(function() { + * deferred.notify('About to greet ' + name + '.'); + * + * if (okToGreet(name)) { + * deferred.resolve('Hello, ' + name + '!'); + * } else { + * deferred.reject('Greeting ' + name + ' is not allowed.'); + * } + * }, 1000); + * + * return deferred.promise; + * } + * + * var promise = asyncGreet('Robin Hood'); + * promise.then(function(greeting) { + * alert('Success: ' + greeting); + * }, function(reason) { + * alert('Failed: ' + reason); + * }, function(update) { + * alert('Got notification: ' + update); + * }); + * ``` + * + * At first it might not be obvious why this extra complexity is worth the trouble. The payoff + * comes in the way of guarantees that promise and deferred APIs make, see + * https://github.com/kriskowal/uncommonjs/blob/master/promises/specification.md. + * + * Additionally the promise api allows for composition that is very hard to do with the + * traditional callback ([CPS](http://en.wikipedia.org/wiki/Continuation-passing_style)) approach. + * For more on this please see the [Q documentation](https://github.com/kriskowal/q) especially the + * section on serial or parallel joining of promises. + * + * # The Deferred API + * + * A new instance of deferred is constructed by calling `$q.defer()`. + * + * The purpose of the deferred object is to expose the associated Promise instance as well as APIs + * that can be used for signaling the successful or unsuccessful completion, as well as the status + * of the task. + * + * **Methods** + * + * - `resolve(value)` – resolves the derived promise with the `value`. If the value is a rejection + * constructed via `$q.reject`, the promise will be rejected instead. + * - `reject(reason)` – rejects the derived promise with the `reason`. This is equivalent to + * resolving it with a rejection constructed via `$q.reject`. + * - `notify(value)` - provides updates on the status of the promise's execution. This may be called + * multiple times before the promise is either resolved or rejected. + * + * **Properties** + * + * - promise – `{Promise}` – promise object associated with this deferred. + * + * + * # The Promise API + * + * A new promise instance is created when a deferred instance is created and can be retrieved by + * calling `deferred.promise`. + * + * The purpose of the promise object is to allow for interested parties to get access to the result + * of the deferred task when it completes. + * + * **Methods** + * + * - `then(successCallback, errorCallback, notifyCallback)` – regardless of when the promise was or + * will be resolved or rejected, `then` calls one of the success or error callbacks asynchronously + * as soon as the result is available. The callbacks are called with a single argument: the result + * or rejection reason. Additionally, the notify callback may be called zero or more times to + * provide a progress indication, before the promise is resolved or rejected. + * + * This method *returns a new promise* which is resolved or rejected via the return value of the + * `successCallback`, `errorCallback` (unless that value is a promise, in which case it is resolved + * with the value which is resolved in that promise using + * [promise chaining](http://www.html5rocks.com/en/tutorials/es6/promises/#toc-promises-queues)). + * It also notifies via the return value of the `notifyCallback` method. The promise cannot be + * resolved or rejected from the notifyCallback method. + * + * - `catch(errorCallback)` – shorthand for `promise.then(null, errorCallback)` + * + * - `finally(callback, notifyCallback)` – allows you to observe either the fulfillment or rejection of a promise, + * but to do so without modifying the final value. This is useful to release resources or do some + * clean-up that needs to be done whether the promise was rejected or resolved. See the [full + * specification](https://github.com/kriskowal/q/wiki/API-Reference#promisefinallycallback) for + * more information. + * + * # Chaining promises + * + * Because calling the `then` method of a promise returns a new derived promise, it is easily + * possible to create a chain of promises: + * + * ```js + * promiseB = promiseA.then(function(result) { + * return result + 1; + * }); + * + * // promiseB will be resolved immediately after promiseA is resolved and its value + * // will be the result of promiseA incremented by 1 + * ``` + * + * It is possible to create chains of any length and since a promise can be resolved with another + * promise (which will defer its resolution further), it is possible to pause/defer resolution of + * the promises at any point in the chain. This makes it possible to implement powerful APIs like + * $http's response interceptors. + * + * + * # Differences between Kris Kowal's Q and $q + * + * There are two main differences: + * + * - $q is integrated with the {@link ng.$rootScope.Scope} Scope model observation + * mechanism in angular, which means faster propagation of resolution or rejection into your + * models and avoiding unnecessary browser repaints, which would result in flickering UI. + * - Q has many more features than $q, but that comes at a cost of bytes. $q is tiny, but contains + * all the important functionality needed for common async tasks. + * + * # Testing + * + * ```js + * it('should simulate promise', inject(function($q, $rootScope) { + * var deferred = $q.defer(); + * var promise = deferred.promise; + * var resolvedValue; + * + * promise.then(function(value) { resolvedValue = value; }); + * expect(resolvedValue).toBeUndefined(); + * + * // Simulate resolving of promise + * deferred.resolve(123); + * // Note that the 'then' function does not get called synchronously. + * // This is because we want the promise API to always be async, whether or not + * // it got called synchronously or asynchronously. + * expect(resolvedValue).toBeUndefined(); + * + * // Propagate promise resolution to 'then' functions using $apply(). + * $rootScope.$apply(); + * expect(resolvedValue).toEqual(123); + * })); + * ``` + * + * @param {function(function, function)} resolver Function which is responsible for resolving or + * rejecting the newly created promise. The first parameter is a function which resolves the + * promise, the second parameter is a function which rejects the promise. + * + * @returns {Promise} The newly created promise. + */ +function $QProvider() { + + this.$get = ['$rootScope', '$exceptionHandler', function($rootScope, $exceptionHandler) { + return qFactory(function(callback) { + $rootScope.$evalAsync(callback); + }, $exceptionHandler); + }]; +} + +function $$QProvider() { + this.$get = ['$browser', '$exceptionHandler', function($browser, $exceptionHandler) { + return qFactory(function(callback) { + $browser.defer(callback); + }, $exceptionHandler); + }]; +} + +/** + * Constructs a promise manager. + * + * @param {function(function)} nextTick Function for executing functions in the next turn. + * @param {function(...*)} exceptionHandler Function into which unexpected exceptions are passed for + * debugging purposes. + * @returns {object} Promise manager. + */ +function qFactory(nextTick, exceptionHandler) { + var $qMinErr = minErr('$q', TypeError); + + /** + * @ngdoc method + * @name ng.$q#defer + * @kind function + * + * @description + * Creates a `Deferred` object which represents a task which will finish in the future. + * + * @returns {Deferred} Returns a new instance of deferred. + */ + var defer = function() { + var d = new Deferred(); + //Necessary to support unbound execution :/ + d.resolve = simpleBind(d, d.resolve); + d.reject = simpleBind(d, d.reject); + d.notify = simpleBind(d, d.notify); + return d; + }; + + function Promise() { + this.$$state = { status: 0 }; + } + + extend(Promise.prototype, { + then: function(onFulfilled, onRejected, progressBack) { + if (isUndefined(onFulfilled) && isUndefined(onRejected) && isUndefined(progressBack)) { + return this; + } + var result = new Deferred(); + + this.$$state.pending = this.$$state.pending || []; + this.$$state.pending.push([result, onFulfilled, onRejected, progressBack]); + if (this.$$state.status > 0) scheduleProcessQueue(this.$$state); + + return result.promise; + }, + + "catch": function(callback) { + return this.then(null, callback); + }, + + "finally": function(callback, progressBack) { + return this.then(function(value) { + return handleCallback(value, true, callback); + }, function(error) { + return handleCallback(error, false, callback); + }, progressBack); + } + }); + + //Faster, more basic than angular.bind http://jsperf.com/angular-bind-vs-custom-vs-native + function simpleBind(context, fn) { + return function(value) { + fn.call(context, value); + }; + } + + function processQueue(state) { + var fn, deferred, pending; + + pending = state.pending; + state.processScheduled = false; + state.pending = undefined; + for (var i = 0, ii = pending.length; i < ii; ++i) { + deferred = pending[i][0]; + fn = pending[i][state.status]; + try { + if (isFunction(fn)) { + deferred.resolve(fn(state.value)); + } else if (state.status === 1) { + deferred.resolve(state.value); + } else { + deferred.reject(state.value); + } + } catch (e) { + deferred.reject(e); + exceptionHandler(e); + } + } + } + + function scheduleProcessQueue(state) { + if (state.processScheduled || !state.pending) return; + state.processScheduled = true; + nextTick(function() { processQueue(state); }); + } + + function Deferred() { + this.promise = new Promise(); + } + + extend(Deferred.prototype, { + resolve: function(val) { + if (this.promise.$$state.status) return; + if (val === this.promise) { + this.$$reject($qMinErr( + 'qcycle', + "Expected promise to be resolved with value other than itself '{0}'", + val)); + } else { + this.$$resolve(val); + } + + }, + + $$resolve: function(val) { + var then; + var that = this; + var done = false; + try { + if ((isObject(val) || isFunction(val))) then = val && val.then; + if (isFunction(then)) { + this.promise.$$state.status = -1; + then.call(val, resolvePromise, rejectPromise, simpleBind(this, this.notify)); + } else { + this.promise.$$state.value = val; + this.promise.$$state.status = 1; + scheduleProcessQueue(this.promise.$$state); + } + } catch (e) { + rejectPromise(e); + exceptionHandler(e); + } + + function resolvePromise(val) { + if (done) return; + done = true; + that.$$resolve(val); + } + function rejectPromise(val) { + if (done) return; + done = true; + that.$$reject(val); + } + }, + + reject: function(reason) { + if (this.promise.$$state.status) return; + this.$$reject(reason); + }, + + $$reject: function(reason) { + this.promise.$$state.value = reason; + this.promise.$$state.status = 2; + scheduleProcessQueue(this.promise.$$state); + }, + + notify: function(progress) { + var callbacks = this.promise.$$state.pending; + + if ((this.promise.$$state.status <= 0) && callbacks && callbacks.length) { + nextTick(function() { + var callback, result; + for (var i = 0, ii = callbacks.length; i < ii; i++) { + result = callbacks[i][0]; + callback = callbacks[i][3]; + try { + result.notify(isFunction(callback) ? callback(progress) : progress); + } catch (e) { + exceptionHandler(e); + } + } + }); + } + } + }); + + /** + * @ngdoc method + * @name $q#reject + * @kind function + * + * @description + * Creates a promise that is resolved as rejected with the specified `reason`. This api should be + * used to forward rejection in a chain of promises. If you are dealing with the last promise in + * a promise chain, you don't need to worry about it. + * + * When comparing deferreds/promises to the familiar behavior of try/catch/throw, think of + * `reject` as the `throw` keyword in JavaScript. This also means that if you "catch" an error via + * a promise error callback and you want to forward the error to the promise derived from the + * current promise, you have to "rethrow" the error by returning a rejection constructed via + * `reject`. + * + * ```js + * promiseB = promiseA.then(function(result) { + * // success: do something and resolve promiseB + * // with the old or a new result + * return result; + * }, function(reason) { + * // error: handle the error if possible and + * // resolve promiseB with newPromiseOrValue, + * // otherwise forward the rejection to promiseB + * if (canHandle(reason)) { + * // handle the error and recover + * return newPromiseOrValue; + * } + * return $q.reject(reason); + * }); + * ``` + * + * @param {*} reason Constant, message, exception or an object representing the rejection reason. + * @returns {Promise} Returns a promise that was already resolved as rejected with the `reason`. + */ + var reject = function(reason) { + var result = new Deferred(); + result.reject(reason); + return result.promise; + }; + + var makePromise = function makePromise(value, resolved) { + var result = new Deferred(); + if (resolved) { + result.resolve(value); + } else { + result.reject(value); + } + return result.promise; + }; + + var handleCallback = function handleCallback(value, isResolved, callback) { + var callbackOutput = null; + try { + if (isFunction(callback)) callbackOutput = callback(); + } catch (e) { + return makePromise(e, false); + } + if (isPromiseLike(callbackOutput)) { + return callbackOutput.then(function() { + return makePromise(value, isResolved); + }, function(error) { + return makePromise(error, false); + }); + } else { + return makePromise(value, isResolved); + } + }; + + /** + * @ngdoc method + * @name $q#when + * @kind function + * + * @description + * Wraps an object that might be a value or a (3rd party) then-able promise into a $q promise. + * This is useful when you are dealing with an object that might or might not be a promise, or if + * the promise comes from a source that can't be trusted. + * + * @param {*} value Value or a promise + * @param {Function=} successCallback + * @param {Function=} errorCallback + * @param {Function=} progressCallback + * @returns {Promise} Returns a promise of the passed value or promise + */ + + + var when = function(value, callback, errback, progressBack) { + var result = new Deferred(); + result.resolve(value); + return result.promise.then(callback, errback, progressBack); + }; + + /** + * @ngdoc method + * @name $q#resolve + * @kind function + * + * @description + * Alias of {@link ng.$q#when when} to maintain naming consistency with ES6. + * + * @param {*} value Value or a promise + * @param {Function=} successCallback + * @param {Function=} errorCallback + * @param {Function=} progressCallback + * @returns {Promise} Returns a promise of the passed value or promise + */ + var resolve = when; + + /** + * @ngdoc method + * @name $q#all + * @kind function + * + * @description + * Combines multiple promises into a single promise that is resolved when all of the input + * promises are resolved. + * + * @param {Array.|Object.} promises An array or hash of promises. + * @returns {Promise} Returns a single promise that will be resolved with an array/hash of values, + * each value corresponding to the promise at the same index/key in the `promises` array/hash. + * If any of the promises is resolved with a rejection, this resulting promise will be rejected + * with the same rejection value. + */ + + function all(promises) { + var deferred = new Deferred(), + counter = 0, + results = isArray(promises) ? [] : {}; + + forEach(promises, function(promise, key) { + counter++; + when(promise).then(function(value) { + if (results.hasOwnProperty(key)) return; + results[key] = value; + if (!(--counter)) deferred.resolve(results); + }, function(reason) { + if (results.hasOwnProperty(key)) return; + deferred.reject(reason); + }); + }); + + if (counter === 0) { + deferred.resolve(results); + } + + return deferred.promise; + } + + var $Q = function Q(resolver) { + if (!isFunction(resolver)) { + throw $qMinErr('norslvr', "Expected resolverFn, got '{0}'", resolver); + } + + var deferred = new Deferred(); + + function resolveFn(value) { + deferred.resolve(value); + } + + function rejectFn(reason) { + deferred.reject(reason); + } + + resolver(resolveFn, rejectFn); + + return deferred.promise; + }; + + // Let's make the instanceof operator work for promises, so that + // `new $q(fn) instanceof $q` would evaluate to true. + $Q.prototype = Promise.prototype; + + $Q.defer = defer; + $Q.reject = reject; + $Q.when = when; + $Q.resolve = resolve; + $Q.all = all; + + return $Q; +} + +function $$RAFProvider() { //rAF + this.$get = ['$window', '$timeout', function($window, $timeout) { + var requestAnimationFrame = $window.requestAnimationFrame || + $window.webkitRequestAnimationFrame; + + var cancelAnimationFrame = $window.cancelAnimationFrame || + $window.webkitCancelAnimationFrame || + $window.webkitCancelRequestAnimationFrame; + + var rafSupported = !!requestAnimationFrame; + var raf = rafSupported + ? function(fn) { + var id = requestAnimationFrame(fn); + return function() { + cancelAnimationFrame(id); + }; + } + : function(fn) { + var timer = $timeout(fn, 16.66, false); // 1000 / 60 = 16.666 + return function() { + $timeout.cancel(timer); + }; + }; + + raf.supported = rafSupported; + + return raf; + }]; +} + +/** + * DESIGN NOTES + * + * The design decisions behind the scope are heavily favored for speed and memory consumption. + * + * The typical use of scope is to watch the expressions, which most of the time return the same + * value as last time so we optimize the operation. + * + * Closures construction is expensive in terms of speed as well as memory: + * - No closures, instead use prototypical inheritance for API + * - Internal state needs to be stored on scope directly, which means that private state is + * exposed as $$____ properties + * + * Loop operations are optimized by using while(count--) { ... } + * - This means that in order to keep the same order of execution as addition we have to add + * items to the array at the beginning (unshift) instead of at the end (push) + * + * Child scopes are created and removed often + * - Using an array would be slow since inserts in the middle are expensive; so we use linked lists + * + * There are fewer watches than observers. This is why you don't want the observer to be implemented + * in the same way as watch. Watch requires return of the initialization function which is expensive + * to construct. + */ + + +/** + * @ngdoc provider + * @name $rootScopeProvider + * @description + * + * Provider for the $rootScope service. + */ + +/** + * @ngdoc method + * @name $rootScopeProvider#digestTtl + * @description + * + * Sets the number of `$digest` iterations the scope should attempt to execute before giving up and + * assuming that the model is unstable. + * + * The current default is 10 iterations. + * + * In complex applications it's possible that the dependencies between `$watch`s will result in + * several digest iterations. However if an application needs more than the default 10 digest + * iterations for its model to stabilize then you should investigate what is causing the model to + * continuously change during the digest. + * + * Increasing the TTL could have performance implications, so you should not change it without + * proper justification. + * + * @param {number} limit The number of digest iterations. + */ + + +/** + * @ngdoc service + * @name $rootScope + * @description + * + * Every application has a single root {@link ng.$rootScope.Scope scope}. + * All other scopes are descendant scopes of the root scope. Scopes provide separation + * between the model and the view, via a mechanism for watching the model for changes. + * They also provide event emission/broadcast and subscription facility. See the + * {@link guide/scope developer guide on scopes}. + */ +function $RootScopeProvider() { + var TTL = 10; + var $rootScopeMinErr = minErr('$rootScope'); + var lastDirtyWatch = null; + var applyAsyncId = null; + + this.digestTtl = function(value) { + if (arguments.length) { + TTL = value; + } + return TTL; + }; + + function createChildScopeClass(parent) { + function ChildScope() { + this.$$watchers = this.$$nextSibling = + this.$$childHead = this.$$childTail = null; + this.$$listeners = {}; + this.$$listenerCount = {}; + this.$$watchersCount = 0; + this.$id = nextUid(); + this.$$ChildScope = null; + } + ChildScope.prototype = parent; + return ChildScope; + } + + this.$get = ['$exceptionHandler', '$parse', '$browser', + function($exceptionHandler, $parse, $browser) { + + function destroyChildScope($event) { + $event.currentScope.$$destroyed = true; + } + + function cleanUpScope($scope) { + + if (msie === 9) { + // There is a memory leak in IE9 if all child scopes are not disconnected + // completely when a scope is destroyed. So this code will recurse up through + // all this scopes children + // + // See issue https://github.com/angular/angular.js/issues/10706 + $scope.$$childHead && cleanUpScope($scope.$$childHead); + $scope.$$nextSibling && cleanUpScope($scope.$$nextSibling); + } + + // The code below works around IE9 and V8's memory leaks + // + // See: + // - https://code.google.com/p/v8/issues/detail?id=2073#c26 + // - https://github.com/angular/angular.js/issues/6794#issuecomment-38648909 + // - https://github.com/angular/angular.js/issues/1313#issuecomment-10378451 + + $scope.$parent = $scope.$$nextSibling = $scope.$$prevSibling = $scope.$$childHead = + $scope.$$childTail = $scope.$root = $scope.$$watchers = null; + } + + /** + * @ngdoc type + * @name $rootScope.Scope + * + * @description + * A root scope can be retrieved using the {@link ng.$rootScope $rootScope} key from the + * {@link auto.$injector $injector}. Child scopes are created using the + * {@link ng.$rootScope.Scope#$new $new()} method. (Most scopes are created automatically when + * compiled HTML template is executed.) See also the {@link guide/scope Scopes guide} for + * an in-depth introduction and usage examples. + * + * + * # Inheritance + * A scope can inherit from a parent scope, as in this example: + * ```js + var parent = $rootScope; + var child = parent.$new(); + + parent.salutation = "Hello"; + expect(child.salutation).toEqual('Hello'); + + child.salutation = "Welcome"; + expect(child.salutation).toEqual('Welcome'); + expect(parent.salutation).toEqual('Hello'); + * ``` + * + * When interacting with `Scope` in tests, additional helper methods are available on the + * instances of `Scope` type. See {@link ngMock.$rootScope.Scope ngMock Scope} for additional + * details. + * + * + * @param {Object.=} providers Map of service factory which need to be + * provided for the current scope. Defaults to {@link ng}. + * @param {Object.=} instanceCache Provides pre-instantiated services which should + * append/override services provided by `providers`. This is handy + * when unit-testing and having the need to override a default + * service. + * @returns {Object} Newly created scope. + * + */ + function Scope() { + this.$id = nextUid(); + this.$$phase = this.$parent = this.$$watchers = + this.$$nextSibling = this.$$prevSibling = + this.$$childHead = this.$$childTail = null; + this.$root = this; + this.$$destroyed = false; + this.$$listeners = {}; + this.$$listenerCount = {}; + this.$$watchersCount = 0; + this.$$isolateBindings = null; + } + + /** + * @ngdoc property + * @name $rootScope.Scope#$id + * + * @description + * Unique scope ID (monotonically increasing) useful for debugging. + */ + + /** + * @ngdoc property + * @name $rootScope.Scope#$parent + * + * @description + * Reference to the parent scope. + */ + + /** + * @ngdoc property + * @name $rootScope.Scope#$root + * + * @description + * Reference to the root scope. + */ + + Scope.prototype = { + constructor: Scope, + /** + * @ngdoc method + * @name $rootScope.Scope#$new + * @kind function + * + * @description + * Creates a new child {@link ng.$rootScope.Scope scope}. + * + * The parent scope will propagate the {@link ng.$rootScope.Scope#$digest $digest()} event. + * The scope can be removed from the scope hierarchy using {@link ng.$rootScope.Scope#$destroy $destroy()}. + * + * {@link ng.$rootScope.Scope#$destroy $destroy()} must be called on a scope when it is + * desired for the scope and its child scopes to be permanently detached from the parent and + * thus stop participating in model change detection and listener notification by invoking. + * + * @param {boolean} isolate If true, then the scope does not prototypically inherit from the + * parent scope. The scope is isolated, as it can not see parent scope properties. + * When creating widgets, it is useful for the widget to not accidentally read parent + * state. + * + * @param {Scope} [parent=this] The {@link ng.$rootScope.Scope `Scope`} that will be the `$parent` + * of the newly created scope. Defaults to `this` scope if not provided. + * This is used when creating a transclude scope to correctly place it + * in the scope hierarchy while maintaining the correct prototypical + * inheritance. + * + * @returns {Object} The newly created child scope. + * + */ + $new: function(isolate, parent) { + var child; + + parent = parent || this; + + if (isolate) { + child = new Scope(); + child.$root = this.$root; + } else { + // Only create a child scope class if somebody asks for one, + // but cache it to allow the VM to optimize lookups. + if (!this.$$ChildScope) { + this.$$ChildScope = createChildScopeClass(this); + } + child = new this.$$ChildScope(); + } + child.$parent = parent; + child.$$prevSibling = parent.$$childTail; + if (parent.$$childHead) { + parent.$$childTail.$$nextSibling = child; + parent.$$childTail = child; + } else { + parent.$$childHead = parent.$$childTail = child; + } + + // When the new scope is not isolated or we inherit from `this`, and + // the parent scope is destroyed, the property `$$destroyed` is inherited + // prototypically. In all other cases, this property needs to be set + // when the parent scope is destroyed. + // The listener needs to be added after the parent is set + if (isolate || parent != this) child.$on('$destroy', destroyChildScope); + + return child; + }, + + /** + * @ngdoc method + * @name $rootScope.Scope#$watch + * @kind function + * + * @description + * Registers a `listener` callback to be executed whenever the `watchExpression` changes. + * + * - The `watchExpression` is called on every call to {@link ng.$rootScope.Scope#$digest + * $digest()} and should return the value that will be watched. (`watchExpression` should not change + * its value when executed multiple times with the same input because it may be executed multiple + * times by {@link ng.$rootScope.Scope#$digest $digest()}. That is, `watchExpression` should be + * [idempotent](http://en.wikipedia.org/wiki/Idempotence). + * - The `listener` is called only when the value from the current `watchExpression` and the + * previous call to `watchExpression` are not equal (with the exception of the initial run, + * see below). Inequality is determined according to reference inequality, + * [strict comparison](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators) + * via the `!==` Javascript operator, unless `objectEquality == true` + * (see next point) + * - When `objectEquality == true`, inequality of the `watchExpression` is determined + * according to the {@link angular.equals} function. To save the value of the object for + * later comparison, the {@link angular.copy} function is used. This therefore means that + * watching complex objects will have adverse memory and performance implications. + * - The watch `listener` may change the model, which may trigger other `listener`s to fire. + * This is achieved by rerunning the watchers until no changes are detected. The rerun + * iteration limit is 10 to prevent an infinite loop deadlock. + * + * + * If you want to be notified whenever {@link ng.$rootScope.Scope#$digest $digest} is called, + * you can register a `watchExpression` function with no `listener`. (Be prepared for + * multiple calls to your `watchExpression` because it will execute multiple times in a + * single {@link ng.$rootScope.Scope#$digest $digest} cycle if a change is detected.) + * + * After a watcher is registered with the scope, the `listener` fn is called asynchronously + * (via {@link ng.$rootScope.Scope#$evalAsync $evalAsync}) to initialize the + * watcher. In rare cases, this is undesirable because the listener is called when the result + * of `watchExpression` didn't change. To detect this scenario within the `listener` fn, you + * can compare the `newVal` and `oldVal`. If these two values are identical (`===`) then the + * listener was called due to initialization. + * + * + * + * # Example + * ```js + // let's assume that scope was dependency injected as the $rootScope + var scope = $rootScope; + scope.name = 'misko'; + scope.counter = 0; + + expect(scope.counter).toEqual(0); + scope.$watch('name', function(newValue, oldValue) { + scope.counter = scope.counter + 1; + }); + expect(scope.counter).toEqual(0); + + scope.$digest(); + // the listener is always called during the first $digest loop after it was registered + expect(scope.counter).toEqual(1); + + scope.$digest(); + // but now it will not be called unless the value changes + expect(scope.counter).toEqual(1); + + scope.name = 'adam'; + scope.$digest(); + expect(scope.counter).toEqual(2); + + + + // Using a function as a watchExpression + var food; + scope.foodCounter = 0; + expect(scope.foodCounter).toEqual(0); + scope.$watch( + // This function returns the value being watched. It is called for each turn of the $digest loop + function() { return food; }, + // This is the change listener, called when the value returned from the above function changes + function(newValue, oldValue) { + if ( newValue !== oldValue ) { + // Only increment the counter if the value changed + scope.foodCounter = scope.foodCounter + 1; + } + } + ); + // No digest has been run so the counter will be zero + expect(scope.foodCounter).toEqual(0); + + // Run the digest but since food has not changed count will still be zero + scope.$digest(); + expect(scope.foodCounter).toEqual(0); + + // Update food and run digest. Now the counter will increment + food = 'cheeseburger'; + scope.$digest(); + expect(scope.foodCounter).toEqual(1); + + * ``` + * + * + * + * @param {(function()|string)} watchExpression Expression that is evaluated on each + * {@link ng.$rootScope.Scope#$digest $digest} cycle. A change in the return value triggers + * a call to the `listener`. + * + * - `string`: Evaluated as {@link guide/expression expression} + * - `function(scope)`: called with current `scope` as a parameter. + * @param {function(newVal, oldVal, scope)} listener Callback called whenever the value + * of `watchExpression` changes. + * + * - `newVal` contains the current value of the `watchExpression` + * - `oldVal` contains the previous value of the `watchExpression` + * - `scope` refers to the current scope + * @param {boolean=} [objectEquality=false] Compare for object equality using {@link angular.equals} instead of + * comparing for reference equality. + * @returns {function()} Returns a deregistration function for this listener. + */ + $watch: function(watchExp, listener, objectEquality, prettyPrintExpression) { + var get = $parse(watchExp); + + if (get.$$watchDelegate) { + return get.$$watchDelegate(this, listener, objectEquality, get, watchExp); + } + var scope = this, + array = scope.$$watchers, + watcher = { + fn: listener, + last: initWatchVal, + get: get, + exp: prettyPrintExpression || watchExp, + eq: !!objectEquality + }; + + lastDirtyWatch = null; + + if (!isFunction(listener)) { + watcher.fn = noop; + } + + if (!array) { + array = scope.$$watchers = []; + } + // we use unshift since we use a while loop in $digest for speed. + // the while loop reads in reverse order. + array.unshift(watcher); + incrementWatchersCount(this, 1); + + return function deregisterWatch() { + if (arrayRemove(array, watcher) >= 0) { + incrementWatchersCount(scope, -1); + } + lastDirtyWatch = null; + }; + }, + + /** + * @ngdoc method + * @name $rootScope.Scope#$watchGroup + * @kind function + * + * @description + * A variant of {@link ng.$rootScope.Scope#$watch $watch()} where it watches an array of `watchExpressions`. + * If any one expression in the collection changes the `listener` is executed. + * + * - The items in the `watchExpressions` array are observed via standard $watch operation and are examined on every + * call to $digest() to see if any items changes. + * - The `listener` is called whenever any expression in the `watchExpressions` array changes. + * + * @param {Array.} watchExpressions Array of expressions that will be individually + * watched using {@link ng.$rootScope.Scope#$watch $watch()} + * + * @param {function(newValues, oldValues, scope)} listener Callback called whenever the return value of any + * expression in `watchExpressions` changes + * The `newValues` array contains the current values of the `watchExpressions`, with the indexes matching + * those of `watchExpression` + * and the `oldValues` array contains the previous values of the `watchExpressions`, with the indexes matching + * those of `watchExpression` + * The `scope` refers to the current scope. + * @returns {function()} Returns a de-registration function for all listeners. + */ + $watchGroup: function(watchExpressions, listener) { + var oldValues = new Array(watchExpressions.length); + var newValues = new Array(watchExpressions.length); + var deregisterFns = []; + var self = this; + var changeReactionScheduled = false; + var firstRun = true; + + if (!watchExpressions.length) { + // No expressions means we call the listener ASAP + var shouldCall = true; + self.$evalAsync(function() { + if (shouldCall) listener(newValues, newValues, self); + }); + return function deregisterWatchGroup() { + shouldCall = false; + }; + } + + if (watchExpressions.length === 1) { + // Special case size of one + return this.$watch(watchExpressions[0], function watchGroupAction(value, oldValue, scope) { + newValues[0] = value; + oldValues[0] = oldValue; + listener(newValues, (value === oldValue) ? newValues : oldValues, scope); + }); + } + + forEach(watchExpressions, function(expr, i) { + var unwatchFn = self.$watch(expr, function watchGroupSubAction(value, oldValue) { + newValues[i] = value; + oldValues[i] = oldValue; + if (!changeReactionScheduled) { + changeReactionScheduled = true; + self.$evalAsync(watchGroupAction); + } + }); + deregisterFns.push(unwatchFn); + }); + + function watchGroupAction() { + changeReactionScheduled = false; + + if (firstRun) { + firstRun = false; + listener(newValues, newValues, self); + } else { + listener(newValues, oldValues, self); + } + } + + return function deregisterWatchGroup() { + while (deregisterFns.length) { + deregisterFns.shift()(); + } + }; + }, + + + /** + * @ngdoc method + * @name $rootScope.Scope#$watchCollection + * @kind function + * + * @description + * Shallow watches the properties of an object and fires whenever any of the properties change + * (for arrays, this implies watching the array items; for object maps, this implies watching + * the properties). If a change is detected, the `listener` callback is fired. + * + * - The `obj` collection is observed via standard $watch operation and is examined on every + * call to $digest() to see if any items have been added, removed, or moved. + * - The `listener` is called whenever anything within the `obj` has changed. Examples include + * adding, removing, and moving items belonging to an object or array. + * + * + * # Example + * ```js + $scope.names = ['igor', 'matias', 'misko', 'james']; + $scope.dataCount = 4; + + $scope.$watchCollection('names', function(newNames, oldNames) { + $scope.dataCount = newNames.length; + }); + + expect($scope.dataCount).toEqual(4); + $scope.$digest(); + + //still at 4 ... no changes + expect($scope.dataCount).toEqual(4); + + $scope.names.pop(); + $scope.$digest(); + + //now there's been a change + expect($scope.dataCount).toEqual(3); + * ``` + * + * + * @param {string|function(scope)} obj Evaluated as {@link guide/expression expression}. The + * expression value should evaluate to an object or an array which is observed on each + * {@link ng.$rootScope.Scope#$digest $digest} cycle. Any shallow change within the + * collection will trigger a call to the `listener`. + * + * @param {function(newCollection, oldCollection, scope)} listener a callback function called + * when a change is detected. + * - The `newCollection` object is the newly modified data obtained from the `obj` expression + * - The `oldCollection` object is a copy of the former collection data. + * Due to performance considerations, the`oldCollection` value is computed only if the + * `listener` function declares two or more arguments. + * - The `scope` argument refers to the current scope. + * + * @returns {function()} Returns a de-registration function for this listener. When the + * de-registration function is executed, the internal watch operation is terminated. + */ + $watchCollection: function(obj, listener) { + $watchCollectionInterceptor.$stateful = true; + + var self = this; + // the current value, updated on each dirty-check run + var newValue; + // a shallow copy of the newValue from the last dirty-check run, + // updated to match newValue during dirty-check run + var oldValue; + // a shallow copy of the newValue from when the last change happened + var veryOldValue; + // only track veryOldValue if the listener is asking for it + var trackVeryOldValue = (listener.length > 1); + var changeDetected = 0; + var changeDetector = $parse(obj, $watchCollectionInterceptor); + var internalArray = []; + var internalObject = {}; + var initRun = true; + var oldLength = 0; + + function $watchCollectionInterceptor(_value) { + newValue = _value; + var newLength, key, bothNaN, newItem, oldItem; + + // If the new value is undefined, then return undefined as the watch may be a one-time watch + if (isUndefined(newValue)) return; + + if (!isObject(newValue)) { // if primitive + if (oldValue !== newValue) { + oldValue = newValue; + changeDetected++; + } + } else if (isArrayLike(newValue)) { + if (oldValue !== internalArray) { + // we are transitioning from something which was not an array into array. + oldValue = internalArray; + oldLength = oldValue.length = 0; + changeDetected++; + } + + newLength = newValue.length; + + if (oldLength !== newLength) { + // if lengths do not match we need to trigger change notification + changeDetected++; + oldValue.length = oldLength = newLength; + } + // copy the items to oldValue and look for changes. + for (var i = 0; i < newLength; i++) { + oldItem = oldValue[i]; + newItem = newValue[i]; + + bothNaN = (oldItem !== oldItem) && (newItem !== newItem); + if (!bothNaN && (oldItem !== newItem)) { + changeDetected++; + oldValue[i] = newItem; + } + } + } else { + if (oldValue !== internalObject) { + // we are transitioning from something which was not an object into object. + oldValue = internalObject = {}; + oldLength = 0; + changeDetected++; + } + // copy the items to oldValue and look for changes. + newLength = 0; + for (key in newValue) { + if (hasOwnProperty.call(newValue, key)) { + newLength++; + newItem = newValue[key]; + oldItem = oldValue[key]; + + if (key in oldValue) { + bothNaN = (oldItem !== oldItem) && (newItem !== newItem); + if (!bothNaN && (oldItem !== newItem)) { + changeDetected++; + oldValue[key] = newItem; + } + } else { + oldLength++; + oldValue[key] = newItem; + changeDetected++; + } + } + } + if (oldLength > newLength) { + // we used to have more keys, need to find them and destroy them. + changeDetected++; + for (key in oldValue) { + if (!hasOwnProperty.call(newValue, key)) { + oldLength--; + delete oldValue[key]; + } + } + } + } + return changeDetected; + } + + function $watchCollectionAction() { + if (initRun) { + initRun = false; + listener(newValue, newValue, self); + } else { + listener(newValue, veryOldValue, self); + } + + // make a copy for the next time a collection is changed + if (trackVeryOldValue) { + if (!isObject(newValue)) { + //primitive + veryOldValue = newValue; + } else if (isArrayLike(newValue)) { + veryOldValue = new Array(newValue.length); + for (var i = 0; i < newValue.length; i++) { + veryOldValue[i] = newValue[i]; + } + } else { // if object + veryOldValue = {}; + for (var key in newValue) { + if (hasOwnProperty.call(newValue, key)) { + veryOldValue[key] = newValue[key]; + } + } + } + } + } + + return this.$watch(changeDetector, $watchCollectionAction); + }, + + /** + * @ngdoc method + * @name $rootScope.Scope#$digest + * @kind function + * + * @description + * Processes all of the {@link ng.$rootScope.Scope#$watch watchers} of the current scope and + * its children. Because a {@link ng.$rootScope.Scope#$watch watcher}'s listener can change + * the model, the `$digest()` keeps calling the {@link ng.$rootScope.Scope#$watch watchers} + * until no more listeners are firing. This means that it is possible to get into an infinite + * loop. This function will throw `'Maximum iteration limit exceeded.'` if the number of + * iterations exceeds 10. + * + * Usually, you don't call `$digest()` directly in + * {@link ng.directive:ngController controllers} or in + * {@link ng.$compileProvider#directive directives}. + * Instead, you should call {@link ng.$rootScope.Scope#$apply $apply()} (typically from within + * a {@link ng.$compileProvider#directive directive}), which will force a `$digest()`. + * + * If you want to be notified whenever `$digest()` is called, + * you can register a `watchExpression` function with + * {@link ng.$rootScope.Scope#$watch $watch()} with no `listener`. + * + * In unit tests, you may need to call `$digest()` to simulate the scope life cycle. + * + * # Example + * ```js + var scope = ...; + scope.name = 'misko'; + scope.counter = 0; + + expect(scope.counter).toEqual(0); + scope.$watch('name', function(newValue, oldValue) { + scope.counter = scope.counter + 1; + }); + expect(scope.counter).toEqual(0); + + scope.$digest(); + // the listener is always called during the first $digest loop after it was registered + expect(scope.counter).toEqual(1); + + scope.$digest(); + // but now it will not be called unless the value changes + expect(scope.counter).toEqual(1); + + scope.name = 'adam'; + scope.$digest(); + expect(scope.counter).toEqual(2); + * ``` + * + */ + $digest: function() { + var watch, value, last, fn, get, + watchers, + length, + dirty, ttl = TTL, + next, current, target = this, + watchLog = [], + logIdx, asyncTask; + + beginPhase('$digest'); + // Check for changes to browser url that happened in sync before the call to $digest + $browser.$$checkUrlChange(); + + if (this === $rootScope && applyAsyncId !== null) { + // If this is the root scope, and $applyAsync has scheduled a deferred $apply(), then + // cancel the scheduled $apply and flush the queue of expressions to be evaluated. + $browser.defer.cancel(applyAsyncId); + flushApplyAsync(); + } + + lastDirtyWatch = null; + + do { // "while dirty" loop + dirty = false; + current = target; + + while (asyncQueue.length) { + try { + asyncTask = asyncQueue.shift(); + asyncTask.scope.$eval(asyncTask.expression, asyncTask.locals); + } catch (e) { + $exceptionHandler(e); + } + lastDirtyWatch = null; + } + + traverseScopesLoop: + do { // "traverse the scopes" loop + if ((watchers = current.$$watchers)) { + // process our watches + length = watchers.length; + while (length--) { + try { + watch = watchers[length]; + // Most common watches are on primitives, in which case we can short + // circuit it with === operator, only when === fails do we use .equals + if (watch) { + get = watch.get; + if ((value = get(current)) !== (last = watch.last) && + !(watch.eq + ? equals(value, last) + : (typeof value === 'number' && typeof last === 'number' + && isNaN(value) && isNaN(last)))) { + dirty = true; + lastDirtyWatch = watch; + watch.last = watch.eq ? copy(value, null) : value; + fn = watch.fn; + fn(value, ((last === initWatchVal) ? value : last), current); + if (ttl < 5) { + logIdx = 4 - ttl; + if (!watchLog[logIdx]) watchLog[logIdx] = []; + watchLog[logIdx].push({ + msg: isFunction(watch.exp) ? 'fn: ' + (watch.exp.name || watch.exp.toString()) : watch.exp, + newVal: value, + oldVal: last + }); + } + } else if (watch === lastDirtyWatch) { + // If the most recently dirty watcher is now clean, short circuit since the remaining watchers + // have already been tested. + dirty = false; + break traverseScopesLoop; + } + } + } catch (e) { + $exceptionHandler(e); + } + } + } + + // Insanity Warning: scope depth-first traversal + // yes, this code is a bit crazy, but it works and we have tests to prove it! + // this piece should be kept in sync with the traversal in $broadcast + if (!(next = ((current.$$watchersCount && current.$$childHead) || + (current !== target && current.$$nextSibling)))) { + while (current !== target && !(next = current.$$nextSibling)) { + current = current.$parent; + } + } + } while ((current = next)); + + // `break traverseScopesLoop;` takes us to here + + if ((dirty || asyncQueue.length) && !(ttl--)) { + clearPhase(); + throw $rootScopeMinErr('infdig', + '{0} $digest() iterations reached. Aborting!\n' + + 'Watchers fired in the last 5 iterations: {1}', + TTL, watchLog); + } + + } while (dirty || asyncQueue.length); + + clearPhase(); + + while (postDigestQueue.length) { + try { + postDigestQueue.shift()(); + } catch (e) { + $exceptionHandler(e); + } + } + }, + + + /** + * @ngdoc event + * @name $rootScope.Scope#$destroy + * @eventType broadcast on scope being destroyed + * + * @description + * Broadcasted when a scope and its children are being destroyed. + * + * Note that, in AngularJS, there is also a `$destroy` jQuery event, which can be used to + * clean up DOM bindings before an element is removed from the DOM. + */ + + /** + * @ngdoc method + * @name $rootScope.Scope#$destroy + * @kind function + * + * @description + * Removes the current scope (and all of its children) from the parent scope. Removal implies + * that calls to {@link ng.$rootScope.Scope#$digest $digest()} will no longer + * propagate to the current scope and its children. Removal also implies that the current + * scope is eligible for garbage collection. + * + * The `$destroy()` is usually used by directives such as + * {@link ng.directive:ngRepeat ngRepeat} for managing the + * unrolling of the loop. + * + * Just before a scope is destroyed, a `$destroy` event is broadcasted on this scope. + * Application code can register a `$destroy` event handler that will give it a chance to + * perform any necessary cleanup. + * + * Note that, in AngularJS, there is also a `$destroy` jQuery event, which can be used to + * clean up DOM bindings before an element is removed from the DOM. + */ + $destroy: function() { + // We can't destroy a scope that has been already destroyed. + if (this.$$destroyed) return; + var parent = this.$parent; + + this.$broadcast('$destroy'); + this.$$destroyed = true; + + if (this === $rootScope) { + //Remove handlers attached to window when $rootScope is removed + $browser.$$applicationDestroyed(); + } + + incrementWatchersCount(this, -this.$$watchersCount); + for (var eventName in this.$$listenerCount) { + decrementListenerCount(this, this.$$listenerCount[eventName], eventName); + } + + // sever all the references to parent scopes (after this cleanup, the current scope should + // not be retained by any of our references and should be eligible for garbage collection) + if (parent && parent.$$childHead == this) parent.$$childHead = this.$$nextSibling; + if (parent && parent.$$childTail == this) parent.$$childTail = this.$$prevSibling; + if (this.$$prevSibling) this.$$prevSibling.$$nextSibling = this.$$nextSibling; + if (this.$$nextSibling) this.$$nextSibling.$$prevSibling = this.$$prevSibling; + + // Disable listeners, watchers and apply/digest methods + this.$destroy = this.$digest = this.$apply = this.$evalAsync = this.$applyAsync = noop; + this.$on = this.$watch = this.$watchGroup = function() { return noop; }; + this.$$listeners = {}; + + // Disconnect the next sibling to prevent `cleanUpScope` destroying those too + this.$$nextSibling = null; + cleanUpScope(this); + }, + + /** + * @ngdoc method + * @name $rootScope.Scope#$eval + * @kind function + * + * @description + * Executes the `expression` on the current scope and returns the result. Any exceptions in + * the expression are propagated (uncaught). This is useful when evaluating Angular + * expressions. + * + * # Example + * ```js + var scope = ng.$rootScope.Scope(); + scope.a = 1; + scope.b = 2; + + expect(scope.$eval('a+b')).toEqual(3); + expect(scope.$eval(function(scope){ return scope.a + scope.b; })).toEqual(3); + * ``` + * + * @param {(string|function())=} expression An angular expression to be executed. + * + * - `string`: execute using the rules as defined in {@link guide/expression expression}. + * - `function(scope)`: execute the function with the current `scope` parameter. + * + * @param {(object)=} locals Local variables object, useful for overriding values in scope. + * @returns {*} The result of evaluating the expression. + */ + $eval: function(expr, locals) { + return $parse(expr)(this, locals); + }, + + /** + * @ngdoc method + * @name $rootScope.Scope#$evalAsync + * @kind function + * + * @description + * Executes the expression on the current scope at a later point in time. + * + * The `$evalAsync` makes no guarantees as to when the `expression` will be executed, only + * that: + * + * - it will execute after the function that scheduled the evaluation (preferably before DOM + * rendering). + * - at least one {@link ng.$rootScope.Scope#$digest $digest cycle} will be performed after + * `expression` execution. + * + * Any exceptions from the execution of the expression are forwarded to the + * {@link ng.$exceptionHandler $exceptionHandler} service. + * + * __Note:__ if this function is called outside of a `$digest` cycle, a new `$digest` cycle + * will be scheduled. However, it is encouraged to always call code that changes the model + * from within an `$apply` call. That includes code evaluated via `$evalAsync`. + * + * @param {(string|function())=} expression An angular expression to be executed. + * + * - `string`: execute using the rules as defined in {@link guide/expression expression}. + * - `function(scope)`: execute the function with the current `scope` parameter. + * + * @param {(object)=} locals Local variables object, useful for overriding values in scope. + */ + $evalAsync: function(expr, locals) { + // if we are outside of an $digest loop and this is the first time we are scheduling async + // task also schedule async auto-flush + if (!$rootScope.$$phase && !asyncQueue.length) { + $browser.defer(function() { + if (asyncQueue.length) { + $rootScope.$digest(); + } + }); + } + + asyncQueue.push({scope: this, expression: $parse(expr), locals: locals}); + }, + + $$postDigest: function(fn) { + postDigestQueue.push(fn); + }, + + /** + * @ngdoc method + * @name $rootScope.Scope#$apply + * @kind function + * + * @description + * `$apply()` is used to execute an expression in angular from outside of the angular + * framework. (For example from browser DOM events, setTimeout, XHR or third party libraries). + * Because we are calling into the angular framework we need to perform proper scope life + * cycle of {@link ng.$exceptionHandler exception handling}, + * {@link ng.$rootScope.Scope#$digest executing watches}. + * + * ## Life cycle + * + * # Pseudo-Code of `$apply()` + * ```js + function $apply(expr) { + try { + return $eval(expr); + } catch (e) { + $exceptionHandler(e); + } finally { + $root.$digest(); + } + } + * ``` + * + * + * Scope's `$apply()` method transitions through the following stages: + * + * 1. The {@link guide/expression expression} is executed using the + * {@link ng.$rootScope.Scope#$eval $eval()} method. + * 2. Any exceptions from the execution of the expression are forwarded to the + * {@link ng.$exceptionHandler $exceptionHandler} service. + * 3. The {@link ng.$rootScope.Scope#$watch watch} listeners are fired immediately after the + * expression was executed using the {@link ng.$rootScope.Scope#$digest $digest()} method. + * + * + * @param {(string|function())=} exp An angular expression to be executed. + * + * - `string`: execute using the rules as defined in {@link guide/expression expression}. + * - `function(scope)`: execute the function with current `scope` parameter. + * + * @returns {*} The result of evaluating the expression. + */ + $apply: function(expr) { + try { + beginPhase('$apply'); + try { + return this.$eval(expr); + } finally { + clearPhase(); + } + } catch (e) { + $exceptionHandler(e); + } finally { + try { + $rootScope.$digest(); + } catch (e) { + $exceptionHandler(e); + throw e; + } + } + }, + + /** + * @ngdoc method + * @name $rootScope.Scope#$applyAsync + * @kind function + * + * @description + * Schedule the invocation of $apply to occur at a later time. The actual time difference + * varies across browsers, but is typically around ~10 milliseconds. + * + * This can be used to queue up multiple expressions which need to be evaluated in the same + * digest. + * + * @param {(string|function())=} exp An angular expression to be executed. + * + * - `string`: execute using the rules as defined in {@link guide/expression expression}. + * - `function(scope)`: execute the function with current `scope` parameter. + */ + $applyAsync: function(expr) { + var scope = this; + expr && applyAsyncQueue.push($applyAsyncExpression); + expr = $parse(expr); + scheduleApplyAsync(); + + function $applyAsyncExpression() { + scope.$eval(expr); + } + }, + + /** + * @ngdoc method + * @name $rootScope.Scope#$on + * @kind function + * + * @description + * Listens on events of a given type. See {@link ng.$rootScope.Scope#$emit $emit} for + * discussion of event life cycle. + * + * The event listener function format is: `function(event, args...)`. The `event` object + * passed into the listener has the following attributes: + * + * - `targetScope` - `{Scope}`: the scope on which the event was `$emit`-ed or + * `$broadcast`-ed. + * - `currentScope` - `{Scope}`: the scope that is currently handling the event. Once the + * event propagates through the scope hierarchy, this property is set to null. + * - `name` - `{string}`: name of the event. + * - `stopPropagation` - `{function=}`: calling `stopPropagation` function will cancel + * further event propagation (available only for events that were `$emit`-ed). + * - `preventDefault` - `{function}`: calling `preventDefault` sets `defaultPrevented` flag + * to true. + * - `defaultPrevented` - `{boolean}`: true if `preventDefault` was called. + * + * @param {string} name Event name to listen on. + * @param {function(event, ...args)} listener Function to call when the event is emitted. + * @returns {function()} Returns a deregistration function for this listener. + */ + $on: function(name, listener) { + var namedListeners = this.$$listeners[name]; + if (!namedListeners) { + this.$$listeners[name] = namedListeners = []; + } + namedListeners.push(listener); + + var current = this; + do { + if (!current.$$listenerCount[name]) { + current.$$listenerCount[name] = 0; + } + current.$$listenerCount[name]++; + } while ((current = current.$parent)); + + var self = this; + return function() { + var indexOfListener = namedListeners.indexOf(listener); + if (indexOfListener !== -1) { + namedListeners[indexOfListener] = null; + decrementListenerCount(self, 1, name); + } + }; + }, + + + /** + * @ngdoc method + * @name $rootScope.Scope#$emit + * @kind function + * + * @description + * Dispatches an event `name` upwards through the scope hierarchy notifying the + * registered {@link ng.$rootScope.Scope#$on} listeners. + * + * The event life cycle starts at the scope on which `$emit` was called. All + * {@link ng.$rootScope.Scope#$on listeners} listening for `name` event on this scope get + * notified. Afterwards, the event traverses upwards toward the root scope and calls all + * registered listeners along the way. The event will stop propagating if one of the listeners + * cancels it. + * + * Any exception emitted from the {@link ng.$rootScope.Scope#$on listeners} will be passed + * onto the {@link ng.$exceptionHandler $exceptionHandler} service. + * + * @param {string} name Event name to emit. + * @param {...*} args Optional one or more arguments which will be passed onto the event listeners. + * @return {Object} Event object (see {@link ng.$rootScope.Scope#$on}). + */ + $emit: function(name, args) { + var empty = [], + namedListeners, + scope = this, + stopPropagation = false, + event = { + name: name, + targetScope: scope, + stopPropagation: function() {stopPropagation = true;}, + preventDefault: function() { + event.defaultPrevented = true; + }, + defaultPrevented: false + }, + listenerArgs = concat([event], arguments, 1), + i, length; + + do { + namedListeners = scope.$$listeners[name] || empty; + event.currentScope = scope; + for (i = 0, length = namedListeners.length; i < length; i++) { + + // if listeners were deregistered, defragment the array + if (!namedListeners[i]) { + namedListeners.splice(i, 1); + i--; + length--; + continue; + } + try { + //allow all listeners attached to the current scope to run + namedListeners[i].apply(null, listenerArgs); + } catch (e) { + $exceptionHandler(e); + } + } + //if any listener on the current scope stops propagation, prevent bubbling + if (stopPropagation) { + event.currentScope = null; + return event; + } + //traverse upwards + scope = scope.$parent; + } while (scope); + + event.currentScope = null; + + return event; + }, + + + /** + * @ngdoc method + * @name $rootScope.Scope#$broadcast + * @kind function + * + * @description + * Dispatches an event `name` downwards to all child scopes (and their children) notifying the + * registered {@link ng.$rootScope.Scope#$on} listeners. + * + * The event life cycle starts at the scope on which `$broadcast` was called. All + * {@link ng.$rootScope.Scope#$on listeners} listening for `name` event on this scope get + * notified. Afterwards, the event propagates to all direct and indirect scopes of the current + * scope and calls all registered listeners along the way. The event cannot be canceled. + * + * Any exception emitted from the {@link ng.$rootScope.Scope#$on listeners} will be passed + * onto the {@link ng.$exceptionHandler $exceptionHandler} service. + * + * @param {string} name Event name to broadcast. + * @param {...*} args Optional one or more arguments which will be passed onto the event listeners. + * @return {Object} Event object, see {@link ng.$rootScope.Scope#$on} + */ + $broadcast: function(name, args) { + var target = this, + current = target, + next = target, + event = { + name: name, + targetScope: target, + preventDefault: function() { + event.defaultPrevented = true; + }, + defaultPrevented: false + }; + + if (!target.$$listenerCount[name]) return event; + + var listenerArgs = concat([event], arguments, 1), + listeners, i, length; + + //down while you can, then up and next sibling or up and next sibling until back at root + while ((current = next)) { + event.currentScope = current; + listeners = current.$$listeners[name] || []; + for (i = 0, length = listeners.length; i < length; i++) { + // if listeners were deregistered, defragment the array + if (!listeners[i]) { + listeners.splice(i, 1); + i--; + length--; + continue; + } + + try { + listeners[i].apply(null, listenerArgs); + } catch (e) { + $exceptionHandler(e); + } + } + + // Insanity Warning: scope depth-first traversal + // yes, this code is a bit crazy, but it works and we have tests to prove it! + // this piece should be kept in sync with the traversal in $digest + // (though it differs due to having the extra check for $$listenerCount) + if (!(next = ((current.$$listenerCount[name] && current.$$childHead) || + (current !== target && current.$$nextSibling)))) { + while (current !== target && !(next = current.$$nextSibling)) { + current = current.$parent; + } + } + } + + event.currentScope = null; + return event; + } + }; + + var $rootScope = new Scope(); + + //The internal queues. Expose them on the $rootScope for debugging/testing purposes. + var asyncQueue = $rootScope.$$asyncQueue = []; + var postDigestQueue = $rootScope.$$postDigestQueue = []; + var applyAsyncQueue = $rootScope.$$applyAsyncQueue = []; + + return $rootScope; + + + function beginPhase(phase) { + if ($rootScope.$$phase) { + throw $rootScopeMinErr('inprog', '{0} already in progress', $rootScope.$$phase); + } + + $rootScope.$$phase = phase; + } + + function clearPhase() { + $rootScope.$$phase = null; + } + + function incrementWatchersCount(current, count) { + do { + current.$$watchersCount += count; + } while ((current = current.$parent)); + } + + function decrementListenerCount(current, count, name) { + do { + current.$$listenerCount[name] -= count; + + if (current.$$listenerCount[name] === 0) { + delete current.$$listenerCount[name]; + } + } while ((current = current.$parent)); + } + + /** + * function used as an initial value for watchers. + * because it's unique we can easily tell it apart from other values + */ + function initWatchVal() {} + + function flushApplyAsync() { + while (applyAsyncQueue.length) { + try { + applyAsyncQueue.shift()(); + } catch (e) { + $exceptionHandler(e); + } + } + applyAsyncId = null; + } + + function scheduleApplyAsync() { + if (applyAsyncId === null) { + applyAsyncId = $browser.defer(function() { + $rootScope.$apply(flushApplyAsync); + }); + } + } + }]; +} + +/** + * @ngdoc service + * @name $rootElement + * + * @description + * The root element of Angular application. This is either the element where {@link + * ng.directive:ngApp ngApp} was declared or the element passed into + * {@link angular.bootstrap}. The element represents the root element of application. It is also the + * location where the application's {@link auto.$injector $injector} service gets + * published, and can be retrieved using `$rootElement.injector()`. + */ + + +// the implementation is in angular.bootstrap + +/** + * @description + * Private service to sanitize uris for links and images. Used by $compile and $sanitize. + */ +function $$SanitizeUriProvider() { + var aHrefSanitizationWhitelist = /^\s*(https?|ftp|mailto|tel|file):/, + imgSrcSanitizationWhitelist = /^\s*((https?|ftp|file|blob):|data:image\/)/; + + /** + * @description + * Retrieves or overrides the default regular expression that is used for whitelisting of safe + * urls during a[href] sanitization. + * + * The sanitization is a security measure aimed at prevent XSS attacks via html links. + * + * Any url about to be assigned to a[href] via data-binding is first normalized and turned into + * an absolute url. Afterwards, the url is matched against the `aHrefSanitizationWhitelist` + * regular expression. If a match is found, the original url is written into the dom. Otherwise, + * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM. + * + * @param {RegExp=} regexp New regexp to whitelist urls with. + * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for + * chaining otherwise. + */ + this.aHrefSanitizationWhitelist = function(regexp) { + if (isDefined(regexp)) { + aHrefSanitizationWhitelist = regexp; + return this; + } + return aHrefSanitizationWhitelist; + }; + + + /** + * @description + * Retrieves or overrides the default regular expression that is used for whitelisting of safe + * urls during img[src] sanitization. + * + * The sanitization is a security measure aimed at prevent XSS attacks via html links. + * + * Any url about to be assigned to img[src] via data-binding is first normalized and turned into + * an absolute url. Afterwards, the url is matched against the `imgSrcSanitizationWhitelist` + * regular expression. If a match is found, the original url is written into the dom. Otherwise, + * the absolute url is prefixed with `'unsafe:'` string and only then is it written into the DOM. + * + * @param {RegExp=} regexp New regexp to whitelist urls with. + * @returns {RegExp|ng.$compileProvider} Current RegExp if called without value or self for + * chaining otherwise. + */ + this.imgSrcSanitizationWhitelist = function(regexp) { + if (isDefined(regexp)) { + imgSrcSanitizationWhitelist = regexp; + return this; + } + return imgSrcSanitizationWhitelist; + }; + + this.$get = function() { + return function sanitizeUri(uri, isImage) { + var regex = isImage ? imgSrcSanitizationWhitelist : aHrefSanitizationWhitelist; + var normalizedVal; + normalizedVal = urlResolve(uri).href; + if (normalizedVal !== '' && !normalizedVal.match(regex)) { + return 'unsafe:' + normalizedVal; + } + return uri; + }; + }; +} + +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Any commits to this file should be reviewed with security in mind. * + * Changes to this file can potentially create security vulnerabilities. * + * An approval from 2 Core members with history of modifying * + * this file is required. * + * * + * Does the change somehow allow for arbitrary javascript to be executed? * + * Or allows for someone to change the prototype of built-in objects? * + * Or gives undesired access to variables likes document or window? * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +var $sceMinErr = minErr('$sce'); + +var SCE_CONTEXTS = { + HTML: 'html', + CSS: 'css', + URL: 'url', + // RESOURCE_URL is a subtype of URL used in contexts where a privileged resource is sourced from a + // url. (e.g. ng-include, script src, templateUrl) + RESOURCE_URL: 'resourceUrl', + JS: 'js' +}; + +// Helper functions follow. + +function adjustMatcher(matcher) { + if (matcher === 'self') { + return matcher; + } else if (isString(matcher)) { + // Strings match exactly except for 2 wildcards - '*' and '**'. + // '*' matches any character except those from the set ':/.?&'. + // '**' matches any character (like .* in a RegExp). + // More than 2 *'s raises an error as it's ill defined. + if (matcher.indexOf('***') > -1) { + throw $sceMinErr('iwcard', + 'Illegal sequence *** in string matcher. String: {0}', matcher); + } + matcher = escapeForRegexp(matcher). + replace('\\*\\*', '.*'). + replace('\\*', '[^:/.?&;]*'); + return new RegExp('^' + matcher + '$'); + } else if (isRegExp(matcher)) { + // The only other type of matcher allowed is a Regexp. + // Match entire URL / disallow partial matches. + // Flags are reset (i.e. no global, ignoreCase or multiline) + return new RegExp('^' + matcher.source + '$'); + } else { + throw $sceMinErr('imatcher', + 'Matchers may only be "self", string patterns or RegExp objects'); + } +} + + +function adjustMatchers(matchers) { + var adjustedMatchers = []; + if (isDefined(matchers)) { + forEach(matchers, function(matcher) { + adjustedMatchers.push(adjustMatcher(matcher)); + }); + } + return adjustedMatchers; +} + + +/** + * @ngdoc service + * @name $sceDelegate + * @kind function + * + * @description + * + * `$sceDelegate` is a service that is used by the `$sce` service to provide {@link ng.$sce Strict + * Contextual Escaping (SCE)} services to AngularJS. + * + * Typically, you would configure or override the {@link ng.$sceDelegate $sceDelegate} instead of + * the `$sce` service to customize the way Strict Contextual Escaping works in AngularJS. This is + * because, while the `$sce` provides numerous shorthand methods, etc., you really only need to + * override 3 core functions (`trustAs`, `getTrusted` and `valueOf`) to replace the way things + * work because `$sce` delegates to `$sceDelegate` for these operations. + * + * Refer {@link ng.$sceDelegateProvider $sceDelegateProvider} to configure this service. + * + * The default instance of `$sceDelegate` should work out of the box with little pain. While you + * can override it completely to change the behavior of `$sce`, the common case would + * involve configuring the {@link ng.$sceDelegateProvider $sceDelegateProvider} instead by setting + * your own whitelists and blacklists for trusting URLs used for loading AngularJS resources such as + * templates. Refer {@link ng.$sceDelegateProvider#resourceUrlWhitelist + * $sceDelegateProvider.resourceUrlWhitelist} and {@link + * ng.$sceDelegateProvider#resourceUrlBlacklist $sceDelegateProvider.resourceUrlBlacklist} + */ + +/** + * @ngdoc provider + * @name $sceDelegateProvider + * @description + * + * The `$sceDelegateProvider` provider allows developers to configure the {@link ng.$sceDelegate + * $sceDelegate} service. This allows one to get/set the whitelists and blacklists used to ensure + * that the URLs used for sourcing Angular templates are safe. Refer {@link + * ng.$sceDelegateProvider#resourceUrlWhitelist $sceDelegateProvider.resourceUrlWhitelist} and + * {@link ng.$sceDelegateProvider#resourceUrlBlacklist $sceDelegateProvider.resourceUrlBlacklist} + * + * For the general details about this service in Angular, read the main page for {@link ng.$sce + * Strict Contextual Escaping (SCE)}. + * + * **Example**: Consider the following case. + * + * - your app is hosted at url `http://myapp.example.com/` + * - but some of your templates are hosted on other domains you control such as + * `http://srv01.assets.example.com/`,  `http://srv02.assets.example.com/`, etc. + * - and you have an open redirect at `http://myapp.example.com/clickThru?...`. + * + * Here is what a secure configuration for this scenario might look like: + * + * ``` + * angular.module('myApp', []).config(function($sceDelegateProvider) { + * $sceDelegateProvider.resourceUrlWhitelist([ + * // Allow same origin resource loads. + * 'self', + * // Allow loading from our assets domain. Notice the difference between * and **. + * 'http://srv*.assets.example.com/**' + * ]); + * + * // The blacklist overrides the whitelist so the open redirect here is blocked. + * $sceDelegateProvider.resourceUrlBlacklist([ + * 'http://myapp.example.com/clickThru**' + * ]); + * }); + * ``` + */ + +function $SceDelegateProvider() { + this.SCE_CONTEXTS = SCE_CONTEXTS; + + // Resource URLs can also be trusted by policy. + var resourceUrlWhitelist = ['self'], + resourceUrlBlacklist = []; + + /** + * @ngdoc method + * @name $sceDelegateProvider#resourceUrlWhitelist + * @kind function + * + * @param {Array=} whitelist When provided, replaces the resourceUrlWhitelist with the value + * provided. This must be an array or null. A snapshot of this array is used so further + * changes to the array are ignored. + * + * Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items + * allowed in this array. + * + *
    + * **Note:** an empty whitelist array will block all URLs! + *
    + * + * @return {Array} the currently set whitelist array. + * + * The **default value** when no whitelist has been explicitly set is `['self']` allowing only + * same origin resource requests. + * + * @description + * Sets/Gets the whitelist of trusted resource URLs. + */ + this.resourceUrlWhitelist = function(value) { + if (arguments.length) { + resourceUrlWhitelist = adjustMatchers(value); + } + return resourceUrlWhitelist; + }; + + /** + * @ngdoc method + * @name $sceDelegateProvider#resourceUrlBlacklist + * @kind function + * + * @param {Array=} blacklist When provided, replaces the resourceUrlBlacklist with the value + * provided. This must be an array or null. A snapshot of this array is used so further + * changes to the array are ignored. + * + * Follow {@link ng.$sce#resourceUrlPatternItem this link} for a description of the items + * allowed in this array. + * + * The typical usage for the blacklist is to **block + * [open redirects](http://cwe.mitre.org/data/definitions/601.html)** served by your domain as + * these would otherwise be trusted but actually return content from the redirected domain. + * + * Finally, **the blacklist overrides the whitelist** and has the final say. + * + * @return {Array} the currently set blacklist array. + * + * The **default value** when no whitelist has been explicitly set is the empty array (i.e. there + * is no blacklist.) + * + * @description + * Sets/Gets the blacklist of trusted resource URLs. + */ + + this.resourceUrlBlacklist = function(value) { + if (arguments.length) { + resourceUrlBlacklist = adjustMatchers(value); + } + return resourceUrlBlacklist; + }; + + this.$get = ['$injector', function($injector) { + + var htmlSanitizer = function htmlSanitizer(html) { + throw $sceMinErr('unsafe', 'Attempting to use an unsafe value in a safe context.'); + }; + + if ($injector.has('$sanitize')) { + htmlSanitizer = $injector.get('$sanitize'); + } + + + function matchUrl(matcher, parsedUrl) { + if (matcher === 'self') { + return urlIsSameOrigin(parsedUrl); + } else { + // definitely a regex. See adjustMatchers() + return !!matcher.exec(parsedUrl.href); + } + } + + function isResourceUrlAllowedByPolicy(url) { + var parsedUrl = urlResolve(url.toString()); + var i, n, allowed = false; + // Ensure that at least one item from the whitelist allows this url. + for (i = 0, n = resourceUrlWhitelist.length; i < n; i++) { + if (matchUrl(resourceUrlWhitelist[i], parsedUrl)) { + allowed = true; + break; + } + } + if (allowed) { + // Ensure that no item from the blacklist blocked this url. + for (i = 0, n = resourceUrlBlacklist.length; i < n; i++) { + if (matchUrl(resourceUrlBlacklist[i], parsedUrl)) { + allowed = false; + break; + } + } + } + return allowed; + } + + function generateHolderType(Base) { + var holderType = function TrustedValueHolderType(trustedValue) { + this.$$unwrapTrustedValue = function() { + return trustedValue; + }; + }; + if (Base) { + holderType.prototype = new Base(); + } + holderType.prototype.valueOf = function sceValueOf() { + return this.$$unwrapTrustedValue(); + }; + holderType.prototype.toString = function sceToString() { + return this.$$unwrapTrustedValue().toString(); + }; + return holderType; + } + + var trustedValueHolderBase = generateHolderType(), + byType = {}; + + byType[SCE_CONTEXTS.HTML] = generateHolderType(trustedValueHolderBase); + byType[SCE_CONTEXTS.CSS] = generateHolderType(trustedValueHolderBase); + byType[SCE_CONTEXTS.URL] = generateHolderType(trustedValueHolderBase); + byType[SCE_CONTEXTS.JS] = generateHolderType(trustedValueHolderBase); + byType[SCE_CONTEXTS.RESOURCE_URL] = generateHolderType(byType[SCE_CONTEXTS.URL]); + + /** + * @ngdoc method + * @name $sceDelegate#trustAs + * + * @description + * Returns an object that is trusted by angular for use in specified strict + * contextual escaping contexts (such as ng-bind-html, ng-include, any src + * attribute interpolation, any dom event binding attribute interpolation + * such as for onclick, etc.) that uses the provided value. + * See {@link ng.$sce $sce} for enabling strict contextual escaping. + * + * @param {string} type The kind of context in which this value is safe for use. e.g. url, + * resourceUrl, html, js and css. + * @param {*} value The value that that should be considered trusted/safe. + * @returns {*} A value that can be used to stand in for the provided `value` in places + * where Angular expects a $sce.trustAs() return value. + */ + function trustAs(type, trustedValue) { + var Constructor = (byType.hasOwnProperty(type) ? byType[type] : null); + if (!Constructor) { + throw $sceMinErr('icontext', + 'Attempted to trust a value in invalid context. Context: {0}; Value: {1}', + type, trustedValue); + } + if (trustedValue === null || isUndefined(trustedValue) || trustedValue === '') { + return trustedValue; + } + // All the current contexts in SCE_CONTEXTS happen to be strings. In order to avoid trusting + // mutable objects, we ensure here that the value passed in is actually a string. + if (typeof trustedValue !== 'string') { + throw $sceMinErr('itype', + 'Attempted to trust a non-string value in a content requiring a string: Context: {0}', + type); + } + return new Constructor(trustedValue); + } + + /** + * @ngdoc method + * @name $sceDelegate#valueOf + * + * @description + * If the passed parameter had been returned by a prior call to {@link ng.$sceDelegate#trustAs + * `$sceDelegate.trustAs`}, returns the value that had been passed to {@link + * ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}. + * + * If the passed parameter is not a value that had been returned by {@link + * ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}, returns it as-is. + * + * @param {*} value The result of a prior {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`} + * call or anything else. + * @returns {*} The `value` that was originally provided to {@link ng.$sceDelegate#trustAs + * `$sceDelegate.trustAs`} if `value` is the result of such a call. Otherwise, returns + * `value` unchanged. + */ + function valueOf(maybeTrusted) { + if (maybeTrusted instanceof trustedValueHolderBase) { + return maybeTrusted.$$unwrapTrustedValue(); + } else { + return maybeTrusted; + } + } + + /** + * @ngdoc method + * @name $sceDelegate#getTrusted + * + * @description + * Takes the result of a {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`} call and + * returns the originally supplied value if the queried context type is a supertype of the + * created type. If this condition isn't satisfied, throws an exception. + * + *
    + * Disabling auto-escaping is extremely dangerous, it usually creates a Cross Site Scripting + * (XSS) vulnerability in your application. + *
    + * + * @param {string} type The kind of context in which this value is to be used. + * @param {*} maybeTrusted The result of a prior {@link ng.$sceDelegate#trustAs + * `$sceDelegate.trustAs`} call. + * @returns {*} The value the was originally provided to {@link ng.$sceDelegate#trustAs + * `$sceDelegate.trustAs`} if valid in this context. Otherwise, throws an exception. + */ + function getTrusted(type, maybeTrusted) { + if (maybeTrusted === null || isUndefined(maybeTrusted) || maybeTrusted === '') { + return maybeTrusted; + } + var constructor = (byType.hasOwnProperty(type) ? byType[type] : null); + if (constructor && maybeTrusted instanceof constructor) { + return maybeTrusted.$$unwrapTrustedValue(); + } + // If we get here, then we may only take one of two actions. + // 1. sanitize the value for the requested type, or + // 2. throw an exception. + if (type === SCE_CONTEXTS.RESOURCE_URL) { + if (isResourceUrlAllowedByPolicy(maybeTrusted)) { + return maybeTrusted; + } else { + throw $sceMinErr('insecurl', + 'Blocked loading resource from url not allowed by $sceDelegate policy. URL: {0}', + maybeTrusted.toString()); + } + } else if (type === SCE_CONTEXTS.HTML) { + return htmlSanitizer(maybeTrusted); + } + throw $sceMinErr('unsafe', 'Attempting to use an unsafe value in a safe context.'); + } + + return { trustAs: trustAs, + getTrusted: getTrusted, + valueOf: valueOf }; + }]; +} + + +/** + * @ngdoc provider + * @name $sceProvider + * @description + * + * The $sceProvider provider allows developers to configure the {@link ng.$sce $sce} service. + * - enable/disable Strict Contextual Escaping (SCE) in a module + * - override the default implementation with a custom delegate + * + * Read more about {@link ng.$sce Strict Contextual Escaping (SCE)}. + */ + +/* jshint maxlen: false*/ + +/** + * @ngdoc service + * @name $sce + * @kind function + * + * @description + * + * `$sce` is a service that provides Strict Contextual Escaping services to AngularJS. + * + * # Strict Contextual Escaping + * + * Strict Contextual Escaping (SCE) is a mode in which AngularJS requires bindings in certain + * contexts to result in a value that is marked as safe to use for that context. One example of + * such a context is binding arbitrary html controlled by the user via `ng-bind-html`. We refer + * to these contexts as privileged or SCE contexts. + * + * As of version 1.2, Angular ships with SCE enabled by default. + * + * Note: When enabled (the default), IE<11 in quirks mode is not supported. In this mode, IE<11 allow + * one to execute arbitrary javascript by the use of the expression() syntax. Refer + * to learn more about them. + * You can ensure your document is in standards mode and not quirks mode by adding `` + * to the top of your HTML document. + * + * SCE assists in writing code in way that (a) is secure by default and (b) makes auditing for + * security vulnerabilities such as XSS, clickjacking, etc. a lot easier. + * + * Here's an example of a binding in a privileged context: + * + * ``` + * + *
    + * ``` + * + * Notice that `ng-bind-html` is bound to `userHtml` controlled by the user. With SCE + * disabled, this application allows the user to render arbitrary HTML into the DIV. + * In a more realistic example, one may be rendering user comments, blog articles, etc. via + * bindings. (HTML is just one example of a context where rendering user controlled input creates + * security vulnerabilities.) + * + * For the case of HTML, you might use a library, either on the client side, or on the server side, + * to sanitize unsafe HTML before binding to the value and rendering it in the document. + * + * How would you ensure that every place that used these types of bindings was bound to a value that + * was sanitized by your library (or returned as safe for rendering by your server?) How can you + * ensure that you didn't accidentally delete the line that sanitized the value, or renamed some + * properties/fields and forgot to update the binding to the sanitized value? + * + * To be secure by default, you want to ensure that any such bindings are disallowed unless you can + * determine that something explicitly says it's safe to use a value for binding in that + * context. You can then audit your code (a simple grep would do) to ensure that this is only done + * for those values that you can easily tell are safe - because they were received from your server, + * sanitized by your library, etc. You can organize your codebase to help with this - perhaps + * allowing only the files in a specific directory to do this. Ensuring that the internal API + * exposed by that code doesn't markup arbitrary values as safe then becomes a more manageable task. + * + * In the case of AngularJS' SCE service, one uses {@link ng.$sce#trustAs $sce.trustAs} + * (and shorthand methods such as {@link ng.$sce#trustAsHtml $sce.trustAsHtml}, etc.) to + * obtain values that will be accepted by SCE / privileged contexts. + * + * + * ## How does it work? + * + * In privileged contexts, directives and code will bind to the result of {@link ng.$sce#getTrusted + * $sce.getTrusted(context, value)} rather than to the value directly. Directives use {@link + * ng.$sce#parseAs $sce.parseAs} rather than `$parse` to watch attribute bindings, which performs the + * {@link ng.$sce#getTrusted $sce.getTrusted} behind the scenes on non-constant literals. + * + * As an example, {@link ng.directive:ngBindHtml ngBindHtml} uses {@link + * ng.$sce#parseAsHtml $sce.parseAsHtml(binding expression)}. Here's the actual code (slightly + * simplified): + * + * ``` + * var ngBindHtmlDirective = ['$sce', function($sce) { + * return function(scope, element, attr) { + * scope.$watch($sce.parseAsHtml(attr.ngBindHtml), function(value) { + * element.html(value || ''); + * }); + * }; + * }]; + * ``` + * + * ## Impact on loading templates + * + * This applies both to the {@link ng.directive:ngInclude `ng-include`} directive as well as + * `templateUrl`'s specified by {@link guide/directive directives}. + * + * By default, Angular only loads templates from the same domain and protocol as the application + * document. This is done by calling {@link ng.$sce#getTrustedResourceUrl + * $sce.getTrustedResourceUrl} on the template URL. To load templates from other domains and/or + * protocols, you may either {@link ng.$sceDelegateProvider#resourceUrlWhitelist whitelist + * them} or {@link ng.$sce#trustAsResourceUrl wrap it} into a trusted value. + * + * *Please note*: + * The browser's + * [Same Origin Policy](https://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_XMLHttpRequest) + * and [Cross-Origin Resource Sharing (CORS)](http://www.w3.org/TR/cors/) + * policy apply in addition to this and may further restrict whether the template is successfully + * loaded. This means that without the right CORS policy, loading templates from a different domain + * won't work on all browsers. Also, loading templates from `file://` URL does not work on some + * browsers. + * + * ## This feels like too much overhead + * + * It's important to remember that SCE only applies to interpolation expressions. + * + * If your expressions are constant literals, they're automatically trusted and you don't need to + * call `$sce.trustAs` on them (remember to include the `ngSanitize` module) (e.g. + * `
    `) just works. + * + * Additionally, `a[href]` and `img[src]` automatically sanitize their URLs and do not pass them + * through {@link ng.$sce#getTrusted $sce.getTrusted}. SCE doesn't play a role here. + * + * The included {@link ng.$sceDelegate $sceDelegate} comes with sane defaults to allow you to load + * templates in `ng-include` from your application's domain without having to even know about SCE. + * It blocks loading templates from other domains or loading templates over http from an https + * served document. You can change these by setting your own custom {@link + * ng.$sceDelegateProvider#resourceUrlWhitelist whitelists} and {@link + * ng.$sceDelegateProvider#resourceUrlBlacklist blacklists} for matching such URLs. + * + * This significantly reduces the overhead. It is far easier to pay the small overhead and have an + * application that's secure and can be audited to verify that with much more ease than bolting + * security onto an application later. + * + * + * ## What trusted context types are supported? + * + * | Context | Notes | + * |---------------------|----------------| + * | `$sce.HTML` | For HTML that's safe to source into the application. The {@link ng.directive:ngBindHtml ngBindHtml} directive uses this context for bindings. If an unsafe value is encountered and the {@link ngSanitize $sanitize} module is present this will sanitize the value instead of throwing an error. | + * | `$sce.CSS` | For CSS that's safe to source into the application. Currently unused. Feel free to use it in your own directives. | + * | `$sce.URL` | For URLs that are safe to follow as links. Currently unused (`
    Note that `$sce.RESOURCE_URL` makes a stronger statement about the URL than `$sce.URL` does and therefore contexts requiring values trusted for `$sce.RESOURCE_URL` can be used anywhere that values trusted for `$sce.URL` are required. | + * | `$sce.JS` | For JavaScript that is safe to execute in your application's context. Currently unused. Feel free to use it in your own directives. | + * + * ## Format of items in {@link ng.$sceDelegateProvider#resourceUrlWhitelist resourceUrlWhitelist}/{@link ng.$sceDelegateProvider#resourceUrlBlacklist Blacklist}
    + * + * Each element in these arrays must be one of the following: + * + * - **'self'** + * - The special **string**, `'self'`, can be used to match against all URLs of the **same + * domain** as the application document using the **same protocol**. + * - **String** (except the special value `'self'`) + * - The string is matched against the full *normalized / absolute URL* of the resource + * being tested (substring matches are not good enough.) + * - There are exactly **two wildcard sequences** - `*` and `**`. All other characters + * match themselves. + * - `*`: matches zero or more occurrences of any character other than one of the following 6 + * characters: '`:`', '`/`', '`.`', '`?`', '`&`' and '`;`'. It's a useful wildcard for use + * in a whitelist. + * - `**`: matches zero or more occurrences of *any* character. As such, it's not + * appropriate for use in a scheme, domain, etc. as it would match too much. (e.g. + * http://**.example.com/ would match http://evil.com/?ignore=.example.com/ and that might + * not have been the intention.) Its usage at the very end of the path is ok. (e.g. + * http://foo.example.com/templates/**). + * - **RegExp** (*see caveat below*) + * - *Caveat*: While regular expressions are powerful and offer great flexibility, their syntax + * (and all the inevitable escaping) makes them *harder to maintain*. It's easy to + * accidentally introduce a bug when one updates a complex expression (imho, all regexes should + * have good test coverage). For instance, the use of `.` in the regex is correct only in a + * small number of cases. A `.` character in the regex used when matching the scheme or a + * subdomain could be matched against a `:` or literal `.` that was likely not intended. It + * is highly recommended to use the string patterns and only fall back to regular expressions + * as a last resort. + * - The regular expression must be an instance of RegExp (i.e. not a string.) It is + * matched against the **entire** *normalized / absolute URL* of the resource being tested + * (even when the RegExp did not have the `^` and `$` codes.) In addition, any flags + * present on the RegExp (such as multiline, global, ignoreCase) are ignored. + * - If you are generating your JavaScript from some other templating engine (not + * recommended, e.g. in issue [#4006](https://github.com/angular/angular.js/issues/4006)), + * remember to escape your regular expression (and be aware that you might need more than + * one level of escaping depending on your templating engine and the way you interpolated + * the value.) Do make use of your platform's escaping mechanism as it might be good + * enough before coding your own. E.g. Ruby has + * [Regexp.escape(str)](http://www.ruby-doc.org/core-2.0.0/Regexp.html#method-c-escape) + * and Python has [re.escape](http://docs.python.org/library/re.html#re.escape). + * Javascript lacks a similar built in function for escaping. Take a look at Google + * Closure library's [goog.string.regExpEscape(s)]( + * http://docs.closure-library.googlecode.com/git/closure_goog_string_string.js.source.html#line962). + * + * Refer {@link ng.$sceDelegateProvider $sceDelegateProvider} for an example. + * + * ## Show me an example using SCE. + * + * + * + *
    + *

    + * User comments
    + * By default, HTML that isn't explicitly trusted (e.g. Alice's comment) is sanitized when + * $sanitize is available. If $sanitize isn't available, this results in an error instead of an + * exploit. + *
    + *
    + * {{userComment.name}}: + * + *
    + *
    + *
    + *
    + *
    + * + * + * angular.module('mySceApp', ['ngSanitize']) + * .controller('AppController', ['$http', '$templateCache', '$sce', + * function($http, $templateCache, $sce) { + * var self = this; + * $http.get("test_data.json", {cache: $templateCache}).success(function(userComments) { + * self.userComments = userComments; + * }); + * self.explicitlyTrustedHtml = $sce.trustAsHtml( + * 'Hover over this text.'); + * }]); + * + * + * + * [ + * { "name": "Alice", + * "htmlComment": + * "Is anyone reading this?" + * }, + * { "name": "Bob", + * "htmlComment": "Yes! Am I the only other one?" + * } + * ] + * + * + * + * describe('SCE doc demo', function() { + * it('should sanitize untrusted values', function() { + * expect(element.all(by.css('.htmlComment')).first().getInnerHtml()) + * .toBe('Is anyone reading this?'); + * }); + * + * it('should NOT sanitize explicitly trusted values', function() { + * expect(element(by.id('explicitlyTrustedHtml')).getInnerHtml()).toBe( + * 'Hover over this text.'); + * }); + * }); + * + *
    + * + * + * + * ## Can I disable SCE completely? + * + * Yes, you can. However, this is strongly discouraged. SCE gives you a lot of security benefits + * for little coding overhead. It will be much harder to take an SCE disabled application and + * either secure it on your own or enable SCE at a later stage. It might make sense to disable SCE + * for cases where you have a lot of existing code that was written before SCE was introduced and + * you're migrating them a module at a time. + * + * That said, here's how you can completely disable SCE: + * + * ``` + * angular.module('myAppWithSceDisabledmyApp', []).config(function($sceProvider) { + * // Completely disable SCE. For demonstration purposes only! + * // Do not use in new projects. + * $sceProvider.enabled(false); + * }); + * ``` + * + */ +/* jshint maxlen: 100 */ + +function $SceProvider() { + var enabled = true; + + /** + * @ngdoc method + * @name $sceProvider#enabled + * @kind function + * + * @param {boolean=} value If provided, then enables/disables SCE. + * @return {boolean} true if SCE is enabled, false otherwise. + * + * @description + * Enables/disables SCE and returns the current value. + */ + this.enabled = function(value) { + if (arguments.length) { + enabled = !!value; + } + return enabled; + }; + + + /* Design notes on the default implementation for SCE. + * + * The API contract for the SCE delegate + * ------------------------------------- + * The SCE delegate object must provide the following 3 methods: + * + * - trustAs(contextEnum, value) + * This method is used to tell the SCE service that the provided value is OK to use in the + * contexts specified by contextEnum. It must return an object that will be accepted by + * getTrusted() for a compatible contextEnum and return this value. + * + * - valueOf(value) + * For values that were not produced by trustAs(), return them as is. For values that were + * produced by trustAs(), return the corresponding input value to trustAs. Basically, if + * trustAs is wrapping the given values into some type, this operation unwraps it when given + * such a value. + * + * - getTrusted(contextEnum, value) + * This function should return the a value that is safe to use in the context specified by + * contextEnum or throw and exception otherwise. + * + * NOTE: This contract deliberately does NOT state that values returned by trustAs() must be + * opaque or wrapped in some holder object. That happens to be an implementation detail. For + * instance, an implementation could maintain a registry of all trusted objects by context. In + * such a case, trustAs() would return the same object that was passed in. getTrusted() would + * return the same object passed in if it was found in the registry under a compatible context or + * throw an exception otherwise. An implementation might only wrap values some of the time based + * on some criteria. getTrusted() might return a value and not throw an exception for special + * constants or objects even if not wrapped. All such implementations fulfill this contract. + * + * + * A note on the inheritance model for SCE contexts + * ------------------------------------------------ + * I've used inheritance and made RESOURCE_URL wrapped types a subtype of URL wrapped types. This + * is purely an implementation details. + * + * The contract is simply this: + * + * getTrusted($sce.RESOURCE_URL, value) succeeding implies that getTrusted($sce.URL, value) + * will also succeed. + * + * Inheritance happens to capture this in a natural way. In some future, we + * may not use inheritance anymore. That is OK because no code outside of + * sce.js and sceSpecs.js would need to be aware of this detail. + */ + + this.$get = ['$parse', '$sceDelegate', function( + $parse, $sceDelegate) { + // Prereq: Ensure that we're not running in IE<11 quirks mode. In that mode, IE < 11 allow + // the "expression(javascript expression)" syntax which is insecure. + if (enabled && msie < 8) { + throw $sceMinErr('iequirks', + 'Strict Contextual Escaping does not support Internet Explorer version < 11 in quirks ' + + 'mode. You can fix this by adding the text to the top of your HTML ' + + 'document. See http://docs.angularjs.org/api/ng.$sce for more information.'); + } + + var sce = shallowCopy(SCE_CONTEXTS); + + /** + * @ngdoc method + * @name $sce#isEnabled + * @kind function + * + * @return {Boolean} true if SCE is enabled, false otherwise. If you want to set the value, you + * have to do it at module config time on {@link ng.$sceProvider $sceProvider}. + * + * @description + * Returns a boolean indicating if SCE is enabled. + */ + sce.isEnabled = function() { + return enabled; + }; + sce.trustAs = $sceDelegate.trustAs; + sce.getTrusted = $sceDelegate.getTrusted; + sce.valueOf = $sceDelegate.valueOf; + + if (!enabled) { + sce.trustAs = sce.getTrusted = function(type, value) { return value; }; + sce.valueOf = identity; + } + + /** + * @ngdoc method + * @name $sce#parseAs + * + * @description + * Converts Angular {@link guide/expression expression} into a function. This is like {@link + * ng.$parse $parse} and is identical when the expression is a literal constant. Otherwise, it + * wraps the expression in a call to {@link ng.$sce#getTrusted $sce.getTrusted(*type*, + * *result*)} + * + * @param {string} type The kind of SCE context in which this result will be used. + * @param {string} expression String expression to compile. + * @returns {function(context, locals)} a function which represents the compiled expression: + * + * * `context` – `{object}` – an object against which any expressions embedded in the strings + * are evaluated against (typically a scope object). + * * `locals` – `{object=}` – local variables context object, useful for overriding values in + * `context`. + */ + sce.parseAs = function sceParseAs(type, expr) { + var parsed = $parse(expr); + if (parsed.literal && parsed.constant) { + return parsed; + } else { + return $parse(expr, function(value) { + return sce.getTrusted(type, value); + }); + } + }; + + /** + * @ngdoc method + * @name $sce#trustAs + * + * @description + * Delegates to {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs`}. As such, + * returns an object that is trusted by angular for use in specified strict contextual + * escaping contexts (such as ng-bind-html, ng-include, any src attribute + * interpolation, any dom event binding attribute interpolation such as for onclick, etc.) + * that uses the provided value. See * {@link ng.$sce $sce} for enabling strict contextual + * escaping. + * + * @param {string} type The kind of context in which this value is safe for use. e.g. url, + * resourceUrl, html, js and css. + * @param {*} value The value that that should be considered trusted/safe. + * @returns {*} A value that can be used to stand in for the provided `value` in places + * where Angular expects a $sce.trustAs() return value. + */ + + /** + * @ngdoc method + * @name $sce#trustAsHtml + * + * @description + * Shorthand method. `$sce.trustAsHtml(value)` → + * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.HTML, value)`} + * + * @param {*} value The value to trustAs. + * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedHtml + * $sce.getTrustedHtml(value)} to obtain the original value. (privileged directives + * only accept expressions that are either literal constants or are the + * return value of {@link ng.$sce#trustAs $sce.trustAs}.) + */ + + /** + * @ngdoc method + * @name $sce#trustAsUrl + * + * @description + * Shorthand method. `$sce.trustAsUrl(value)` → + * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.URL, value)`} + * + * @param {*} value The value to trustAs. + * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedUrl + * $sce.getTrustedUrl(value)} to obtain the original value. (privileged directives + * only accept expressions that are either literal constants or are the + * return value of {@link ng.$sce#trustAs $sce.trustAs}.) + */ + + /** + * @ngdoc method + * @name $sce#trustAsResourceUrl + * + * @description + * Shorthand method. `$sce.trustAsResourceUrl(value)` → + * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.RESOURCE_URL, value)`} + * + * @param {*} value The value to trustAs. + * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedResourceUrl + * $sce.getTrustedResourceUrl(value)} to obtain the original value. (privileged directives + * only accept expressions that are either literal constants or are the return + * value of {@link ng.$sce#trustAs $sce.trustAs}.) + */ + + /** + * @ngdoc method + * @name $sce#trustAsJs + * + * @description + * Shorthand method. `$sce.trustAsJs(value)` → + * {@link ng.$sceDelegate#trustAs `$sceDelegate.trustAs($sce.JS, value)`} + * + * @param {*} value The value to trustAs. + * @returns {*} An object that can be passed to {@link ng.$sce#getTrustedJs + * $sce.getTrustedJs(value)} to obtain the original value. (privileged directives + * only accept expressions that are either literal constants or are the + * return value of {@link ng.$sce#trustAs $sce.trustAs}.) + */ + + /** + * @ngdoc method + * @name $sce#getTrusted + * + * @description + * Delegates to {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted`}. As such, + * takes the result of a {@link ng.$sce#trustAs `$sce.trustAs`}() call and returns the + * originally supplied value if the queried context type is a supertype of the created type. + * If this condition isn't satisfied, throws an exception. + * + * @param {string} type The kind of context in which this value is to be used. + * @param {*} maybeTrusted The result of a prior {@link ng.$sce#trustAs `$sce.trustAs`} + * call. + * @returns {*} The value the was originally provided to + * {@link ng.$sce#trustAs `$sce.trustAs`} if valid in this context. + * Otherwise, throws an exception. + */ + + /** + * @ngdoc method + * @name $sce#getTrustedHtml + * + * @description + * Shorthand method. `$sce.getTrustedHtml(value)` → + * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.HTML, value)`} + * + * @param {*} value The value to pass to `$sce.getTrusted`. + * @returns {*} The return value of `$sce.getTrusted($sce.HTML, value)` + */ + + /** + * @ngdoc method + * @name $sce#getTrustedCss + * + * @description + * Shorthand method. `$sce.getTrustedCss(value)` → + * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.CSS, value)`} + * + * @param {*} value The value to pass to `$sce.getTrusted`. + * @returns {*} The return value of `$sce.getTrusted($sce.CSS, value)` + */ + + /** + * @ngdoc method + * @name $sce#getTrustedUrl + * + * @description + * Shorthand method. `$sce.getTrustedUrl(value)` → + * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.URL, value)`} + * + * @param {*} value The value to pass to `$sce.getTrusted`. + * @returns {*} The return value of `$sce.getTrusted($sce.URL, value)` + */ + + /** + * @ngdoc method + * @name $sce#getTrustedResourceUrl + * + * @description + * Shorthand method. `$sce.getTrustedResourceUrl(value)` → + * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.RESOURCE_URL, value)`} + * + * @param {*} value The value to pass to `$sceDelegate.getTrusted`. + * @returns {*} The return value of `$sce.getTrusted($sce.RESOURCE_URL, value)` + */ + + /** + * @ngdoc method + * @name $sce#getTrustedJs + * + * @description + * Shorthand method. `$sce.getTrustedJs(value)` → + * {@link ng.$sceDelegate#getTrusted `$sceDelegate.getTrusted($sce.JS, value)`} + * + * @param {*} value The value to pass to `$sce.getTrusted`. + * @returns {*} The return value of `$sce.getTrusted($sce.JS, value)` + */ + + /** + * @ngdoc method + * @name $sce#parseAsHtml + * + * @description + * Shorthand method. `$sce.parseAsHtml(expression string)` → + * {@link ng.$sce#parseAs `$sce.parseAs($sce.HTML, value)`} + * + * @param {string} expression String expression to compile. + * @returns {function(context, locals)} a function which represents the compiled expression: + * + * * `context` – `{object}` – an object against which any expressions embedded in the strings + * are evaluated against (typically a scope object). + * * `locals` – `{object=}` – local variables context object, useful for overriding values in + * `context`. + */ + + /** + * @ngdoc method + * @name $sce#parseAsCss + * + * @description + * Shorthand method. `$sce.parseAsCss(value)` → + * {@link ng.$sce#parseAs `$sce.parseAs($sce.CSS, value)`} + * + * @param {string} expression String expression to compile. + * @returns {function(context, locals)} a function which represents the compiled expression: + * + * * `context` – `{object}` – an object against which any expressions embedded in the strings + * are evaluated against (typically a scope object). + * * `locals` – `{object=}` – local variables context object, useful for overriding values in + * `context`. + */ + + /** + * @ngdoc method + * @name $sce#parseAsUrl + * + * @description + * Shorthand method. `$sce.parseAsUrl(value)` → + * {@link ng.$sce#parseAs `$sce.parseAs($sce.URL, value)`} + * + * @param {string} expression String expression to compile. + * @returns {function(context, locals)} a function which represents the compiled expression: + * + * * `context` – `{object}` – an object against which any expressions embedded in the strings + * are evaluated against (typically a scope object). + * * `locals` – `{object=}` – local variables context object, useful for overriding values in + * `context`. + */ + + /** + * @ngdoc method + * @name $sce#parseAsResourceUrl + * + * @description + * Shorthand method. `$sce.parseAsResourceUrl(value)` → + * {@link ng.$sce#parseAs `$sce.parseAs($sce.RESOURCE_URL, value)`} + * + * @param {string} expression String expression to compile. + * @returns {function(context, locals)} a function which represents the compiled expression: + * + * * `context` – `{object}` – an object against which any expressions embedded in the strings + * are evaluated against (typically a scope object). + * * `locals` – `{object=}` – local variables context object, useful for overriding values in + * `context`. + */ + + /** + * @ngdoc method + * @name $sce#parseAsJs + * + * @description + * Shorthand method. `$sce.parseAsJs(value)` → + * {@link ng.$sce#parseAs `$sce.parseAs($sce.JS, value)`} + * + * @param {string} expression String expression to compile. + * @returns {function(context, locals)} a function which represents the compiled expression: + * + * * `context` – `{object}` – an object against which any expressions embedded in the strings + * are evaluated against (typically a scope object). + * * `locals` – `{object=}` – local variables context object, useful for overriding values in + * `context`. + */ + + // Shorthand delegations. + var parse = sce.parseAs, + getTrusted = sce.getTrusted, + trustAs = sce.trustAs; + + forEach(SCE_CONTEXTS, function(enumValue, name) { + var lName = lowercase(name); + sce[camelCase("parse_as_" + lName)] = function(expr) { + return parse(enumValue, expr); + }; + sce[camelCase("get_trusted_" + lName)] = function(value) { + return getTrusted(enumValue, value); + }; + sce[camelCase("trust_as_" + lName)] = function(value) { + return trustAs(enumValue, value); + }; + }); + + return sce; + }]; +} + +/** + * !!! This is an undocumented "private" service !!! + * + * @name $sniffer + * @requires $window + * @requires $document + * + * @property {boolean} history Does the browser support html5 history api ? + * @property {boolean} transitions Does the browser support CSS transition events ? + * @property {boolean} animations Does the browser support CSS animation events ? + * + * @description + * This is very simple implementation of testing browser's features. + */ +function $SnifferProvider() { + this.$get = ['$window', '$document', function($window, $document) { + var eventSupport = {}, + // Chrome Packaged Apps are not allowed to access `history.pushState`. They can be detected by + // the presence of `chrome.app.runtime` (see https://developer.chrome.com/apps/api_index) + isChromePackagedApp = $window.chrome && $window.chrome.app && $window.chrome.app.runtime, + hasHistoryPushState = !isChromePackagedApp && $window.history && $window.history.pushState, + android = + toInt((/android (\d+)/.exec(lowercase(($window.navigator || {}).userAgent)) || [])[1]), + boxee = /Boxee/i.test(($window.navigator || {}).userAgent), + document = $document[0] || {}, + vendorPrefix, + vendorRegex = /^(Moz|webkit|ms)(?=[A-Z])/, + bodyStyle = document.body && document.body.style, + transitions = false, + animations = false, + match; + + if (bodyStyle) { + for (var prop in bodyStyle) { + if (match = vendorRegex.exec(prop)) { + vendorPrefix = match[0]; + vendorPrefix = vendorPrefix.substr(0, 1).toUpperCase() + vendorPrefix.substr(1); + break; + } + } + + if (!vendorPrefix) { + vendorPrefix = ('WebkitOpacity' in bodyStyle) && 'webkit'; + } + + transitions = !!(('transition' in bodyStyle) || (vendorPrefix + 'Transition' in bodyStyle)); + animations = !!(('animation' in bodyStyle) || (vendorPrefix + 'Animation' in bodyStyle)); + + if (android && (!transitions || !animations)) { + transitions = isString(bodyStyle.webkitTransition); + animations = isString(bodyStyle.webkitAnimation); + } + } + + + return { + // Android has history.pushState, but it does not update location correctly + // so let's not use the history API at all. + // http://code.google.com/p/android/issues/detail?id=17471 + // https://github.com/angular/angular.js/issues/904 + + // older webkit browser (533.9) on Boxee box has exactly the same problem as Android has + // so let's not use the history API also + // We are purposefully using `!(android < 4)` to cover the case when `android` is undefined + // jshint -W018 + history: !!(hasHistoryPushState && !(android < 4) && !boxee), + // jshint +W018 + hasEvent: function(event) { + // IE9 implements 'input' event it's so fubared that we rather pretend that it doesn't have + // it. In particular the event is not fired when backspace or delete key are pressed or + // when cut operation is performed. + // IE10+ implements 'input' event but it erroneously fires under various situations, + // e.g. when placeholder changes, or a form is focused. + if (event === 'input' && msie <= 11) return false; + + if (isUndefined(eventSupport[event])) { + var divElm = document.createElement('div'); + eventSupport[event] = 'on' + event in divElm; + } + + return eventSupport[event]; + }, + csp: csp(), + vendorPrefix: vendorPrefix, + transitions: transitions, + animations: animations, + android: android + }; + }]; +} + +var $templateRequestMinErr = minErr('$compile'); + +/** + * @ngdoc provider + * @name $templateRequestProvider + * @description + * Used to configure the options passed to the {@link $http} service when making a template request. + * + * For example, it can be used for specifying the "Accept" header that is sent to the server, when + * requesting a template. + */ +function $TemplateRequestProvider() { + + var httpOptions; + + /** + * @ngdoc method + * @name $templateRequestProvider#httpOptions + * @description + * The options to be passed to the {@link $http} service when making the request. + * You can use this to override options such as the "Accept" header for template requests. + * + * The {@link $templateRequest} will set the `cache` and the `transformResponse` properties of the + * options if not overridden here. + * + * @param {string=} value new value for the {@link $http} options. + * @returns {string|self} Returns the {@link $http} options when used as getter and self if used as setter. + */ + this.httpOptions = function(val) { + if (val) { + httpOptions = val; + return this; + } + return httpOptions; + }; + + /** + * @ngdoc service + * @name $templateRequest + * + * @description + * The `$templateRequest` service runs security checks then downloads the provided template using + * `$http` and, upon success, stores the contents inside of `$templateCache`. If the HTTP request + * fails or the response data of the HTTP request is empty, a `$compile` error will be thrown (the + * exception can be thwarted by setting the 2nd parameter of the function to true). Note that the + * contents of `$templateCache` are trusted, so the call to `$sce.getTrustedUrl(tpl)` is omitted + * when `tpl` is of type string and `$templateCache` has the matching entry. + * + * If you want to pass custom options to the `$http` service, such as setting the Accept header you + * can configure this via {@link $templateRequestProvider#httpOptions}. + * + * @param {string|TrustedResourceUrl} tpl The HTTP request template URL + * @param {boolean=} ignoreRequestError Whether or not to ignore the exception when the request fails or the template is empty + * + * @return {Promise} a promise for the HTTP response data of the given URL. + * + * @property {number} totalPendingRequests total amount of pending template requests being downloaded. + */ + this.$get = ['$templateCache', '$http', '$q', '$sce', function($templateCache, $http, $q, $sce) { + + function handleRequestFn(tpl, ignoreRequestError) { + handleRequestFn.totalPendingRequests++; + + // We consider the template cache holds only trusted templates, so + // there's no need to go through whitelisting again for keys that already + // are included in there. This also makes Angular accept any script + // directive, no matter its name. However, we still need to unwrap trusted + // types. + if (!isString(tpl) || !$templateCache.get(tpl)) { + tpl = $sce.getTrustedResourceUrl(tpl); + } + + var transformResponse = $http.defaults && $http.defaults.transformResponse; + + if (isArray(transformResponse)) { + transformResponse = transformResponse.filter(function(transformer) { + return transformer !== defaultHttpResponseTransform; + }); + } else if (transformResponse === defaultHttpResponseTransform) { + transformResponse = null; + } + + return $http.get(tpl, extend({ + cache: $templateCache, + transformResponse: transformResponse + }, httpOptions)) + ['finally'](function() { + handleRequestFn.totalPendingRequests--; + }) + .then(function(response) { + $templateCache.put(tpl, response.data); + return response.data; + }, handleError); + + function handleError(resp) { + if (!ignoreRequestError) { + throw $templateRequestMinErr('tpload', 'Failed to load template: {0} (HTTP status: {1} {2})', + tpl, resp.status, resp.statusText); + } + return $q.reject(resp); + } + } + + handleRequestFn.totalPendingRequests = 0; + + return handleRequestFn; + }]; +} + +function $$TestabilityProvider() { + this.$get = ['$rootScope', '$browser', '$location', + function($rootScope, $browser, $location) { + + /** + * @name $testability + * + * @description + * The private $$testability service provides a collection of methods for use when debugging + * or by automated test and debugging tools. + */ + var testability = {}; + + /** + * @name $$testability#findBindings + * + * @description + * Returns an array of elements that are bound (via ng-bind or {{}}) + * to expressions matching the input. + * + * @param {Element} element The element root to search from. + * @param {string} expression The binding expression to match. + * @param {boolean} opt_exactMatch If true, only returns exact matches + * for the expression. Filters and whitespace are ignored. + */ + testability.findBindings = function(element, expression, opt_exactMatch) { + var bindings = element.getElementsByClassName('ng-binding'); + var matches = []; + forEach(bindings, function(binding) { + var dataBinding = angular.element(binding).data('$binding'); + if (dataBinding) { + forEach(dataBinding, function(bindingName) { + if (opt_exactMatch) { + var matcher = new RegExp('(^|\\s)' + escapeForRegexp(expression) + '(\\s|\\||$)'); + if (matcher.test(bindingName)) { + matches.push(binding); + } + } else { + if (bindingName.indexOf(expression) != -1) { + matches.push(binding); + } + } + }); + } + }); + return matches; + }; + + /** + * @name $$testability#findModels + * + * @description + * Returns an array of elements that are two-way found via ng-model to + * expressions matching the input. + * + * @param {Element} element The element root to search from. + * @param {string} expression The model expression to match. + * @param {boolean} opt_exactMatch If true, only returns exact matches + * for the expression. + */ + testability.findModels = function(element, expression, opt_exactMatch) { + var prefixes = ['ng-', 'data-ng-', 'ng\\:']; + for (var p = 0; p < prefixes.length; ++p) { + var attributeEquals = opt_exactMatch ? '=' : '*='; + var selector = '[' + prefixes[p] + 'model' + attributeEquals + '"' + expression + '"]'; + var elements = element.querySelectorAll(selector); + if (elements.length) { + return elements; + } + } + }; + + /** + * @name $$testability#getLocation + * + * @description + * Shortcut for getting the location in a browser agnostic way. Returns + * the path, search, and hash. (e.g. /path?a=b#hash) + */ + testability.getLocation = function() { + return $location.url(); + }; + + /** + * @name $$testability#setLocation + * + * @description + * Shortcut for navigating to a location without doing a full page reload. + * + * @param {string} url The location url (path, search and hash, + * e.g. /path?a=b#hash) to go to. + */ + testability.setLocation = function(url) { + if (url !== $location.url()) { + $location.url(url); + $rootScope.$digest(); + } + }; + + /** + * @name $$testability#whenStable + * + * @description + * Calls the callback when $timeout and $http requests are completed. + * + * @param {function} callback + */ + testability.whenStable = function(callback) { + $browser.notifyWhenNoOutstandingRequests(callback); + }; + + return testability; + }]; +} + +function $TimeoutProvider() { + this.$get = ['$rootScope', '$browser', '$q', '$$q', '$exceptionHandler', + function($rootScope, $browser, $q, $$q, $exceptionHandler) { + + var deferreds = {}; + + + /** + * @ngdoc service + * @name $timeout + * + * @description + * Angular's wrapper for `window.setTimeout`. The `fn` function is wrapped into a try/catch + * block and delegates any exceptions to + * {@link ng.$exceptionHandler $exceptionHandler} service. + * + * The return value of calling `$timeout` is a promise, which will be resolved when + * the delay has passed and the timeout function, if provided, is executed. + * + * To cancel a timeout request, call `$timeout.cancel(promise)`. + * + * In tests you can use {@link ngMock.$timeout `$timeout.flush()`} to + * synchronously flush the queue of deferred functions. + * + * If you only want a promise that will be resolved after some specified delay + * then you can call `$timeout` without the `fn` function. + * + * @param {function()=} fn A function, whose execution should be delayed. + * @param {number=} [delay=0] Delay in milliseconds. + * @param {boolean=} [invokeApply=true] If set to `false` skips model dirty checking, otherwise + * will invoke `fn` within the {@link ng.$rootScope.Scope#$apply $apply} block. + * @param {...*=} Pass additional parameters to the executed function. + * @returns {Promise} Promise that will be resolved when the timeout is reached. The promise + * will be resolved with the return value of the `fn` function. + * + */ + function timeout(fn, delay, invokeApply) { + if (!isFunction(fn)) { + invokeApply = delay; + delay = fn; + fn = noop; + } + + var args = sliceArgs(arguments, 3), + skipApply = (isDefined(invokeApply) && !invokeApply), + deferred = (skipApply ? $$q : $q).defer(), + promise = deferred.promise, + timeoutId; + + timeoutId = $browser.defer(function() { + try { + deferred.resolve(fn.apply(null, args)); + } catch (e) { + deferred.reject(e); + $exceptionHandler(e); + } + finally { + delete deferreds[promise.$$timeoutId]; + } + + if (!skipApply) $rootScope.$apply(); + }, delay); + + promise.$$timeoutId = timeoutId; + deferreds[timeoutId] = deferred; + + return promise; + } + + + /** + * @ngdoc method + * @name $timeout#cancel + * + * @description + * Cancels a task associated with the `promise`. As a result of this, the promise will be + * resolved with a rejection. + * + * @param {Promise=} promise Promise returned by the `$timeout` function. + * @returns {boolean} Returns `true` if the task hasn't executed yet and was successfully + * canceled. + */ + timeout.cancel = function(promise) { + if (promise && promise.$$timeoutId in deferreds) { + deferreds[promise.$$timeoutId].reject('canceled'); + delete deferreds[promise.$$timeoutId]; + return $browser.defer.cancel(promise.$$timeoutId); + } + return false; + }; + + return timeout; + }]; +} + +// NOTE: The usage of window and document instead of $window and $document here is +// deliberate. This service depends on the specific behavior of anchor nodes created by the +// browser (resolving and parsing URLs) that is unlikely to be provided by mock objects and +// cause us to break tests. In addition, when the browser resolves a URL for XHR, it +// doesn't know about mocked locations and resolves URLs to the real document - which is +// exactly the behavior needed here. There is little value is mocking these out for this +// service. +var urlParsingNode = document.createElement("a"); +var originUrl = urlResolve(window.location.href); + + +/** + * + * Implementation Notes for non-IE browsers + * ---------------------------------------- + * Assigning a URL to the href property of an anchor DOM node, even one attached to the DOM, + * results both in the normalizing and parsing of the URL. Normalizing means that a relative + * URL will be resolved into an absolute URL in the context of the application document. + * Parsing means that the anchor node's host, hostname, protocol, port, pathname and related + * properties are all populated to reflect the normalized URL. This approach has wide + * compatibility - Safari 1+, Mozilla 1+, Opera 7+,e etc. See + * http://www.aptana.com/reference/html/api/HTMLAnchorElement.html + * + * Implementation Notes for IE + * --------------------------- + * IE <= 10 normalizes the URL when assigned to the anchor node similar to the other + * browsers. However, the parsed components will not be set if the URL assigned did not specify + * them. (e.g. if you assign a.href = "foo", then a.protocol, a.host, etc. will be empty.) We + * work around that by performing the parsing in a 2nd step by taking a previously normalized + * URL (e.g. by assigning to a.href) and assigning it a.href again. This correctly populates the + * properties such as protocol, hostname, port, etc. + * + * References: + * http://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement + * http://www.aptana.com/reference/html/api/HTMLAnchorElement.html + * http://url.spec.whatwg.org/#urlutils + * https://github.com/angular/angular.js/pull/2902 + * http://james.padolsey.com/javascript/parsing-urls-with-the-dom/ + * + * @kind function + * @param {string} url The URL to be parsed. + * @description Normalizes and parses a URL. + * @returns {object} Returns the normalized URL as a dictionary. + * + * | member name | Description | + * |---------------|----------------| + * | href | A normalized version of the provided URL if it was not an absolute URL | + * | protocol | The protocol including the trailing colon | + * | host | The host and port (if the port is non-default) of the normalizedUrl | + * | search | The search params, minus the question mark | + * | hash | The hash string, minus the hash symbol + * | hostname | The hostname + * | port | The port, without ":" + * | pathname | The pathname, beginning with "/" + * + */ +function urlResolve(url) { + var href = url; + + if (msie) { + // Normalize before parse. Refer Implementation Notes on why this is + // done in two steps on IE. + urlParsingNode.setAttribute("href", href); + href = urlParsingNode.href; + } + + urlParsingNode.setAttribute('href', href); + + // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils + return { + href: urlParsingNode.href, + protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', + host: urlParsingNode.host, + search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', + hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', + hostname: urlParsingNode.hostname, + port: urlParsingNode.port, + pathname: (urlParsingNode.pathname.charAt(0) === '/') + ? urlParsingNode.pathname + : '/' + urlParsingNode.pathname + }; +} + +/** + * Parse a request URL and determine whether this is a same-origin request as the application document. + * + * @param {string|object} requestUrl The url of the request as a string that will be resolved + * or a parsed URL object. + * @returns {boolean} Whether the request is for the same origin as the application document. + */ +function urlIsSameOrigin(requestUrl) { + var parsed = (isString(requestUrl)) ? urlResolve(requestUrl) : requestUrl; + return (parsed.protocol === originUrl.protocol && + parsed.host === originUrl.host); +} + +/** + * @ngdoc service + * @name $window + * + * @description + * A reference to the browser's `window` object. While `window` + * is globally available in JavaScript, it causes testability problems, because + * it is a global variable. In angular we always refer to it through the + * `$window` service, so it may be overridden, removed or mocked for testing. + * + * Expressions, like the one defined for the `ngClick` directive in the example + * below, are evaluated with respect to the current scope. Therefore, there is + * no risk of inadvertently coding in a dependency on a global value in such an + * expression. + * + * @example + + + +
    + + +
    +
    + + it('should display the greeting in the input box', function() { + element(by.model('greeting')).sendKeys('Hello, E2E Tests'); + // If we click the button it will block the test runner + // element(':button').click(); + }); + +
    + */ +function $WindowProvider() { + this.$get = valueFn(window); +} + +/** + * @name $$cookieReader + * @requires $document + * + * @description + * This is a private service for reading cookies used by $http and ngCookies + * + * @return {Object} a key/value map of the current cookies + */ +function $$CookieReader($document) { + var rawDocument = $document[0] || {}; + var lastCookies = {}; + var lastCookieString = ''; + + function safeDecodeURIComponent(str) { + try { + return decodeURIComponent(str); + } catch (e) { + return str; + } + } + + return function() { + var cookieArray, cookie, i, index, name; + var currentCookieString = rawDocument.cookie || ''; + + if (currentCookieString !== lastCookieString) { + lastCookieString = currentCookieString; + cookieArray = lastCookieString.split('; '); + lastCookies = {}; + + for (i = 0; i < cookieArray.length; i++) { + cookie = cookieArray[i]; + index = cookie.indexOf('='); + if (index > 0) { //ignore nameless cookies + name = safeDecodeURIComponent(cookie.substring(0, index)); + // the first value that is seen for a cookie is the most + // specific one. values for the same cookie name that + // follow are for less specific paths. + if (isUndefined(lastCookies[name])) { + lastCookies[name] = safeDecodeURIComponent(cookie.substring(index + 1)); + } + } + } + } + return lastCookies; + }; +} + +$$CookieReader.$inject = ['$document']; + +function $$CookieReaderProvider() { + this.$get = $$CookieReader; +} + +/* global currencyFilter: true, + dateFilter: true, + filterFilter: true, + jsonFilter: true, + limitToFilter: true, + lowercaseFilter: true, + numberFilter: true, + orderByFilter: true, + uppercaseFilter: true, + */ + +/** + * @ngdoc provider + * @name $filterProvider + * @description + * + * Filters are just functions which transform input to an output. However filters need to be + * Dependency Injected. To achieve this a filter definition consists of a factory function which is + * annotated with dependencies and is responsible for creating a filter function. + * + *
    + * **Note:** Filter names must be valid angular {@link expression} identifiers, such as `uppercase` or `orderBy`. + * Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace + * your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores + * (`myapp_subsection_filterx`). + *
    + * + * ```js + * // Filter registration + * function MyModule($provide, $filterProvider) { + * // create a service to demonstrate injection (not always needed) + * $provide.value('greet', function(name){ + * return 'Hello ' + name + '!'; + * }); + * + * // register a filter factory which uses the + * // greet service to demonstrate DI. + * $filterProvider.register('greet', function(greet){ + * // return the filter function which uses the greet service + * // to generate salutation + * return function(text) { + * // filters need to be forgiving so check input validity + * return text && greet(text) || text; + * }; + * }); + * } + * ``` + * + * The filter function is registered with the `$injector` under the filter name suffix with + * `Filter`. + * + * ```js + * it('should be the same instance', inject( + * function($filterProvider) { + * $filterProvider.register('reverse', function(){ + * return ...; + * }); + * }, + * function($filter, reverseFilter) { + * expect($filter('reverse')).toBe(reverseFilter); + * }); + * ``` + * + * + * For more information about how angular filters work, and how to create your own filters, see + * {@link guide/filter Filters} in the Angular Developer Guide. + */ + +/** + * @ngdoc service + * @name $filter + * @kind function + * @description + * Filters are used for formatting data displayed to the user. + * + * The general syntax in templates is as follows: + * + * {{ expression [| filter_name[:parameter_value] ... ] }} + * + * @param {String} name Name of the filter function to retrieve + * @return {Function} the filter function + * @example + + +
    +

    {{ originalText }}

    +

    {{ filteredText }}

    +
    +
    + + + angular.module('filterExample', []) + .controller('MainCtrl', function($scope, $filter) { + $scope.originalText = 'hello'; + $scope.filteredText = $filter('uppercase')($scope.originalText); + }); + +
    + */ +$FilterProvider.$inject = ['$provide']; +function $FilterProvider($provide) { + var suffix = 'Filter'; + + /** + * @ngdoc method + * @name $filterProvider#register + * @param {string|Object} name Name of the filter function, or an object map of filters where + * the keys are the filter names and the values are the filter factories. + * + *
    + * **Note:** Filter names must be valid angular {@link expression} identifiers, such as `uppercase` or `orderBy`. + * Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace + * your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores + * (`myapp_subsection_filterx`). + *
    + * @param {Function} factory If the first argument was a string, a factory function for the filter to be registered. + * @returns {Object} Registered filter instance, or if a map of filters was provided then a map + * of the registered filter instances. + */ + function register(name, factory) { + if (isObject(name)) { + var filters = {}; + forEach(name, function(filter, key) { + filters[key] = register(key, filter); + }); + return filters; + } else { + return $provide.factory(name + suffix, factory); + } + } + this.register = register; + + this.$get = ['$injector', function($injector) { + return function(name) { + return $injector.get(name + suffix); + }; + }]; + + //////////////////////////////////////// + + /* global + currencyFilter: false, + dateFilter: false, + filterFilter: false, + jsonFilter: false, + limitToFilter: false, + lowercaseFilter: false, + numberFilter: false, + orderByFilter: false, + uppercaseFilter: false, + */ + + register('currency', currencyFilter); + register('date', dateFilter); + register('filter', filterFilter); + register('json', jsonFilter); + register('limitTo', limitToFilter); + register('lowercase', lowercaseFilter); + register('number', numberFilter); + register('orderBy', orderByFilter); + register('uppercase', uppercaseFilter); +} + +/** + * @ngdoc filter + * @name filter + * @kind function + * + * @description + * Selects a subset of items from `array` and returns it as a new array. + * + * @param {Array} array The source array. + * @param {string|Object|function()} expression The predicate to be used for selecting items from + * `array`. + * + * Can be one of: + * + * - `string`: The string is used for matching against the contents of the `array`. All strings or + * objects with string properties in `array` that match this string will be returned. This also + * applies to nested object properties. + * The predicate can be negated by prefixing the string with `!`. + * + * - `Object`: A pattern object can be used to filter specific properties on objects contained + * by `array`. For example `{name:"M", phone:"1"}` predicate will return an array of items + * which have property `name` containing "M" and property `phone` containing "1". A special + * property name `$` can be used (as in `{$:"text"}`) to accept a match against any + * property of the object or its nested object properties. That's equivalent to the simple + * substring match with a `string` as described above. The predicate can be negated by prefixing + * the string with `!`. + * For example `{name: "!M"}` predicate will return an array of items which have property `name` + * not containing "M". + * + * Note that a named property will match properties on the same level only, while the special + * `$` property will match properties on the same level or deeper. E.g. an array item like + * `{name: {first: 'John', last: 'Doe'}}` will **not** be matched by `{name: 'John'}`, but + * **will** be matched by `{$: 'John'}`. + * + * - `function(value, index, array)`: A predicate function can be used to write arbitrary filters. + * The function is called for each element of the array, with the element, its index, and + * the entire array itself as arguments. + * + * The final result is an array of those elements that the predicate returned true for. + * + * @param {function(actual, expected)|true|undefined} comparator Comparator which is used in + * determining if the expected value (from the filter expression) and actual value (from + * the object in the array) should be considered a match. + * + * Can be one of: + * + * - `function(actual, expected)`: + * The function will be given the object value and the predicate value to compare and + * should return true if both values should be considered equal. + * + * - `true`: A shorthand for `function(actual, expected) { return angular.equals(actual, expected)}`. + * This is essentially strict comparison of expected and actual. + * + * - `false|undefined`: A short hand for a function which will look for a substring match in case + * insensitive way. + * + * Primitive values are converted to strings. Objects are not compared against primitives, + * unless they have a custom `toString` method (e.g. `Date` objects). + * + * @example + + +
    + + + + + + + + +
    NamePhone
    {{friend.name}}{{friend.phone}}
    +
    +
    +
    +
    +
    + + + + + + +
    NamePhone
    {{friendObj.name}}{{friendObj.phone}}
    +
    + + var expectFriendNames = function(expectedNames, key) { + element.all(by.repeater(key + ' in friends').column(key + '.name')).then(function(arr) { + arr.forEach(function(wd, i) { + expect(wd.getText()).toMatch(expectedNames[i]); + }); + }); + }; + + it('should search across all fields when filtering with a string', function() { + var searchText = element(by.model('searchText')); + searchText.clear(); + searchText.sendKeys('m'); + expectFriendNames(['Mary', 'Mike', 'Adam'], 'friend'); + + searchText.clear(); + searchText.sendKeys('76'); + expectFriendNames(['John', 'Julie'], 'friend'); + }); + + it('should search in specific fields when filtering with a predicate object', function() { + var searchAny = element(by.model('search.$')); + searchAny.clear(); + searchAny.sendKeys('i'); + expectFriendNames(['Mary', 'Mike', 'Julie', 'Juliette'], 'friendObj'); + }); + it('should use a equal comparison when comparator is true', function() { + var searchName = element(by.model('search.name')); + var strict = element(by.model('strict')); + searchName.clear(); + searchName.sendKeys('Julie'); + strict.click(); + expectFriendNames(['Julie'], 'friendObj'); + }); + +
    + */ +function filterFilter() { + return function(array, expression, comparator) { + if (!isArrayLike(array)) { + if (array == null) { + return array; + } else { + throw minErr('filter')('notarray', 'Expected array but received: {0}', array); + } + } + + var expressionType = getTypeForFilter(expression); + var predicateFn; + var matchAgainstAnyProp; + + switch (expressionType) { + case 'function': + predicateFn = expression; + break; + case 'boolean': + case 'null': + case 'number': + case 'string': + matchAgainstAnyProp = true; + //jshint -W086 + case 'object': + //jshint +W086 + predicateFn = createPredicateFn(expression, comparator, matchAgainstAnyProp); + break; + default: + return array; + } + + return Array.prototype.filter.call(array, predicateFn); + }; +} + +// Helper functions for `filterFilter` +function createPredicateFn(expression, comparator, matchAgainstAnyProp) { + var shouldMatchPrimitives = isObject(expression) && ('$' in expression); + var predicateFn; + + if (comparator === true) { + comparator = equals; + } else if (!isFunction(comparator)) { + comparator = function(actual, expected) { + if (isUndefined(actual)) { + // No substring matching against `undefined` + return false; + } + if ((actual === null) || (expected === null)) { + // No substring matching against `null`; only match against `null` + return actual === expected; + } + if (isObject(expected) || (isObject(actual) && !hasCustomToString(actual))) { + // Should not compare primitives against objects, unless they have custom `toString` method + return false; + } + + actual = lowercase('' + actual); + expected = lowercase('' + expected); + return actual.indexOf(expected) !== -1; + }; + } + + predicateFn = function(item) { + if (shouldMatchPrimitives && !isObject(item)) { + return deepCompare(item, expression.$, comparator, false); + } + return deepCompare(item, expression, comparator, matchAgainstAnyProp); + }; + + return predicateFn; +} + +function deepCompare(actual, expected, comparator, matchAgainstAnyProp, dontMatchWholeObject) { + var actualType = getTypeForFilter(actual); + var expectedType = getTypeForFilter(expected); + + if ((expectedType === 'string') && (expected.charAt(0) === '!')) { + return !deepCompare(actual, expected.substring(1), comparator, matchAgainstAnyProp); + } else if (isArray(actual)) { + // In case `actual` is an array, consider it a match + // if ANY of it's items matches `expected` + return actual.some(function(item) { + return deepCompare(item, expected, comparator, matchAgainstAnyProp); + }); + } + + switch (actualType) { + case 'object': + var key; + if (matchAgainstAnyProp) { + for (key in actual) { + if ((key.charAt(0) !== '$') && deepCompare(actual[key], expected, comparator, true)) { + return true; + } + } + return dontMatchWholeObject ? false : deepCompare(actual, expected, comparator, false); + } else if (expectedType === 'object') { + for (key in expected) { + var expectedVal = expected[key]; + if (isFunction(expectedVal) || isUndefined(expectedVal)) { + continue; + } + + var matchAnyProperty = key === '$'; + var actualVal = matchAnyProperty ? actual : actual[key]; + if (!deepCompare(actualVal, expectedVal, comparator, matchAnyProperty, matchAnyProperty)) { + return false; + } + } + return true; + } else { + return comparator(actual, expected); + } + break; + case 'function': + return false; + default: + return comparator(actual, expected); + } +} + +// Used for easily differentiating between `null` and actual `object` +function getTypeForFilter(val) { + return (val === null) ? 'null' : typeof val; +} + +var MAX_DIGITS = 22; +var DECIMAL_SEP = '.'; +var ZERO_CHAR = '0'; + +/** + * @ngdoc filter + * @name currency + * @kind function + * + * @description + * Formats a number as a currency (ie $1,234.56). When no currency symbol is provided, default + * symbol for current locale is used. + * + * @param {number} amount Input to filter. + * @param {string=} symbol Currency symbol or identifier to be displayed. + * @param {number=} fractionSize Number of decimal places to round the amount to, defaults to default max fraction size for current locale + * @returns {string} Formatted number. + * + * + * @example + + + +
    +
    + default currency symbol ($): {{amount | currency}}
    + custom currency identifier (USD$): {{amount | currency:"USD$"}} + no fractions (0): {{amount | currency:"USD$":0}} +
    +
    + + it('should init with 1234.56', function() { + expect(element(by.id('currency-default')).getText()).toBe('$1,234.56'); + expect(element(by.id('currency-custom')).getText()).toBe('USD$1,234.56'); + expect(element(by.id('currency-no-fractions')).getText()).toBe('USD$1,235'); + }); + it('should update', function() { + if (browser.params.browser == 'safari') { + // Safari does not understand the minus key. See + // https://github.com/angular/protractor/issues/481 + return; + } + element(by.model('amount')).clear(); + element(by.model('amount')).sendKeys('-1234'); + expect(element(by.id('currency-default')).getText()).toBe('-$1,234.00'); + expect(element(by.id('currency-custom')).getText()).toBe('-USD$1,234.00'); + expect(element(by.id('currency-no-fractions')).getText()).toBe('-USD$1,234'); + }); + +
    + */ +currencyFilter.$inject = ['$locale']; +function currencyFilter($locale) { + var formats = $locale.NUMBER_FORMATS; + return function(amount, currencySymbol, fractionSize) { + if (isUndefined(currencySymbol)) { + currencySymbol = formats.CURRENCY_SYM; + } + + if (isUndefined(fractionSize)) { + fractionSize = formats.PATTERNS[1].maxFrac; + } + + // if null or undefined pass it through + return (amount == null) + ? amount + : formatNumber(amount, formats.PATTERNS[1], formats.GROUP_SEP, formats.DECIMAL_SEP, fractionSize). + replace(/\u00A4/g, currencySymbol); + }; +} + +/** + * @ngdoc filter + * @name number + * @kind function + * + * @description + * Formats a number as text. + * + * If the input is null or undefined, it will just be returned. + * If the input is infinite (Infinity or -Infinity), the Infinity symbol '∞' or '-∞' is returned, respectively. + * If the input is not a number an empty string is returned. + * + * + * @param {number|string} number Number to format. + * @param {(number|string)=} fractionSize Number of decimal places to round the number to. + * If this is not provided then the fraction size is computed from the current locale's number + * formatting pattern. In the case of the default locale, it will be 3. + * @returns {string} Number rounded to fractionSize and places a “,” after each third digit. + * + * @example + + + +
    +
    + Default formatting: {{val | number}}
    + No fractions: {{val | number:0}}
    + Negative number: {{-val | number:4}} +
    +
    + + it('should format numbers', function() { + expect(element(by.id('number-default')).getText()).toBe('1,234.568'); + expect(element(by.binding('val | number:0')).getText()).toBe('1,235'); + expect(element(by.binding('-val | number:4')).getText()).toBe('-1,234.5679'); + }); + + it('should update', function() { + element(by.model('val')).clear(); + element(by.model('val')).sendKeys('3374.333'); + expect(element(by.id('number-default')).getText()).toBe('3,374.333'); + expect(element(by.binding('val | number:0')).getText()).toBe('3,374'); + expect(element(by.binding('-val | number:4')).getText()).toBe('-3,374.3330'); + }); + +
    + */ +numberFilter.$inject = ['$locale']; +function numberFilter($locale) { + var formats = $locale.NUMBER_FORMATS; + return function(number, fractionSize) { + + // if null or undefined pass it through + return (number == null) + ? number + : formatNumber(number, formats.PATTERNS[0], formats.GROUP_SEP, formats.DECIMAL_SEP, + fractionSize); + }; +} + +/** + * Parse a number (as a string) into three components that can be used + * for formatting the number. + * + * (Significant bits of this parse algorithm came from https://github.com/MikeMcl/big.js/) + * + * @param {string} numStr The number to parse + * @return {object} An object describing this number, containing the following keys: + * - d : an array of digits containing leading zeros as necessary + * - i : the number of the digits in `d` that are to the left of the decimal point + * - e : the exponent for numbers that would need more than `MAX_DIGITS` digits in `d` + * + */ +function parse(numStr) { + var exponent = 0, digits, numberOfIntegerDigits; + var i, j, zeros; + + // Decimal point? + if ((numberOfIntegerDigits = numStr.indexOf(DECIMAL_SEP)) > -1) { + numStr = numStr.replace(DECIMAL_SEP, ''); + } + + // Exponential form? + if ((i = numStr.search(/e/i)) > 0) { + // Work out the exponent. + if (numberOfIntegerDigits < 0) numberOfIntegerDigits = i; + numberOfIntegerDigits += +numStr.slice(i + 1); + numStr = numStr.substring(0, i); + } else if (numberOfIntegerDigits < 0) { + // There was no decimal point or exponent so it is an integer. + numberOfIntegerDigits = numStr.length; + } + + // Count the number of leading zeros. + for (i = 0; numStr.charAt(i) == ZERO_CHAR; i++) {/* jshint noempty: false */} + + if (i == (zeros = numStr.length)) { + // The digits are all zero. + digits = [0]; + numberOfIntegerDigits = 1; + } else { + // Count the number of trailing zeros + zeros--; + while (numStr.charAt(zeros) == ZERO_CHAR) zeros--; + + // Trailing zeros are insignificant so ignore them + numberOfIntegerDigits -= i; + digits = []; + // Convert string to array of digits without leading/trailing zeros. + for (j = 0; i <= zeros; i++, j++) { + digits[j] = +numStr.charAt(i); + } + } + + // If the number overflows the maximum allowed digits then use an exponent. + if (numberOfIntegerDigits > MAX_DIGITS) { + digits = digits.splice(0, MAX_DIGITS - 1); + exponent = numberOfIntegerDigits - 1; + numberOfIntegerDigits = 1; + } + + return { d: digits, e: exponent, i: numberOfIntegerDigits }; +} + +/** + * Round the parsed number to the specified number of decimal places + * This function changed the parsedNumber in-place + */ +function roundNumber(parsedNumber, fractionSize, minFrac, maxFrac) { + var digits = parsedNumber.d; + var fractionLen = digits.length - parsedNumber.i; + + // determine fractionSize if it is not specified; `+fractionSize` converts it to a number + fractionSize = (isUndefined(fractionSize)) ? Math.min(Math.max(minFrac, fractionLen), maxFrac) : +fractionSize; + + // The index of the digit to where rounding is to occur + var roundAt = fractionSize + parsedNumber.i; + var digit = digits[roundAt]; + + if (roundAt > 0) { + // Drop fractional digits beyond `roundAt` + digits.splice(Math.max(parsedNumber.i, roundAt)); + + // Set non-fractional digits beyond `roundAt` to 0 + for (var j = roundAt; j < digits.length; j++) { + digits[j] = 0; + } + } else { + // We rounded to zero so reset the parsedNumber + fractionLen = Math.max(0, fractionLen); + parsedNumber.i = 1; + digits.length = Math.max(1, roundAt = fractionSize + 1); + digits[0] = 0; + for (var i = 1; i < roundAt; i++) digits[i] = 0; + } + + if (digit >= 5) { + if (roundAt - 1 < 0) { + for (var k = 0; k > roundAt; k--) { + digits.unshift(0); + parsedNumber.i++; + } + digits.unshift(1); + parsedNumber.i++; + } else { + digits[roundAt - 1]++; + } + } + + // Pad out with zeros to get the required fraction length + for (; fractionLen < Math.max(0, fractionSize); fractionLen++) digits.push(0); + + + // Do any carrying, e.g. a digit was rounded up to 10 + var carry = digits.reduceRight(function(carry, d, i, digits) { + d = d + carry; + digits[i] = d % 10; + return Math.floor(d / 10); + }, 0); + if (carry) { + digits.unshift(carry); + parsedNumber.i++; + } +} + +/** + * Format a number into a string + * @param {number} number The number to format + * @param {{ + * minFrac, // the minimum number of digits required in the fraction part of the number + * maxFrac, // the maximum number of digits required in the fraction part of the number + * gSize, // number of digits in each group of separated digits + * lgSize, // number of digits in the last group of digits before the decimal separator + * negPre, // the string to go in front of a negative number (e.g. `-` or `(`)) + * posPre, // the string to go in front of a positive number + * negSuf, // the string to go after a negative number (e.g. `)`) + * posSuf // the string to go after a positive number + * }} pattern + * @param {string} groupSep The string to separate groups of number (e.g. `,`) + * @param {string} decimalSep The string to act as the decimal separator (e.g. `.`) + * @param {[type]} fractionSize The size of the fractional part of the number + * @return {string} The number formatted as a string + */ +function formatNumber(number, pattern, groupSep, decimalSep, fractionSize) { + + if (!(isString(number) || isNumber(number)) || isNaN(number)) return ''; + + var isInfinity = !isFinite(number); + var isZero = false; + var numStr = Math.abs(number) + '', + formattedText = '', + parsedNumber; + + if (isInfinity) { + formattedText = '\u221e'; + } else { + parsedNumber = parse(numStr); + + roundNumber(parsedNumber, fractionSize, pattern.minFrac, pattern.maxFrac); + + var digits = parsedNumber.d; + var integerLen = parsedNumber.i; + var exponent = parsedNumber.e; + var decimals = []; + isZero = digits.reduce(function(isZero, d) { return isZero && !d; }, true); + + // pad zeros for small numbers + while (integerLen < 0) { + digits.unshift(0); + integerLen++; + } + + // extract decimals digits + if (integerLen > 0) { + decimals = digits.splice(integerLen); + } else { + decimals = digits; + digits = [0]; + } + + // format the integer digits with grouping separators + var groups = []; + if (digits.length >= pattern.lgSize) { + groups.unshift(digits.splice(-pattern.lgSize).join('')); + } + while (digits.length > pattern.gSize) { + groups.unshift(digits.splice(-pattern.gSize).join('')); + } + if (digits.length) { + groups.unshift(digits.join('')); + } + formattedText = groups.join(groupSep); + + // append the decimal digits + if (decimals.length) { + formattedText += decimalSep + decimals.join(''); + } + + if (exponent) { + formattedText += 'e+' + exponent; + } + } + if (number < 0 && !isZero) { + return pattern.negPre + formattedText + pattern.negSuf; + } else { + return pattern.posPre + formattedText + pattern.posSuf; + } +} + +function padNumber(num, digits, trim, negWrap) { + var neg = ''; + if (num < 0 || (negWrap && num <= 0)) { + if (negWrap) { + num = -num + 1; + } else { + num = -num; + neg = '-'; + } + } + num = '' + num; + while (num.length < digits) num = ZERO_CHAR + num; + if (trim) { + num = num.substr(num.length - digits); + } + return neg + num; +} + + +function dateGetter(name, size, offset, trim, negWrap) { + offset = offset || 0; + return function(date) { + var value = date['get' + name](); + if (offset > 0 || value > -offset) { + value += offset; + } + if (value === 0 && offset == -12) value = 12; + return padNumber(value, size, trim, negWrap); + }; +} + +function dateStrGetter(name, shortForm, standAlone) { + return function(date, formats) { + var value = date['get' + name](); + var propPrefix = (standAlone ? 'STANDALONE' : '') + (shortForm ? 'SHORT' : ''); + var get = uppercase(propPrefix + name); + + return formats[get][value]; + }; +} + +function timeZoneGetter(date, formats, offset) { + var zone = -1 * offset; + var paddedZone = (zone >= 0) ? "+" : ""; + + paddedZone += padNumber(Math[zone > 0 ? 'floor' : 'ceil'](zone / 60), 2) + + padNumber(Math.abs(zone % 60), 2); + + return paddedZone; +} + +function getFirstThursdayOfYear(year) { + // 0 = index of January + var dayOfWeekOnFirst = (new Date(year, 0, 1)).getDay(); + // 4 = index of Thursday (+1 to account for 1st = 5) + // 11 = index of *next* Thursday (+1 account for 1st = 12) + return new Date(year, 0, ((dayOfWeekOnFirst <= 4) ? 5 : 12) - dayOfWeekOnFirst); +} + +function getThursdayThisWeek(datetime) { + return new Date(datetime.getFullYear(), datetime.getMonth(), + // 4 = index of Thursday + datetime.getDate() + (4 - datetime.getDay())); +} + +function weekGetter(size) { + return function(date) { + var firstThurs = getFirstThursdayOfYear(date.getFullYear()), + thisThurs = getThursdayThisWeek(date); + + var diff = +thisThurs - +firstThurs, + result = 1 + Math.round(diff / 6.048e8); // 6.048e8 ms per week + + return padNumber(result, size); + }; +} + +function ampmGetter(date, formats) { + return date.getHours() < 12 ? formats.AMPMS[0] : formats.AMPMS[1]; +} + +function eraGetter(date, formats) { + return date.getFullYear() <= 0 ? formats.ERAS[0] : formats.ERAS[1]; +} + +function longEraGetter(date, formats) { + return date.getFullYear() <= 0 ? formats.ERANAMES[0] : formats.ERANAMES[1]; +} + +var DATE_FORMATS = { + yyyy: dateGetter('FullYear', 4, 0, false, true), + yy: dateGetter('FullYear', 2, 0, true, true), + y: dateGetter('FullYear', 1, 0, false, true), + MMMM: dateStrGetter('Month'), + MMM: dateStrGetter('Month', true), + MM: dateGetter('Month', 2, 1), + M: dateGetter('Month', 1, 1), + LLLL: dateStrGetter('Month', false, true), + dd: dateGetter('Date', 2), + d: dateGetter('Date', 1), + HH: dateGetter('Hours', 2), + H: dateGetter('Hours', 1), + hh: dateGetter('Hours', 2, -12), + h: dateGetter('Hours', 1, -12), + mm: dateGetter('Minutes', 2), + m: dateGetter('Minutes', 1), + ss: dateGetter('Seconds', 2), + s: dateGetter('Seconds', 1), + // while ISO 8601 requires fractions to be prefixed with `.` or `,` + // we can be just safely rely on using `sss` since we currently don't support single or two digit fractions + sss: dateGetter('Milliseconds', 3), + EEEE: dateStrGetter('Day'), + EEE: dateStrGetter('Day', true), + a: ampmGetter, + Z: timeZoneGetter, + ww: weekGetter(2), + w: weekGetter(1), + G: eraGetter, + GG: eraGetter, + GGG: eraGetter, + GGGG: longEraGetter +}; + +var DATE_FORMATS_SPLIT = /((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))(.*)/, + NUMBER_STRING = /^\-?\d+$/; + +/** + * @ngdoc filter + * @name date + * @kind function + * + * @description + * Formats `date` to a string based on the requested `format`. + * + * `format` string can be composed of the following elements: + * + * * `'yyyy'`: 4 digit representation of year (e.g. AD 1 => 0001, AD 2010 => 2010) + * * `'yy'`: 2 digit representation of year, padded (00-99). (e.g. AD 2001 => 01, AD 2010 => 10) + * * `'y'`: 1 digit representation of year, e.g. (AD 1 => 1, AD 199 => 199) + * * `'MMMM'`: Month in year (January-December) + * * `'MMM'`: Month in year (Jan-Dec) + * * `'MM'`: Month in year, padded (01-12) + * * `'M'`: Month in year (1-12) + * * `'LLLL'`: Stand-alone month in year (January-December) + * * `'dd'`: Day in month, padded (01-31) + * * `'d'`: Day in month (1-31) + * * `'EEEE'`: Day in Week,(Sunday-Saturday) + * * `'EEE'`: Day in Week, (Sun-Sat) + * * `'HH'`: Hour in day, padded (00-23) + * * `'H'`: Hour in day (0-23) + * * `'hh'`: Hour in AM/PM, padded (01-12) + * * `'h'`: Hour in AM/PM, (1-12) + * * `'mm'`: Minute in hour, padded (00-59) + * * `'m'`: Minute in hour (0-59) + * * `'ss'`: Second in minute, padded (00-59) + * * `'s'`: Second in minute (0-59) + * * `'sss'`: Millisecond in second, padded (000-999) + * * `'a'`: AM/PM marker + * * `'Z'`: 4 digit (+sign) representation of the timezone offset (-1200-+1200) + * * `'ww'`: Week of year, padded (00-53). Week 01 is the week with the first Thursday of the year + * * `'w'`: Week of year (0-53). Week 1 is the week with the first Thursday of the year + * * `'G'`, `'GG'`, `'GGG'`: The abbreviated form of the era string (e.g. 'AD') + * * `'GGGG'`: The long form of the era string (e.g. 'Anno Domini') + * + * `format` string can also be one of the following predefined + * {@link guide/i18n localizable formats}: + * + * * `'medium'`: equivalent to `'MMM d, y h:mm:ss a'` for en_US locale + * (e.g. Sep 3, 2010 12:05:08 PM) + * * `'short'`: equivalent to `'M/d/yy h:mm a'` for en_US locale (e.g. 9/3/10 12:05 PM) + * * `'fullDate'`: equivalent to `'EEEE, MMMM d, y'` for en_US locale + * (e.g. Friday, September 3, 2010) + * * `'longDate'`: equivalent to `'MMMM d, y'` for en_US locale (e.g. September 3, 2010) + * * `'mediumDate'`: equivalent to `'MMM d, y'` for en_US locale (e.g. Sep 3, 2010) + * * `'shortDate'`: equivalent to `'M/d/yy'` for en_US locale (e.g. 9/3/10) + * * `'mediumTime'`: equivalent to `'h:mm:ss a'` for en_US locale (e.g. 12:05:08 PM) + * * `'shortTime'`: equivalent to `'h:mm a'` for en_US locale (e.g. 12:05 PM) + * + * `format` string can contain literal values. These need to be escaped by surrounding with single quotes (e.g. + * `"h 'in the morning'"`). In order to output a single quote, escape it - i.e., two single quotes in a sequence + * (e.g. `"h 'o''clock'"`). + * + * @param {(Date|number|string)} date Date to format either as Date object, milliseconds (string or + * number) or various ISO 8601 datetime string formats (e.g. yyyy-MM-ddTHH:mm:ss.sssZ and its + * shorter versions like yyyy-MM-ddTHH:mmZ, yyyy-MM-dd or yyyyMMddTHHmmssZ). If no timezone is + * specified in the string input, the time is considered to be in the local timezone. + * @param {string=} format Formatting rules (see Description). If not specified, + * `mediumDate` is used. + * @param {string=} timezone Timezone to be used for formatting. It understands UTC/GMT and the + * continental US time zone abbreviations, but for general use, use a time zone offset, for + * example, `'+0430'` (4 hours, 30 minutes east of the Greenwich meridian) + * If not specified, the timezone of the browser will be used. + * @returns {string} Formatted string or the input if input is not recognized as date/millis. + * + * @example + + + {{1288323623006 | date:'medium'}}: + {{1288323623006 | date:'medium'}}
    + {{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}: + {{1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'}}
    + {{1288323623006 | date:'MM/dd/yyyy @ h:mma'}}: + {{'1288323623006' | date:'MM/dd/yyyy @ h:mma'}}
    + {{1288323623006 | date:"MM/dd/yyyy 'at' h:mma"}}: + {{'1288323623006' | date:"MM/dd/yyyy 'at' h:mma"}}
    +
    + + it('should format date', function() { + expect(element(by.binding("1288323623006 | date:'medium'")).getText()). + toMatch(/Oct 2\d, 2010 \d{1,2}:\d{2}:\d{2} (AM|PM)/); + expect(element(by.binding("1288323623006 | date:'yyyy-MM-dd HH:mm:ss Z'")).getText()). + toMatch(/2010\-10\-2\d \d{2}:\d{2}:\d{2} (\-|\+)?\d{4}/); + expect(element(by.binding("'1288323623006' | date:'MM/dd/yyyy @ h:mma'")).getText()). + toMatch(/10\/2\d\/2010 @ \d{1,2}:\d{2}(AM|PM)/); + expect(element(by.binding("'1288323623006' | date:\"MM/dd/yyyy 'at' h:mma\"")).getText()). + toMatch(/10\/2\d\/2010 at \d{1,2}:\d{2}(AM|PM)/); + }); + +
    + */ +dateFilter.$inject = ['$locale']; +function dateFilter($locale) { + + + var R_ISO8601_STR = /^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/; + // 1 2 3 4 5 6 7 8 9 10 11 + function jsonStringToDate(string) { + var match; + if (match = string.match(R_ISO8601_STR)) { + var date = new Date(0), + tzHour = 0, + tzMin = 0, + dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear, + timeSetter = match[8] ? date.setUTCHours : date.setHours; + + if (match[9]) { + tzHour = toInt(match[9] + match[10]); + tzMin = toInt(match[9] + match[11]); + } + dateSetter.call(date, toInt(match[1]), toInt(match[2]) - 1, toInt(match[3])); + var h = toInt(match[4] || 0) - tzHour; + var m = toInt(match[5] || 0) - tzMin; + var s = toInt(match[6] || 0); + var ms = Math.round(parseFloat('0.' + (match[7] || 0)) * 1000); + timeSetter.call(date, h, m, s, ms); + return date; + } + return string; + } + + + return function(date, format, timezone) { + var text = '', + parts = [], + fn, match; + + format = format || 'mediumDate'; + format = $locale.DATETIME_FORMATS[format] || format; + if (isString(date)) { + date = NUMBER_STRING.test(date) ? toInt(date) : jsonStringToDate(date); + } + + if (isNumber(date)) { + date = new Date(date); + } + + if (!isDate(date) || !isFinite(date.getTime())) { + return date; + } + + while (format) { + match = DATE_FORMATS_SPLIT.exec(format); + if (match) { + parts = concat(parts, match, 1); + format = parts.pop(); + } else { + parts.push(format); + format = null; + } + } + + var dateTimezoneOffset = date.getTimezoneOffset(); + if (timezone) { + dateTimezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset); + date = convertTimezoneToLocal(date, timezone, true); + } + forEach(parts, function(value) { + fn = DATE_FORMATS[value]; + text += fn ? fn(date, $locale.DATETIME_FORMATS, dateTimezoneOffset) + : value === "''" ? "'" : value.replace(/(^'|'$)/g, '').replace(/''/g, "'"); + }); + + return text; + }; +} + + +/** + * @ngdoc filter + * @name json + * @kind function + * + * @description + * Allows you to convert a JavaScript object into JSON string. + * + * This filter is mostly useful for debugging. When using the double curly {{value}} notation + * the binding is automatically converted to JSON. + * + * @param {*} object Any JavaScript object (including arrays and primitive types) to filter. + * @param {number=} spacing The number of spaces to use per indentation, defaults to 2. + * @returns {string} JSON string. + * + * + * @example + + +
    {{ {'name':'value'} | json }}
    +
    {{ {'name':'value'} | json:4 }}
    +
    + + it('should jsonify filtered objects', function() { + expect(element(by.id('default-spacing')).getText()).toMatch(/\{\n "name": ?"value"\n}/); + expect(element(by.id('custom-spacing')).getText()).toMatch(/\{\n "name": ?"value"\n}/); + }); + +
    + * + */ +function jsonFilter() { + return function(object, spacing) { + if (isUndefined(spacing)) { + spacing = 2; + } + return toJson(object, spacing); + }; +} + + +/** + * @ngdoc filter + * @name lowercase + * @kind function + * @description + * Converts string to lowercase. + * @see angular.lowercase + */ +var lowercaseFilter = valueFn(lowercase); + + +/** + * @ngdoc filter + * @name uppercase + * @kind function + * @description + * Converts string to uppercase. + * @see angular.uppercase + */ +var uppercaseFilter = valueFn(uppercase); + +/** + * @ngdoc filter + * @name limitTo + * @kind function + * + * @description + * Creates a new array or string containing only a specified number of elements. The elements + * are taken from either the beginning or the end of the source array, string or number, as specified by + * the value and sign (positive or negative) of `limit`. If a number is used as input, it is + * converted to a string. + * + * @param {Array|string|number} input Source array, string or number to be limited. + * @param {string|number} limit The length of the returned array or string. If the `limit` number + * is positive, `limit` number of items from the beginning of the source array/string are copied. + * If the number is negative, `limit` number of items from the end of the source array/string + * are copied. The `limit` will be trimmed if it exceeds `array.length`. If `limit` is undefined, + * the input will be returned unchanged. + * @param {(string|number)=} begin Index at which to begin limitation. As a negative index, `begin` + * indicates an offset from the end of `input`. Defaults to `0`. + * @returns {Array|string} A new sub-array or substring of length `limit` or less if input array + * had less than `limit` elements. + * + * @example + + + +
    + +

    Output numbers: {{ numbers | limitTo:numLimit }}

    + +

    Output letters: {{ letters | limitTo:letterLimit }}

    + +

    Output long number: {{ longNumber | limitTo:longNumberLimit }}

    +
    +
    + + var numLimitInput = element(by.model('numLimit')); + var letterLimitInput = element(by.model('letterLimit')); + var longNumberLimitInput = element(by.model('longNumberLimit')); + var limitedNumbers = element(by.binding('numbers | limitTo:numLimit')); + var limitedLetters = element(by.binding('letters | limitTo:letterLimit')); + var limitedLongNumber = element(by.binding('longNumber | limitTo:longNumberLimit')); + + it('should limit the number array to first three items', function() { + expect(numLimitInput.getAttribute('value')).toBe('3'); + expect(letterLimitInput.getAttribute('value')).toBe('3'); + expect(longNumberLimitInput.getAttribute('value')).toBe('3'); + expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3]'); + expect(limitedLetters.getText()).toEqual('Output letters: abc'); + expect(limitedLongNumber.getText()).toEqual('Output long number: 234'); + }); + + // There is a bug in safari and protractor that doesn't like the minus key + // it('should update the output when -3 is entered', function() { + // numLimitInput.clear(); + // numLimitInput.sendKeys('-3'); + // letterLimitInput.clear(); + // letterLimitInput.sendKeys('-3'); + // longNumberLimitInput.clear(); + // longNumberLimitInput.sendKeys('-3'); + // expect(limitedNumbers.getText()).toEqual('Output numbers: [7,8,9]'); + // expect(limitedLetters.getText()).toEqual('Output letters: ghi'); + // expect(limitedLongNumber.getText()).toEqual('Output long number: 342'); + // }); + + it('should not exceed the maximum size of input array', function() { + numLimitInput.clear(); + numLimitInput.sendKeys('100'); + letterLimitInput.clear(); + letterLimitInput.sendKeys('100'); + longNumberLimitInput.clear(); + longNumberLimitInput.sendKeys('100'); + expect(limitedNumbers.getText()).toEqual('Output numbers: [1,2,3,4,5,6,7,8,9]'); + expect(limitedLetters.getText()).toEqual('Output letters: abcdefghi'); + expect(limitedLongNumber.getText()).toEqual('Output long number: 2345432342'); + }); + +
    +*/ +function limitToFilter() { + return function(input, limit, begin) { + if (Math.abs(Number(limit)) === Infinity) { + limit = Number(limit); + } else { + limit = toInt(limit); + } + if (isNaN(limit)) return input; + + if (isNumber(input)) input = input.toString(); + if (!isArray(input) && !isString(input)) return input; + + begin = (!begin || isNaN(begin)) ? 0 : toInt(begin); + begin = (begin < 0) ? Math.max(0, input.length + begin) : begin; + + if (limit >= 0) { + return input.slice(begin, begin + limit); + } else { + if (begin === 0) { + return input.slice(limit, input.length); + } else { + return input.slice(Math.max(0, begin + limit), begin); + } + } + }; +} + +/** + * @ngdoc filter + * @name orderBy + * @kind function + * + * @description + * Orders a specified `array` by the `expression` predicate. It is ordered alphabetically + * for strings and numerically for numbers. Note: if you notice numbers are not being sorted + * as expected, make sure they are actually being saved as numbers and not strings. + * Array-like values (e.g. NodeLists, jQuery objects, TypedArrays, Strings, etc) are also supported. + * + * @param {Array} array The array (or array-like object) to sort. + * @param {function(*)|string|Array.<(function(*)|string)>=} expression A predicate to be + * used by the comparator to determine the order of elements. + * + * Can be one of: + * + * - `function`: Getter function. The result of this function will be sorted using the + * `<`, `===`, `>` operator. + * - `string`: An Angular expression. The result of this expression is used to compare elements + * (for example `name` to sort by a property called `name` or `name.substr(0, 3)` to sort by + * 3 first characters of a property called `name`). The result of a constant expression + * is interpreted as a property name to be used in comparisons (for example `"special name"` + * to sort object by the value of their `special name` property). An expression can be + * optionally prefixed with `+` or `-` to control ascending or descending sort order + * (for example, `+name` or `-name`). If no property is provided, (e.g. `'+'`) then the array + * element itself is used to compare where sorting. + * - `Array`: An array of function or string predicates. The first predicate in the array + * is used for sorting, but when two items are equivalent, the next predicate is used. + * + * If the predicate is missing or empty then it defaults to `'+'`. + * + * @param {boolean=} reverse Reverse the order of the array. + * @returns {Array} Sorted copy of the source array. + * + * + * @example + * The example below demonstrates a simple ngRepeat, where the data is sorted + * by age in descending order (predicate is set to `'-age'`). + * `reverse` is not set, which means it defaults to `false`. + + +
    + + + + + + + + + + + +
    NamePhone NumberAge
    {{friend.name}}{{friend.phone}}{{friend.age}}
    +
    +
    + + angular.module('orderByExample', []) + .controller('ExampleController', ['$scope', function($scope) { + $scope.friends = + [{name:'John', phone:'555-1212', age:10}, + {name:'Mary', phone:'555-9876', age:19}, + {name:'Mike', phone:'555-4321', age:21}, + {name:'Adam', phone:'555-5678', age:35}, + {name:'Julie', phone:'555-8765', age:29}]; + }]); + +
    + * + * The predicate and reverse parameters can be controlled dynamically through scope properties, + * as shown in the next example. + * @example + + +
    +
    Sorting predicate = {{predicate}}; reverse = {{reverse}}
    +
    + + + + + + + + + + + + +
    + + + + + + + + +
    {{friend.name}}{{friend.phone}}{{friend.age}}
    +
    +
    + + angular.module('orderByExample', []) + .controller('ExampleController', ['$scope', function($scope) { + $scope.friends = + [{name:'John', phone:'555-1212', age:10}, + {name:'Mary', phone:'555-9876', age:19}, + {name:'Mike', phone:'555-4321', age:21}, + {name:'Adam', phone:'555-5678', age:35}, + {name:'Julie', phone:'555-8765', age:29}]; + $scope.predicate = 'age'; + $scope.reverse = true; + $scope.order = function(predicate) { + $scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false; + $scope.predicate = predicate; + }; + }]); + + + .sortorder:after { + content: '\25b2'; + } + .sortorder.reverse:after { + content: '\25bc'; + } + +
    + * + * It's also possible to call the orderBy filter manually, by injecting `$filter`, retrieving the + * filter routine with `$filter('orderBy')`, and calling the returned filter routine with the + * desired parameters. + * + * Example: + * + * @example + + +
    +
    Sorting predicate = {{predicate}}; reverse = {{reverse}}
    + + + + + + + + + + + +
    + + + + + + + + +
    {{friend.name}}{{friend.phone}}{{friend.age}}
    +
    +
    + + + angular.module('orderByExample', []) + .controller('ExampleController', ['$scope', '$filter', function($scope, $filter) { + var orderBy = $filter('orderBy'); + $scope.friends = [ + { name: 'John', phone: '555-1212', age: 10 }, + { name: 'Mary', phone: '555-9876', age: 19 }, + { name: 'Mike', phone: '555-4321', age: 21 }, + { name: 'Adam', phone: '555-5678', age: 35 }, + { name: 'Julie', phone: '555-8765', age: 29 } + ]; + $scope.order = function(predicate) { + $scope.predicate = predicate; + $scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false; + $scope.friends = orderBy($scope.friends, predicate, $scope.reverse); + }; + $scope.order('age', true); + }]); + + + + .sortorder:after { + content: '\25b2'; + } + .sortorder.reverse:after { + content: '\25bc'; + } + +
    + */ +orderByFilter.$inject = ['$parse']; +function orderByFilter($parse) { + return function(array, sortPredicate, reverseOrder) { + + if (array == null) return array; + if (!isArrayLike(array)) { + throw minErr('orderBy')('notarray', 'Expected array but received: {0}', array); + } + + if (!isArray(sortPredicate)) { sortPredicate = [sortPredicate]; } + if (sortPredicate.length === 0) { sortPredicate = ['+']; } + + var predicates = processPredicates(sortPredicate, reverseOrder); + // Add a predicate at the end that evaluates to the element index. This makes the + // sort stable as it works as a tie-breaker when all the input predicates cannot + // distinguish between two elements. + predicates.push({ get: function() { return {}; }, descending: reverseOrder ? -1 : 1}); + + // The next three lines are a version of a Swartzian Transform idiom from Perl + // (sometimes called the Decorate-Sort-Undecorate idiom) + // See https://en.wikipedia.org/wiki/Schwartzian_transform + var compareValues = Array.prototype.map.call(array, getComparisonObject); + compareValues.sort(doComparison); + array = compareValues.map(function(item) { return item.value; }); + + return array; + + function getComparisonObject(value, index) { + return { + value: value, + predicateValues: predicates.map(function(predicate) { + return getPredicateValue(predicate.get(value), index); + }) + }; + } + + function doComparison(v1, v2) { + var result = 0; + for (var index=0, length = predicates.length; index < length; ++index) { + result = compare(v1.predicateValues[index], v2.predicateValues[index]) * predicates[index].descending; + if (result) break; + } + return result; + } + }; + + function processPredicates(sortPredicate, reverseOrder) { + reverseOrder = reverseOrder ? -1 : 1; + return sortPredicate.map(function(predicate) { + var descending = 1, get = identity; + + if (isFunction(predicate)) { + get = predicate; + } else if (isString(predicate)) { + if ((predicate.charAt(0) == '+' || predicate.charAt(0) == '-')) { + descending = predicate.charAt(0) == '-' ? -1 : 1; + predicate = predicate.substring(1); + } + if (predicate !== '') { + get = $parse(predicate); + if (get.constant) { + var key = get(); + get = function(value) { return value[key]; }; + } + } + } + return { get: get, descending: descending * reverseOrder }; + }); + } + + function isPrimitive(value) { + switch (typeof value) { + case 'number': /* falls through */ + case 'boolean': /* falls through */ + case 'string': + return true; + default: + return false; + } + } + + function objectValue(value, index) { + // If `valueOf` is a valid function use that + if (typeof value.valueOf === 'function') { + value = value.valueOf(); + if (isPrimitive(value)) return value; + } + // If `toString` is a valid function and not the one from `Object.prototype` use that + if (hasCustomToString(value)) { + value = value.toString(); + if (isPrimitive(value)) return value; + } + // We have a basic object so we use the position of the object in the collection + return index; + } + + function getPredicateValue(value, index) { + var type = typeof value; + if (value === null) { + type = 'string'; + value = 'null'; + } else if (type === 'string') { + value = value.toLowerCase(); + } else if (type === 'object') { + value = objectValue(value, index); + } + return { value: value, type: type }; + } + + function compare(v1, v2) { + var result = 0; + if (v1.type === v2.type) { + if (v1.value !== v2.value) { + result = v1.value < v2.value ? -1 : 1; + } + } else { + result = v1.type < v2.type ? -1 : 1; + } + return result; + } +} + +function ngDirective(directive) { + if (isFunction(directive)) { + directive = { + link: directive + }; + } + directive.restrict = directive.restrict || 'AC'; + return valueFn(directive); +} + +/** + * @ngdoc directive + * @name a + * @restrict E + * + * @description + * Modifies the default behavior of the html A tag so that the default action is prevented when + * the href attribute is empty. + * + * This change permits the easy creation of action links with the `ngClick` directive + * without changing the location or causing page reloads, e.g.: + * `Add Item` + */ +var htmlAnchorDirective = valueFn({ + restrict: 'E', + compile: function(element, attr) { + if (!attr.href && !attr.xlinkHref) { + return function(scope, element) { + // If the linked element is not an anchor tag anymore, do nothing + if (element[0].nodeName.toLowerCase() !== 'a') return; + + // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute. + var href = toString.call(element.prop('href')) === '[object SVGAnimatedString]' ? + 'xlink:href' : 'href'; + element.on('click', function(event) { + // if we have no href url, then don't navigate anywhere. + if (!element.attr(href)) { + event.preventDefault(); + } + }); + }; + } + } +}); + +/** + * @ngdoc directive + * @name ngHref + * @restrict A + * @priority 99 + * + * @description + * Using Angular markup like `{{hash}}` in an href attribute will + * make the link go to the wrong URL if the user clicks it before + * Angular has a chance to replace the `{{hash}}` markup with its + * value. Until Angular replaces the markup the link will be broken + * and will most likely return a 404 error. The `ngHref` directive + * solves this problem. + * + * The wrong way to write it: + * ```html + * link1 + * ``` + * + * The correct way to write it: + * ```html + * link1 + * ``` + * + * @element A + * @param {template} ngHref any string which can contain `{{}}` markup. + * + * @example + * This example shows various combinations of `href`, `ng-href` and `ng-click` attributes + * in links and their different behaviors: + + +
    + link 1 (link, don't reload)
    + link 2 (link, don't reload)
    + link 3 (link, reload!)
    + anchor (link, don't reload)
    + anchor (no link)
    + link (link, change location) +
    + + it('should execute ng-click but not reload when href without value', function() { + element(by.id('link-1')).click(); + expect(element(by.model('value')).getAttribute('value')).toEqual('1'); + expect(element(by.id('link-1')).getAttribute('href')).toBe(''); + }); + + it('should execute ng-click but not reload when href empty string', function() { + element(by.id('link-2')).click(); + expect(element(by.model('value')).getAttribute('value')).toEqual('2'); + expect(element(by.id('link-2')).getAttribute('href')).toBe(''); + }); + + it('should execute ng-click and change url when ng-href specified', function() { + expect(element(by.id('link-3')).getAttribute('href')).toMatch(/\/123$/); + + element(by.id('link-3')).click(); + + // At this point, we navigate away from an Angular page, so we need + // to use browser.driver to get the base webdriver. + + browser.wait(function() { + return browser.driver.getCurrentUrl().then(function(url) { + return url.match(/\/123$/); + }); + }, 5000, 'page should navigate to /123'); + }); + + it('should execute ng-click but not reload when href empty string and name specified', function() { + element(by.id('link-4')).click(); + expect(element(by.model('value')).getAttribute('value')).toEqual('4'); + expect(element(by.id('link-4')).getAttribute('href')).toBe(''); + }); + + it('should execute ng-click but not reload when no href but name specified', function() { + element(by.id('link-5')).click(); + expect(element(by.model('value')).getAttribute('value')).toEqual('5'); + expect(element(by.id('link-5')).getAttribute('href')).toBe(null); + }); + + it('should only change url when only ng-href', function() { + element(by.model('value')).clear(); + element(by.model('value')).sendKeys('6'); + expect(element(by.id('link-6')).getAttribute('href')).toMatch(/\/6$/); + + element(by.id('link-6')).click(); + + // At this point, we navigate away from an Angular page, so we need + // to use browser.driver to get the base webdriver. + browser.wait(function() { + return browser.driver.getCurrentUrl().then(function(url) { + return url.match(/\/6$/); + }); + }, 5000, 'page should navigate to /6'); + }); + +
    + */ + +/** + * @ngdoc directive + * @name ngSrc + * @restrict A + * @priority 99 + * + * @description + * Using Angular markup like `{{hash}}` in a `src` attribute doesn't + * work right: The browser will fetch from the URL with the literal + * text `{{hash}}` until Angular replaces the expression inside + * `{{hash}}`. The `ngSrc` directive solves this problem. + * + * The buggy way to write it: + * ```html + * Description + * ``` + * + * The correct way to write it: + * ```html + * Description + * ``` + * + * @element IMG + * @param {template} ngSrc any string which can contain `{{}}` markup. + */ + +/** + * @ngdoc directive + * @name ngSrcset + * @restrict A + * @priority 99 + * + * @description + * Using Angular markup like `{{hash}}` in a `srcset` attribute doesn't + * work right: The browser will fetch from the URL with the literal + * text `{{hash}}` until Angular replaces the expression inside + * `{{hash}}`. The `ngSrcset` directive solves this problem. + * + * The buggy way to write it: + * ```html + * Description + * ``` + * + * The correct way to write it: + * ```html + * Description + * ``` + * + * @element IMG + * @param {template} ngSrcset any string which can contain `{{}}` markup. + */ + +/** + * @ngdoc directive + * @name ngDisabled + * @restrict A + * @priority 100 + * + * @description + * + * This directive sets the `disabled` attribute on the element if the + * {@link guide/expression expression} inside `ngDisabled` evaluates to truthy. + * + * A special directive is necessary because we cannot use interpolation inside the `disabled` + * attribute. See the {@link guide/interpolation interpolation guide} for more info. + * + * @example + + +
    + +
    + + it('should toggle button', function() { + expect(element(by.css('button')).getAttribute('disabled')).toBeFalsy(); + element(by.model('checked')).click(); + expect(element(by.css('button')).getAttribute('disabled')).toBeTruthy(); + }); + +
    + * + * @element INPUT + * @param {expression} ngDisabled If the {@link guide/expression expression} is truthy, + * then the `disabled` attribute will be set on the element + */ + + +/** + * @ngdoc directive + * @name ngChecked + * @restrict A + * @priority 100 + * + * @description + * Sets the `checked` attribute on the element, if the expression inside `ngChecked` is truthy. + * + * Note that this directive should not be used together with {@link ngModel `ngModel`}, + * as this can lead to unexpected behavior. + * + * A special directive is necessary because we cannot use interpolation inside the `checked` + * attribute. See the {@link guide/interpolation interpolation guide} for more info. + * + * @example + + +
    + +
    + + it('should check both checkBoxes', function() { + expect(element(by.id('checkSlave')).getAttribute('checked')).toBeFalsy(); + element(by.model('master')).click(); + expect(element(by.id('checkSlave')).getAttribute('checked')).toBeTruthy(); + }); + +
    + * + * @element INPUT + * @param {expression} ngChecked If the {@link guide/expression expression} is truthy, + * then the `checked` attribute will be set on the element + */ + + +/** + * @ngdoc directive + * @name ngReadonly + * @restrict A + * @priority 100 + * + * @description + * + * Sets the `readOnly` attribute on the element, if the expression inside `ngReadonly` is truthy. + * + * A special directive is necessary because we cannot use interpolation inside the `readOnly` + * attribute. See the {@link guide/interpolation interpolation guide} for more info. + * + * @example + + +
    + +
    + + it('should toggle readonly attr', function() { + expect(element(by.css('[type="text"]')).getAttribute('readonly')).toBeFalsy(); + element(by.model('checked')).click(); + expect(element(by.css('[type="text"]')).getAttribute('readonly')).toBeTruthy(); + }); + +
    + * + * @element INPUT + * @param {expression} ngReadonly If the {@link guide/expression expression} is truthy, + * then special attribute "readonly" will be set on the element + */ + + +/** + * @ngdoc directive + * @name ngSelected + * @restrict A + * @priority 100 + * + * @description + * + * Sets the `selected` attribute on the element, if the expression inside `ngSelected` is truthy. + * + * A special directive is necessary because we cannot use interpolation inside the `selected` + * attribute. See the {@link guide/interpolation interpolation guide} for more info. + * + * @example + + +
    + +
    + + it('should select Greetings!', function() { + expect(element(by.id('greet')).getAttribute('selected')).toBeFalsy(); + element(by.model('selected')).click(); + expect(element(by.id('greet')).getAttribute('selected')).toBeTruthy(); + }); + +
    + * + * @element OPTION + * @param {expression} ngSelected If the {@link guide/expression expression} is truthy, + * then special attribute "selected" will be set on the element + */ + +/** + * @ngdoc directive + * @name ngOpen + * @restrict A + * @priority 100 + * + * @description + * + * Sets the `open` attribute on the element, if the expression inside `ngOpen` is truthy. + * + * A special directive is necessary because we cannot use interpolation inside the `open` + * attribute. See the {@link guide/interpolation interpolation guide} for more info. + * + * @example + + +
    +
    + Show/Hide me +
    +
    + + it('should toggle open', function() { + expect(element(by.id('details')).getAttribute('open')).toBeFalsy(); + element(by.model('open')).click(); + expect(element(by.id('details')).getAttribute('open')).toBeTruthy(); + }); + +
    + * + * @element DETAILS + * @param {expression} ngOpen If the {@link guide/expression expression} is truthy, + * then special attribute "open" will be set on the element + */ + +var ngAttributeAliasDirectives = {}; + +// boolean attrs are evaluated +forEach(BOOLEAN_ATTR, function(propName, attrName) { + // binding to multiple is not supported + if (propName == "multiple") return; + + function defaultLinkFn(scope, element, attr) { + scope.$watch(attr[normalized], function ngBooleanAttrWatchAction(value) { + attr.$set(attrName, !!value); + }); + } + + var normalized = directiveNormalize('ng-' + attrName); + var linkFn = defaultLinkFn; + + if (propName === 'checked') { + linkFn = function(scope, element, attr) { + // ensuring ngChecked doesn't interfere with ngModel when both are set on the same input + if (attr.ngModel !== attr[normalized]) { + defaultLinkFn(scope, element, attr); + } + }; + } + + ngAttributeAliasDirectives[normalized] = function() { + return { + restrict: 'A', + priority: 100, + link: linkFn + }; + }; +}); + +// aliased input attrs are evaluated +forEach(ALIASED_ATTR, function(htmlAttr, ngAttr) { + ngAttributeAliasDirectives[ngAttr] = function() { + return { + priority: 100, + link: function(scope, element, attr) { + //special case ngPattern when a literal regular expression value + //is used as the expression (this way we don't have to watch anything). + if (ngAttr === "ngPattern" && attr.ngPattern.charAt(0) == "/") { + var match = attr.ngPattern.match(REGEX_STRING_REGEXP); + if (match) { + attr.$set("ngPattern", new RegExp(match[1], match[2])); + return; + } + } + + scope.$watch(attr[ngAttr], function ngAttrAliasWatchAction(value) { + attr.$set(ngAttr, value); + }); + } + }; + }; +}); + +// ng-src, ng-srcset, ng-href are interpolated +forEach(['src', 'srcset', 'href'], function(attrName) { + var normalized = directiveNormalize('ng-' + attrName); + ngAttributeAliasDirectives[normalized] = function() { + return { + priority: 99, // it needs to run after the attributes are interpolated + link: function(scope, element, attr) { + var propName = attrName, + name = attrName; + + if (attrName === 'href' && + toString.call(element.prop('href')) === '[object SVGAnimatedString]') { + name = 'xlinkHref'; + attr.$attr[name] = 'xlink:href'; + propName = null; + } + + attr.$observe(normalized, function(value) { + if (!value) { + if (attrName === 'href') { + attr.$set(name, null); + } + return; + } + + attr.$set(name, value); + + // on IE, if "ng:src" directive declaration is used and "src" attribute doesn't exist + // then calling element.setAttribute('src', 'foo') doesn't do anything, so we need + // to set the property as well to achieve the desired effect. + // we use attr[attrName] value since $set can sanitize the url. + if (msie && propName) element.prop(propName, attr[name]); + }); + } + }; + }; +}); + +/* global -nullFormCtrl, -SUBMITTED_CLASS, addSetValidityMethod: true + */ +var nullFormCtrl = { + $addControl: noop, + $$renameControl: nullFormRenameControl, + $removeControl: noop, + $setValidity: noop, + $setDirty: noop, + $setPristine: noop, + $setSubmitted: noop +}, +SUBMITTED_CLASS = 'ng-submitted'; + +function nullFormRenameControl(control, name) { + control.$name = name; +} + +/** + * @ngdoc type + * @name form.FormController + * + * @property {boolean} $pristine True if user has not interacted with the form yet. + * @property {boolean} $dirty True if user has already interacted with the form. + * @property {boolean} $valid True if all of the containing forms and controls are valid. + * @property {boolean} $invalid True if at least one containing control or form is invalid. + * @property {boolean} $pending True if at least one containing control or form is pending. + * @property {boolean} $submitted True if user has submitted the form even if its invalid. + * + * @property {Object} $error Is an object hash, containing references to controls or + * forms with failing validators, where: + * + * - keys are validation tokens (error names), + * - values are arrays of controls or forms that have a failing validator for given error name. + * + * Built-in validation tokens: + * + * - `email` + * - `max` + * - `maxlength` + * - `min` + * - `minlength` + * - `number` + * - `pattern` + * - `required` + * - `url` + * - `date` + * - `datetimelocal` + * - `time` + * - `week` + * - `month` + * + * @description + * `FormController` keeps track of all its controls and nested forms as well as the state of them, + * such as being valid/invalid or dirty/pristine. + * + * Each {@link ng.directive:form form} directive creates an instance + * of `FormController`. + * + */ +//asks for $scope to fool the BC controller module +FormController.$inject = ['$element', '$attrs', '$scope', '$animate', '$interpolate']; +function FormController(element, attrs, $scope, $animate, $interpolate) { + var form = this, + controls = []; + + // init state + form.$error = {}; + form.$$success = {}; + form.$pending = undefined; + form.$name = $interpolate(attrs.name || attrs.ngForm || '')($scope); + form.$dirty = false; + form.$pristine = true; + form.$valid = true; + form.$invalid = false; + form.$submitted = false; + form.$$parentForm = nullFormCtrl; + + /** + * @ngdoc method + * @name form.FormController#$rollbackViewValue + * + * @description + * Rollback all form controls pending updates to the `$modelValue`. + * + * Updates may be pending by a debounced event or because the input is waiting for a some future + * event defined in `ng-model-options`. This method is typically needed by the reset button of + * a form that uses `ng-model-options` to pend updates. + */ + form.$rollbackViewValue = function() { + forEach(controls, function(control) { + control.$rollbackViewValue(); + }); + }; + + /** + * @ngdoc method + * @name form.FormController#$commitViewValue + * + * @description + * Commit all form controls pending updates to the `$modelValue`. + * + * Updates may be pending by a debounced event or because the input is waiting for a some future + * event defined in `ng-model-options`. This method is rarely needed as `NgModelController` + * usually handles calling this in response to input events. + */ + form.$commitViewValue = function() { + forEach(controls, function(control) { + control.$commitViewValue(); + }); + }; + + /** + * @ngdoc method + * @name form.FormController#$addControl + * @param {object} control control object, either a {@link form.FormController} or an + * {@link ngModel.NgModelController} + * + * @description + * Register a control with the form. Input elements using ngModelController do this automatically + * when they are linked. + * + * Note that the current state of the control will not be reflected on the new parent form. This + * is not an issue with normal use, as freshly compiled and linked controls are in a `$pristine` + * state. + * + * However, if the method is used programmatically, for example by adding dynamically created controls, + * or controls that have been previously removed without destroying their corresponding DOM element, + * it's the developers responsibility to make sure the current state propagates to the parent form. + * + * For example, if an input control is added that is already `$dirty` and has `$error` properties, + * calling `$setDirty()` and `$validate()` afterwards will propagate the state to the parent form. + */ + form.$addControl = function(control) { + // Breaking change - before, inputs whose name was "hasOwnProperty" were quietly ignored + // and not added to the scope. Now we throw an error. + assertNotHasOwnProperty(control.$name, 'input'); + controls.push(control); + + if (control.$name) { + form[control.$name] = control; + } + + control.$$parentForm = form; + }; + + // Private API: rename a form control + form.$$renameControl = function(control, newName) { + var oldName = control.$name; + + if (form[oldName] === control) { + delete form[oldName]; + } + form[newName] = control; + control.$name = newName; + }; + + /** + * @ngdoc method + * @name form.FormController#$removeControl + * @param {object} control control object, either a {@link form.FormController} or an + * {@link ngModel.NgModelController} + * + * @description + * Deregister a control from the form. + * + * Input elements using ngModelController do this automatically when they are destroyed. + * + * Note that only the removed control's validation state (`$errors`etc.) will be removed from the + * form. `$dirty`, `$submitted` states will not be changed, because the expected behavior can be + * different from case to case. For example, removing the only `$dirty` control from a form may or + * may not mean that the form is still `$dirty`. + */ + form.$removeControl = function(control) { + if (control.$name && form[control.$name] === control) { + delete form[control.$name]; + } + forEach(form.$pending, function(value, name) { + form.$setValidity(name, null, control); + }); + forEach(form.$error, function(value, name) { + form.$setValidity(name, null, control); + }); + forEach(form.$$success, function(value, name) { + form.$setValidity(name, null, control); + }); + + arrayRemove(controls, control); + control.$$parentForm = nullFormCtrl; + }; + + + /** + * @ngdoc method + * @name form.FormController#$setValidity + * + * @description + * Sets the validity of a form control. + * + * This method will also propagate to parent forms. + */ + addSetValidityMethod({ + ctrl: this, + $element: element, + set: function(object, property, controller) { + var list = object[property]; + if (!list) { + object[property] = [controller]; + } else { + var index = list.indexOf(controller); + if (index === -1) { + list.push(controller); + } + } + }, + unset: function(object, property, controller) { + var list = object[property]; + if (!list) { + return; + } + arrayRemove(list, controller); + if (list.length === 0) { + delete object[property]; + } + }, + $animate: $animate + }); + + /** + * @ngdoc method + * @name form.FormController#$setDirty + * + * @description + * Sets the form to a dirty state. + * + * This method can be called to add the 'ng-dirty' class and set the form to a dirty + * state (ng-dirty class). This method will also propagate to parent forms. + */ + form.$setDirty = function() { + $animate.removeClass(element, PRISTINE_CLASS); + $animate.addClass(element, DIRTY_CLASS); + form.$dirty = true; + form.$pristine = false; + form.$$parentForm.$setDirty(); + }; + + /** + * @ngdoc method + * @name form.FormController#$setPristine + * + * @description + * Sets the form to its pristine state. + * + * This method can be called to remove the 'ng-dirty' class and set the form to its pristine + * state (ng-pristine class). This method will also propagate to all the controls contained + * in this form. + * + * Setting a form back to a pristine state is often useful when we want to 'reuse' a form after + * saving or resetting it. + */ + form.$setPristine = function() { + $animate.setClass(element, PRISTINE_CLASS, DIRTY_CLASS + ' ' + SUBMITTED_CLASS); + form.$dirty = false; + form.$pristine = true; + form.$submitted = false; + forEach(controls, function(control) { + control.$setPristine(); + }); + }; + + /** + * @ngdoc method + * @name form.FormController#$setUntouched + * + * @description + * Sets the form to its untouched state. + * + * This method can be called to remove the 'ng-touched' class and set the form controls to their + * untouched state (ng-untouched class). + * + * Setting a form controls back to their untouched state is often useful when setting the form + * back to its pristine state. + */ + form.$setUntouched = function() { + forEach(controls, function(control) { + control.$setUntouched(); + }); + }; + + /** + * @ngdoc method + * @name form.FormController#$setSubmitted + * + * @description + * Sets the form to its submitted state. + */ + form.$setSubmitted = function() { + $animate.addClass(element, SUBMITTED_CLASS); + form.$submitted = true; + form.$$parentForm.$setSubmitted(); + }; +} + +/** + * @ngdoc directive + * @name ngForm + * @restrict EAC + * + * @description + * Nestable alias of {@link ng.directive:form `form`} directive. HTML + * does not allow nesting of form elements. It is useful to nest forms, for example if the validity of a + * sub-group of controls needs to be determined. + * + * Note: the purpose of `ngForm` is to group controls, + * but not to be a replacement for the `
    ` tag with all of its capabilities + * (e.g. posting to the server, ...). + * + * @param {string=} ngForm|name Name of the form. If specified, the form controller will be published into + * related scope, under this name. + * + */ + + /** + * @ngdoc directive + * @name form + * @restrict E + * + * @description + * Directive that instantiates + * {@link form.FormController FormController}. + * + * If the `name` attribute is specified, the form controller is published onto the current scope under + * this name. + * + * # Alias: {@link ng.directive:ngForm `ngForm`} + * + * In Angular, forms can be nested. This means that the outer form is valid when all of the child + * forms are valid as well. However, browsers do not allow nesting of `` elements, so + * Angular provides the {@link ng.directive:ngForm `ngForm`} directive, which behaves identically to + * `form` but can be nested. Nested forms can be useful, for example, if the validity of a sub-group + * of controls needs to be determined. + * + * # CSS classes + * - `ng-valid` is set if the form is valid. + * - `ng-invalid` is set if the form is invalid. + * - `ng-pending` is set if the form is pending. + * - `ng-pristine` is set if the form is pristine. + * - `ng-dirty` is set if the form is dirty. + * - `ng-submitted` is set if the form was submitted. + * + * Keep in mind that ngAnimate can detect each of these classes when added and removed. + * + * + * # Submitting a form and preventing the default action + * + * Since the role of forms in client-side Angular applications is different than in classical + * roundtrip apps, it is desirable for the browser not to translate the form submission into a full + * page reload that sends the data to the server. Instead some javascript logic should be triggered + * to handle the form submission in an application-specific way. + * + * For this reason, Angular prevents the default action (form submission to the server) unless the + * `` element has an `action` attribute specified. + * + * You can use one of the following two ways to specify what javascript method should be called when + * a form is submitted: + * + * - {@link ng.directive:ngSubmit ngSubmit} directive on the form element + * - {@link ng.directive:ngClick ngClick} directive on the first + * button or input field of type submit (input[type=submit]) + * + * To prevent double execution of the handler, use only one of the {@link ng.directive:ngSubmit ngSubmit} + * or {@link ng.directive:ngClick ngClick} directives. + * This is because of the following form submission rules in the HTML specification: + * + * - If a form has only one input field then hitting enter in this field triggers form submit + * (`ngSubmit`) + * - if a form has 2+ input fields and no buttons or input[type=submit] then hitting enter + * doesn't trigger submit + * - if a form has one or more input fields and one or more buttons or input[type=submit] then + * hitting enter in any of the input fields will trigger the click handler on the *first* button or + * input[type=submit] (`ngClick`) *and* a submit handler on the enclosing form (`ngSubmit`) + * + * Any pending `ngModelOptions` changes will take place immediately when an enclosing form is + * submitted. Note that `ngClick` events will occur before the model is updated. Use `ngSubmit` + * to have access to the updated model. + * + * ## Animation Hooks + * + * Animations in ngForm are triggered when any of the associated CSS classes are added and removed. + * These classes are: `.ng-pristine`, `.ng-dirty`, `.ng-invalid` and `.ng-valid` as well as any + * other validations that are performed within the form. Animations in ngForm are similar to how + * they work in ngClass and animations can be hooked into using CSS transitions, keyframes as well + * as JS animations. + * + * The following example shows a simple way to utilize CSS transitions to style a form element + * that has been rendered as invalid after it has been validated: + * + *
    + * //be sure to include ngAnimate as a module to hook into more
    + * //advanced animations
    + * .my-form {
    + *   transition:0.5s linear all;
    + *   background: white;
    + * }
    + * .my-form.ng-invalid {
    + *   background: red;
    + *   color:white;
    + * }
    + * 
    + * + * @example + + + + + + userType: + Required!
    + userType = {{userType}}
    + myForm.input.$valid = {{myForm.input.$valid}}
    + myForm.input.$error = {{myForm.input.$error}}
    + myForm.$valid = {{myForm.$valid}}
    + myForm.$error.required = {{!!myForm.$error.required}}
    + +
    + + it('should initialize to model', function() { + var userType = element(by.binding('userType')); + var valid = element(by.binding('myForm.input.$valid')); + + expect(userType.getText()).toContain('guest'); + expect(valid.getText()).toContain('true'); + }); + + it('should be invalid if empty', function() { + var userType = element(by.binding('userType')); + var valid = element(by.binding('myForm.input.$valid')); + var userInput = element(by.model('userType')); + + userInput.clear(); + userInput.sendKeys(''); + + expect(userType.getText()).toEqual('userType ='); + expect(valid.getText()).toContain('false'); + }); + +
    + * + * @param {string=} name Name of the form. If specified, the form controller will be published into + * related scope, under this name. + */ +var formDirectiveFactory = function(isNgForm) { + return ['$timeout', '$parse', function($timeout, $parse) { + var formDirective = { + name: 'form', + restrict: isNgForm ? 'EAC' : 'E', + require: ['form', '^^?form'], //first is the form's own ctrl, second is an optional parent form + controller: FormController, + compile: function ngFormCompile(formElement, attr) { + // Setup initial state of the control + formElement.addClass(PRISTINE_CLASS).addClass(VALID_CLASS); + + var nameAttr = attr.name ? 'name' : (isNgForm && attr.ngForm ? 'ngForm' : false); + + return { + pre: function ngFormPreLink(scope, formElement, attr, ctrls) { + var controller = ctrls[0]; + + // if `action` attr is not present on the form, prevent the default action (submission) + if (!('action' in attr)) { + // we can't use jq events because if a form is destroyed during submission the default + // action is not prevented. see #1238 + // + // IE 9 is not affected because it doesn't fire a submit event and try to do a full + // page reload if the form was destroyed by submission of the form via a click handler + // on a button in the form. Looks like an IE9 specific bug. + var handleFormSubmission = function(event) { + scope.$apply(function() { + controller.$commitViewValue(); + controller.$setSubmitted(); + }); + + event.preventDefault(); + }; + + addEventListenerFn(formElement[0], 'submit', handleFormSubmission); + + // unregister the preventDefault listener so that we don't not leak memory but in a + // way that will achieve the prevention of the default action. + formElement.on('$destroy', function() { + $timeout(function() { + removeEventListenerFn(formElement[0], 'submit', handleFormSubmission); + }, 0, false); + }); + } + + var parentFormCtrl = ctrls[1] || controller.$$parentForm; + parentFormCtrl.$addControl(controller); + + var setter = nameAttr ? getSetter(controller.$name) : noop; + + if (nameAttr) { + setter(scope, controller); + attr.$observe(nameAttr, function(newValue) { + if (controller.$name === newValue) return; + setter(scope, undefined); + controller.$$parentForm.$$renameControl(controller, newValue); + setter = getSetter(controller.$name); + setter(scope, controller); + }); + } + formElement.on('$destroy', function() { + controller.$$parentForm.$removeControl(controller); + setter(scope, undefined); + extend(controller, nullFormCtrl); //stop propagating child destruction handlers upwards + }); + } + }; + } + }; + + return formDirective; + + function getSetter(expression) { + if (expression === '') { + //create an assignable expression, so forms with an empty name can be renamed later + return $parse('this[""]').assign; + } + return $parse(expression).assign || noop; + } + }]; +}; + +var formDirective = formDirectiveFactory(); +var ngFormDirective = formDirectiveFactory(true); + +/* global VALID_CLASS: false, + INVALID_CLASS: false, + PRISTINE_CLASS: false, + DIRTY_CLASS: false, + UNTOUCHED_CLASS: false, + TOUCHED_CLASS: false, + ngModelMinErr: false, +*/ + +// Regex code was initially obtained from SO prior to modification: https://stackoverflow.com/questions/3143070/javascript-regex-iso-datetime#answer-3143231 +var ISO_DATE_REGEXP = /^\d{4,}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+(?:[+-][0-2]\d:[0-5]\d|Z)$/; +// See valid URLs in RFC3987 (http://tools.ietf.org/html/rfc3987) +// Note: We are being more lenient, because browsers are too. +// 1. Scheme +// 2. Slashes +// 3. Username +// 4. Password +// 5. Hostname +// 6. Port +// 7. Path +// 8. Query +// 9. Fragment +// 1111111111111111 222 333333 44444 555555555555555555555555 666 77777777 8888888 999 +var URL_REGEXP = /^[a-z][a-z\d.+-]*:\/*(?:[^:@]+(?::[^@]+)?@)?(?:[^\s:/?#]+|\[[a-f\d:]+\])(?::\d+)?(?:\/[^?#]*)?(?:\?[^#]*)?(?:#.*)?$/i; +var EMAIL_REGEXP = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i; +var NUMBER_REGEXP = /^\s*(\-|\+)?(\d+|(\d*(\.\d*)))([eE][+-]?\d+)?\s*$/; +var DATE_REGEXP = /^(\d{4,})-(\d{2})-(\d{2})$/; +var DATETIMELOCAL_REGEXP = /^(\d{4,})-(\d\d)-(\d\d)T(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/; +var WEEK_REGEXP = /^(\d{4,})-W(\d\d)$/; +var MONTH_REGEXP = /^(\d{4,})-(\d\d)$/; +var TIME_REGEXP = /^(\d\d):(\d\d)(?::(\d\d)(\.\d{1,3})?)?$/; + +var PARTIAL_VALIDATION_EVENTS = 'keydown wheel mousedown'; +var PARTIAL_VALIDATION_TYPES = createMap(); +forEach('date,datetime-local,month,time,week'.split(','), function(type) { + PARTIAL_VALIDATION_TYPES[type] = true; +}); + +var inputType = { + + /** + * @ngdoc input + * @name input[text] + * + * @description + * Standard HTML text input with angular data binding, inherited by most of the `input` elements. + * + * + * @param {string} ngModel Assignable angular expression to data-bind to. + * @param {string=} name Property name of the form under which the control is published. + * @param {string=} required Adds `required` validation error key if the value is not entered. + * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to + * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of + * `required` when you want to data-bind to the `required` attribute. + * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than + * minlength. + * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than + * maxlength. Setting the attribute to a negative or non-numeric value, allows view values of + * any length. + * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string + * that contains the regular expression body that will be converted to a regular expression + * as in the ngPattern directive. + * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel {@link ngModel.NgModelController#$viewValue $viewValue} + * does not match a RegExp found by evaluating the Angular expression given in the attribute value. + * If the expression evaluates to a RegExp object, then this is used directly. + * If the expression evaluates to a string, then it will be converted to a RegExp + * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to + * `new RegExp('^abc$')`.
    + * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to + * start at the index of the last search's match, thus not taking the whole input value into + * account. + * @param {string=} ngChange Angular expression to be executed when input changes due to user + * interaction with the input element. + * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input. + * This parameter is ignored for input[type=password] controls, which will never trim the + * input. + * + * @example + + + +
    + +
    + + Required! + + Single word only! +
    + text = {{example.text}}
    + myForm.input.$valid = {{myForm.input.$valid}}
    + myForm.input.$error = {{myForm.input.$error}}
    + myForm.$valid = {{myForm.$valid}}
    + myForm.$error.required = {{!!myForm.$error.required}}
    +
    +
    + + var text = element(by.binding('example.text')); + var valid = element(by.binding('myForm.input.$valid')); + var input = element(by.model('example.text')); + + it('should initialize to model', function() { + expect(text.getText()).toContain('guest'); + expect(valid.getText()).toContain('true'); + }); + + it('should be invalid if empty', function() { + input.clear(); + input.sendKeys(''); + + expect(text.getText()).toEqual('text ='); + expect(valid.getText()).toContain('false'); + }); + + it('should be invalid if multi word', function() { + input.clear(); + input.sendKeys('hello world'); + + expect(valid.getText()).toContain('false'); + }); + +
    + */ + 'text': textInputType, + + /** + * @ngdoc input + * @name input[date] + * + * @description + * Input with date validation and transformation. In browsers that do not yet support + * the HTML5 date input, a text element will be used. In that case, text must be entered in a valid ISO-8601 + * date format (yyyy-MM-dd), for example: `2009-01-06`. Since many + * modern browsers do not yet support this input type, it is important to provide cues to users on the + * expected input format via a placeholder or label. + * + * The model must always be a Date object, otherwise Angular will throw an error. + * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string. + * + * The timezone to be used to read/write the `Date` instance in the model can be defined using + * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser. + * + * @param {string} ngModel Assignable angular expression to data-bind to. + * @param {string=} name Property name of the form under which the control is published. + * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. This must be a + * valid ISO date string (yyyy-MM-dd). You can also use interpolation inside this attribute + * (e.g. `min="{{minDate | date:'yyyy-MM-dd'}}"`). Note that `min` will also add native HTML5 + * constraint validation. + * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. This must be + * a valid ISO date string (yyyy-MM-dd). You can also use interpolation inside this attribute + * (e.g. `max="{{maxDate | date:'yyyy-MM-dd'}}"`). Note that `max` will also add native HTML5 + * constraint validation. + * @param {(date|string)=} ngMin Sets the `min` validation constraint to the Date / ISO date string + * the `ngMin` expression evaluates to. Note that it does not set the `min` attribute. + * @param {(date|string)=} ngMax Sets the `max` validation constraint to the Date / ISO date string + * the `ngMax` expression evaluates to. Note that it does not set the `max` attribute. + * @param {string=} required Sets `required` validation error key if the value is not entered. + * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to + * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of + * `required` when you want to data-bind to the `required` attribute. + * @param {string=} ngChange Angular expression to be executed when input changes due to user + * interaction with the input element. + * + * @example + + + +
    + + +
    + + Required! + + Not a valid date! +
    + value = {{example.value | date: "yyyy-MM-dd"}}
    + myForm.input.$valid = {{myForm.input.$valid}}
    + myForm.input.$error = {{myForm.input.$error}}
    + myForm.$valid = {{myForm.$valid}}
    + myForm.$error.required = {{!!myForm.$error.required}}
    +
    +
    + + var value = element(by.binding('example.value | date: "yyyy-MM-dd"')); + var valid = element(by.binding('myForm.input.$valid')); + var input = element(by.model('example.value')); + + // currently protractor/webdriver does not support + // sending keys to all known HTML5 input controls + // for various browsers (see https://github.com/angular/protractor/issues/562). + function setInput(val) { + // set the value of the element and force validation. + var scr = "var ipt = document.getElementById('exampleInput'); " + + "ipt.value = '" + val + "';" + + "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });"; + browser.executeScript(scr); + } + + it('should initialize to model', function() { + expect(value.getText()).toContain('2013-10-22'); + expect(valid.getText()).toContain('myForm.input.$valid = true'); + }); + + it('should be invalid if empty', function() { + setInput(''); + expect(value.getText()).toEqual('value ='); + expect(valid.getText()).toContain('myForm.input.$valid = false'); + }); + + it('should be invalid if over max', function() { + setInput('2015-01-01'); + expect(value.getText()).toContain(''); + expect(valid.getText()).toContain('myForm.input.$valid = false'); + }); + +
    + */ + 'date': createDateInputType('date', DATE_REGEXP, + createDateParser(DATE_REGEXP, ['yyyy', 'MM', 'dd']), + 'yyyy-MM-dd'), + + /** + * @ngdoc input + * @name input[datetime-local] + * + * @description + * Input with datetime validation and transformation. In browsers that do not yet support + * the HTML5 date input, a text element will be used. In that case, the text must be entered in a valid ISO-8601 + * local datetime format (yyyy-MM-ddTHH:mm:ss), for example: `2010-12-28T14:57:00`. + * + * The model must always be a Date object, otherwise Angular will throw an error. + * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string. + * + * The timezone to be used to read/write the `Date` instance in the model can be defined using + * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser. + * + * @param {string} ngModel Assignable angular expression to data-bind to. + * @param {string=} name Property name of the form under which the control is published. + * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. + * This must be a valid ISO datetime format (yyyy-MM-ddTHH:mm:ss). You can also use interpolation + * inside this attribute (e.g. `min="{{minDatetimeLocal | date:'yyyy-MM-ddTHH:mm:ss'}}"`). + * Note that `min` will also add native HTML5 constraint validation. + * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. + * This must be a valid ISO datetime format (yyyy-MM-ddTHH:mm:ss). You can also use interpolation + * inside this attribute (e.g. `max="{{maxDatetimeLocal | date:'yyyy-MM-ddTHH:mm:ss'}}"`). + * Note that `max` will also add native HTML5 constraint validation. + * @param {(date|string)=} ngMin Sets the `min` validation error key to the Date / ISO datetime string + * the `ngMin` expression evaluates to. Note that it does not set the `min` attribute. + * @param {(date|string)=} ngMax Sets the `max` validation error key to the Date / ISO datetime string + * the `ngMax` expression evaluates to. Note that it does not set the `max` attribute. + * @param {string=} required Sets `required` validation error key if the value is not entered. + * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to + * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of + * `required` when you want to data-bind to the `required` attribute. + * @param {string=} ngChange Angular expression to be executed when input changes due to user + * interaction with the input element. + * + * @example + + + +
    + + +
    + + Required! + + Not a valid date! +
    + value = {{example.value | date: "yyyy-MM-ddTHH:mm:ss"}}
    + myForm.input.$valid = {{myForm.input.$valid}}
    + myForm.input.$error = {{myForm.input.$error}}
    + myForm.$valid = {{myForm.$valid}}
    + myForm.$error.required = {{!!myForm.$error.required}}
    +
    +
    + + var value = element(by.binding('example.value | date: "yyyy-MM-ddTHH:mm:ss"')); + var valid = element(by.binding('myForm.input.$valid')); + var input = element(by.model('example.value')); + + // currently protractor/webdriver does not support + // sending keys to all known HTML5 input controls + // for various browsers (https://github.com/angular/protractor/issues/562). + function setInput(val) { + // set the value of the element and force validation. + var scr = "var ipt = document.getElementById('exampleInput'); " + + "ipt.value = '" + val + "';" + + "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });"; + browser.executeScript(scr); + } + + it('should initialize to model', function() { + expect(value.getText()).toContain('2010-12-28T14:57:00'); + expect(valid.getText()).toContain('myForm.input.$valid = true'); + }); + + it('should be invalid if empty', function() { + setInput(''); + expect(value.getText()).toEqual('value ='); + expect(valid.getText()).toContain('myForm.input.$valid = false'); + }); + + it('should be invalid if over max', function() { + setInput('2015-01-01T23:59:00'); + expect(value.getText()).toContain(''); + expect(valid.getText()).toContain('myForm.input.$valid = false'); + }); + +
    + */ + 'datetime-local': createDateInputType('datetimelocal', DATETIMELOCAL_REGEXP, + createDateParser(DATETIMELOCAL_REGEXP, ['yyyy', 'MM', 'dd', 'HH', 'mm', 'ss', 'sss']), + 'yyyy-MM-ddTHH:mm:ss.sss'), + + /** + * @ngdoc input + * @name input[time] + * + * @description + * Input with time validation and transformation. In browsers that do not yet support + * the HTML5 time input, a text element will be used. In that case, the text must be entered in a valid ISO-8601 + * local time format (HH:mm:ss), for example: `14:57:00`. Model must be a Date object. This binding will always output a + * Date object to the model of January 1, 1970, or local date `new Date(1970, 0, 1, HH, mm, ss)`. + * + * The model must always be a Date object, otherwise Angular will throw an error. + * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string. + * + * The timezone to be used to read/write the `Date` instance in the model can be defined using + * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser. + * + * @param {string} ngModel Assignable angular expression to data-bind to. + * @param {string=} name Property name of the form under which the control is published. + * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. + * This must be a valid ISO time format (HH:mm:ss). You can also use interpolation inside this + * attribute (e.g. `min="{{minTime | date:'HH:mm:ss'}}"`). Note that `min` will also add + * native HTML5 constraint validation. + * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. + * This must be a valid ISO time format (HH:mm:ss). You can also use interpolation inside this + * attribute (e.g. `max="{{maxTime | date:'HH:mm:ss'}}"`). Note that `max` will also add + * native HTML5 constraint validation. + * @param {(date|string)=} ngMin Sets the `min` validation constraint to the Date / ISO time string the + * `ngMin` expression evaluates to. Note that it does not set the `min` attribute. + * @param {(date|string)=} ngMax Sets the `max` validation constraint to the Date / ISO time string the + * `ngMax` expression evaluates to. Note that it does not set the `max` attribute. + * @param {string=} required Sets `required` validation error key if the value is not entered. + * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to + * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of + * `required` when you want to data-bind to the `required` attribute. + * @param {string=} ngChange Angular expression to be executed when input changes due to user + * interaction with the input element. + * + * @example + + + +
    + + +
    + + Required! + + Not a valid date! +
    + value = {{example.value | date: "HH:mm:ss"}}
    + myForm.input.$valid = {{myForm.input.$valid}}
    + myForm.input.$error = {{myForm.input.$error}}
    + myForm.$valid = {{myForm.$valid}}
    + myForm.$error.required = {{!!myForm.$error.required}}
    +
    +
    + + var value = element(by.binding('example.value | date: "HH:mm:ss"')); + var valid = element(by.binding('myForm.input.$valid')); + var input = element(by.model('example.value')); + + // currently protractor/webdriver does not support + // sending keys to all known HTML5 input controls + // for various browsers (https://github.com/angular/protractor/issues/562). + function setInput(val) { + // set the value of the element and force validation. + var scr = "var ipt = document.getElementById('exampleInput'); " + + "ipt.value = '" + val + "';" + + "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });"; + browser.executeScript(scr); + } + + it('should initialize to model', function() { + expect(value.getText()).toContain('14:57:00'); + expect(valid.getText()).toContain('myForm.input.$valid = true'); + }); + + it('should be invalid if empty', function() { + setInput(''); + expect(value.getText()).toEqual('value ='); + expect(valid.getText()).toContain('myForm.input.$valid = false'); + }); + + it('should be invalid if over max', function() { + setInput('23:59:00'); + expect(value.getText()).toContain(''); + expect(valid.getText()).toContain('myForm.input.$valid = false'); + }); + +
    + */ + 'time': createDateInputType('time', TIME_REGEXP, + createDateParser(TIME_REGEXP, ['HH', 'mm', 'ss', 'sss']), + 'HH:mm:ss.sss'), + + /** + * @ngdoc input + * @name input[week] + * + * @description + * Input with week-of-the-year validation and transformation to Date. In browsers that do not yet support + * the HTML5 week input, a text element will be used. In that case, the text must be entered in a valid ISO-8601 + * week format (yyyy-W##), for example: `2013-W02`. + * + * The model must always be a Date object, otherwise Angular will throw an error. + * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string. + * + * The timezone to be used to read/write the `Date` instance in the model can be defined using + * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser. + * + * @param {string} ngModel Assignable angular expression to data-bind to. + * @param {string=} name Property name of the form under which the control is published. + * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. + * This must be a valid ISO week format (yyyy-W##). You can also use interpolation inside this + * attribute (e.g. `min="{{minWeek | date:'yyyy-Www'}}"`). Note that `min` will also add + * native HTML5 constraint validation. + * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. + * This must be a valid ISO week format (yyyy-W##). You can also use interpolation inside this + * attribute (e.g. `max="{{maxWeek | date:'yyyy-Www'}}"`). Note that `max` will also add + * native HTML5 constraint validation. + * @param {(date|string)=} ngMin Sets the `min` validation constraint to the Date / ISO week string + * the `ngMin` expression evaluates to. Note that it does not set the `min` attribute. + * @param {(date|string)=} ngMax Sets the `max` validation constraint to the Date / ISO week string + * the `ngMax` expression evaluates to. Note that it does not set the `max` attribute. + * @param {string=} required Sets `required` validation error key if the value is not entered. + * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to + * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of + * `required` when you want to data-bind to the `required` attribute. + * @param {string=} ngChange Angular expression to be executed when input changes due to user + * interaction with the input element. + * + * @example + + + +
    + +
    + + Required! + + Not a valid date! +
    + value = {{example.value | date: "yyyy-Www"}}
    + myForm.input.$valid = {{myForm.input.$valid}}
    + myForm.input.$error = {{myForm.input.$error}}
    + myForm.$valid = {{myForm.$valid}}
    + myForm.$error.required = {{!!myForm.$error.required}}
    +
    +
    + + var value = element(by.binding('example.value | date: "yyyy-Www"')); + var valid = element(by.binding('myForm.input.$valid')); + var input = element(by.model('example.value')); + + // currently protractor/webdriver does not support + // sending keys to all known HTML5 input controls + // for various browsers (https://github.com/angular/protractor/issues/562). + function setInput(val) { + // set the value of the element and force validation. + var scr = "var ipt = document.getElementById('exampleInput'); " + + "ipt.value = '" + val + "';" + + "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });"; + browser.executeScript(scr); + } + + it('should initialize to model', function() { + expect(value.getText()).toContain('2013-W01'); + expect(valid.getText()).toContain('myForm.input.$valid = true'); + }); + + it('should be invalid if empty', function() { + setInput(''); + expect(value.getText()).toEqual('value ='); + expect(valid.getText()).toContain('myForm.input.$valid = false'); + }); + + it('should be invalid if over max', function() { + setInput('2015-W01'); + expect(value.getText()).toContain(''); + expect(valid.getText()).toContain('myForm.input.$valid = false'); + }); + +
    + */ + 'week': createDateInputType('week', WEEK_REGEXP, weekParser, 'yyyy-Www'), + + /** + * @ngdoc input + * @name input[month] + * + * @description + * Input with month validation and transformation. In browsers that do not yet support + * the HTML5 month input, a text element will be used. In that case, the text must be entered in a valid ISO-8601 + * month format (yyyy-MM), for example: `2009-01`. + * + * The model must always be a Date object, otherwise Angular will throw an error. + * Invalid `Date` objects (dates whose `getTime()` is `NaN`) will be rendered as an empty string. + * If the model is not set to the first of the month, the next view to model update will set it + * to the first of the month. + * + * The timezone to be used to read/write the `Date` instance in the model can be defined using + * {@link ng.directive:ngModelOptions ngModelOptions}. By default, this is the timezone of the browser. + * + * @param {string} ngModel Assignable angular expression to data-bind to. + * @param {string=} name Property name of the form under which the control is published. + * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. + * This must be a valid ISO month format (yyyy-MM). You can also use interpolation inside this + * attribute (e.g. `min="{{minMonth | date:'yyyy-MM'}}"`). Note that `min` will also add + * native HTML5 constraint validation. + * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. + * This must be a valid ISO month format (yyyy-MM). You can also use interpolation inside this + * attribute (e.g. `max="{{maxMonth | date:'yyyy-MM'}}"`). Note that `max` will also add + * native HTML5 constraint validation. + * @param {(date|string)=} ngMin Sets the `min` validation constraint to the Date / ISO week string + * the `ngMin` expression evaluates to. Note that it does not set the `min` attribute. + * @param {(date|string)=} ngMax Sets the `max` validation constraint to the Date / ISO week string + * the `ngMax` expression evaluates to. Note that it does not set the `max` attribute. + + * @param {string=} required Sets `required` validation error key if the value is not entered. + * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to + * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of + * `required` when you want to data-bind to the `required` attribute. + * @param {string=} ngChange Angular expression to be executed when input changes due to user + * interaction with the input element. + * + * @example + + + +
    + + +
    + + Required! + + Not a valid month! +
    + value = {{example.value | date: "yyyy-MM"}}
    + myForm.input.$valid = {{myForm.input.$valid}}
    + myForm.input.$error = {{myForm.input.$error}}
    + myForm.$valid = {{myForm.$valid}}
    + myForm.$error.required = {{!!myForm.$error.required}}
    +
    +
    + + var value = element(by.binding('example.value | date: "yyyy-MM"')); + var valid = element(by.binding('myForm.input.$valid')); + var input = element(by.model('example.value')); + + // currently protractor/webdriver does not support + // sending keys to all known HTML5 input controls + // for various browsers (https://github.com/angular/protractor/issues/562). + function setInput(val) { + // set the value of the element and force validation. + var scr = "var ipt = document.getElementById('exampleInput'); " + + "ipt.value = '" + val + "';" + + "angular.element(ipt).scope().$apply(function(s) { s.myForm[ipt.name].$setViewValue('" + val + "'); });"; + browser.executeScript(scr); + } + + it('should initialize to model', function() { + expect(value.getText()).toContain('2013-10'); + expect(valid.getText()).toContain('myForm.input.$valid = true'); + }); + + it('should be invalid if empty', function() { + setInput(''); + expect(value.getText()).toEqual('value ='); + expect(valid.getText()).toContain('myForm.input.$valid = false'); + }); + + it('should be invalid if over max', function() { + setInput('2015-01'); + expect(value.getText()).toContain(''); + expect(valid.getText()).toContain('myForm.input.$valid = false'); + }); + +
    + */ + 'month': createDateInputType('month', MONTH_REGEXP, + createDateParser(MONTH_REGEXP, ['yyyy', 'MM']), + 'yyyy-MM'), + + /** + * @ngdoc input + * @name input[number] + * + * @description + * Text input with number validation and transformation. Sets the `number` validation + * error if not a valid number. + * + *
    + * The model must always be of type `number` otherwise Angular will throw an error. + * Be aware that a string containing a number is not enough. See the {@link ngModel:numfmt} + * error docs for more information and an example of how to convert your model if necessary. + *
    + * + * ## Issues with HTML5 constraint validation + * + * In browsers that follow the + * [HTML5 specification](https://html.spec.whatwg.org/multipage/forms.html#number-state-%28type=number%29), + * `input[number]` does not work as expected with {@link ngModelOptions `ngModelOptions.allowInvalid`}. + * If a non-number is entered in the input, the browser will report the value as an empty string, + * which means the view / model values in `ngModel` and subsequently the scope value + * will also be an empty string. + * + * + * @param {string} ngModel Assignable angular expression to data-bind to. + * @param {string=} name Property name of the form under which the control is published. + * @param {string=} min Sets the `min` validation error key if the value entered is less than `min`. + * @param {string=} max Sets the `max` validation error key if the value entered is greater than `max`. + * @param {string=} required Sets `required` validation error key if the value is not entered. + * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to + * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of + * `required` when you want to data-bind to the `required` attribute. + * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than + * minlength. + * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than + * maxlength. Setting the attribute to a negative or non-numeric value, allows view values of + * any length. + * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string + * that contains the regular expression body that will be converted to a regular expression + * as in the ngPattern directive. + * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel {@link ngModel.NgModelController#$viewValue $viewValue} + * does not match a RegExp found by evaluating the Angular expression given in the attribute value. + * If the expression evaluates to a RegExp object, then this is used directly. + * If the expression evaluates to a string, then it will be converted to a RegExp + * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to + * `new RegExp('^abc$')`.
    + * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to + * start at the index of the last search's match, thus not taking the whole input value into + * account. + * @param {string=} ngChange Angular expression to be executed when input changes due to user + * interaction with the input element. + * + * @example + + + +
    + +
    + + Required! + + Not valid number! +
    + value = {{example.value}}
    + myForm.input.$valid = {{myForm.input.$valid}}
    + myForm.input.$error = {{myForm.input.$error}}
    + myForm.$valid = {{myForm.$valid}}
    + myForm.$error.required = {{!!myForm.$error.required}}
    +
    +
    + + var value = element(by.binding('example.value')); + var valid = element(by.binding('myForm.input.$valid')); + var input = element(by.model('example.value')); + + it('should initialize to model', function() { + expect(value.getText()).toContain('12'); + expect(valid.getText()).toContain('true'); + }); + + it('should be invalid if empty', function() { + input.clear(); + input.sendKeys(''); + expect(value.getText()).toEqual('value ='); + expect(valid.getText()).toContain('false'); + }); + + it('should be invalid if over max', function() { + input.clear(); + input.sendKeys('123'); + expect(value.getText()).toEqual('value ='); + expect(valid.getText()).toContain('false'); + }); + +
    + */ + 'number': numberInputType, + + + /** + * @ngdoc input + * @name input[url] + * + * @description + * Text input with URL validation. Sets the `url` validation error key if the content is not a + * valid URL. + * + *
    + * **Note:** `input[url]` uses a regex to validate urls that is derived from the regex + * used in Chromium. If you need stricter validation, you can use `ng-pattern` or modify + * the built-in validators (see the {@link guide/forms Forms guide}) + *
    + * + * @param {string} ngModel Assignable angular expression to data-bind to. + * @param {string=} name Property name of the form under which the control is published. + * @param {string=} required Sets `required` validation error key if the value is not entered. + * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to + * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of + * `required` when you want to data-bind to the `required` attribute. + * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than + * minlength. + * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than + * maxlength. Setting the attribute to a negative or non-numeric value, allows view values of + * any length. + * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string + * that contains the regular expression body that will be converted to a regular expression + * as in the ngPattern directive. + * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel {@link ngModel.NgModelController#$viewValue $viewValue} + * does not match a RegExp found by evaluating the Angular expression given in the attribute value. + * If the expression evaluates to a RegExp object, then this is used directly. + * If the expression evaluates to a string, then it will be converted to a RegExp + * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to + * `new RegExp('^abc$')`.
    + * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to + * start at the index of the last search's match, thus not taking the whole input value into + * account. + * @param {string=} ngChange Angular expression to be executed when input changes due to user + * interaction with the input element. + * + * @example + + + +
    +
    + + var text = element(by.binding('url.text')); + var valid = element(by.binding('myForm.input.$valid')); + var input = element(by.model('url.text')); + + it('should initialize to model', function() { + expect(text.getText()).toContain('http://google.com'); + expect(valid.getText()).toContain('true'); + }); + + it('should be invalid if empty', function() { + input.clear(); + input.sendKeys(''); + + expect(text.getText()).toEqual('text ='); + expect(valid.getText()).toContain('false'); + }); + + it('should be invalid if not url', function() { + input.clear(); + input.sendKeys('box'); + + expect(valid.getText()).toContain('false'); + }); + +
    + */ + 'url': urlInputType, + + + /** + * @ngdoc input + * @name input[email] + * + * @description + * Text input with email validation. Sets the `email` validation error key if not a valid email + * address. + * + *
    + * **Note:** `input[email]` uses a regex to validate email addresses that is derived from the regex + * used in Chromium. If you need stricter validation (e.g. requiring a top-level domain), you can + * use `ng-pattern` or modify the built-in validators (see the {@link guide/forms Forms guide}) + *
    + * + * @param {string} ngModel Assignable angular expression to data-bind to. + * @param {string=} name Property name of the form under which the control is published. + * @param {string=} required Sets `required` validation error key if the value is not entered. + * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to + * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of + * `required` when you want to data-bind to the `required` attribute. + * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than + * minlength. + * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than + * maxlength. Setting the attribute to a negative or non-numeric value, allows view values of + * any length. + * @param {string=} pattern Similar to `ngPattern` except that the attribute value is the actual string + * that contains the regular expression body that will be converted to a regular expression + * as in the ngPattern directive. + * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel {@link ngModel.NgModelController#$viewValue $viewValue} + * does not match a RegExp found by evaluating the Angular expression given in the attribute value. + * If the expression evaluates to a RegExp object, then this is used directly. + * If the expression evaluates to a string, then it will be converted to a RegExp + * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to + * `new RegExp('^abc$')`.
    + * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to + * start at the index of the last search's match, thus not taking the whole input value into + * account. + * @param {string=} ngChange Angular expression to be executed when input changes due to user + * interaction with the input element. + * + * @example + + + +
    + +
    + + Required! + + Not valid email! +
    + text = {{email.text}}
    + myForm.input.$valid = {{myForm.input.$valid}}
    + myForm.input.$error = {{myForm.input.$error}}
    + myForm.$valid = {{myForm.$valid}}
    + myForm.$error.required = {{!!myForm.$error.required}}
    + myForm.$error.email = {{!!myForm.$error.email}}
    +
    +
    + + var text = element(by.binding('email.text')); + var valid = element(by.binding('myForm.input.$valid')); + var input = element(by.model('email.text')); + + it('should initialize to model', function() { + expect(text.getText()).toContain('me@example.com'); + expect(valid.getText()).toContain('true'); + }); + + it('should be invalid if empty', function() { + input.clear(); + input.sendKeys(''); + expect(text.getText()).toEqual('text ='); + expect(valid.getText()).toContain('false'); + }); + + it('should be invalid if not email', function() { + input.clear(); + input.sendKeys('xxx'); + + expect(valid.getText()).toContain('false'); + }); + +
    + */ + 'email': emailInputType, + + + /** + * @ngdoc input + * @name input[radio] + * + * @description + * HTML radio button. + * + * @param {string} ngModel Assignable angular expression to data-bind to. + * @param {string} value The value to which the `ngModel` expression should be set when selected. + * Note that `value` only supports `string` values, i.e. the scope model needs to be a string, + * too. Use `ngValue` if you need complex models (`number`, `object`, ...). + * @param {string=} name Property name of the form under which the control is published. + * @param {string=} ngChange Angular expression to be executed when input changes due to user + * interaction with the input element. + * @param {string} ngValue Angular expression to which `ngModel` will be be set when the radio + * is selected. Should be used instead of the `value` attribute if you need + * a non-string `ngModel` (`boolean`, `array`, ...). + * + * @example + + + +
    +
    +
    +
    + color = {{color.name | json}}
    +
    + Note that `ng-value="specialValue"` sets radio item's value to be the value of `$scope.specialValue`. +
    + + it('should change state', function() { + var color = element(by.binding('color.name')); + + expect(color.getText()).toContain('blue'); + + element.all(by.model('color.name')).get(0).click(); + + expect(color.getText()).toContain('red'); + }); + +
    + */ + 'radio': radioInputType, + + + /** + * @ngdoc input + * @name input[checkbox] + * + * @description + * HTML checkbox. + * + * @param {string} ngModel Assignable angular expression to data-bind to. + * @param {string=} name Property name of the form under which the control is published. + * @param {expression=} ngTrueValue The value to which the expression should be set when selected. + * @param {expression=} ngFalseValue The value to which the expression should be set when not selected. + * @param {string=} ngChange Angular expression to be executed when input changes due to user + * interaction with the input element. + * + * @example + + + +
    +
    +
    + value1 = {{checkboxModel.value1}}
    + value2 = {{checkboxModel.value2}}
    +
    +
    + + it('should change state', function() { + var value1 = element(by.binding('checkboxModel.value1')); + var value2 = element(by.binding('checkboxModel.value2')); + + expect(value1.getText()).toContain('true'); + expect(value2.getText()).toContain('YES'); + + element(by.model('checkboxModel.value1')).click(); + element(by.model('checkboxModel.value2')).click(); + + expect(value1.getText()).toContain('false'); + expect(value2.getText()).toContain('NO'); + }); + +
    + */ + 'checkbox': checkboxInputType, + + 'hidden': noop, + 'button': noop, + 'submit': noop, + 'reset': noop, + 'file': noop +}; + +function stringBasedInputType(ctrl) { + ctrl.$formatters.push(function(value) { + return ctrl.$isEmpty(value) ? value : value.toString(); + }); +} + +function textInputType(scope, element, attr, ctrl, $sniffer, $browser) { + baseInputType(scope, element, attr, ctrl, $sniffer, $browser); + stringBasedInputType(ctrl); +} + +function baseInputType(scope, element, attr, ctrl, $sniffer, $browser) { + var type = lowercase(element[0].type); + + // In composition mode, users are still inputing intermediate text buffer, + // hold the listener until composition is done. + // More about composition events: https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent + if (!$sniffer.android) { + var composing = false; + + element.on('compositionstart', function() { + composing = true; + }); + + element.on('compositionend', function() { + composing = false; + listener(); + }); + } + + var timeout; + + var listener = function(ev) { + if (timeout) { + $browser.defer.cancel(timeout); + timeout = null; + } + if (composing) return; + var value = element.val(), + event = ev && ev.type; + + // By default we will trim the value + // If the attribute ng-trim exists we will avoid trimming + // If input type is 'password', the value is never trimmed + if (type !== 'password' && (!attr.ngTrim || attr.ngTrim !== 'false')) { + value = trim(value); + } + + // If a control is suffering from bad input (due to native validators), browsers discard its + // value, so it may be necessary to revalidate (by calling $setViewValue again) even if the + // control's value is the same empty value twice in a row. + if (ctrl.$viewValue !== value || (value === '' && ctrl.$$hasNativeValidators)) { + ctrl.$setViewValue(value, event); + } + }; + + // if the browser does support "input" event, we are fine - except on IE9 which doesn't fire the + // input event on backspace, delete or cut + if ($sniffer.hasEvent('input')) { + element.on('input', listener); + } else { + var deferListener = function(ev, input, origValue) { + if (!timeout) { + timeout = $browser.defer(function() { + timeout = null; + if (!input || input.value !== origValue) { + listener(ev); + } + }); + } + }; + + element.on('keydown', function(event) { + var key = event.keyCode; + + // ignore + // command modifiers arrows + if (key === 91 || (15 < key && key < 19) || (37 <= key && key <= 40)) return; + + deferListener(event, this, this.value); + }); + + // if user modifies input value using context menu in IE, we need "paste" and "cut" events to catch it + if ($sniffer.hasEvent('paste')) { + element.on('paste cut', deferListener); + } + } + + // if user paste into input using mouse on older browser + // or form autocomplete on newer browser, we need "change" event to catch it + element.on('change', listener); + + // Some native input types (date-family) have the ability to change validity without + // firing any input/change events. + // For these event types, when native validators are present and the browser supports the type, + // check for validity changes on various DOM events. + if (PARTIAL_VALIDATION_TYPES[type] && ctrl.$$hasNativeValidators && type === attr.type) { + element.on(PARTIAL_VALIDATION_EVENTS, function(ev) { + if (!timeout) { + var validity = this[VALIDITY_STATE_PROPERTY]; + var origBadInput = validity.badInput; + var origTypeMismatch = validity.typeMismatch; + timeout = $browser.defer(function() { + timeout = null; + if (validity.badInput !== origBadInput || validity.typeMismatch !== origTypeMismatch) { + listener(ev); + } + }); + } + }); + } + + ctrl.$render = function() { + // Workaround for Firefox validation #12102. + var value = ctrl.$isEmpty(ctrl.$viewValue) ? '' : ctrl.$viewValue; + if (element.val() !== value) { + element.val(value); + } + }; +} + +function weekParser(isoWeek, existingDate) { + if (isDate(isoWeek)) { + return isoWeek; + } + + if (isString(isoWeek)) { + WEEK_REGEXP.lastIndex = 0; + var parts = WEEK_REGEXP.exec(isoWeek); + if (parts) { + var year = +parts[1], + week = +parts[2], + hours = 0, + minutes = 0, + seconds = 0, + milliseconds = 0, + firstThurs = getFirstThursdayOfYear(year), + addDays = (week - 1) * 7; + + if (existingDate) { + hours = existingDate.getHours(); + minutes = existingDate.getMinutes(); + seconds = existingDate.getSeconds(); + milliseconds = existingDate.getMilliseconds(); + } + + return new Date(year, 0, firstThurs.getDate() + addDays, hours, minutes, seconds, milliseconds); + } + } + + return NaN; +} + +function createDateParser(regexp, mapping) { + return function(iso, date) { + var parts, map; + + if (isDate(iso)) { + return iso; + } + + if (isString(iso)) { + // When a date is JSON'ified to wraps itself inside of an extra + // set of double quotes. This makes the date parsing code unable + // to match the date string and parse it as a date. + if (iso.charAt(0) == '"' && iso.charAt(iso.length - 1) == '"') { + iso = iso.substring(1, iso.length - 1); + } + if (ISO_DATE_REGEXP.test(iso)) { + return new Date(iso); + } + regexp.lastIndex = 0; + parts = regexp.exec(iso); + + if (parts) { + parts.shift(); + if (date) { + map = { + yyyy: date.getFullYear(), + MM: date.getMonth() + 1, + dd: date.getDate(), + HH: date.getHours(), + mm: date.getMinutes(), + ss: date.getSeconds(), + sss: date.getMilliseconds() / 1000 + }; + } else { + map = { yyyy: 1970, MM: 1, dd: 1, HH: 0, mm: 0, ss: 0, sss: 0 }; + } + + forEach(parts, function(part, index) { + if (index < mapping.length) { + map[mapping[index]] = +part; + } + }); + return new Date(map.yyyy, map.MM - 1, map.dd, map.HH, map.mm, map.ss || 0, map.sss * 1000 || 0); + } + } + + return NaN; + }; +} + +function createDateInputType(type, regexp, parseDate, format) { + return function dynamicDateInputType(scope, element, attr, ctrl, $sniffer, $browser, $filter) { + badInputChecker(scope, element, attr, ctrl); + baseInputType(scope, element, attr, ctrl, $sniffer, $browser); + var timezone = ctrl && ctrl.$options && ctrl.$options.timezone; + var previousDate; + + ctrl.$$parserName = type; + ctrl.$parsers.push(function(value) { + if (ctrl.$isEmpty(value)) return null; + if (regexp.test(value)) { + // Note: We cannot read ctrl.$modelValue, as there might be a different + // parser/formatter in the processing chain so that the model + // contains some different data format! + var parsedDate = parseDate(value, previousDate); + if (timezone) { + parsedDate = convertTimezoneToLocal(parsedDate, timezone); + } + return parsedDate; + } + return undefined; + }); + + ctrl.$formatters.push(function(value) { + if (value && !isDate(value)) { + throw ngModelMinErr('datefmt', 'Expected `{0}` to be a date', value); + } + if (isValidDate(value)) { + previousDate = value; + if (previousDate && timezone) { + previousDate = convertTimezoneToLocal(previousDate, timezone, true); + } + return $filter('date')(value, format, timezone); + } else { + previousDate = null; + return ''; + } + }); + + if (isDefined(attr.min) || attr.ngMin) { + var minVal; + ctrl.$validators.min = function(value) { + return !isValidDate(value) || isUndefined(minVal) || parseDate(value) >= minVal; + }; + attr.$observe('min', function(val) { + minVal = parseObservedDateValue(val); + ctrl.$validate(); + }); + } + + if (isDefined(attr.max) || attr.ngMax) { + var maxVal; + ctrl.$validators.max = function(value) { + return !isValidDate(value) || isUndefined(maxVal) || parseDate(value) <= maxVal; + }; + attr.$observe('max', function(val) { + maxVal = parseObservedDateValue(val); + ctrl.$validate(); + }); + } + + function isValidDate(value) { + // Invalid Date: getTime() returns NaN + return value && !(value.getTime && value.getTime() !== value.getTime()); + } + + function parseObservedDateValue(val) { + return isDefined(val) && !isDate(val) ? parseDate(val) || undefined : val; + } + }; +} + +function badInputChecker(scope, element, attr, ctrl) { + var node = element[0]; + var nativeValidation = ctrl.$$hasNativeValidators = isObject(node.validity); + if (nativeValidation) { + ctrl.$parsers.push(function(value) { + var validity = element.prop(VALIDITY_STATE_PROPERTY) || {}; + return validity.badInput || validity.typeMismatch ? undefined : value; + }); + } +} + +function numberInputType(scope, element, attr, ctrl, $sniffer, $browser) { + badInputChecker(scope, element, attr, ctrl); + baseInputType(scope, element, attr, ctrl, $sniffer, $browser); + + ctrl.$$parserName = 'number'; + ctrl.$parsers.push(function(value) { + if (ctrl.$isEmpty(value)) return null; + if (NUMBER_REGEXP.test(value)) return parseFloat(value); + return undefined; + }); + + ctrl.$formatters.push(function(value) { + if (!ctrl.$isEmpty(value)) { + if (!isNumber(value)) { + throw ngModelMinErr('numfmt', 'Expected `{0}` to be a number', value); + } + value = value.toString(); + } + return value; + }); + + if (isDefined(attr.min) || attr.ngMin) { + var minVal; + ctrl.$validators.min = function(value) { + return ctrl.$isEmpty(value) || isUndefined(minVal) || value >= minVal; + }; + + attr.$observe('min', function(val) { + if (isDefined(val) && !isNumber(val)) { + val = parseFloat(val, 10); + } + minVal = isNumber(val) && !isNaN(val) ? val : undefined; + // TODO(matsko): implement validateLater to reduce number of validations + ctrl.$validate(); + }); + } + + if (isDefined(attr.max) || attr.ngMax) { + var maxVal; + ctrl.$validators.max = function(value) { + return ctrl.$isEmpty(value) || isUndefined(maxVal) || value <= maxVal; + }; + + attr.$observe('max', function(val) { + if (isDefined(val) && !isNumber(val)) { + val = parseFloat(val, 10); + } + maxVal = isNumber(val) && !isNaN(val) ? val : undefined; + // TODO(matsko): implement validateLater to reduce number of validations + ctrl.$validate(); + }); + } +} + +function urlInputType(scope, element, attr, ctrl, $sniffer, $browser) { + // Note: no badInputChecker here by purpose as `url` is only a validation + // in browsers, i.e. we can always read out input.value even if it is not valid! + baseInputType(scope, element, attr, ctrl, $sniffer, $browser); + stringBasedInputType(ctrl); + + ctrl.$$parserName = 'url'; + ctrl.$validators.url = function(modelValue, viewValue) { + var value = modelValue || viewValue; + return ctrl.$isEmpty(value) || URL_REGEXP.test(value); + }; +} + +function emailInputType(scope, element, attr, ctrl, $sniffer, $browser) { + // Note: no badInputChecker here by purpose as `url` is only a validation + // in browsers, i.e. we can always read out input.value even if it is not valid! + baseInputType(scope, element, attr, ctrl, $sniffer, $browser); + stringBasedInputType(ctrl); + + ctrl.$$parserName = 'email'; + ctrl.$validators.email = function(modelValue, viewValue) { + var value = modelValue || viewValue; + return ctrl.$isEmpty(value) || EMAIL_REGEXP.test(value); + }; +} + +function radioInputType(scope, element, attr, ctrl) { + // make the name unique, if not defined + if (isUndefined(attr.name)) { + element.attr('name', nextUid()); + } + + var listener = function(ev) { + if (element[0].checked) { + ctrl.$setViewValue(attr.value, ev && ev.type); + } + }; + + element.on('click', listener); + + ctrl.$render = function() { + var value = attr.value; + element[0].checked = (value == ctrl.$viewValue); + }; + + attr.$observe('value', ctrl.$render); +} + +function parseConstantExpr($parse, context, name, expression, fallback) { + var parseFn; + if (isDefined(expression)) { + parseFn = $parse(expression); + if (!parseFn.constant) { + throw ngModelMinErr('constexpr', 'Expected constant expression for `{0}`, but saw ' + + '`{1}`.', name, expression); + } + return parseFn(context); + } + return fallback; +} + +function checkboxInputType(scope, element, attr, ctrl, $sniffer, $browser, $filter, $parse) { + var trueValue = parseConstantExpr($parse, scope, 'ngTrueValue', attr.ngTrueValue, true); + var falseValue = parseConstantExpr($parse, scope, 'ngFalseValue', attr.ngFalseValue, false); + + var listener = function(ev) { + ctrl.$setViewValue(element[0].checked, ev && ev.type); + }; + + element.on('click', listener); + + ctrl.$render = function() { + element[0].checked = ctrl.$viewValue; + }; + + // Override the standard `$isEmpty` because the $viewValue of an empty checkbox is always set to `false` + // This is because of the parser below, which compares the `$modelValue` with `trueValue` to convert + // it to a boolean. + ctrl.$isEmpty = function(value) { + return value === false; + }; + + ctrl.$formatters.push(function(value) { + return equals(value, trueValue); + }); + + ctrl.$parsers.push(function(value) { + return value ? trueValue : falseValue; + }); +} + + +/** + * @ngdoc directive + * @name textarea + * @restrict E + * + * @description + * HTML textarea element control with angular data-binding. The data-binding and validation + * properties of this element are exactly the same as those of the + * {@link ng.directive:input input element}. + * + * @param {string} ngModel Assignable angular expression to data-bind to. + * @param {string=} name Property name of the form under which the control is published. + * @param {string=} required Sets `required` validation error key if the value is not entered. + * @param {string=} ngRequired Adds `required` attribute and `required` validation constraint to + * the element when the ngRequired expression evaluates to true. Use `ngRequired` instead of + * `required` when you want to data-bind to the `required` attribute. + * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than + * minlength. + * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than + * maxlength. Setting the attribute to a negative or non-numeric value, allows view values of any + * length. + * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel {@link ngModel.NgModelController#$viewValue $viewValue} + * does not match a RegExp found by evaluating the Angular expression given in the attribute value. + * If the expression evaluates to a RegExp object, then this is used directly. + * If the expression evaluates to a string, then it will be converted to a RegExp + * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to + * `new RegExp('^abc$')`.
    + * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to + * start at the index of the last search's match, thus not taking the whole input value into + * account. + * @param {string=} ngChange Angular expression to be executed when input changes due to user + * interaction with the input element. + * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input. + */ + + +/** + * @ngdoc directive + * @name input + * @restrict E + * + * @description + * HTML input element control. When used together with {@link ngModel `ngModel`}, it provides data-binding, + * input state control, and validation. + * Input control follows HTML5 input types and polyfills the HTML5 validation behavior for older browsers. + * + *
    + * **Note:** Not every feature offered is available for all input types. + * Specifically, data binding and event handling via `ng-model` is unsupported for `input[file]`. + *
    + * + * @param {string} ngModel Assignable angular expression to data-bind to. + * @param {string=} name Property name of the form under which the control is published. + * @param {string=} required Sets `required` validation error key if the value is not entered. + * @param {boolean=} ngRequired Sets `required` attribute if set to true + * @param {number=} ngMinlength Sets `minlength` validation error key if the value is shorter than + * minlength. + * @param {number=} ngMaxlength Sets `maxlength` validation error key if the value is longer than + * maxlength. Setting the attribute to a negative or non-numeric value, allows view values of any + * length. + * @param {string=} ngPattern Sets `pattern` validation error key if the ngModel {@link ngModel.NgModelController#$viewValue $viewValue} + * value does not match a RegExp found by evaluating the Angular expression given in the attribute value. + * If the expression evaluates to a RegExp object, then this is used directly. + * If the expression evaluates to a string, then it will be converted to a RegExp + * after wrapping it in `^` and `$` characters. For instance, `"abc"` will be converted to + * `new RegExp('^abc$')`.
    + * **Note:** Avoid using the `g` flag on the RegExp, as it will cause each successive search to + * start at the index of the last search's match, thus not taking the whole input value into + * account. + * @param {string=} ngChange Angular expression to be executed when input changes due to user + * interaction with the input element. + * @param {boolean=} [ngTrim=true] If set to false Angular will not automatically trim the input. + * This parameter is ignored for input[type=password] controls, which will never trim the + * input. + * + * @example + + + +
    +
    + +
    + + Required! +
    + +
    + + Too short! + + Too long! +
    +
    +
    + user = {{user}}
    + myForm.userName.$valid = {{myForm.userName.$valid}}
    + myForm.userName.$error = {{myForm.userName.$error}}
    + myForm.lastName.$valid = {{myForm.lastName.$valid}}
    + myForm.lastName.$error = {{myForm.lastName.$error}}
    + myForm.$valid = {{myForm.$valid}}
    + myForm.$error.required = {{!!myForm.$error.required}}
    + myForm.$error.minlength = {{!!myForm.$error.minlength}}
    + myForm.$error.maxlength = {{!!myForm.$error.maxlength}}
    +
    +
    + + var user = element(by.exactBinding('user')); + var userNameValid = element(by.binding('myForm.userName.$valid')); + var lastNameValid = element(by.binding('myForm.lastName.$valid')); + var lastNameError = element(by.binding('myForm.lastName.$error')); + var formValid = element(by.binding('myForm.$valid')); + var userNameInput = element(by.model('user.name')); + var userLastInput = element(by.model('user.last')); + + it('should initialize to model', function() { + expect(user.getText()).toContain('{"name":"guest","last":"visitor"}'); + expect(userNameValid.getText()).toContain('true'); + expect(formValid.getText()).toContain('true'); + }); + + it('should be invalid if empty when required', function() { + userNameInput.clear(); + userNameInput.sendKeys(''); + + expect(user.getText()).toContain('{"last":"visitor"}'); + expect(userNameValid.getText()).toContain('false'); + expect(formValid.getText()).toContain('false'); + }); + + it('should be valid if empty when min length is set', function() { + userLastInput.clear(); + userLastInput.sendKeys(''); + + expect(user.getText()).toContain('{"name":"guest","last":""}'); + expect(lastNameValid.getText()).toContain('true'); + expect(formValid.getText()).toContain('true'); + }); + + it('should be invalid if less than required min length', function() { + userLastInput.clear(); + userLastInput.sendKeys('xx'); + + expect(user.getText()).toContain('{"name":"guest"}'); + expect(lastNameValid.getText()).toContain('false'); + expect(lastNameError.getText()).toContain('minlength'); + expect(formValid.getText()).toContain('false'); + }); + + it('should be invalid if longer than max length', function() { + userLastInput.clear(); + userLastInput.sendKeys('some ridiculously long name'); + + expect(user.getText()).toContain('{"name":"guest"}'); + expect(lastNameValid.getText()).toContain('false'); + expect(lastNameError.getText()).toContain('maxlength'); + expect(formValid.getText()).toContain('false'); + }); + +
    + */ +var inputDirective = ['$browser', '$sniffer', '$filter', '$parse', + function($browser, $sniffer, $filter, $parse) { + return { + restrict: 'E', + require: ['?ngModel'], + link: { + pre: function(scope, element, attr, ctrls) { + if (ctrls[0]) { + (inputType[lowercase(attr.type)] || inputType.text)(scope, element, attr, ctrls[0], $sniffer, + $browser, $filter, $parse); + } + } + } + }; +}]; + + + +var CONSTANT_VALUE_REGEXP = /^(true|false|\d+)$/; +/** + * @ngdoc directive + * @name ngValue + * + * @description + * Binds the given expression to the value of `