From 016d9a2ae924c3999ff9aa279511e32c0bfbe7bb Mon Sep 17 00:00:00 2001 From: Thomas Park Date: Tue, 12 Nov 2013 15:34:23 -0500 Subject: update to fontawesome 4 --- .../src/assets/font-awesome/font/FontAwesome.otf | Bin 61896 -> 0 bytes .../font-awesome/font/fontawesome-webfont.eot | Bin 37405 -> 0 bytes .../font-awesome/font/fontawesome-webfont.svg | 399 - .../font-awesome/font/fontawesome-webfont.ttf | Bin 79076 -> 0 bytes .../font-awesome/font/fontawesome-webfont.woff | Bin 43572 -> 0 bytes .../src/assets/font-awesome/fonts/FontAwesome.otf | Bin 0 -> 62856 bytes .../font-awesome/fonts/fontawesome-webfont.eot | Bin 0 -> 38205 bytes .../font-awesome/fonts/fontawesome-webfont.svg | 414 + .../font-awesome/fonts/fontawesome-webfont.ttf | Bin 0 -> 80652 bytes .../font-awesome/fonts/fontawesome-webfont.woff | Bin 0 -> 44432 bytes .../src/assets/font-awesome/less/bootstrap.less | 84 - .../assets/font-awesome/less/bordered-pulled.less | 19 + .../src/assets/font-awesome/less/core.less | 136 +- .../src/assets/font-awesome/less/extras.less | 93 - .../src/assets/font-awesome/less/fixed-width.less | 9 + .../assets/font-awesome/less/font-awesome-ie7.less | 67 - .../src/assets/font-awesome/less/font-awesome.less | 19 +- .../src/assets/font-awesome/less/icons.less | 4 +- .../src/assets/font-awesome/less/larger.less | 16 + .../src/assets/font-awesome/less/list.less | 22 + .../src/assets/font-awesome/less/mixins.less | 58 +- .../src/assets/font-awesome/less/path.less | 12 +- .../assets/font-awesome/less/rotated-flipped.less | 12 + .../src/assets/font-awesome/less/spinning.less | 33 + .../src/assets/font-awesome/less/stacked.less | 23 + .../src/assets/font-awesome/less/variables.less | 18 +- .../src/assets/font-awesome/scss/_bootstrap.scss | 84 - .../assets/font-awesome/scss/_bordered-pulled.scss | 19 + .../src/assets/font-awesome/scss/_core.scss | 136 +- .../src/assets/font-awesome/scss/_extras.scss | 93 - .../src/assets/font-awesome/scss/_fixed-width.scss | 9 + .../src/assets/font-awesome/scss/_icons.scss | 6 +- .../src/assets/font-awesome/scss/_larger.scss | 16 + .../src/assets/font-awesome/scss/_list.scss | 22 + .../src/assets/font-awesome/scss/_mixins.scss | 58 +- .../src/assets/font-awesome/scss/_path.scss | 12 +- .../assets/font-awesome/scss/_rotated-flipped.scss | 12 + .../src/assets/font-awesome/scss/_spinning.scss | 33 + .../src/assets/font-awesome/scss/_stacked.scss | 23 + .../src/assets/font-awesome/scss/_variables.scss | 17 +- .../assets/font-awesome/scss/font-awesome-ie7.scss | 67 - .../src/assets/font-awesome/scss/font-awesome.scss | 9 +- .../src/assets/img/contribution-sample.png | Bin 2441 -> 0 bytes .../font-awesome/src/assets/img/fort_awesome.jpg | Bin 114822 -> 0 bytes .../src/assets/img/glyphicons-halflings-white.png | Bin 8777 -> 0 bytes .../src/assets/img/glyphicons-halflings.png | Bin 12799 -> 0 bytes .../font-awesome/src/assets/img/icon-flag.pdf | 1355 --- .../src/assets/js/bootstrap-3.0.0.min.js | 6 + .../font-awesome/src/assets/js/html5shiv.js | 8 + .../font-awesome/src/assets/js/jquery-1.10.2.js | 9789 ++++++++++++++++++++ .../src/assets/js/jquery-1.10.2.min.js | 6 + .../src/assets/js/jquery-1.10.2.min.map | 1 + .../font-awesome/src/assets/js/respond.min.js | 6 + .../font-awesome/src/assets/js/site.js | 2 +- .../src/assets/less/bootstrap-2.3.2/accordion.less | 34 - .../src/assets/less/bootstrap-2.3.2/alerts.less | 79 - .../src/assets/less/bootstrap-2.3.2/bootstrap.less | 63 - .../assets/less/bootstrap-2.3.2/breadcrumbs.less | 24 - .../assets/less/bootstrap-2.3.2/button-groups.less | 229 - .../src/assets/less/bootstrap-2.3.2/buttons.less | 228 - .../src/assets/less/bootstrap-2.3.2/carousel.less | 158 - .../src/assets/less/bootstrap-2.3.2/close.less | 32 - .../src/assets/less/bootstrap-2.3.2/code.less | 61 - .../less/bootstrap-2.3.2/component-animations.less | 22 - .../src/assets/less/bootstrap-2.3.2/dropdowns.less | 248 - .../src/assets/less/bootstrap-2.3.2/forms.less | 690 -- .../src/assets/less/bootstrap-2.3.2/grid.less | 21 - .../src/assets/less/bootstrap-2.3.2/hero-unit.less | 25 - .../assets/less/bootstrap-2.3.2/labels-badges.less | 84 - .../src/assets/less/bootstrap-2.3.2/layouts.less | 16 - .../src/assets/less/bootstrap-2.3.2/media.less | 55 - .../src/assets/less/bootstrap-2.3.2/mixins.less | 702 -- .../src/assets/less/bootstrap-2.3.2/modals.less | 95 - .../src/assets/less/bootstrap-2.3.2/navbar.less | 497 - .../src/assets/less/bootstrap-2.3.2/navs.less | 409 - .../src/assets/less/bootstrap-2.3.2/pager.less | 43 - .../assets/less/bootstrap-2.3.2/pagination.less | 123 - .../src/assets/less/bootstrap-2.3.2/popovers.less | 133 - .../assets/less/bootstrap-2.3.2/progress-bars.less | 122 - .../src/assets/less/bootstrap-2.3.2/reset.less | 216 - .../bootstrap-2.3.2/responsive-1200px-min.less | 28 - .../less/bootstrap-2.3.2/responsive-767px-max.less | 193 - .../bootstrap-2.3.2/responsive-768px-979px.less | 19 - .../less/bootstrap-2.3.2/responsive-navbar.less | 189 - .../less/bootstrap-2.3.2/responsive-utilities.less | 59 - .../assets/less/bootstrap-2.3.2/responsive.less | 48 - .../assets/less/bootstrap-2.3.2/scaffolding.less | 53 - .../src/assets/less/bootstrap-2.3.2/sprites.less | 197 - .../src/assets/less/bootstrap-2.3.2/tables.less | 244 - .../assets/less/bootstrap-2.3.2/thumbnails.less | 53 - .../src/assets/less/bootstrap-2.3.2/tooltip.less | 70 - .../src/assets/less/bootstrap-2.3.2/type.less | 247 - .../src/assets/less/bootstrap-2.3.2/utilities.less | 30 - .../src/assets/less/bootstrap-2.3.2/variables.less | 301 - .../src/assets/less/bootstrap-2.3.2/wells.less | 29 - .../src/assets/less/bootstrap-3.0.0/alerts.less | 67 + .../src/assets/less/bootstrap-3.0.0/badges.less | 51 + .../src/assets/less/bootstrap-3.0.0/bootstrap.less | 59 + .../assets/less/bootstrap-3.0.0/breadcrumbs.less | 23 + .../assets/less/bootstrap-3.0.0/button-groups.less | 248 + .../src/assets/less/bootstrap-3.0.0/buttons.less | 160 + .../src/assets/less/bootstrap-3.0.0/carousel.less | 209 + .../src/assets/less/bootstrap-3.0.0/close.less | 33 + .../src/assets/less/bootstrap-3.0.0/code.less | 56 + .../less/bootstrap-3.0.0/component-animations.less | 29 + .../src/assets/less/bootstrap-3.0.0/dropdowns.less | 193 + .../src/assets/less/bootstrap-3.0.0/forms.less | 353 + .../assets/less/bootstrap-3.0.0/glyphicons.less | 232 + .../src/assets/less/bootstrap-3.0.0/grid.less | 346 + .../assets/less/bootstrap-3.0.0/input-groups.less | 127 + .../src/assets/less/bootstrap-3.0.0/jumbotron.less | 40 + .../src/assets/less/bootstrap-3.0.0/labels.less | 58 + .../assets/less/bootstrap-3.0.0/list-group.less | 88 + .../src/assets/less/bootstrap-3.0.0/media.less | 56 + .../src/assets/less/bootstrap-3.0.0/mixins.less | 723 ++ .../src/assets/less/bootstrap-3.0.0/modals.less | 141 + .../src/assets/less/bootstrap-3.0.0/navbar.less | 621 ++ .../src/assets/less/bootstrap-3.0.0/navs.less | 229 + .../src/assets/less/bootstrap-3.0.0/normalize.less | 396 + .../src/assets/less/bootstrap-3.0.0/pager.less | 55 + .../assets/less/bootstrap-3.0.0/pagination.less | 83 + .../src/assets/less/bootstrap-3.0.0/panels.less | 148 + .../src/assets/less/bootstrap-3.0.0/popovers.less | 133 + .../src/assets/less/bootstrap-3.0.0/print.less | 100 + .../assets/less/bootstrap-3.0.0/progress-bars.less | 95 + .../less/bootstrap-3.0.0/responsive-utilities.less | 220 + .../assets/less/bootstrap-3.0.0/scaffolding.less | 130 + .../src/assets/less/bootstrap-3.0.0/tables.less | 236 + .../src/assets/less/bootstrap-3.0.0/theme.less | 232 + .../assets/less/bootstrap-3.0.0/thumbnails.less | 31 + .../src/assets/less/bootstrap-3.0.0/tooltip.less | 95 + .../src/assets/less/bootstrap-3.0.0/type.less | 238 + .../src/assets/less/bootstrap-3.0.0/utilities.less | 42 + .../src/assets/less/bootstrap-3.0.0/variables.less | 620 ++ .../src/assets/less/bootstrap-3.0.0/wells.less | 29 + .../font-awesome/src/assets/less/lazy.less | 85 - .../font-awesome/src/assets/less/mixins.less | 58 - .../src/assets/less/responsive-1200px-min.less | 56 - .../src/assets/less/responsive-767px-max.less | 83 - .../src/assets/less/responsive-768px-979px.less | 67 - .../src/assets/less/responsive-navbar.less | 11 - .../font-awesome/src/assets/less/responsive.less | 55 - .../font-awesome/src/assets/less/site.less | 377 +- .../src/assets/less/site/bootstrap/buttons.less | 3 + .../src/assets/less/site/bootstrap/jumbotron.less | 68 + .../src/assets/less/site/bootstrap/navbar.less | 33 + .../src/assets/less/site/bootstrap/type.less | 3 + .../src/assets/less/site/bootstrap/variables.less | 119 + .../src/assets/less/site/bootstrap/wells.less | 1 + .../src/assets/less/site/carbonad.less | 12 + .../src/assets/less/site/example-rating.less | 25 + .../src/assets/less/site/feature-list.less | 19 + .../assets/less/site/fontawesome-icon-list.less | 32 + .../font-awesome/src/assets/less/site/footer.less | 40 + .../src/assets/less/site/jumbotron-carousel.less | 61 + .../font-awesome/src/assets/less/site/layout.less | 1 + .../font-awesome/src/assets/less/site/lazy.less | 86 + .../src/assets/less/site/responsive/screen-lg.less | 53 + .../src/assets/less/site/responsive/screen-md.less | 3 + .../src/assets/less/site/responsive/screen-sm.less | 47 + .../src/assets/less/site/responsive/screen-xs.less | 70 + .../src/assets/less/site/social-buttons.less | 9 + .../src/assets/less/site/stripe-ad.less | 7 + .../src/assets/less/site/textured-bg.less | 20 + .../src/assets/less/sticky-footer.less | 17 - .../font-awesome/src/assets/less/variables.less | 347 - 166 files changed, 18367 insertions(+), 9922 deletions(-) delete mode 100644 bower_components/font-awesome/src/assets/font-awesome/font/FontAwesome.otf delete mode 100755 bower_components/font-awesome/src/assets/font-awesome/font/fontawesome-webfont.eot delete mode 100755 bower_components/font-awesome/src/assets/font-awesome/font/fontawesome-webfont.svg delete mode 100755 bower_components/font-awesome/src/assets/font-awesome/font/fontawesome-webfont.ttf delete mode 100755 bower_components/font-awesome/src/assets/font-awesome/font/fontawesome-webfont.woff create mode 100644 bower_components/font-awesome/src/assets/font-awesome/fonts/FontAwesome.otf create mode 100755 bower_components/font-awesome/src/assets/font-awesome/fonts/fontawesome-webfont.eot create mode 100755 bower_components/font-awesome/src/assets/font-awesome/fonts/fontawesome-webfont.svg create mode 100755 bower_components/font-awesome/src/assets/font-awesome/fonts/fontawesome-webfont.ttf create mode 100755 bower_components/font-awesome/src/assets/font-awesome/fonts/fontawesome-webfont.woff delete mode 100644 bower_components/font-awesome/src/assets/font-awesome/less/bootstrap.less create mode 100644 bower_components/font-awesome/src/assets/font-awesome/less/bordered-pulled.less delete mode 100644 bower_components/font-awesome/src/assets/font-awesome/less/extras.less create mode 100644 bower_components/font-awesome/src/assets/font-awesome/less/fixed-width.less delete mode 100644 bower_components/font-awesome/src/assets/font-awesome/less/font-awesome-ie7.less create mode 100644 bower_components/font-awesome/src/assets/font-awesome/less/larger.less create mode 100644 bower_components/font-awesome/src/assets/font-awesome/less/list.less create mode 100644 bower_components/font-awesome/src/assets/font-awesome/less/rotated-flipped.less create mode 100644 bower_components/font-awesome/src/assets/font-awesome/less/spinning.less create mode 100644 bower_components/font-awesome/src/assets/font-awesome/less/stacked.less delete mode 100644 bower_components/font-awesome/src/assets/font-awesome/scss/_bootstrap.scss create mode 100644 bower_components/font-awesome/src/assets/font-awesome/scss/_bordered-pulled.scss delete mode 100644 bower_components/font-awesome/src/assets/font-awesome/scss/_extras.scss create mode 100644 bower_components/font-awesome/src/assets/font-awesome/scss/_fixed-width.scss create mode 100644 bower_components/font-awesome/src/assets/font-awesome/scss/_larger.scss create mode 100644 bower_components/font-awesome/src/assets/font-awesome/scss/_list.scss create mode 100644 bower_components/font-awesome/src/assets/font-awesome/scss/_rotated-flipped.scss create mode 100644 bower_components/font-awesome/src/assets/font-awesome/scss/_spinning.scss create mode 100644 bower_components/font-awesome/src/assets/font-awesome/scss/_stacked.scss delete mode 100644 bower_components/font-awesome/src/assets/font-awesome/scss/font-awesome-ie7.scss delete mode 100644 bower_components/font-awesome/src/assets/img/contribution-sample.png delete mode 100644 bower_components/font-awesome/src/assets/img/fort_awesome.jpg delete mode 100644 bower_components/font-awesome/src/assets/img/glyphicons-halflings-white.png delete mode 100644 bower_components/font-awesome/src/assets/img/glyphicons-halflings.png delete mode 100644 bower_components/font-awesome/src/assets/img/icon-flag.pdf create mode 100755 bower_components/font-awesome/src/assets/js/bootstrap-3.0.0.min.js create mode 100755 bower_components/font-awesome/src/assets/js/html5shiv.js create mode 100644 bower_components/font-awesome/src/assets/js/jquery-1.10.2.js create mode 100755 bower_components/font-awesome/src/assets/js/jquery-1.10.2.min.js create mode 100644 bower_components/font-awesome/src/assets/js/jquery-1.10.2.min.map create mode 100755 bower_components/font-awesome/src/assets/js/respond.min.js delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/accordion.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/alerts.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/bootstrap.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/breadcrumbs.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/button-groups.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/buttons.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/carousel.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/close.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/code.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/component-animations.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/dropdowns.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/forms.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/grid.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/hero-unit.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/labels-badges.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/layouts.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/media.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/mixins.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/modals.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/navbar.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/navs.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/pager.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/pagination.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/popovers.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/progress-bars.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/reset.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/responsive-1200px-min.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/responsive-767px-max.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/responsive-768px-979px.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/responsive-navbar.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/responsive-utilities.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/responsive.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/scaffolding.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/sprites.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/tables.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/thumbnails.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/tooltip.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/type.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/utilities.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/variables.less delete mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-2.3.2/wells.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/alerts.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/badges.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/bootstrap.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/breadcrumbs.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/button-groups.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/buttons.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/carousel.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/close.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/code.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/component-animations.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/dropdowns.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/forms.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/glyphicons.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/grid.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/input-groups.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/jumbotron.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/labels.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/list-group.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/media.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/mixins.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/modals.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/navbar.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/navs.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/normalize.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/pager.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/pagination.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/panels.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/popovers.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/print.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/progress-bars.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/responsive-utilities.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/scaffolding.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/tables.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/theme.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/thumbnails.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/tooltip.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/type.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/utilities.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/variables.less create mode 100755 bower_components/font-awesome/src/assets/less/bootstrap-3.0.0/wells.less delete mode 100644 bower_components/font-awesome/src/assets/less/lazy.less delete mode 100644 bower_components/font-awesome/src/assets/less/mixins.less delete mode 100755 bower_components/font-awesome/src/assets/less/responsive-1200px-min.less delete mode 100755 bower_components/font-awesome/src/assets/less/responsive-767px-max.less delete mode 100755 bower_components/font-awesome/src/assets/less/responsive-768px-979px.less delete mode 100755 bower_components/font-awesome/src/assets/less/responsive-navbar.less delete mode 100755 bower_components/font-awesome/src/assets/less/responsive.less create mode 100644 bower_components/font-awesome/src/assets/less/site/bootstrap/buttons.less create mode 100644 bower_components/font-awesome/src/assets/less/site/bootstrap/jumbotron.less create mode 100644 bower_components/font-awesome/src/assets/less/site/bootstrap/navbar.less create mode 100644 bower_components/font-awesome/src/assets/less/site/bootstrap/type.less create mode 100644 bower_components/font-awesome/src/assets/less/site/bootstrap/variables.less create mode 100644 bower_components/font-awesome/src/assets/less/site/bootstrap/wells.less create mode 100644 bower_components/font-awesome/src/assets/less/site/carbonad.less create mode 100644 bower_components/font-awesome/src/assets/less/site/example-rating.less create mode 100644 bower_components/font-awesome/src/assets/less/site/feature-list.less create mode 100644 bower_components/font-awesome/src/assets/less/site/fontawesome-icon-list.less create mode 100755 bower_components/font-awesome/src/assets/less/site/footer.less create mode 100644 bower_components/font-awesome/src/assets/less/site/jumbotron-carousel.less create mode 100644 bower_components/font-awesome/src/assets/less/site/layout.less create mode 100644 bower_components/font-awesome/src/assets/less/site/lazy.less create mode 100644 bower_components/font-awesome/src/assets/less/site/responsive/screen-lg.less create mode 100644 bower_components/font-awesome/src/assets/less/site/responsive/screen-md.less create mode 100644 bower_components/font-awesome/src/assets/less/site/responsive/screen-sm.less create mode 100644 bower_components/font-awesome/src/assets/less/site/responsive/screen-xs.less create mode 100644 bower_components/font-awesome/src/assets/less/site/social-buttons.less create mode 100644 bower_components/font-awesome/src/assets/less/site/stripe-ad.less create mode 100644 bower_components/font-awesome/src/assets/less/site/textured-bg.less delete mode 100755 bower_components/font-awesome/src/assets/less/sticky-footer.less delete mode 100755 bower_components/font-awesome/src/assets/less/variables.less (limited to 'bower_components/font-awesome/src/assets') diff --git a/bower_components/font-awesome/src/assets/font-awesome/font/FontAwesome.otf b/bower_components/font-awesome/src/assets/font-awesome/font/FontAwesome.otf deleted file mode 100644 index 70125459..00000000 Binary files a/bower_components/font-awesome/src/assets/font-awesome/font/FontAwesome.otf and /dev/null differ diff --git a/bower_components/font-awesome/src/assets/font-awesome/font/fontawesome-webfont.eot b/bower_components/font-awesome/src/assets/font-awesome/font/fontawesome-webfont.eot deleted file mode 100755 index 0662cb96..00000000 Binary files a/bower_components/font-awesome/src/assets/font-awesome/font/fontawesome-webfont.eot and /dev/null differ diff --git a/bower_components/font-awesome/src/assets/font-awesome/font/fontawesome-webfont.svg b/bower_components/font-awesome/src/assets/font-awesome/font/fontawesome-webfont.svg deleted file mode 100755 index 2edb4ec3..00000000 --- a/bower_components/font-awesome/src/assets/font-awesome/font/fontawesome-webfont.svg +++ /dev/null @@ -1,399 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/bower_components/font-awesome/src/assets/font-awesome/font/fontawesome-webfont.ttf b/bower_components/font-awesome/src/assets/font-awesome/font/fontawesome-webfont.ttf deleted file mode 100755 index d3659246..00000000 Binary files a/bower_components/font-awesome/src/assets/font-awesome/font/fontawesome-webfont.ttf and /dev/null differ diff --git a/bower_components/font-awesome/src/assets/font-awesome/font/fontawesome-webfont.woff b/bower_components/font-awesome/src/assets/font-awesome/font/fontawesome-webfont.woff deleted file mode 100755 index b9bd17e1..00000000 Binary files a/bower_components/font-awesome/src/assets/font-awesome/font/fontawesome-webfont.woff and /dev/null differ diff --git a/bower_components/font-awesome/src/assets/font-awesome/fonts/FontAwesome.otf b/bower_components/font-awesome/src/assets/font-awesome/fonts/FontAwesome.otf new file mode 100644 index 00000000..8b0f54e4 Binary files /dev/null and b/bower_components/font-awesome/src/assets/font-awesome/fonts/FontAwesome.otf differ diff --git a/bower_components/font-awesome/src/assets/font-awesome/fonts/fontawesome-webfont.eot b/bower_components/font-awesome/src/assets/font-awesome/fonts/fontawesome-webfont.eot new file mode 100755 index 00000000..7c79c6a6 Binary files /dev/null and b/bower_components/font-awesome/src/assets/font-awesome/fonts/fontawesome-webfont.eot differ diff --git a/bower_components/font-awesome/src/assets/font-awesome/fonts/fontawesome-webfont.svg b/bower_components/font-awesome/src/assets/font-awesome/fonts/fontawesome-webfont.svg new file mode 100755 index 00000000..45fdf338 --- /dev/null +++ b/bower_components/font-awesome/src/assets/font-awesome/fonts/fontawesome-webfont.svg @@ -0,0 +1,414 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/bower_components/font-awesome/src/assets/font-awesome/fonts/fontawesome-webfont.ttf b/bower_components/font-awesome/src/assets/font-awesome/fonts/fontawesome-webfont.ttf new file mode 100755 index 00000000..e89738de Binary files /dev/null and b/bower_components/font-awesome/src/assets/font-awesome/fonts/fontawesome-webfont.ttf differ diff --git a/bower_components/font-awesome/src/assets/font-awesome/fonts/fontawesome-webfont.woff b/bower_components/font-awesome/src/assets/font-awesome/fonts/fontawesome-webfont.woff new file mode 100755 index 00000000..8c1748aa Binary files /dev/null and b/bower_components/font-awesome/src/assets/font-awesome/fonts/fontawesome-webfont.woff differ diff --git a/bower_components/font-awesome/src/assets/font-awesome/less/bootstrap.less b/bower_components/font-awesome/src/assets/font-awesome/less/bootstrap.less deleted file mode 100644 index a2c96046..00000000 --- a/bower_components/font-awesome/src/assets/font-awesome/less/bootstrap.less +++ /dev/null @@ -1,84 +0,0 @@ -/* BOOTSTRAP SPECIFIC CLASSES - * -------------------------- */ - -/* Bootstrap 2.0 sprites.less reset */ -[class^="icon-"], -[class*=" icon-"] { - display: inline; - width: auto; - height: auto; - line-height: normal; - vertical-align: baseline; - background-image: none; - background-position: 0% 0%; - background-repeat: repeat; - margin-top: 0; -} - -/* more sprites.less reset */ -.icon-white, -.nav-pills > .active > a > [class^="icon-"], -.nav-pills > .active > a > [class*=" icon-"], -.nav-list > .active > a > [class^="icon-"], -.nav-list > .active > a > [class*=" icon-"], -.navbar-inverse .nav > .active > a > [class^="icon-"], -.navbar-inverse .nav > .active > a > [class*=" icon-"], -.dropdown-menu > li > a:hover > [class^="icon-"], -.dropdown-menu > li > a:hover > [class*=" icon-"], -.dropdown-menu > .active > a > [class^="icon-"], -.dropdown-menu > .active > a > [class*=" icon-"], -.dropdown-submenu:hover > a > [class^="icon-"], -.dropdown-submenu:hover > a > [class*=" icon-"] { - background-image: none; -} - - -/* keeps Bootstrap styles with and without icons the same */ -.btn, .nav { - [class^="icon-"], - [class*=" icon-"] { -// display: inline; - &.icon-large { line-height: .9em; } - &.icon-spin { display: inline-block; } - } -} -.nav-tabs, .nav-pills { - [class^="icon-"], - [class*=" icon-"] { - &, &.icon-large { line-height: .9em; } - } -} -.btn { - [class^="icon-"], - [class*=" icon-"] { - &.pull-left, &.pull-right { - &.icon-2x { margin-top: .18em; } - } - &.icon-spin.icon-large { line-height: .8em; } - } -} -.btn.btn-small { - [class^="icon-"], - [class*=" icon-"] { - &.pull-left, &.pull-right { - &.icon-2x { margin-top: .25em; } - } - } -} -.btn.btn-large { - [class^="icon-"], - [class*=" icon-"] { - margin-top: 0; // overrides bootstrap default - &.pull-left, &.pull-right { - &.icon-2x { margin-top: .05em; } - } - &.pull-left.icon-2x { margin-right: .2em; } - &.pull-right.icon-2x { margin-left: .2em; } - } -} - -/* Fixes alignment in nav lists */ -.nav-list [class^="icon-"], -.nav-list [class*=" icon-"] { - line-height: inherit; -} diff --git a/bower_components/font-awesome/src/assets/font-awesome/less/bordered-pulled.less b/bower_components/font-awesome/src/assets/font-awesome/less/bordered-pulled.less new file mode 100644 index 00000000..7b5bf77a --- /dev/null +++ b/bower_components/font-awesome/src/assets/font-awesome/less/bordered-pulled.less @@ -0,0 +1,19 @@ +--- +--- + +// Bordered & Pulled +// ------------------------- + +.@{fa-css-prefix}-border { + padding: .2em .25em .15em; + border: solid .08em @fa-border-color; + border-radius: .1em; +} + +.pull-right { float: right; } +.pull-left { float: left; } + +.@{fa-css-prefix} { + &.pull-left { margin-right: .3em; } + &.pull-right { margin-left: .3em; } +} diff --git a/bower_components/font-awesome/src/assets/font-awesome/less/core.less b/bower_components/font-awesome/src/assets/font-awesome/less/core.less index 1ef7e223..33b20d6f 100644 --- a/bower_components/font-awesome/src/assets/font-awesome/less/core.less +++ b/bower_components/font-awesome/src/assets/font-awesome/less/core.less @@ -1,129 +1,15 @@ -/* FONT AWESOME CORE - * -------------------------- */ +--- +--- -[class^="icon-"], -[class*=" icon-"] { - .icon-FontAwesome(); -} - -[class^="icon-"]:before, -[class*=" icon-"]:before { - text-decoration: inherit; - display: inline-block; - speak: none; -} - -/* makes the font 33% larger relative to the icon container */ -.icon-large:before { - vertical-align: -10%; - font-size: 4/3em; -} - -/* makes sure icons active on rollover in links */ -a { - [class^="icon-"], - [class*=" icon-"] { - display: inline; - } -} - -/* increased font size for icon-large */ -[class^="icon-"], -[class*=" icon-"] { - &.icon-fixed-width { - display: inline-block; - width: 16/14em; - text-align: right; - padding-right: 4/14em; - &.icon-large { - width: 20/14em; - } - } -} - -.icons-ul { - margin-left: @icons-li-width; - list-style-type: none; - - > li { position: relative; } - - .icon-li { - position: absolute; - left: -@icons-li-width; - width: @icons-li-width; - text-align: center; - line-height: inherit; - } -} - -// allows usage of the hide class directly on font awesome icons -[class^="icon-"], -[class*=" icon-"] { - &.hide { - display: none; - } -} - -.icon-muted { color: @iconMuted; } -.icon-light { color: @iconLight; } -.icon-dark { color: @iconDark; } - -// Icon Borders -// ------------------------- - -.icon-border { - border: solid 1px @borderColor; - padding: .2em .25em .15em; - .border-radius(3px); -} - -// Icon Sizes -// ------------------------- - -.icon-2x { - font-size: 2em; - &.icon-border { - border-width: 2px; - .border-radius(4px); - } -} -.icon-3x { - font-size: 3em; - &.icon-border { - border-width: 3px; - .border-radius(5px); - } -} -.icon-4x { - font-size: 4em; - &.icon-border { - border-width: 4px; - .border-radius(6px); - } -} - -.icon-5x { - font-size: 5em; - &.icon-border { - border-width: 5px; - .border-radius(7px); - } -} - - -// Floats & Margins +// Base Class Definition // ------------------------- -// Quick floats -.pull-right { float: right; } -.pull-left { float: left; } - -[class^="icon-"], -[class*=" icon-"] { - &.pull-left { - margin-right: .3em; - } - &.pull-right { - margin-left: .3em; - } +.@{fa-css-prefix} { + display: inline-block; + font-family: FontAwesome; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } diff --git a/bower_components/font-awesome/src/assets/font-awesome/less/extras.less b/bower_components/font-awesome/src/assets/font-awesome/less/extras.less deleted file mode 100644 index c93c260c..00000000 --- a/bower_components/font-awesome/src/assets/font-awesome/less/extras.less +++ /dev/null @@ -1,93 +0,0 @@ -/* EXTRAS - * -------------------------- */ - -/* Stacked and layered icon */ -.icon-stack(); - -/* Animated rotating icon */ -.icon-spin { - display: inline-block; - -moz-animation: spin 2s infinite linear; - -o-animation: spin 2s infinite linear; - -webkit-animation: spin 2s infinite linear; - animation: spin 2s infinite linear; -} - -/* Prevent stack and spinners from being taken inline when inside a link */ -a .icon-stack, -a .icon-spin { - display: inline-block; - text-decoration: none; -} - -@-moz-keyframes spin { - 0% { -moz-transform: rotate(0deg); } - 100% { -moz-transform: rotate(359deg); } -} -@-webkit-keyframes spin { - 0% { -webkit-transform: rotate(0deg); } - 100% { -webkit-transform: rotate(359deg); } -} -@-o-keyframes spin { - 0% { -o-transform: rotate(0deg); } - 100% { -o-transform: rotate(359deg); } -} -@-ms-keyframes spin { - 0% { -ms-transform: rotate(0deg); } - 100% { -ms-transform: rotate(359deg); } -} -@keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(359deg); } -} - -/* Icon rotations and mirroring */ -.icon-rotate-90:before { - -webkit-transform: rotate(90deg); - -moz-transform: rotate(90deg); - -ms-transform: rotate(90deg); - -o-transform: rotate(90deg); - transform: rotate(90deg); - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); -} - -.icon-rotate-180:before { - -webkit-transform: rotate(180deg); - -moz-transform: rotate(180deg); - -ms-transform: rotate(180deg); - -o-transform: rotate(180deg); - transform: rotate(180deg); - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); -} - -.icon-rotate-270:before { - -webkit-transform: rotate(270deg); - -moz-transform: rotate(270deg); - -ms-transform: rotate(270deg); - -o-transform: rotate(270deg); - transform: rotate(270deg); - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); -} - -.icon-flip-horizontal:before { - -webkit-transform: scale(-1, 1); - -moz-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - -o-transform: scale(-1, 1); - transform: scale(-1, 1); -} - -.icon-flip-vertical:before { - -webkit-transform: scale(1, -1); - -moz-transform: scale(1, -1); - -ms-transform: scale(1, -1); - -o-transform: scale(1, -1); - transform: scale(1, -1); -} - -/* ensure rotation occurs inside anchor tags */ -a { - .icon-rotate-90, .icon-rotate-180, .icon-rotate-270, .icon-flip-horizontal, .icon-flip-vertical { - &:before { display: inline-block; } - } -} diff --git a/bower_components/font-awesome/src/assets/font-awesome/less/fixed-width.less b/bower_components/font-awesome/src/assets/font-awesome/less/fixed-width.less new file mode 100644 index 00000000..f3b657b5 --- /dev/null +++ b/bower_components/font-awesome/src/assets/font-awesome/less/fixed-width.less @@ -0,0 +1,9 @@ +--- +--- + +// Fixed Width Icons +// ------------------------- +.@{fa-css-prefix}-fw { + width: (18em / 14); + text-align: center; +} diff --git a/bower_components/font-awesome/src/assets/font-awesome/less/font-awesome-ie7.less b/bower_components/font-awesome/src/assets/font-awesome/less/font-awesome-ie7.less deleted file mode 100644 index 2822fdee..00000000 --- a/bower_components/font-awesome/src/assets/font-awesome/less/font-awesome-ie7.less +++ /dev/null @@ -1,67 +0,0 @@ ---- ---- -{% include license-code.less %} - -.icon-large { - font-size: 4/3em; - margin-top: -4px; - padding-top: 3px; - margin-bottom: -4px; - padding-bottom: 3px; - vertical-align: middle; -} - -.nav { - [class^="icon-"], - [class*=" icon-"] { - vertical-align: inherit; - margin-top: -4px; - padding-top: 3px; - margin-bottom: -4px; - padding-bottom: 3px; - &.icon-large { - vertical-align: -25%; - } - } -} - -.nav-pills, .nav-tabs { - [class^="icon-"], - [class*=" icon-"] { - &.icon-large { - line-height: .75em; - margin-top: -7px; - padding-top: 5px; - margin-bottom: -5px; - padding-bottom: 4px; - } - } -} - -.btn { - [class^="icon-"], - [class*=" icon-"] { - &.pull-left, &.pull-right { vertical-align: inherit; } - &.icon-large { - margin-top: -.5em; - } - } -} - -a [class^="icon-"], -a [class*=" icon-"] { - cursor: pointer; -} - -.ie7icon(@inner) { *zoom: ~"expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = '@{inner}')"; } - -{% for icon in icons %} -.icon-{{ icon.id }} { - .ie7icon('&#x{{ icon.unicode }};'); -} -{% for alias in icon.aliases %} -.icon-{{ alias }} { - .ie7icon('&#x{{ icon.unicode }};'); -} -{% endfor %} -{% endfor %} diff --git a/bower_components/font-awesome/src/assets/font-awesome/less/font-awesome.less b/bower_components/font-awesome/src/assets/font-awesome/less/font-awesome.less index fa87c275..28bfc296 100644 --- a/bower_components/font-awesome/src/assets/font-awesome/less/font-awesome.less +++ b/bower_components/font-awesome/src/assets/font-awesome/less/font-awesome.less @@ -2,10 +2,15 @@ --- {% include license-code.less %} -@import "variables.less"; -@import "mixins.less"; -@import "path.less"; -@import "core.less"; -@import "bootstrap.less"; -@import "extras.less"; -@import "icons.less"; +@import "variables"; +@import "mixins"; +@import "path"; +@import "core"; +@import "larger"; +@import "fixed-width"; +@import "list"; +@import "bordered-pulled"; +@import "spinning"; +@import "rotated-flipped"; +@import "stacked"; +@import "icons"; diff --git a/bower_components/font-awesome/src/assets/font-awesome/less/icons.less b/bower_components/font-awesome/src/assets/font-awesome/less/icons.less index faf238b5..1d29b69a 100644 --- a/bower_components/font-awesome/src/assets/font-awesome/less/icons.less +++ b/bower_components/font-awesome/src/assets/font-awesome/less/icons.less @@ -3,5 +3,5 @@ /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen readers do not read off random characters that represent icons */ {% for icon in icons %}{% for alias in icon.aliases %} -.icon-{{ alias }}:before,{% endfor %} -.icon-{{ icon.id }}:before { content: @{{ icon.id }}; }{% endfor %} +.@{fa-css-prefix}-{{ alias }}:before,{% endfor %} +.@{fa-css-prefix}-{{ icon.id }}:before { content: @fa-var-{{ icon.id }}; }{% endfor %} diff --git a/bower_components/font-awesome/src/assets/font-awesome/less/larger.less b/bower_components/font-awesome/src/assets/font-awesome/less/larger.less new file mode 100644 index 00000000..472643eb --- /dev/null +++ b/bower_components/font-awesome/src/assets/font-awesome/less/larger.less @@ -0,0 +1,16 @@ +--- +--- + +// Icon Sizes +// ------------------------- + +/* makes the font 33% larger relative to the icon container */ +.@{fa-css-prefix}-lg { + font-size: (4em / 3); + line-height: (3em / 4); + vertical-align: -15%; +} +.@{fa-css-prefix}-2x { font-size: 2em; } +.@{fa-css-prefix}-3x { font-size: 3em; } +.@{fa-css-prefix}-4x { font-size: 4em; } +.@{fa-css-prefix}-5x { font-size: 5em; } diff --git a/bower_components/font-awesome/src/assets/font-awesome/less/list.less b/bower_components/font-awesome/src/assets/font-awesome/less/list.less new file mode 100644 index 00000000..ffcae1df --- /dev/null +++ b/bower_components/font-awesome/src/assets/font-awesome/less/list.less @@ -0,0 +1,22 @@ +--- +--- + +// List Icons +// ------------------------- + +.@{fa-css-prefix}-ul { + padding-left: 0; + margin-left: @fa-li-width; + list-style-type: none; + > li { position: relative; } +} +.@{fa-css-prefix}-li { + position: absolute; + left: -@fa-li-width; + width: @fa-li-width; + top: (2em / 14); + text-align: center; + &.@{fa-css-prefix}-lg { + left: -@fa-li-width + (4em / 14); + } +} diff --git a/bower_components/font-awesome/src/assets/font-awesome/less/mixins.less b/bower_components/font-awesome/src/assets/font-awesome/less/mixins.less index f7fdda59..25ca842c 100644 --- a/bower_components/font-awesome/src/assets/font-awesome/less/mixins.less +++ b/bower_components/font-awesome/src/assets/font-awesome/less/mixins.less @@ -1,48 +1,22 @@ +--- +--- // Mixins // -------------------------- -.icon(@icon) { - .icon-FontAwesome(); - content: @icon; +.fa-icon-rotate(@degrees, @rotation) { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation); + -webkit-transform: rotate(@degrees); + -moz-transform: rotate(@degrees); + -ms-transform: rotate(@degrees); + -o-transform: rotate(@degrees); + transform: rotate(@degrees); } -.icon-FontAwesome() { - font-family: FontAwesome; - font-weight: normal; - font-style: normal; - text-decoration: inherit; - -webkit-font-smoothing: antialiased; - *margin-right: .3em; // fixes ie7 issues -} - -.border-radius(@radius) { - -webkit-border-radius: @radius; - -moz-border-radius: @radius; - border-radius: @radius; -} - -.icon-stack(@width: 2em, @height: 2em, @top-font-size: 1em, @base-font-size: 2em) { - .icon-stack { - position: relative; - display: inline-block; - width: @width; - height: @height; - line-height: @width; - vertical-align: -35%; - [class^="icon-"], - [class*=" icon-"] { - display: block; - text-align: center; - position: absolute; - width: 100%; - height: 100%; - font-size: @top-font-size; - line-height: inherit; - *line-height: @height; - } - .icon-stack-base { - font-size: @base-font-size; - *line-height: @height / @base-font-size; - } - } +.fa-icon-flip(@horiz, @vert, @rotation) { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1); + -webkit-transform: scale(@horiz, @vert); + -moz-transform: scale(@horiz, @vert); + -ms-transform: scale(@horiz, @vert); + -o-transform: scale(@horiz, @vert); + transform: scale(@horiz, @vert); } diff --git a/bower_components/font-awesome/src/assets/font-awesome/less/path.less b/bower_components/font-awesome/src/assets/font-awesome/less/path.less index 8ccef8cf..c5a69124 100644 --- a/bower_components/font-awesome/src/assets/font-awesome/less/path.less +++ b/bower_components/font-awesome/src/assets/font-awesome/less/path.less @@ -3,12 +3,12 @@ @font-face { font-family: 'FontAwesome'; - src: url('@{FontAwesomePath}/fontawesome-webfont.eot?v=@{FontAwesomeVersion}'); - src: url('@{FontAwesomePath}/fontawesome-webfont.eot?#iefix&v=@{FontAwesomeVersion}') format('embedded-opentype'), - url('@{FontAwesomePath}/fontawesome-webfont.woff?v=@{FontAwesomeVersion}') format('woff'), - url('@{FontAwesomePath}/fontawesome-webfont.ttf?v=@{FontAwesomeVersion}') format('truetype'), - url('@{FontAwesomePath}/fontawesome-webfont.svg#fontawesomeregular?v=@{FontAwesomeVersion}') format('svg'); -// src: url('@{FontAwesomePath}/FontAwesome.otf') format('opentype'); // used when developing fonts + src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); + src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), + url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), + url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), + url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); +// src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts font-weight: normal; font-style: normal; } diff --git a/bower_components/font-awesome/src/assets/font-awesome/less/rotated-flipped.less b/bower_components/font-awesome/src/assets/font-awesome/less/rotated-flipped.less new file mode 100644 index 00000000..5bfad90d --- /dev/null +++ b/bower_components/font-awesome/src/assets/font-awesome/less/rotated-flipped.less @@ -0,0 +1,12 @@ +--- +--- + +// Rotated & Flipped Icons +// ------------------------- + +.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } +.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } +.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } + +.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } +.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } diff --git a/bower_components/font-awesome/src/assets/font-awesome/less/spinning.less b/bower_components/font-awesome/src/assets/font-awesome/less/spinning.less new file mode 100644 index 00000000..2f3ad634 --- /dev/null +++ b/bower_components/font-awesome/src/assets/font-awesome/less/spinning.less @@ -0,0 +1,33 @@ +--- +--- + +// Spinning Icons +// -------------------------- + +.@{fa-css-prefix}-spin { + -webkit-animation: spin 2s infinite linear; + -moz-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; +} + +@-moz-keyframes spin { + 0% { -moz-transform: rotate(0deg); } + 100% { -moz-transform: rotate(359deg); } +} +@-webkit-keyframes spin { + 0% { -webkit-transform: rotate(0deg); } + 100% { -webkit-transform: rotate(359deg); } +} +@-o-keyframes spin { + 0% { -o-transform: rotate(0deg); } + 100% { -o-transform: rotate(359deg); } +} +@-ms-keyframes spin { + 0% { -ms-transform: rotate(0deg); } + 100% { -ms-transform: rotate(359deg); } +} +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(359deg); } +} diff --git a/bower_components/font-awesome/src/assets/font-awesome/less/stacked.less b/bower_components/font-awesome/src/assets/font-awesome/less/stacked.less new file mode 100644 index 00000000..2a1e4189 --- /dev/null +++ b/bower_components/font-awesome/src/assets/font-awesome/less/stacked.less @@ -0,0 +1,23 @@ +--- +--- + +// Stacked Icons +// ------------------------- + +.@{fa-css-prefix}-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.@{fa-css-prefix}-stack-1x { line-height: inherit; } +.@{fa-css-prefix}-stack-2x { font-size: 2em; } +.@{fa-css-prefix}-inverse { color: @fa-inverse; } diff --git a/bower_components/font-awesome/src/assets/font-awesome/less/variables.less b/bower_components/font-awesome/src/assets/font-awesome/less/variables.less index 4d527189..c19c461d 100644 --- a/bower_components/font-awesome/src/assets/font-awesome/less/variables.less +++ b/bower_components/font-awesome/src/assets/font-awesome/less/variables.less @@ -3,15 +3,13 @@ // Variables // -------------------------- -@FontAwesomePath: "../font"; -//@FontAwesomePath: "//netdna.bootstrapcdn.com/font-awesome/{{ site.fontawesome.version}}/font"; // for referencing Bootstrap CDN font files directly -@FontAwesomeVersion: "{{ site.fontawesome.version }}"; -@borderColor: #eee; -@iconMuted: #eee; -@iconLight: #fff; -@iconDark: #333; -@icons-li-width: 30/14em; +@fa-font-path: "../fonts"; +//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/{{site.fontawesome.version}}/fonts"; // for referencing Bootstrap CDN font files directly +@fa-css-prefix: {{ site.fontawesome.css_prefix }}; +@fa-version: "{{ site.fontawesome.version }}"; +@fa-border-color: #eee; +@fa-inverse: #fff; +@fa-li-width: (30em / 14); -{% for icon in icons %} - @{{ icon.id }}: "\{{ icon.unicode }}"; +{% for icon in icons %}@fa-var-{{ icon.id }}: "\{{ icon.unicode }}"; {% endfor %} diff --git a/bower_components/font-awesome/src/assets/font-awesome/scss/_bootstrap.scss b/bower_components/font-awesome/src/assets/font-awesome/scss/_bootstrap.scss deleted file mode 100644 index 837d2df6..00000000 --- a/bower_components/font-awesome/src/assets/font-awesome/scss/_bootstrap.scss +++ /dev/null @@ -1,84 +0,0 @@ -/* BOOTSTRAP SPECIFIC CLASSES - * -------------------------- */ - -/* Bootstrap 2.0 sprites.less reset */ -[class^="icon-"], -[class*=" icon-"] { - display: inline; - width: auto; - height: auto; - line-height: normal; - vertical-align: baseline; - background-image: none; - background-position: 0% 0%; - background-repeat: repeat; - margin-top: 0; -} - -/* more sprites.less reset */ -.icon-white, -.nav-pills > .active > a > [class^="icon-"], -.nav-pills > .active > a > [class*=" icon-"], -.nav-list > .active > a > [class^="icon-"], -.nav-list > .active > a > [class*=" icon-"], -.navbar-inverse .nav > .active > a > [class^="icon-"], -.navbar-inverse .nav > .active > a > [class*=" icon-"], -.dropdown-menu > li > a:hover > [class^="icon-"], -.dropdown-menu > li > a:hover > [class*=" icon-"], -.dropdown-menu > .active > a > [class^="icon-"], -.dropdown-menu > .active > a > [class*=" icon-"], -.dropdown-submenu:hover > a > [class^="icon-"], -.dropdown-submenu:hover > a > [class*=" icon-"] { - background-image: none; -} - - -/* keeps Bootstrap styles with and without icons the same */ -.btn, .nav { - [class^="icon-"], - [class*=" icon-"] { - // display: inline; - &.icon-large { line-height: .9em; } - &.icon-spin { display: inline-block; } - } -} -.nav-tabs, .nav-pills { - [class^="icon-"], - [class*=" icon-"] { - &, &.icon-large { line-height: .9em; } - } -} -.btn { - [class^="icon-"], - [class*=" icon-"] { - &.pull-left, &.pull-right { - &.icon-2x { margin-top: .18em; } - } - &.icon-spin.icon-large { line-height: .8em; } - } -} -.btn.btn-small { - [class^="icon-"], - [class*=" icon-"] { - &.pull-left, &.pull-right { - &.icon-2x { margin-top: .25em; } - } - } -} -.btn.btn-large { - [class^="icon-"], - [class*=" icon-"] { - margin-top: 0; // overrides bootstrap default - &.pull-left, &.pull-right { - &.icon-2x { margin-top: .05em; } - } - &.pull-left.icon-2x { margin-right: .2em; } - &.pull-right.icon-2x { margin-left: .2em; } - } -} - -/* Fixes alignment in nav lists */ -.nav-list [class^="icon-"], -.nav-list [class*=" icon-"] { - line-height: inherit; -} diff --git a/bower_components/font-awesome/src/assets/font-awesome/scss/_bordered-pulled.scss b/bower_components/font-awesome/src/assets/font-awesome/scss/_bordered-pulled.scss new file mode 100644 index 00000000..39e3a1b8 --- /dev/null +++ b/bower_components/font-awesome/src/assets/font-awesome/scss/_bordered-pulled.scss @@ -0,0 +1,19 @@ +--- +--- + +// Bordered & Pulled +// ------------------------- + +.#{$fa-css-prefix}-border { + padding: .2em .25em .15em; + border: solid .08em $fa-border-color; + border-radius: .1em; +} + +.pull-right { float: right; } +.pull-left { float: left; } + +.#{$fa-css-prefix} { + &.pull-left { margin-right: .3em; } + &.pull-right { margin-left: .3em; } +} diff --git a/bower_components/font-awesome/src/assets/font-awesome/scss/_core.scss b/bower_components/font-awesome/src/assets/font-awesome/scss/_core.scss index 0189c73d..50dfbd38 100644 --- a/bower_components/font-awesome/src/assets/font-awesome/scss/_core.scss +++ b/bower_components/font-awesome/src/assets/font-awesome/scss/_core.scss @@ -1,129 +1,15 @@ -/* FONT AWESOME CORE - * -------------------------- */ +--- +--- -[class^="icon-"], -[class*=" icon-"] { - @include icon-FontAwesome(); -} - -[class^="icon-"]:before, -[class*=" icon-"]:before { - text-decoration: inherit; - display: inline-block; - speak: none; -} - -/* makes the font 33% larger relative to the icon container */ -.icon-large:before { - vertical-align: -10%; - font-size: (4em/3); -} - -/* makes sure icons active on rollover in links */ -a { - [class^="icon-"], - [class*=" icon-"] { - display: inline; - } -} - -/* increased font size for icon-large */ -[class^="icon-"], -[class*=" icon-"] { - &.icon-fixed-width { - display: inline-block; - width: (16em/14); - text-align: right; - padding-right: (4em/14); - &.icon-large { - width: (20em/14); - } - } -} - -.icons-ul { - margin-left: $icons-li-width; - list-style-type: none; - - > li { position: relative; } - - .icon-li { - position: absolute; - left: -$icons-li-width; - width: $icons-li-width; - text-align: center; - line-height: inherit; - } -} - -// allows usage of the hide class directly on font awesome icons -[class^="icon-"], -[class*=" icon-"] { - &.hide { - display: none; - } -} - -.icon-muted { color: $iconMuted; } -.icon-light { color: $iconLight; } -.icon-dark { color: $iconDark; } - -// Icon Borders -// ------------------------- - -.icon-border { - border: solid 1px $borderColor; - padding: .2em .25em .15em; - @include border-radius(3px); -} - -// Icon Sizes -// ------------------------- - -.icon-2x { - font-size: 2em; - &.icon-border { - border-width: 2px; - @include border-radius(4px); - } -} -.icon-3x { - font-size: 3em; - &.icon-border { - border-width: 3px; - @include border-radius(5px); - } -} -.icon-4x { - font-size: 4em; - &.icon-border { - border-width: 4px; - @include border-radius(6px); - } -} - -.icon-5x { - font-size: 5em; - &.icon-border { - border-width: 5px; - @include border-radius(7px); - } -} - - -// Floats & Margins +// Base Class Definition // ------------------------- -// Quick floats -.pull-right { float: right; } -.pull-left { float: left; } - -[class^="icon-"], -[class*=" icon-"] { - &.pull-left { - margin-right: .3em; - } - &.pull-right { - margin-left: .3em; - } +.#{$fa-css-prefix} { + display: inline-block; + font-family: FontAwesome; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } diff --git a/bower_components/font-awesome/src/assets/font-awesome/scss/_extras.scss b/bower_components/font-awesome/src/assets/font-awesome/scss/_extras.scss deleted file mode 100644 index 9a25845d..00000000 --- a/bower_components/font-awesome/src/assets/font-awesome/scss/_extras.scss +++ /dev/null @@ -1,93 +0,0 @@ -/* EXTRAS - * -------------------------- */ - -/* Stacked and layered icon */ -@include icon-stack(); - -/* Animated rotating icon */ -.icon-spin { - display: inline-block; - -moz-animation: spin 2s infinite linear; - -o-animation: spin 2s infinite linear; - -webkit-animation: spin 2s infinite linear; - animation: spin 2s infinite linear; -} - -/* Prevent stack and spinners from being taken inline when inside a link */ -a .icon-stack, -a .icon-spin { - display: inline-block; - text-decoration: none; -} - -@-moz-keyframes spin { - 0% { -moz-transform: rotate(0deg); } - 100% { -moz-transform: rotate(359deg); } -} -@-webkit-keyframes spin { - 0% { -webkit-transform: rotate(0deg); } - 100% { -webkit-transform: rotate(359deg); } -} -@-o-keyframes spin { - 0% { -o-transform: rotate(0deg); } - 100% { -o-transform: rotate(359deg); } -} -@-ms-keyframes spin { - 0% { -ms-transform: rotate(0deg); } - 100% { -ms-transform: rotate(359deg); } -} -@keyframes spin { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(359deg); } -} - -/* Icon rotations and mirroring */ -.icon-rotate-90:before { - -webkit-transform: rotate(90deg); - -moz-transform: rotate(90deg); - -ms-transform: rotate(90deg); - -o-transform: rotate(90deg); - transform: rotate(90deg); - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); -} - -.icon-rotate-180:before { - -webkit-transform: rotate(180deg); - -moz-transform: rotate(180deg); - -ms-transform: rotate(180deg); - -o-transform: rotate(180deg); - transform: rotate(180deg); - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); -} - -.icon-rotate-270:before { - -webkit-transform: rotate(270deg); - -moz-transform: rotate(270deg); - -ms-transform: rotate(270deg); - -o-transform: rotate(270deg); - transform: rotate(270deg); - filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); -} - -.icon-flip-horizontal:before { - -webkit-transform: scale(-1, 1); - -moz-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - -o-transform: scale(-1, 1); - transform: scale(-1, 1); -} - -.icon-flip-vertical:before { - -webkit-transform: scale(1, -1); - -moz-transform: scale(1, -1); - -ms-transform: scale(1, -1); - -o-transform: scale(1, -1); - transform: scale(1, -1); -} - -/* ensure rotation occurs inside anchor tags */ -a { - .icon-rotate-90, .icon-rotate-180, .icon-rotate-270, .icon-flip-horizontal, .icon-flip-vertical { - &:before { display: inline-block; } - } -} diff --git a/bower_components/font-awesome/src/assets/font-awesome/scss/_fixed-width.scss b/bower_components/font-awesome/src/assets/font-awesome/scss/_fixed-width.scss new file mode 100644 index 00000000..cfb14543 --- /dev/null +++ b/bower_components/font-awesome/src/assets/font-awesome/scss/_fixed-width.scss @@ -0,0 +1,9 @@ +--- +--- + +// Fixed Width Icons +// ------------------------- +.#{$fa-css-prefix}-fw { + width: (18em / 14); + text-align: center; +} diff --git a/bower_components/font-awesome/src/assets/font-awesome/scss/_icons.scss b/bower_components/font-awesome/src/assets/font-awesome/scss/_icons.scss index 5febd993..23128aae 100644 --- a/bower_components/font-awesome/src/assets/font-awesome/scss/_icons.scss +++ b/bower_components/font-awesome/src/assets/font-awesome/scss/_icons.scss @@ -1,7 +1,7 @@ --- --- /* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - * readers do not read off random characters that represent icons */ + readers do not read off random characters that represent icons */ {% for icon in icons %}{% for alias in icon.aliases %} -.icon-{{ alias }}:before,{% endfor %} -.icon-{{ icon.id }}:before { content: ${{ icon.id }}; }{% endfor %} +.#{$fa-css-prefix}-{{ alias }}:before,{% endfor %} +.#{$fa-css-prefix}-{{ icon.id }}:before { content: $fa-var-{{ icon.id }}; }{% endfor %} diff --git a/bower_components/font-awesome/src/assets/font-awesome/scss/_larger.scss b/bower_components/font-awesome/src/assets/font-awesome/scss/_larger.scss new file mode 100644 index 00000000..40357238 --- /dev/null +++ b/bower_components/font-awesome/src/assets/font-awesome/scss/_larger.scss @@ -0,0 +1,16 @@ +--- +--- + +// Icon Sizes +// ------------------------- + +/* makes the font 33% larger relative to the icon container */ +.#{$fa-css-prefix}-lg { + font-size: (4em / 3); + line-height: (3em / 4); + vertical-align: -15%; +} +.#{$fa-css-prefix}-2x { font-size: 2em; } +.#{$fa-css-prefix}-3x { font-size: 3em; } +.#{$fa-css-prefix}-4x { font-size: 4em; } +.#{$fa-css-prefix}-5x { font-size: 5em; } diff --git a/bower_components/font-awesome/src/assets/font-awesome/scss/_list.scss b/bower_components/font-awesome/src/assets/font-awesome/scss/_list.scss new file mode 100644 index 00000000..1c649826 --- /dev/null +++ b/bower_components/font-awesome/src/assets/font-awesome/scss/_list.scss @@ -0,0 +1,22 @@ +--- +--- + +// List Icons +// ------------------------- + +.#{$fa-css-prefix}-ul { + padding-left: 0; + margin-left: $fa-li-width; + list-style-type: none; + > li { position: relative; } +} +.#{$fa-css-prefix}-li { + position: absolute; + left: -$fa-li-width; + width: $fa-li-width; + top: (2em / 14); + text-align: center; + &.#{$fa-css-prefix}-lg { + left: -$fa-li-width + (4em / 14); + } +} diff --git a/bower_components/font-awesome/src/assets/font-awesome/scss/_mixins.scss b/bower_components/font-awesome/src/assets/font-awesome/scss/_mixins.scss index ca9c5931..b25e7176 100644 --- a/bower_components/font-awesome/src/assets/font-awesome/scss/_mixins.scss +++ b/bower_components/font-awesome/src/assets/font-awesome/scss/_mixins.scss @@ -1,48 +1,22 @@ +--- +--- // Mixins // -------------------------- -@mixin icon($icon) { - @include icon-FontAwesome(); - content: $icon; +@mixin fa-icon-rotate($degrees, $rotation) { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation); + -webkit-transform: rotate($degrees); + -moz-transform: rotate($degrees); + -ms-transform: rotate($degrees); + -o-transform: rotate($degrees); + transform: rotate($degrees); } -@mixin icon-FontAwesome() { - font-family: FontAwesome; - font-weight: normal; - font-style: normal; - text-decoration: inherit; - -webkit-font-smoothing: antialiased; - *margin-right: .3em; // fixes ie7 issues -} - -@mixin border-radius($radius) { - -webkit-border-radius: $radius; - -moz-border-radius: $radius; - border-radius: $radius; -} - -@mixin icon-stack($width: 2em, $height: 2em, $top-font-size: 1em, $base-font-size: 2em) { - .icon-stack { - position: relative; - display: inline-block; - width: $width; - height: $height; - line-height: $width; - vertical-align: -35%; - [class^="icon-"], - [class*=" icon-"] { - display: block; - text-align: center; - position: absolute; - width: 100%; - height: 100%; - font-size: $top-font-size; - line-height: inherit; - *line-height: $height; - } - .icon-stack-base { - font-size: $base-font-size; - *line-height: #{$height / $base-font-size}em; - } - } +@mixin fa-icon-flip($horiz, $vert, $rotation) { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=$rotation); + -webkit-transform: scale($horiz, $vert); + -moz-transform: scale($horiz, $vert); + -ms-transform: scale($horiz, $vert); + -o-transform: scale($horiz, $vert); + transform: scale($horiz, $vert); } diff --git a/bower_components/font-awesome/src/assets/font-awesome/scss/_path.scss b/bower_components/font-awesome/src/assets/font-awesome/scss/_path.scss index bb3f36b7..fd21c351 100644 --- a/bower_components/font-awesome/src/assets/font-awesome/scss/_path.scss +++ b/bower_components/font-awesome/src/assets/font-awesome/scss/_path.scss @@ -3,12 +3,12 @@ @font-face { font-family: 'FontAwesome'; - src: url('#{$FontAwesomePath}/fontawesome-webfont.eot?v=#{$FontAwesomeVersion}'); - src: url('#{$FontAwesomePath}/fontawesome-webfont.eot?#iefix&v=#{$FontAwesomeVersion}') format('embedded-opentype'), - url('#{$FontAwesomePath}/fontawesome-webfont.woff?v=#{$FontAwesomeVersion}') format('woff'), - url('#{$FontAwesomePath}/fontawesome-webfont.ttf?v=#{$FontAwesomeVersion}') format('truetype'), - url('#{$FontAwesomePath}/fontawesome-webfont.svg#fontawesomeregular?v=#{$FontAwesomeVersion}') format('svg'); -// src: url('#{$FontAwesomePath}/FontAwesome.otf') format('opentype'); // used when developing fonts + src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); + src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), + url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), + url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), + url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); + //src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts font-weight: normal; font-style: normal; } diff --git a/bower_components/font-awesome/src/assets/font-awesome/scss/_rotated-flipped.scss b/bower_components/font-awesome/src/assets/font-awesome/scss/_rotated-flipped.scss new file mode 100644 index 00000000..24350211 --- /dev/null +++ b/bower_components/font-awesome/src/assets/font-awesome/scss/_rotated-flipped.scss @@ -0,0 +1,12 @@ +--- +--- + +// Rotated & Flipped Icons +// ------------------------- + +.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } +.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } +.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } + +.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } +.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } diff --git a/bower_components/font-awesome/src/assets/font-awesome/scss/_spinning.scss b/bower_components/font-awesome/src/assets/font-awesome/scss/_spinning.scss new file mode 100644 index 00000000..b7fa99c9 --- /dev/null +++ b/bower_components/font-awesome/src/assets/font-awesome/scss/_spinning.scss @@ -0,0 +1,33 @@ +--- +--- + +// Spinning Icons +// -------------------------- + +.#{$fa-css-prefix}-spin { + -webkit-animation: spin 2s infinite linear; + -moz-animation: spin 2s infinite linear; + -o-animation: spin 2s infinite linear; + animation: spin 2s infinite linear; +} + +@-moz-keyframes spin { + 0% { -moz-transform: rotate(0deg); } + 100% { -moz-transform: rotate(359deg); } +} +@-webkit-keyframes spin { + 0% { -webkit-transform: rotate(0deg); } + 100% { -webkit-transform: rotate(359deg); } +} +@-o-keyframes spin { + 0% { -o-transform: rotate(0deg); } + 100% { -o-transform: rotate(359deg); } +} +@-ms-keyframes spin { + 0% { -ms-transform: rotate(0deg); } + 100% { -ms-transform: rotate(359deg); } +} +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(359deg); } +} diff --git a/bower_components/font-awesome/src/assets/font-awesome/scss/_stacked.scss b/bower_components/font-awesome/src/assets/font-awesome/scss/_stacked.scss new file mode 100644 index 00000000..01c9443b --- /dev/null +++ b/bower_components/font-awesome/src/assets/font-awesome/scss/_stacked.scss @@ -0,0 +1,23 @@ +--- +--- + +// Stacked Icons +// ------------------------- + +.#{$fa-css-prefix}-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.#{$fa-css-prefix}-stack-1x { line-height: inherit; } +.#{$fa-css-prefix}-stack-2x { font-size: 2em; } +.#{$fa-css-prefix}-inverse { color: $fa-inverse; } diff --git a/bower_components/font-awesome/src/assets/font-awesome/scss/_variables.scss b/bower_components/font-awesome/src/assets/font-awesome/scss/_variables.scss index 30bab220..2ddd8bbf 100644 --- a/bower_components/font-awesome/src/assets/font-awesome/scss/_variables.scss +++ b/bower_components/font-awesome/src/assets/font-awesome/scss/_variables.scss @@ -3,14 +3,13 @@ // Variables // -------------------------- -$FontAwesomePath: "../font" !default; -$FontAwesomeVersion: "{{ site.fontawesome.version }}" !default; -$borderColor: #eeeeee !default; -$iconMuted: #eeeeee !default; -$iconLight: white !default; -$iconDark: #333333 !default; -$icons-li-width: (30em/14); +$fa-font-path: "../fonts" !default; +//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/{{site.fontawesome.version}}/fonts" !default; // for referencing Bootstrap CDN font files directly +$fa-css-prefix: {{ site.fontawesome.css_prefix }} !default; +$fa-version: "{{ site.fontawesome.version }}" !default; +$fa-border-color: #eee !default; +$fa-inverse: #fff !default; +$fa-li-width: (30em / 14) !default; -{% for icon in icons %} -${{ icon.id }}: "\{{ icon.unicode }}"; +{% for icon in icons %}$fa-var-{{ icon.id }}: "\{{ icon.unicode }}"; {% endfor %} diff --git a/bower_components/font-awesome/src/assets/font-awesome/scss/font-awesome-ie7.scss b/bower_components/font-awesome/src/assets/font-awesome/scss/font-awesome-ie7.scss deleted file mode 100644 index 3ba99da6..00000000 --- a/bower_components/font-awesome/src/assets/font-awesome/scss/font-awesome-ie7.scss +++ /dev/null @@ -1,67 +0,0 @@ ---- ---- -{% include license-code.less %} - -.icon-large { - font-size: (4em/3); - margin-top: -4px; - padding-top: 3px; - margin-bottom: -4px; - padding-bottom: 3px; - vertical-align: middle; -} - -.nav { - [class^="icon-"], - [class*=" icon-"] { - vertical-align: inherit; - margin-top: -4px; - padding-top: 3px; - margin-bottom: -4px; - padding-bottom: 3px; - &.icon-large { - vertical-align: -25%; - } - } -} - -.nav-pills, .nav-tabs { - [class^="icon-"], - [class*=" icon-"] { - &.icon-large { - line-height: .75em; - margin-top: -7px; - padding-top: 5px; - margin-bottom: -5px; - padding-bottom: 4px; - } - } -} - -.btn { - [class^="icon-"], - [class*=" icon-"] { - &.pull-left, &.pull-right { vertical-align: inherit; } - &.icon-large { - margin-top: -.5em; - } - } -} - -a [class^="icon-"], -a [class*=" icon-"] { - cursor: pointer; -} - -@mixin ie7icon($inner) { *zoom: expression(this.runtimeStyle['zoom'] = '1', this.innerHTML = '#{$inner}'); } - -{% for icon in icons %} -.icon-{{ icon.id }} { - @include ie7icon('&#x{{ icon.unicode }};'); -} -{% for alias in icon.aliases %} -.icon-{{ alias }} { - @include ie7icon('&#x{{ icon.unicode }};'); -} -{% endfor %} -{% endfor %} diff --git a/bower_components/font-awesome/src/assets/font-awesome/scss/font-awesome.scss b/bower_components/font-awesome/src/assets/font-awesome/scss/font-awesome.scss index c7507de0..28bfc296 100644 --- a/bower_components/font-awesome/src/assets/font-awesome/scss/font-awesome.scss +++ b/bower_components/font-awesome/src/assets/font-awesome/scss/font-awesome.scss @@ -6,6 +6,11 @@ @import "mixins"; @import "path"; @import "core"; -@import "bootstrap"; -@import "extras"; +@import "larger"; +@import "fixed-width"; +@import "list"; +@import "bordered-pulled"; +@import "spinning"; +@import "rotated-flipped"; +@import "stacked"; @import "icons"; diff --git a/bower_components/font-awesome/src/assets/img/contribution-sample.png b/bower_components/font-awesome/src/assets/img/contribution-sample.png deleted file mode 100644 index fe7647f0..00000000 Binary files a/bower_components/font-awesome/src/assets/img/contribution-sample.png and /dev/null differ diff --git a/bower_components/font-awesome/src/assets/img/fort_awesome.jpg b/bower_components/font-awesome/src/assets/img/fort_awesome.jpg deleted file mode 100644 index 3542fae0..00000000 Binary files a/bower_components/font-awesome/src/assets/img/fort_awesome.jpg and /dev/null differ diff --git a/bower_components/font-awesome/src/assets/img/glyphicons-halflings-white.png b/bower_components/font-awesome/src/assets/img/glyphicons-halflings-white.png deleted file mode 100644 index 3bf6484a..00000000 Binary files a/bower_components/font-awesome/src/assets/img/glyphicons-halflings-white.png and /dev/null differ diff --git a/bower_components/font-awesome/src/assets/img/glyphicons-halflings.png b/bower_components/font-awesome/src/assets/img/glyphicons-halflings.png deleted file mode 100644 index a9969993..00000000 Binary files a/bower_components/font-awesome/src/assets/img/glyphicons-halflings.png and /dev/null differ diff --git a/bower_components/font-awesome/src/assets/img/icon-flag.pdf b/bower_components/font-awesome/src/assets/img/icon-flag.pdf deleted file mode 100644 index 1c8913d1..00000000 --- a/bower_components/font-awesome/src/assets/img/icon-flag.pdf +++ /dev/null @@ -1,1355 +0,0 @@ -%PDF-1.5 %âãÏÓ -1 0 obj <>/OCGs[5 0 R 29 0 R 51 0 R 73 0 R 95 0 R 117 0 R 140 0 R 163 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream - - - - - application/pdf - - - Web - - - - - Adobe Illustrator CS6 (Macintosh) - 2012-12-10T10:41:19-05:00 - 2013-01-02T00:01:34-05:00 - 2013-01-02T00:01:34-05:00 - - - - 256 - 128 - JPEG - /9j/4AAQSkZJRgABAgEAyADIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAAyAAAAAEA AQDIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAgAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYqw /wDNP8zdE/Lnys2varG9wXlW3s7OKgeadwWC8jsoCoWZj0A7mgKrE/yX/wCcitD/ADM1G60n9Gya PrFtEblLd5RcRywqwVikoSL4lLLVSvfau+KvXMVdirsVdirsVdirsVfOtx/zml5Ni80nTk0a5k0F ZjE2tiVeXENx9VbYISyd/wC85U/Zrtir6HhminhjmhcSRSqHjddwysKgg+4xVfirsVdirsVdirsV fP8A+fP/ADk5d+Q/Mf8Ahjy5p9ve6rbxpLqFxe82hiMqh44ljieNmYowYnkAKjr2VZH+QP58r+Zt rfWeoWUen69pqpJNHCxaGaFzx9SMNV14tsyknqN96BV67irsVdirsVdirsVeD3f/ADmJ+W1v5pbS Ba3kumRzeg+toEMNQ3EyLHy9Ro+9etP2cVe7RyRyxrJGweNwGR1IKspFQQR1BxVqaeCBPUmkWJOn JyFFT7nFW45I5EEkbB0bdWUggj2IxVdirsVdiryr/nJjyZYeZfyn1Sa5kaGfQlbVbR0ANZII3BRg f2XRyPY0PamKvA/+ca7vyl5H8t6/+avmG5mJs5BotlYQKC0jzLHOeFWUM7BdgSAqhia9lUH58/5y 9/MTXJZYPLix+XNNNVUxBZ7tl6VaaReK1/yEBHicVeP6n5v82apMZtT1q+vZSa87i5mlP3uxxVMv L35p/mN5dlSTR/Md/ahKUh9d5ITTYcoZC8TU91xV7t5I/wCc1dQt7f6v500YXrqPgv8ATSsUjUH+ 7IZDwJPirKP8nFVDzr/zmprl3BJa+T9HTTOQoNRvWFxMK90hAESsP8ouPbFUj/5xi88ebtV/PCB9 T1e6vW1a2ulv/rEjSCQRxGVNmqBwZBxp0Gw2xV9sEAih3B6jFXwDrf5Q6Xaf85B/8q3gvZRpct9b xpdFQZUguYEueG5ILIsnDl3pWnbFX0z+cH/OQnlv8rfQ8uWFi2p65HbIYbQOEgt4qcY/Wk+Jq0Wo QCpHUioxV8vecP8AnI783PM8sgk1uTSrN60stLJtEAJ6eoh9ZvD4nOKsBfzBrzz/AFh9SumnqD6p nkL1HQ8i1cVZn5Q/P781/Ks0ZstenvLVCK2OoMbuAr140kJdB/qMuKvdNE/5zd0Y6aP075buU1JV ofqMqPA7U6/vSjxgnt8XzxVh3nn/AJzK86atDJaeVrCHy/A44m7dvrV3T/ILKsSV/wBRiOxxVH/8 4d+a/MuqfmZrsGp6nc30d3pUl3cC5leUvPFcwIkhLljyCzMPpxVv/nMf8sDp+rx/mJb3CmDV5oLC +tGrzW5jt2EciHoUaG2ow7Ed67Kp5/zj75f0X8rPy5v/AM1/NF5WLVreNLS2thzdYDJ8KANw5Syy AbVooFSetFWHefv+cxPPOsSS23lSCPy9p52S4IW4vWHiXcGJKjsqVH82KvGdX88ec9ZlMuq67f3z k1rPczSAfIMxA+jFVbQvzD896DMkuj+YL+yZOiRXEgjO9aNGSUYV7MMVe4eRP+cz/M2notr5x01N ZiAp9fteNtc/N4wPRf8A2ITFU/8AMf8Azm9aCBk8t+WpGuCPgn1GZVRT7ww8i/8AyMXFXg3mv86f zL80axBqupa3Ok1pIJbKC2PoQQspqCkSUWv+U1Se5xVONZ/J+C0/Pk/lpFqDfVJL6CGO+KVdYLmF LkVWtC6RycfAkV2xVmn5mf8AOVPmh5pvLnkYDRdD08mzg1CnqXs0cP7sMGcUiDBaii8/8rFXhOq6 1rGr3TXerX1xqF01S091K80hruficscVRHl/zV5l8u3a3ehapdaZcKa87aV46/6wU0YexxV7l5b/ AOc0fPdhp31bWtKtNaulFEvuRtXPvIkatG3+xVcVYj58/wCcm/zT83RPaC9XRNNcUe00wNCzj/Ln LNMfcBgp8MVfT3/OK+tarq35P2M2p3Ul5NBc3MEc0zF39NHqqljuePLavbbFWUfnX/5KPzf/ANsq 6/5NHFXxXH/6zbcf+BlB/wB0ubFXmmKuxV2KuxV2KvYP+cT/APyduj/8YLz/AKhpMVfemKvkDzN/ 621D/wAx2n/90yHFWFf85Yf+Tt1j/jBZ/wDUNHirx/FXYq7FXYq7FX0B/wA4Vf8Ak09V/wC2Hcf9 Rlpir1X/AJzV/wDJWaV/23Lf/qDu8VYp5+/9Y28uf9GX/J18VfKuKuxV2KuxV2KuxV9K+Zv/AFtq H/mO0/8A7pkOKvnXVv8Ajq3n/GeT/iZxVCYq7FXYq7FX3V/ziF/5Ju2/5jrv/iQxVmv51/8Ako/N /wD2yrr/AJNHFXxXH/6zbcf+BlB/3S5sVeaYq7FXYq7FXYq9g/5xP/8AJ26P/wAYLz/qGkxV96Yq +QPM3/rbUP8AzHaf/wB0yHFWFf8AOWH/AJO3WP8AjBZ/9Q0eKvH8VdirsVdirsVfQH/OFX/k09V/ 7Ydx/wBRlpir1X/nNX/yVmlf9ty3/wCoO7xVinn7/wBY28uf9GX/ACdfFXyrirsVdirsVdirsVfS vmb/ANbah/5jtP8A+6ZDir511b/jq3n/ABnk/wCJnFUJirsVdirsVfdX/OIX/km7b/mOu/8AiQxV mv51/wDko/N//bKuv+TRxV8Vx/8ArNtx/wCBlB/3S5sVYLoXl3XtfvlsNE0641K8bcQWsTSsB0qQ oNB7nbFXrOh/84i/nFqcSy3NvZaQG3C31z8QFO4tluKfrxVB+av+cV/zg8v273KafDrMEYJkbS5T M4A8IZFimb/YocVeSTQzQSvDMjRTRsVkjcFWVgaEMDuCMVWgEkACpOwA61xV9L/84p/k752s/Odv 501exk0vSLW3mFqLleEtw86GMcYmIdUCuW5kUO1K9lX15ir5A8zf+ttQ/wDMdp//AHTIcVYV/wA5 Yf8Ak7dY/wCMFn/1DR4qw/yX+Uf5jec6P5e0O4urUmhvXCwWw8f30xRGp3Ckn2xV6RF/zhl+bL23 rNd6RHJ/yztczmT71gZP+GxVgHnb8lPzN8mRtPrmiTLYrWuoW5W4twB3aSIt6f8As+OKsGxVUggm nmSGCNpZpCFjjQFmZj0AA3JxV9Zf84lflB518t65qHmzzDZPpdvdWDWNnZ3A4XEnqzRStI0f2owv oUo4BNemKp//AM5q/wDkrNK/7blv/wBQd3irFPP3/rG3lz/oy/5Ovir5k0XQdb1y/TT9GsLjUb2T 7NvaxtK9OleKA0A7npir1vQv+cRfzi1SFZbi3stIDioS/ufjp2qtstwR8jviqH8yf84ofnFotu9x FY22sRRir/o2f1Hp7RSrDI3yVScVeSXtje2F3LZ31vJa3cDcJredGjkRh1VkYBlPzxVQxVm35efk /wCe/Pl7DHo2mTfo55Ak+rSqUtYlrR29RuIcqN+CVb2xV6/5m/8AW2of+Y7T/wDumQ4qs0r/AJw1 84ah5rvzrmo2+n6AtzI0N1CfWuLiMsShSLZY6jrzbY9mxV7f5c/5xl/JvRLdIzoa6pcLTndajI87 uR4pVYR/sUGKoHzd/wA4q/lJr1qwsbB9BvqH07qwdgte3OGQvGR40Cn3xV4bqv8Azhb+ZNveOmm6 lpl9aVPpzySTW8hH+XH6cgU/JzirKPJv/OE0izxz+ctdRolIL2Glqx5jwNxMq8fekX0jFX0x5a8t aJ5Z0O10PQ7VbPTLJSlvApZqVJZiWYszMzEkkmpOKsd/Ov8A8lH5v/7ZV1/yaOKvEv8AnFHyh5c8 2/lN5i0TzFZLf6ZNq6u8DM6HlHBEysrxsjqQe6sPDpir6N8t+VPLfljTU03QNOg02yT/AHVboF5H pydvtO3+UxJxVNcVdirGvMv5afl/5muBc695fsdQuhQfWZYV9YgbAGVaOR7E4qt8vflh+Xfl2dbn RfLmn2V0u6XMcCGZe+0rAuPoOKsnxV2KvkDzN/621D/zHaf/AN0yHFX0p5h/Kn8vPMfmG28w65oV vqGrWiCKKefmyFFJKiSHl6UlORpzU4qymOOOKNY41CRoAqIoAVVAoAAOgGKrsVcQGBBFQdiD0IxV hOo/kl+UuoXT3V15U04zvu7RwrECfErHwFfemKp15d8i+TPLY/3AaJY6Y5HFpbaCOORh/lSAc2+k 4qnmKvAP+c1f/JWaV/23Lf8A6g7vFWV/lP5X0HzR+QHlvRNes1vtLurCMT27llrxkLKQyFXUhhUF SDirOvKnkryp5S08af5c0uDTLXbmsK/G5HQySNykkb3dicVTrFXYqkXmXyJ5M80Ko8w6LZ6m0YpH JcQo8iDwWSnNR8jiqUaX+S/5T6ZcC4s/KmmrOKFXkt0mKkdCvq8+J9xirM0RI0WONQiIAqIooABs AAMVfMuvflv54uP+ct7fzNDo9w/l9rizuf0oAPq4jhsY4n5PWgYPGw4nf23GKvpvFXYq7FXYq7FX Yqxb81NJ1HWPy28zaXpsJuL+8065htYFIBeRoyFUVIFScVeb/wDOJXk7zP5Y8jarB5h02bTLi61F poILleEhjEMacuB+IDkp64q9xxV2KuxV2KuxV2KuxV8ya9+W/ni4/wCct7fzNDo9w/l9rizuf0oA Pq4jhsY4n5PWgYPGw4nf23GKvpvFXYq7FXYq7FXYq7FXi/8Azlh5R8y+Z/y2srPy/p82p3drq0F1 Nb2685BELeeIsEG7UeVenz6Yqzb8m9F1PRPyu8taXqlu1rqFrZItxbvTkjEluLUruAdxirMsVdir sVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirs VdirsVdirsVdirsVdirsVdirsVdirsVfLH/OS/51/mb5M/MWPR/LWs/UNObT4LgwfVrSb947yBm5 TRSPuEG1aYq8n/6Gj/Pb/qZv+nHT/wDsnxV3/Q0f57f9TN/046f/ANk+Ku/6Gj/Pb/qZv+nHT/8A snxV3/Q0f57f9TN/046f/wBk+Ku/6Gj/AD2/6mb/AKcdP/7J8Vd/0NH+e3/Uzf8ATjp//ZPirv8A oaP89v8AqZv+nHT/APsnxV9j/kn5k1nzJ+Vmg67rdz9a1S9ile6ueEcXIrPIgPCNUQfCo6DFXgV1 /wA5tawvmljbaBav5WWUqEZpBfPEDT1BJy9JWI34emfDl3xV9X2d3BeWcF5bnlBcxpNExBBKOoZT Q9Njiq2/1LTtPgM9/dQ2kA6yzyLEn/BOQMVS+y85+T76YQWWu6fdTHpFDdQSMf8AYq5OKpxirsVQ 2oappmmwrNqN3DZwuwjSS4kSJS7fZUFyBU9hiqJxV8u/mV/zl9rvl/z5qGhaFo1nPpmj3Ulndy3h l9aaSBik3pmN0WMB1KrVXr19sVfRPkzzPaeavKuleYrSNobfVLdLhYX3ZCw+JCe/FqivfFU0ubq1 tYWnupkghX7UsrBFHzZiBiqUweevJNxMsEHmHTZZmNFiS8gZifAKHriqdghgCDUHcEdCMVdiqhe3 9jYWsl3fXEVpaxCstxO6xxqOlWdiFGKqkM0M8Mc8EiywyqHilQhlZWFVZWGxBHQ4qvxV2KuxV2Ku xV2KuxV8Qf8AOZP/AJNyH/tlW3/J2bFXhWKuxV2KuxV2KuxV2Kv0K/5xu/8AJJeVv+ME3/UTLir5 f1/8svKsH/OUA8jxQuvl2bULXlah6ER3FtHdPCrKAQnKQovcL3rvirIvzT/5yz80XF5daF5Hij0T SbSRraPUQoe6lSI8A0YYcIVIGw4lv8odMVeA6vres6zeNe6vf3Go3j/auLqV5pD/ALJyxxVA4qz/ AMifnp+ZnkqSNdK1eS4sEI5aZek3FsQP2QrnlH/zzZTir07VP+c2fO89iItO0LT7K7K0e5kaWcV8 UjrHT/ZFsVeH+b/PPm3zhqR1HzJqc2o3IqI/UNI4wdysUS8Y419lUYq/RryDLLL5F8uSyu0ksml2 TSSMSzMzW6Ekk7kk4q+P/wDnJvyVoVh+edhbWUbQQ+ZIrW91FVb/AHfdXcsEzx1B48xFyPX4iT7Y qyz81/8AnI288j3Mv5dfl1ZRafa+X1XT21SYetIrRKFZYY3HGqtsXk5cjU07lV85eYfNfmbzHd/W 9e1S61O434vdSvLxr2QMaKPZdsVSnFWXeSvzY/MHyXMjeX9auLe3U1awdvVtW33rBJyTfxADe+Kv Yn/5zc85nThHH5e05dRpRrpnnaEnxEIZW/5KYq8a89/ml5689XQn8yapJdRI3KCyX93axHp8EKUS tNuRq3icVfcP/OOUkkn5J+VWkYuwt5FBYknitxIqjfsAKDFXpGKuxV2KuxV2KuxV2KviD/nMn/yb kP8A2yrb/k7NirwrFXYq7FXYq7FXYq7FX6Ff843f+SS8rf8AGCb/AKiZcVeFeZv/AFtqH/mO0/8A 7pkOKvnXVv8Ajq3n/GeT/iZxVCYq7FXYq7FXYq/TT8vP+UA8s/8AbKsf+oZMVfMH/OVP/k/fKP8A zA6d/wB1G4xV4/8AnX/5Nzzf/wBtW6/5OnFWFYq7FXYq7FXYq/Qr/nG7/wAkl5W/4wTf9RMuKvSs VdirsVdirsVdirsVfEH/ADmT/wCTch/7ZVt/ydmxV4VirsVdirsVdirsVdir9Cv+cbv/ACSXlb/j BN/1Ey4q8K8zf+ttQ/8AMdp//dMhxV866t/x1bz/AIzyf8TOKoTFXYq7FXYq7FX6afl5/wAoB5Z/ 7ZVj/wBQyYq+YP8AnKn/AMn75R/5gdO/7qNxirx/86//ACbnm/8A7at1/wAnTirCsVdirsVdirsV foV/zjd/5JLyt/xgm/6iZcVelYq7FXYq7FXYq7FXYq+IP+cyf/JuQ/8AbKtv+Ts2KvCsVdirsVdi rsVdirsVfoV/zjd/5JLyt/xgm/6iZcVeFeZv/W2of+Y7T/8AumQ4q8Ck0TWdU8zXWmabY3F5qL3M qLZwRPJMWDkEcFBbbvir13yp/wA4e/mfq8aT6vJaaBA25juHM9xTt+7h5J9DSA4qy27/AOcG9QW1 LWfnCGa6ptFNYtFHWn+/Fnlbr/kYq8Z/MH8kvzG8hs0mt6Y0mnA0XVbMme0PzcAGOvYSKpxVggBJ AAqTsAOtcVem/l7/AM47fmb50miki019K0lzV9U1BTDHx8Y4z+9l9uK0r1IxV986JpcWk6NYaVC7 SQ6fbQ2sbtTkywxiME07kLir5N/5yp/8n75R/wCYHTv+6jcYq8n/ADksL64/ObzVZwW0s13Pq1wI beNGaRy8hZOKAcm5AginXFWVeT/+cTvzY8wJHcX1tD5ftHAYNqDkTFT4QRh3U+0nHFWet/zg3efV Sy+cYzdU2iOnsI6+HqfWC3/CYq8o/ML/AJx2/M3yQj3V3YDU9JSpbUtO5Txqo7ypxWWP3LLx98Ve ZYqzryL+Sf5k+dpYzo2jypYuRXVLsG3tAD+0JHHx08Iwx9sVfev5beT/APBvkXR/LJuPrT6bB6ct xSgeR2MkhUfy83PGvbFWS4q7FXYq7FXYq7FXYq+IP+cyf/JuQ/8AbKtv+Ts2KvCsVdirsVdirsVd irsVfoV/zjd/5JLyt/xgm/6iZcVeFeZv/W2of+Y7T/8AumQ4q+sLDQNC0+8u76w021tL2/b1L66g hjilneteUrooZzU9WOKo/FXYq4gMCCKg7EHoRiqBt9A0K2uPrNtp1rDcbn1o4Y0ep6/EFBxVHYq7 FXyB/wA5U/8Ak/fKP/MDp3/dRuMVfWCaBoSavJrSabarrEqCOXUhDGLlkAoEabj6hUAdK4qj8Vdi rsVQB8vaAbn60dNtTck8jP6EfqV8eXGuKo/FXYq7FXYq7FXYq7FXYq7FXxB/zmT/AOTch/7ZVt/y dmxV4VirsVdirsVdirsVdir9Cv8AnG7/AMkl5W/4wTf9RMuKsG1r8lfO93/zk3B59hjtz5a9a2uX uTModfq9mkDRmL7fIvFtQUoRv1xV9B4q7FXYq7FXYq7FXYq+fPz1/JXzv5y/Nnyz5j0WO3fSrOC1 t72WWZY2iNvdyTsxQ/EylJduFTsfbFX0HirsVdirsVdirsVdirsVdirsVdirsVdirsVfOn5/f845 +d/zD88x6/ot9plvZrZQ2pjvZbhJecbyMTSKCZafGP2sVebf9CVfmn/1ddD/AOki8/7JMVd/0JV+ af8A1ddD/wCki8/7JMVd/wBCVfmn/wBXXQ/+ki8/7JMVd/0JV+af/V10P/pIvP8AskxV3/QlX5p/ 9XXQ/wDpIvP+yTFXf9CVfmn/ANXXQ/8ApIvP+yTFXf8AQlX5p/8AV10P/pIvP+yTFX1N+UnlDUvJ 35d6L5a1OWGa+06ORJ5LZnaIl5nkHAusbHZx1UYqy7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FXYq//Z - - - - - - proof:pdf - uuid:65E6390686CF11DBA6E2D887CEACB407 - xmp.did:5FCFF6CD6B2068118083DDCF5AC233CF - uuid:ce683a68-df29-fd49-91a3-fb4d92bfa24e - - xmp.iid:5ECFF6CD6B2068118083DDCF5AC233CF - xmp.did:5ECFF6CD6B2068118083DDCF5AC233CF - uuid:65E6390686CF11DBA6E2D887CEACB407 - proof:pdf - - - - - saved - xmp.iid:FA7F117407206811822AEAA5B991C736 - 2012-09-06T13:08:53-04:00 - Adobe Illustrator CS6 (Macintosh) - / - - - saved - xmp.iid:5FCFF6CD6B2068118083DDCF5AC233CF - 2012-12-10T10:41:19-05:00 - Adobe Illustrator CS6 (Macintosh) - / - - - - - - Web - - - 1 - False - False - - 60.000000 - 56.000000 - Points - - - - Cyan - Magenta - Yellow - Black - - - - - - Default Swatch Group - 0 - - - - White - RGB - PROCESS - 255 - 255 - 255 - - - Black - RGB - PROCESS - 0 - 0 - 0 - - - RGB Red - RGB - PROCESS - 255 - 0 - 0 - - - RGB Yellow - RGB - PROCESS - 255 - 255 - 0 - - - RGB Green - RGB - PROCESS - 0 - 255 - 0 - - - RGB Cyan - RGB - PROCESS - 0 - 255 - 255 - - - RGB Blue - RGB - PROCESS - 0 - 0 - 255 - - - RGB Magenta - RGB - PROCESS - 255 - 0 - 255 - - - R=193 G=39 B=45 - RGB - PROCESS - 193 - 39 - 45 - - - R=237 G=28 B=36 - RGB - PROCESS - 237 - 28 - 36 - - - R=241 G=90 B=36 - RGB - PROCESS - 241 - 90 - 36 - - - R=247 G=147 B=30 - RGB - PROCESS - 247 - 147 - 30 - - - R=251 G=176 B=59 - RGB - PROCESS - 251 - 176 - 59 - - - R=252 G=238 B=33 - RGB - PROCESS - 252 - 238 - 33 - - - R=217 G=224 B=33 - RGB - PROCESS - 217 - 224 - 33 - - - R=140 G=198 B=63 - RGB - PROCESS - 140 - 198 - 63 - - - R=57 G=181 B=74 - RGB - PROCESS - 57 - 181 - 74 - - - R=0 G=146 B=69 - RGB - PROCESS - 0 - 146 - 69 - - - R=0 G=104 B=55 - RGB - PROCESS - 0 - 104 - 55 - - - R=34 G=181 B=115 - RGB - PROCESS - 34 - 181 - 115 - - - R=0 G=169 B=157 - RGB - PROCESS - 0 - 169 - 157 - - - R=41 G=171 B=226 - RGB - PROCESS - 41 - 171 - 226 - - - R=0 G=113 B=188 - RGB - PROCESS - 0 - 113 - 188 - - - R=46 G=49 B=146 - RGB - PROCESS - 46 - 49 - 146 - - - R=27 G=20 B=100 - RGB - PROCESS - 27 - 20 - 100 - - - R=102 G=45 B=145 - RGB - PROCESS - 102 - 45 - 145 - - - R=147 G=39 B=143 - RGB - PROCESS - 147 - 39 - 143 - - - R=158 G=0 B=93 - RGB - PROCESS - 158 - 0 - 93 - - - R=212 G=20 B=90 - RGB - PROCESS - 212 - 20 - 90 - - - R=237 G=30 B=121 - RGB - PROCESS - 237 - 30 - 121 - - - R=199 G=178 B=153 - RGB - PROCESS - 199 - 178 - 153 - - - R=153 G=134 B=117 - RGB - PROCESS - 153 - 134 - 117 - - - R=115 G=99 B=87 - RGB - PROCESS - 115 - 99 - 87 - - - R=83 G=71 B=65 - RGB - PROCESS - 83 - 71 - 65 - - - R=198 G=156 B=109 - RGB - PROCESS - 198 - 156 - 109 - - - R=166 G=124 B=82 - RGB - PROCESS - 166 - 124 - 82 - - - R=140 G=98 B=57 - RGB - PROCESS - 140 - 98 - 57 - - - R=117 G=76 B=36 - RGB - PROCESS - 117 - 76 - 36 - - - R=96 G=56 B=19 - RGB - PROCESS - 96 - 56 - 19 - - - R=66 G=33 B=11 - RGB - PROCESS - 66 - 33 - 11 - - - - - - Grays - 1 - - - - R=0 G=0 B=0 - RGB - PROCESS - 0 - 0 - 0 - - - R=26 G=26 B=26 - RGB - PROCESS - 26 - 26 - 26 - - - R=51 G=51 B=51 - RGB - PROCESS - 51 - 51 - 51 - - - R=77 G=77 B=77 - RGB - PROCESS - 77 - 77 - 77 - - - R=102 G=102 B=102 - RGB - PROCESS - 102 - 102 - 102 - - - R=128 G=128 B=128 - RGB - PROCESS - 128 - 128 - 128 - - - R=153 G=153 B=153 - RGB - PROCESS - 153 - 153 - 153 - - - R=179 G=179 B=179 - RGB - PROCESS - 179 - 179 - 179 - - - R=204 G=204 B=204 - RGB - PROCESS - 204 - 204 - 204 - - - R=230 G=230 B=230 - RGB - PROCESS - 230 - 230 - 230 - - - R=242 G=242 B=242 - RGB - PROCESS - 242 - 242 - 242 - - - - - - Web Color Group - 1 - - - - R=63 G=169 B=245 - RGB - PROCESS - 63 - 169 - 245 - - - R=122 G=201 B=67 - RGB - PROCESS - 122 - 201 - 67 - - - R=255 G=147 B=30 - RGB - PROCESS - 255 - 147 - 30 - - - R=255 G=29 B=37 - RGB - PROCESS - 255 - 29 - 37 - - - R=255 G=123 B=172 - RGB - PROCESS - 255 - 123 - 172 - - - R=189 G=204 B=212 - RGB - PROCESS - 189 - 204 - 212 - - - - - - - - - Adobe PDF library 10.01 - - - - - - - - - - - - - - - - - - - - - - - - - endstream endobj 3 0 obj <> endobj 7 0 obj <>/Resources<>/Properties<>>>/Thumb 168 0 R/TrimBox[0.0 0.0 60.0 56.0]/Type/Page>> endobj 165 0 obj <>stream -H‰TTËnU1 Üç+ò7ŸI¶ĪB >à -º)H-ÿ/1vî=§¨ROÇqlόӇoõáé±×OŸky+½šWïõ‚ÏûÏò£þA(~Þ_ÊÃ×ï½¾ü-o•2DÕ¬u•Uu´Ñêõwfÿ.—Þ„Ví–UŸ ÀKë…pEoàZÅì,¹Ñ˜Q«£!uÄœhq‘©m޼ïÍg[‚ÒÒÖ ¹ùDwi®tžj³!GBk2òT†g:Š]a–Æ*÷Ùy6?‰ ´9H+·f¨ä„úª`UcPÊ1€} ÍÀ“«¥F€“å„ÞŒ7Á[€WÈ^_ψ@ÙÀ-ˆBí&†PÀªIEÁ‘5# à87Œ’wÁã”›óC7Úh3$Û8IÉlr›’).FFÈæðxÀC=pX yb˜#ƒ ‡¥´”1ÁÂ7ï´c4ROÖ¤! ó920m¥ŸwÚJÂ}&?0JŒ&ë `‘<üGCŸ+×,'õž!¯î€îÅæð+`Ï$ÝP$õf² ¯;¾Â é~ kf”¹‰éæè±h(;„'åšïZ~•çÏЫñ‡·$ãè’/j‘XÁ41–JGH‚§I±Sà -%n›Û0BÍü£…”¿&R~®e_Ëqr$ïë×r”|-ÿõ:F¸Ít yûdøå ÿ“žË?›<ß! endstream endobj 168 0 obj <>stream -8;Ue`\B]'l3Wi]-*=SST5_&k8\Fg9!~> endstream endobj 169 0 obj [/Indexed/DeviceRGB 255 170 0 R] endobj 170 0 obj <>stream -8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 -b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` -E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn -6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( -l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 163 0 obj <> endobj 171 0 obj [/View/Design] endobj 172 0 obj <>>> endobj 167 0 obj <> endobj 166 0 obj <> endobj 173 0 obj <> endobj 174 0 obj <>stream -%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 16.0 %%AI8_CreatorVersion: 16.0.3 %%For: (Dave Gandy) () %%Title: (icon-flag.pdf) %%CreationDate: 1/2/13 12:01 AM %%Canvassize: 16383 %%BoundingBox: -56 -119 188 0 %%HiResBoundingBox: -56 -119 188 0 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 12.0 %AI12_BuildNumber: 690 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 0 -56 60 0 %AI3_TemplateBox: 7.5 -7.5 7.5 -7.5 %AI3_TileBox: -366 -334 426 278 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 2 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: -58.6665 18.333 6 1261 742 18 0 0 134 133 1 1 0 0 1 0 1 1 0 1 %AI5_OpenViewLayers: 7 %%PageOrigin:-393 -307 %AI7_GridSettings: 4 4 4 4 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 175 0 obj <>stream -%%BoundingBox: -56 -119 188 0 %%HiResBoundingBox: -56 -119 188 0 %AI7_Thumbnail: 128 64 8 %%BeginData: 5936 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FDA0FFA8FD41FF7D527DFD3AFF27F827FD1EFFA8F8277DFD1DFF7D %F8F8F827FD38FF52F8F8F852FD07FFA8FD15FFFD04F8A8FD09FFA8FD12FF %FD05F87DFD37FF52F8F8F852FD04FFA87DFD0427527DA8FD08FF7D277DFD %05FFFD04F8A8FD05FFA85252272727527DFD09FFA85227FFFFFFFD05F87D %FD04FFA87D52522727277DA8FD09FF7D2752FD1EFF7DF8F8F87DFFFF7DFD %0AF8277DFD04FF7D27F8F8F8FD05FF52F8F827FFFFFFA85227FD09F8527D %FD04FFA852F8F8F852FFFF52FD04F8A8FFFF7D27FD0AF87DA8FFFFFFA87D %27F8F8F8FF27527DFD1BFF52F852FF7D27FD0DF8275252FD05F827FD06FF %F8F87DFFFF52FD0EF827522727FD05F87DFFFFFF52F827A8FF7D27FD0EF8 %27522727FD09F8A8FD05FFA8A8A8FD12FF52F87D7DFD18F8FD05FFA8F8F8 %A8FF52FD18F852FFFFFF52F827FFA8FD1DF8A8FFFFA87D2727F827F8527D %FD06FFA85252FD06FF52F8527DFD17F827FD06FFF8F8A8FF27FD18F87DFF %FFFF7DF852FFA8FD19F827F8F827A8A827FD0AF87DA8A87D52F8F8F8A8FD %05FF52F87D7DFD17F827FD05FFA8F8F8A8FF27FD18F852FFFFFF52F827FF %7DFD19F8FFF8F8A87DFD14F87DFD05FF52F8527DFD17F827FD06FFF8F8A8 %FF27FD18F87DFFFFFF7DF852FFA8FD19F8FFF8F8A827FD14F8A8FD05FF52 %F85252FD18F8FD05FFA8F8F8A8FF27FD18F852FFFFFF52F827FF7DFD19F8 %FFF8F87D27FD14F87DFD05FF52F8527DFD17F827FD06FFF8F8A8FF27FD18 %F87DFFFFFF7DF852FFA8FD19F8A8F8F8A827FD14F8A8FD05FF52F87D52FD %18F8FD05FFA8F8F8A8FF27FD18F852FFFFFF52F827FF7DFD19F8FFF8F87D %52FD14F8A8FD05FF52F8527DFD17F827FD06FFF8F87DFF27FD18F87DFFFF %FF7DF852FFA8FD19F8A8F8F8A827FD14F8A8FD05FF52F87D52FD18F8FD05 %FFA8F8F8A8FF27FD18F852FFFFFF52F827FF7DFD19F8FFF8F87D52FD14F8 %A8FD05FF52F8527DFD17F827FD06FFF8F8A8FF27FD18F87DFFFFFF7DF852 %FFA8FD19F8A8F8F8A827FD14F8A8FD05FF52F87D7DFD18F8FD05FFA8F8F8 %A8FF27FD18F852FFFFFF52F827FF7DFD19F8FFF8F87D27FD14F87DFD05FF %52F8527DFD06F82752527D2727FD0BF8A8FD06FFF8F8A8FF27FD05F82752 %527D5227FD0DF8FD04FF7DF852FFA8FD06F82752527D2727FD0CF852A8F8 %F8A827FD14F8A8FD05FF52F87D52F8F8F8277DA8FD05FFA87DFD08F852A8 %FD06FFA8F8F8A8FF27F8F8F8527DFD06FFA85227FD07F8277DFD05FF52F8 %27FF7DFD04F87DA8FD05FFA8A827FD08F8527DFFFFF8F87D27FD05F85252 %5227FD0AF827FD06FF52F852FFF852A8FD0BFF7D522752527DA8FD09FFF8 %F8A8FF52F852FD0CFF7D2752275252A8FD07FF7DF852FFFF27277DFD0BFF %A87D2752277D7DFD04FFA8F8F8A827F8F8277DFD05FF7D52FD07F87DFD07 %FF52F852FD1EFFA8F8F8A8FFFFA8FD1BFF52F827FD1CFFF8F8A8A8277DFD %09FFA85252527DA8FD09FF52F852FD1FFFF8F87DFD1EFF7DF852FD1BFFA8 %F8F8A8FD1BFF52F852FD1EFFA8F8F8A8FD1EFF52F827FD1CFFF8F87DFD1B %FF52F852FD1FFFF8F87DFD1EFF7DF852FD1BFFA8F8F8A8FD1BFF52F852FD %1EFFA8F8F8A8FD1EFF52F827FD1CFFF8F8A8FD1BFF52F852FD1FFFF8F8A8 %FD1EFF7DF852FD1CFFA87DFD1DFF7DA8FD1FFFA87DFD1FFFA87DA8FDFCFF %FDFCFFFDC0FF52FD1EF827FFFFFFA87D52FD1EFFA8527DFD39FF52FD1EF8 %27FFFFFF52F8F827FD1CFFA8F8F8F87DFD38FF52FD1FF8FFFFFFFD04F87D %FD05FFA8A87D7D7DA8FD0AFFA87DFD04FF52F8F8F827FD05FFA8A87D7D7D %A8A8FD09FFA87DA8FD20FF52FD1EF827FFFFFF27F8F8F8FFFFFFA87D27FD %06F82752FD07FF52F8F8A8FFFFFF7DF8F8F852FFFFFFA82727FD05F82727 %A8FD06FF7D27F827FD20FF52FD1EF827FFFFFF7DF8F87DFFA827FD0CF852 %7DA87D52FD04F87DFD04FF52F827FFFF5227FD0BF8277DA87D7D27FD04F8 %FD20FF52FD1EF827FD04FFF8F8A8A8FD17F87DFD04FF7DF827FF27FD16F8 %27FD20FF52FD1FF8FFFFFFA8F8F8A827FD17F87DFD04FF7DF8527DFD18F8 %FD20FF52FD1EF827FD04FFF8F87D52FD17F8A8FD04FF52F852A8FD17F827 %FD20FF52FD1FF8FFFFFFA8F8F8A827FD17F87DFD04FF7DF8527DFD18F8FD %20FF52FD1EF827FD04FFF8F87D27FD17F87DFD04FF52F8527DFD17F827FD %20FF52FD1FF8FFFFFFA8F8F8A827FD17F87DFD04FF7DF8527DFD18F8FD20 %FF52FD1EF827FD04FFF8F87D27FD17F87DFD04FF52F852A8FD17F827FD20 %FF52FD1EF827FFFFFFA8F8F8A827FD17F87DFD04FF7DF8527DFD17F827FD %20FF52FD1EF827FD04FFF8F87D52FD17F87DFD04FF52F852A8FD17F827FD %20FF52FD1FF8FFFFFFA8F8F8A827FD17F87DFD04FF7DF8527DFD18F8FD20 %FF52FD1EF827FD04FFF8F87D52FD17F87DFD04FF52F852A8FD17F827FD20 %FF52FD1FF8FFFFFFA8F8F8A827FD08F827FD0EF87DFD04FF7DF8527DFD08 %F827FD0EF827FD20FF52FD1EF827FD04FFF8F87D27FD04F8277DA8FFFFFF %7D52FD09F8277DFD05FF52F8527DFD05F8527DFFFFFFA87D27FD09F827FD %21FF52FD1FF8FFFFFFA8F8F8A827F8F87DA8FD08FFA852FD05F8277DA8FD %06FF7DF8527DF8F8277DFD09FF7D27FD05F852A8FD22FF52FD1EF827FD04 %FFF8F8A8FF52FD0EFFA87DA8FD0AFF52F827FF7DA8FD0EFF7DA8A8FD25FF %52FD1EF827FFFFFFA8F8F8A8FD1DFF7DF852FD39FF52FD1EF827FD04FFF8 %F87DFD1DFF52F827FD39FF52FD1FF8FFFFFFA8F8F8A8FD1DFF7DF827FD39 %FF52FD1EF827FD04FFF8F87DFD1DFF52F827FD39FF52FD1FF8FFFFFFA8F8 %F8A8FD1DFF7DF827FD39FF52FD1EF827FD04FF2727A8FD1DFF7D2752FD39 %FF52FD1FF8FD60FF52FD1EF827FD60FF52FD1FF8FD60FF7D7D527D527D52 %7D527D527D527D527D527D527D527D527D527D527D527D527DFD5FFFA8FD %62FFFF %%EndData endstream endobj 176 0 obj <>stream -H‰TA1 …AþC.#Á¡VÛq|\Ð"!U‚nhCA‚M+ÿ;Óî.§ñû&Ïy/ØÌ2ŠAo†yg [ÆFPP›3Æü2ë¦â¬µ¼w&@¢ìÌ…ÈêNnƒ¶ØÕ¡×ŽäsB%h;ý â–Ûñiºó*ý`,»—¯ endstream endobj 177 0 obj <>stream -H‰ÌWkoܸýüê‡ñ{%Q”(£( ê‘Èð½)ŠEa(ÅVw, 4ãdÓ_ßÃKJ¢ÆãGÐÌH"©Kòžûâ«¿œ]g«þssÌO|½z•M½ë‡SZ½·ëõýv7è¦×çG^Ÿø”½•Wvà§fض}wJ]'•þúuQm¼7u·ú~ä½>Bóe»[7èh¯ûîøËº¾9Ù¬¾3BDQïÐüþp/OýÀËÞëþºûZo·ítoÌ¥žCõ÷ݪínTÿÇ©w,bï8R/ÒÓËû{{ÞlŸRô×÷wM·;úëf»Íûu?lO½ü{ÝyïëôÔÞ?›õºÿæ©u}ý;ÞÅUÕ®lï®ÞaZÙÛ ¼R÷ízõáþîsƒÇ)5ó+ùë² V?ëæäêíZ.šÝKÄz-ço”» 4^ÿvÞÜ´¤|hç_GVìÐoîêáwý-m+ö=;ães·YC‰´ãäDxÇúo|°c°£C%œG^Æ^˜HÓ?ë¥ùÚ6ßN½}טÍgÃîÂE¾oþMÏùýº~íÚê¦Ôìþ}¿jÖ?}_öí¸¿`þ7.ëá¦Ùº~}¿#›’ã Ðî»ú{£) -Ì7MwÙ¢5 yDZ»'œs/;qà%Qˆ3 ö 'pf5ÏvqZœ6Î’€—30õqhoÚîô˜§ÚòC⛡]ÍF$úD:¿tü™5cû»]ÓÙ=Àrò÷Ž%ø'ï/0kÙ­òþNs°Õ†è`ëþÆôMÏÔƒÏï7fô~ºÎ†¶Ó2Ùê‘Wgë{t½úûÍÛîKÏ^×þÔ\ÃÁèÊûøùßx£’uz—C} xŸÆœÔíæèIqØÜÐx¦_Òëxþë¢ù¿š?7­e÷µY÷GìÔ‚Èâý£6Ï‹>[×]=xÔ>I~×"<ÕÐÔ,{n{PXÉÊ¡OhÈÞO pº^0Q½»EjºÕv’m^— 7mÏË»¸Ö68xj¸ßÞz—}¿žÄ.»&é¶™ZõøŸcŽ3ú ûØ=œÉØŸ Qè§›£Ÿ?³ô¼^¯Û›¡Þׇܶ&8Ð?Ídú~ݾß}î×íön¶'§å¬víõº¹ø¾Ý5w/&×+W-‚Ü#nü䘋oõîúö]ûy¨‡¶yÒû4_ÚnÛ¿¸owͬ þn£Kïâ¶Þ4´ÝmE#/&â -¡ß îÇÇODý öTçô¿êU‹„‚êëM¿^5w®Ã;[¼!}%žZ±ß˜o"ïÕ•Ø_™¿{p‹ÈBÐoD¬ 7Éé§ d[J¿b~5b±0÷ -pÑ€Ñ- b ¡»t.jB>A0¾ /%5AåÂU-n¼¸ƒÈc fnaâ@†)`þ3Ê€ýí—±É|F«3·›è’ «.»Ðwͪ\ð›: ãŸYªG²ÕD³¹k–K—mü›Ë?ÈuÈDsðªïšYÍqLÄr²Çpf±ä\ê[I(öX'åÄáÌ™†!i¤,µd f9Ò\å¡´¨4FÏÒ›q¹ ˆ¥È*^’B9IEº ió1m/¥­´âÀ®0&“ÁÍ«ç QLG<æ ])W@Á+°D<Š"%‘ŒÒ(‹TTDeTA‘¡à"±HD*2¡D.JQ1,(€•F±@•.ã4ÎbçqW°…jˆ‘ĉLÒD%yR$ì$¡Œ¤±Ld*3©d!KYÁ^B–ò4J!'•išª4OË´‚ÑÏ¢Ldq&³4Ë2äY‘•dI!6)¡%UŠ.¥rUª -Ö0Ò6Ï£\äX@žæY®ò¬ËŽp •êMHHaTÀ˜™Rhse}™ _ê,$È{ÇLds‘NEÈ6(hnï¦dÃÊätǧt§“]¦'¤§ŠÛ4«*J*[8ˆ©tÈ\µk-è:ͯŒH¼P1WЫöã+cBœ²(õÓÎi׆†Œª’’/˜¥’0˜ŠSá™ÂÇTr9â%D¶È6Û«f[%Ó±‚D‚f1$„´a>>¨ ³d—(CÒ¢X Jƒù ÈöªƒQÂ&€1â¸1g6•9‡bQñp´ŒFÏÅ"£ú=oüŸQMåïˆù #GœÄ{ ÄâddOKÌ>Œ—)ÈgÔålÌ1Ómªô Š-v9UÐã¡@ßÓ=È=̇Hó³ñ˜9!zþáØ‹-NºtÚãÜ"mº8ÁìáËÀFd }r<÷1{ œ¿ó‘R¸`ËW{uŸ‚?2 -æ‡/Ä!{áÀ_ìù!?výiǼL55êXf¦Â2®(fj?O­OþÎàÞÂqqsqÇü÷½y¬PGïuV?Î,zkb!­ŸÆÖ5õ“qIýÆ]eÏ{&žüÉ/+J)ÝqtÈ‚M>XÂñfTÝqvÈ}ç4·'vÀ?µGÎoÆåì©]tzgå©Oùïž{j?~¤ëÇ}ø)?þÿ»ÝŸ.ðP‰êž~žL=òðü3V!(7ê ]m¤öäÛz#œN?•Sq$‹Š#tN@ùy/—^¹+ÿ‚þ³`olö“F6|^e¡¥B+8B`-dg‘Ÿ:ušd“óÐõ•4¤f†}9Ý}ê|… Äd$i’Ô0i’´æ ¼å Wr$¡)h`ÊÈA±ó†QȲ8$ -I†2’f!IC­¦!æ¡©ä¡y(3I"粦„¢… Wb‘#‰F™ÑH‘g8²,¥… idB’Œ$))á¯ÊW„ ‚’£ZD% K—&Ä% L™$4IlJ>08Itrtª†ñi°‰•· ¹ »%ò[”ï;9,ùiwqaZ]‹Ò”Ì2”țͩo¨«b,uâÕ‘k®‰d˜Ð#÷yä:•ÓÈé™×<ñ˜ƒ©c1O=厓|ÍBÌsßx…eœ¬ÁÔ.ñfk¨êý‘1¼Òn+ÿq?×ÿ©Ž±° 0FB¬.E¦Ý45 ¤…²P…З#‹0Y¡uÀ×Å>aO/ KÎrÞ^ñeÐ_OQŒ3öBƒ¬Ú’}@HAÉê—#ªtfsi[-ÈOP4K“!Ÿv±¯Š‘L(‘…|dµNè“àÛ€G¹Ð¦–k+A£!Gƒñ(ZX»'St‚›K`Ì -G‚D`a<Ë; º@º¸ÖÄ*\ÈqÖ€ã[ò¼HßÇ>‘ô厞ì/7±\e; -ZWr¯ÌR——ç1þŒÜ…l12cL¬oÙ©«í®†»íj±«µª­G5›•îºZçnš»Wî¹{cíˆôÂÊÞ·;Þ‘¸js;fÅT>v´®“YÝ!Ÿ[?ª˜æ>·¼æ«Ã·#^¾šK¶WäÀøp¸ó÷d¬«©óZI·-¾‰{®(ËÜz\¤Ð–[bw‘/è íÕ5Áoì›âÓ4H¦!â[ Š<Ê}9§ØyŽÕùÐtYÞƒ)ú€‹VζË]ØÊþPßi<}¶ØÀPe¬`›x_†ëXˆˆYÇoá¨2Ö-t‡±BÓtÕ³}ŸñÞ¾Šmºfç:)‡Ô}ãRžG»³SË“wÝ~þh›¿„Q†É¼ë æÏ/?ùÇ˧ŸÿÔ7†¿}ú¼¾õÓ凿ùç¿>½ühÖ Š‚y‘"ÄÅhÑ'e]›RÄ{ÿñœ^ùXVþP¶åŽËzŸq½ãRî(eжMSý¤7ܬöÚeš|¼:'Ûû øxÿ_™æ÷ÿþ/æX^q£× þÛÚ–ÒuÚÒo´Ïh‡Ñ΢ E‰¶[š…vv’z’Ø…ˆÐõ¢Á(° "a 'Ìì_ú¾öü}wè'Ùì‡…ÚÆSAè¥É éÅ ö6(ˋ锿e{; CËOS<œ‡|vØ“ÚMŽ*‚!ùéåT-° -‡i™™˜Fá€PŽà,0à t©Y[ƒö*S?1ñ |NÌûú1˜&a”Îq`;4è§3 BfªÃœ%S=9p”íÌê ìAA=°+wioqYAH1H!(~ú#çÂ:–”£„£t£L3däac ±ŽôšI® V2«ðj« -§ -Ÿ -̃ éˆÍÖCás7-œT™V,ß$‰¥ì±¤²½cZÅn­ Pff¢±z!Pl ¬€Ì+ÖÈqÕð5>i=)X’€ é`\÷,@ª 30`vؼê½-þnÔ™ñl#ž°ÇsfÀrLº£02+3äÈ„–³Ã&Î¥€dO°ÌÄÌHèôœý–+ÑŠæz¥Z²à†gºõ¸Ï‘'ZfŠ5U&‹Èt‘˜0$cHÊœ!IYÃ+Ž=r t`ÕdÝ4whòسÓJ]ÒGËÕ”ü! $†Ì²ÆéENa¤dYzÍ#“æ‘5‘˜S$‘=Ñq_ŒŒ$ÓIZF¯‘„f³'’‘‰d 5%¸*¤F†‘‰aD¢ˆ­rˆ¯rˆd-…aù*†Ü‘P‚£È–Cf&õ!e~F îà¹zçÞõ¼]ß]ônÃaø–ÏåjY¯ê³\iAëѲ¨äµ5ëÎŽgw8»ÃÙûõ¼Ò - TdÅ /K8—W9ëkÇ××žå¾¿Š—‹F¾ª%ÀŒ<$1f¦=ë#»¶¥å{\ž#ÎâÎûFÎìÉ©mO²†Fj·.:Ü^jè¾(—s™qÇ ¼ÉÏ{ gýÎõ±ãÜÜcøæþ¡¥¡­mé¶E[Õª–ý“׿ð_ß>ü¯>Ÿ¯ë÷Äc½ÙÞ -Õ«œÃv½ÿÿÞ§îp'ÜÿãCìƒÈ»êòä·Aƒ9ý̵-¬Wm5«û ï‹Ð°HWÇÍÑÕÕûâìûçêïêðâñ«ËŸ_ž=ÞÐz6zmõÒìµÝ{úJËí/M_Ú¾6~iýrt„¦D³Rp† °’ÀÚö´ñ­­ok~[û[ ´ÀÌ&ˆ6hJ¬;aÝ K7$9% ÿôöùé{ô$I[Asñh4-ì£Aë™Ñ‚F¶£œÑ"zGãja7 Ú,"سée|«u Ö_îµ6ûåÊ•üÔìá™Õ·Ú¸?Æ·ħA+qŽó\—£\ ÏfDZ²üKr?.:Ý2Lw ¡Á×÷Çùæ‘ð<ÃdÞõ¿„óç—Ÿ¿üãåÓÇÏêÃÇß>}^ßúéòÃûÿüþûÇ/?šõCay_dóÕä·YMUÂ"‘’°ƒì*Ž¥v(Ž[Ø~ÅóÂW¼C§”W6µMœPXEXÆ=#Žœ6VV{žØ&g¶ËÇ™30u„MEÂ9»Šˆ‡ÒÊæ5y"{ZR\»¥OÇô) 9Ñxæ?O<ñÅçÙý‡µ?o*ö]`¯Õ¸nP•QC0L«‰ŠŒ«YU¥K…ÒÃÖŒW;ŒeÍf)¡•Û6íGÚ”7õ›†]&Ž•6,CUJM%{«Ä¹3Éo -Ýù¤îŽz“ú4=ѲÊì—Gåæ/‹Ùèé[Uç7[ê×—ºM¬X­Ö­J!)QǼ«‘¶/åȶ(¥hJ ŒŸZpËììWKoä6üýæb ¹|ŠT‹žAÎAN9 ØXì!>lòÿñUw“zÌȳcÇø°ÀZ…D‰dWuռɗQRe. RæÌ ¦„Êà– -'æ{dÔ½Cͳon°Í\àì’†RÈs)`Ïæ[jT«²sÞ7#WàTjÌIEÜ¡åÁ{Ý×ý〜<7DÔ4W ­XÀA ÇL,m˜)φyÖ wdɽ˜Rîæ5±lNLO* -9Øî±÷ã£O8¬;XFQK+zÅÃÊÀf&qvb7Ê’öªì—àaÕÑŠ·e—ë †—­/³^™—ä_*n™?“_­Ž—ŠZ18oµâ¢¶jÐe¯H´IÅC ¬‹¦^eõ0ÕרÓQZ¤b›&£i¤º-ÕÐj˪u«–®½ÕVg¸zÆ;¹:²õØxÔ­o=s´;ÇKÎøÒC¿ä»ãríҤǷ,6dÙóóÁ³àå­ã<Ã5Ä¥‡È[D‡õµ~Ãêú‹¥ß˜v±è«¯Æ{õØ«›^½sµÊ«5ÞXaÚXßÕì®1q×hx ·yâàe<Œ‚g9°$A:ˆ‚û0¸ƒû@(‘PP›]¤%®Ñ°†ÃK@,qÞÅi CÕwëÑ.È ÖÞµ¶á¸ ¬ ’+×té6Ón³æ&q®Ø&1ÙOÚd˜a‡þÝŽŽL"§{vn ¹‚ÅÑzz†ðjH£Ö¿¤ ‡Gao'¼MÂ× LµÂÐIˆY)™…ŠQ(Èä3Bº±p­#¡Xb…B(+4š„9Ê™VxÒvxáƒ)$¥èµØQ⤕-å¬%l¤`µLûR‘¹Tך–-Å3•ÊèËŽËþ¦²?º ®µÜR¡Y,6£Ð¸GUóÖgéÁÛ Fœ½ wjucaIßKùsUdiîl¢¸DnùNÌ$,䕌¥gÒògs½°ƒMâm#ÁF±^¬°e‹!âËòÇzÅ ÇTgvñDøóÔƒ7âÈÕž³UçLb ư—´É±à±*©R01¹¼²€?ZíF>8Jh¬° bïTzJ±ª§Š‹Ž¼–š&µÑêê5I”â=Iö)iªd¢ï–öWÛu‘h·hiÕ·UM\K%~µš4Ä Â~ 5šûÃ^ÀÃΗ ‹KÓ[‡ÓÝCÿ•þ"sRXÿæä2.à÷?èîáÅßûøÙûh2ÂNZ6´­Ü‰«© ‰O¬å³ò\Äf;ò[žÆ{û‘îºßãÃôüøÛ×O_žžÿÕ ýÓç/ÏõÒ/§Ÿþ|~þô÷Óãés¹t²?ÓÑE¼×úG,ÇYÚfkÖд1 ÅÏg9#!g´KÒ±È3öТIÎH%cŒ%eX”nØdŒÁ‰Yò…}"È”@- #8ã[+‹’+Úm<ÒO®é<$Õç 4ïbÒùzÒHZT¬/Q)IX:Ÿ†+Y§ÒMÆÑ:ŸÛ?¸/<-k½]íÝzSYp»ûÜm²»ü\ýØÃÏ žÖåëúÊ–w­áõb*3•vwÙê¶nÛæÖ&'-n×ßÐÝHÚ›4·×÷è~õ¯úyïCŠÒuïÐô=ÿEa%Ö2s/Í9œ -â; u´¢¢rezwí¿)¨1‡ŠË:îTÔ «“ðy-ÁÝVxË -Ãdm@Óž) -‚z¡fJNBGfb -A¡¢€,?x™ŠaÑLL‚!ê`FX¥¶É¢ic9a© V³5 ÁMpa–;aeÙºDXµ,¶­ƒ`å&¢{+^ÀÃä¨ón`ÔøÆV\!gN ì9XÌÄYCò§vjh4Äh¨Ñ£¡§Æ 5[Ô£Ä'ÎQ5TÕ5í°„±Ï -ì1hIu+ü! ˆ{ÐÙ…æ&¤—A/þ”ßzÅÍáïtÛm·ãcÀƒ—P]X³¨ˆz/'N@•¤Gûg·Å­?Â¥pÓ¤á¯&+ûŽPØcö#ÜÞ;U8++á‚mU×;Tó€Ì4‰¾T…Ø"p±ÊôЙTj 6,5~›„4× -Ç‹äèf"<,=~Qp¬>E¨T"‹ÐX…H¤ÈˆÙOX’VQbYªÈztT”¥®ë°`,˜Ì"af²¨Û䥢o{„/ ZHEnF^AÛÿ¹ íuзnx-nðæƒn¿õ‡ð%áL1‰~¨É(ê¡x»¸‘Nü'úQ"±)AJàŒ ¶$K6ã\Æú±Ä²U?â,êáý¸¢ UCTErQ‘þ›*RuJBELº’L‚s-Yõ„ÅïTEuÊBa©ÇZ£{]w˜. êB"󒨏p¦8t£}KŽе߀«÷&| øpUw<® h œÀ ‚¨FÄK P'¦&ÈXK¢d¡hY Þp²‹ž9è;¢,Š6,®È•œÕ¨®±-ªÆˆ kÞ( O¸£yqGêÆþˆËšÕmu³<Žä¯$¢ÁXÔlòUcMKÃZhÙ ZÆÄŠEÉ` –™AÁ*R¥Ò¤¢$P‘!‘–¢ U!*Éë^V½*¹j S£†'’µæ¤mÚ¦›} 97­›ƒä¿ã¦c æ* îf„[@·Ý64·‚n¿õ‡PdžçqîÑñÒg?ÛižFìx DÎŽó8¢2Zôéf £Í0ãУ¶3 ƒl?£H”TÛ'½ -Óö¦›PÁ=ÌN†ލw®iÐ]Gð¢C2èÑÓ=:½A÷Ÿ@¬Þ …GH ]ùÁM8‹ ¼ìá7Z1Ë^ÄÓØdàP&zjw xÕP:ê;H€‰˜ìζtà+3;A1ø¢ Jb£aMAêÂ|Qd˜ŽÐµe7O•xTQ¡€œæƒ#Ø-Hk¡Ç²VA±X¡)7~ -”$`U’wzÅëáä­@$ÖÍ‚I0T6õUZªaÊ Ä·‘üiÄ Â~‡óî ùc.aç0]ÅHè ·b¸tÛm¶¿tû­?Ì€ -ò¡  -òýòóûðCA>äCA¾_~~ÿBAÂéî¡ÿJ¦À -^}ñ/2÷É…lÛ“¹ošÐ&Ï'5ÆWRŠQN¬‰9»ƒ9mNÍ)š“5†GýƒîÞyÔþ²'4'ëOÑÞhX}×Á/õ~¼?4öÞâ8ùpߨvÏß±>aÔèš“3÷Þµéàùó;–çSÒI˜ýCëeÜÙt×ý¦çÇß¾~züòôü¯^èŸ>y®—~9ýôçóó§¿ŸOŸË%,û™Ž/chê±Á¿Ú„bZ0î0| Ò±ÐTÎ1¼:L/ØíäsÈ0Sƒ> ùn2è•hžè—h2#þ¸V¤sÈ0Æ,ä>˜h“€lZ z`Œ ¦s|wÃjcßu÷ê.ëΗZЭØïÏnoõ†¼Ù‡õ”°Ž«Üaüë?ã ö$`ov_ S‚YdÌ)r·æ†e̻ܰ2ßdUšä£Í¢=&Ä'9XßòCkÜÁ‰;Ù#{·!At ³2¼’kÐàqÒÛ2Sžsš3?¿~ÎÛž×w¿ËTÞ}mþ£ - ÈŸ«ògôX‰¥ÔªÄê…P“5hv2ÚÆ&‹Þe;´Ú¾g²3,–ÅB{xµH®©Ë®­”]ÇwâÃ}+uÇBÝÉÌx›¾ýæîÚûñÚk£Ïb?n(ãîæCuJÝh -™C(B‡,’‘Fö;íà RÉi Ý”‘MVÕµEwGÑÜN´6ÂJ„}÷5ãÜ>z‡ìó7È8Þpmô—Æ?}?>éÆf¯*™[ö‘6œÿPšþ9Qv×þS­û£Z÷»ZG¡qý8„ÎO‘ƒYÿ?öËe7rã -ÃOPï d#°îUF€× ë «, c^dNÞùΩ"›­îžØ’ÆZØü¡Õ"‹U¬sþKžHwdDaí©KB Zb5ÏH` -siÎäKr"‚À…fžÑTÞ༩àHp$,‰hd:ö"«¸î€èÞ„MâœÆ:§/jÜ“ÐW€•8å‘ ép›dE~,1I²cTÈ‘%W⥬…ù8‰ôU­A4I#ÑT*—°*ê¾i…Zå|çÊ+@Çä(•«+3ò%QÒ-‚ÂPHeUËÀ‹àʼnã¨EÆ/I²«!J¢” g =˜·Lmésgž?1‹ªó)Ì‹ä/Vì/®Wªõ~·±'vÙØ§…›Ø¼Êì3¯+²±ž-¶H(ðEm§T­ -=¡M?øS\x£pêå8¾ênÕ"î†ÈÞZŸÓq'l• -Nþ®Þüš›ÞÖgån£é´°wÚèÇ(ä‘Ú”ºSsº¥fr»«ÒÍ/›05%&¥æ):郤…H}iYÊÝR¤Í(S…«Tc¿ÍÞܺßÌ¡7Ðlžf“µ±¤©¼6Ð$]£ýÒ:¥=A;Szt[XééÒC 9¤C>8ddð›_“.ÖUÞCQh?)%øL^á¶C\"­5ªœ EÌjO—D!&'(Ùëê’vQ»ìr!—*° -q¦[¥a5r\˜®1J6n²ÒM<ÑÚîÄ/ψwŸäö'é³ÚÓöçO»0›9=ëBný‰Jpm ˆ9  'ʼ_?YÞáÂ+«Ì)ðìgÍŒžÒ3ÄÊš2L衾Ê«U¤¸¬›vªRu‘Ú³èñB-ŽÔdÒb°úÜûÎj7V,wB–·º Ëc½óÞ}‚u+¯dB°¿ú +d© o(¥HIeJ«òæ& -m¡à6DH$ˆ¾ø>÷h'åe°héPDZNV‹Ëή Mšj5Ú_tÚ¤Ööè¿Ö­3Cw ±»Ô;¹t7Ò8‹ -NAi+WÌ*Ág¼åÍ—ÌÉêŒöÄõíi‘¾wÖ¾ÐÔ{¼œ—Ûfætn2»¨³ËjÎó{DÐ/)ZghŽ-XŽ9^f9³¼g¼ÌVgvÆ$E¡%áµ -wHl” ÞhJWƒ…ñ,2³¸¹¬,Æ3y™ö\Wfæ˜Gâ½LlýÆ.{v4³”I|$ÒÁ!mfu|Ý牿W'6NÌÛ¨YC|˜oQå£Ïï{Àë|ÖàÌñGs¾{Ä»Ž}— Øþ7ÝRc|‘4«9EÍò"jæ«ÚÑ£Ê_ÌÍñ› øåhp›œaúÉm09Ç–sœ9RÎÍ[ÔTdøh1©E¦æxD-Z¤"\éTÚ!Á‹FÇJ²X4©šÚf£r³ÚM'jiuOÈâH4FBàŒ0­ncâ†$ÅcDb‚?¿± §„ .»5gTmcEŠR%’ÎqeeîJPñ³­¹Iʇ»â· ø ;<@Oæ&‚܆•ë0sÊ9§ôs$"s¨Ëššæ4‡Ý”¨Å,ô©•(—¤1Q´]E$e¼b}‰q£FºY=Ì*Q:´ý¹wQǽAeBqT¼ ´AÝ «T£/—¨ò/3<— #…§áÚ -Ñ> Ï!@X™ÚËÅøäžìSzÊå¹8Ÿrx¶1{ææ›ïÞ:ÌôfW‹çÒÁº”¢œxkcmãøêlâ¤ðCÿëúXÖ?…ü -_&óæ‘t>¿nI%?¹ðœ¯æñêx>µüÍø÷øÝúùÓß~þþÓO?|þoûbúáÇŸ>ï_}ûô§~þüý¿øôôcÿê)þÙÜû’'»§é›þs¥W»Z½Ô«¦Xþ¤Y¢Zc×­µ+—í2ÈWÄg˜PlÄ0‹Š­ªc"¡.zÔLô, !_¯íFaè6`ÿtýól ü•Åò/ÿ6WÖ ¨ ‡;›1\˜-5Wb¯4vM˜Q¥dÉA3¤äÇ©ÇÜCc‹Œ{`”¸xÑ´¸ó",ž50ŒVCãJÏ0ÿ¨ïc³²n -9´§•Y1¢¶r¥¥K“$Í:Q¡a…Æ÷´?0Êjn– ´ÑäP®QfU—/fÓž¹¤S¤|Wr®½xÓ@9éŸÿ±_®½•GþóæK$@0ô}º‰iÎe„‚X)Š,kׇ]{å5BûïóTwÏÍ>ö‚òi=ÚõqŸ©¾ÕSUo9Ú—º_¯Z¼¸Àÿ.Æ9î4!a´X*åL_-£wI‰er^¥¸¶\-ú¶ïköd°ÙM´åš-UÛBG©ÜZb®ßБkø>W©±›©°¸ZF¤x”ªÁ‹M.¹P¬ÊĺDHyˆ¹<ÔÚù"u–•:KK›ƒQf@¼ FüÀb»\¹¨Ý«DûfáiƒÏüô(—Ø Cå,RäaEšEI­*0*‚JªÖX#Nb.£/ðƒ’Ÿ˜%˜H"8rH$IJ¢¸•H'€—SI Ý!¬ä•üˆÞ -¢¾D˜ä(e:wWcŽYwŸåÜ%žXôY úu#Áv äîÆaL,Ôaô£íh$s$r9îúo.G™Î¡uÈÁTsHóöIäAE!iaØ¥>ĸT £‘ˆê ŧÃî¬sÜa§”Kj¥íÃl´GØž ¸·1z¯H éT¤1ºŽ´¹í4¹&”„ß×pÈMí^móLmïBm줭ÛOÝR þ”Ÿ¹Ò¼!mçY;N´Mð޹Zä?îó³Ë“yY"æed¡óyAYÒæeeaý0÷¿u&ÝPøNÖBaHççpç¾/¶ú“’©÷ÙR3[§é:R¾Ç³t­ø2zK˜®gÑ.ẫéM^ЏZ9=©ÝL×»'ûÝfx¡{ÞóÉrƒðùìû¦ù÷w¢âÍRúYMéÛFFÒ¹»€Yë2¢BJñšfgÖcûçâä½ç‚|#b)›±·‰Žÿs}õi»{~ùôÂbóçïÄÃé\{>öëXN¤©­ÈÃ6DoZô ý°«ÎcÛu˜&·¥ám³U“õŒAË8” ¹1d s@F‘0 #& "’Aä˾?4¨‰‘øÑYcXô†ÃEA# I²Cœ* Ç-è,`,RFÔU@|Èk ¹#¢1 HÄ<Œ\Mg§=°ÒAÑ*x† êIä-„<ò“E#Å>«÷ÜH¶ß)‘šElÁi²è´UxŠôôU~Ší«:=ÃüäŸ&+Ó¢NËS‘ÝXžó g›Ã†‰CM; O³bãT§ú©K] yÐ¥6¥M=CŠË•XaÙU<θ@#âé+Ü ³ø=JÒzÄÎDOå'ËÑÎÙ -5+† -E G§HêgšRæ¢%\Aª™™Ò+® -Y […®Âך°aÅY}š Üú9lŸ7Ga·”³õg“#šU’Xƒ œ¡`pgš L˜ŠÁÁ`¡`0ð(L0L©dJ&㇒OhdBîjbFbâ¸BÏP,X„ŠÅŠC3S±¤5cñ ¿ÂcAdJ³¢eKLeæOVÏåçÿ8¡^=¦>¶>‹ô 7Ù­9‘ÜNô5§ È’Ï -Ä‚pXð-…îÐØc­r¬à*YkÌËiÄQ‚ç˜6´‡øÓça.AÚÆ,dõ15t„ /=”ìÓ‘½ðãŽ0É¿–ì×ÏNòý^Ѩ:ØîÉ/¥`O;{$kZ\×=É*‘vh¦Úi<*”[GU…·doÐ÷ˆ$kX3°²c †(Úž#ÛÚ³½mF6öžm[6¯÷ŠRuä0{Ž4p°Èñ‡tÕp`ÕP?œ~Ï ÜDõ@8Ã(ŠÀ9D{"jàÞ"·¸CÇM"á’"2ÄèžXˆÚØpÛ;wܼ!¾±~$æ÷Äþ€W"¾ xÈá'ƒ·YãˆçöøoÀ‹_<êð«Á»ª¡k;âê=i Ü#Y%©(€PttGàØ“Ñ—€¥O®³?í½Þ‘D¸‡«ºbCŽ Àæ@΀ž¢<’K÷à8Y"puä\°Š&ñ¾{0À9‚uoæÜ 'IpÛ„WBp…¥ ¤ê> ð…(»¾º¹Ÿ.¾½½ùîîúæþúæçÏ>+û«Ÿ¯oÖ_4ß¾”olùæ»Ëûû«»›/Ú†ç¯_½ºü¸™>´)u)X×ö±s!ØÖ8×QÆù CK!ïtÈÿ?ù_¿æºnþÉëüçßùø_ãðí7í¿þ­ÚgÅä{~MkLS¶/|´PûõztÚÏ×+ûScëþ}>ÜÝ®ŸÞ_ßÞ\Þ½n¿`H·ŸïnoŸsú¯êM\Ÿ]ßßÞ]ì.ŸþÂm]üóúùÕÅ÷WOï?n?Åà¯ü«Gýä×<Á!ŸæƒòVÂzŽX@D¹Ž8s½ŒÅ Bž.EeSûä2O´¹8«u§lÀï±³(ûr1Í ¸ZŸº€¤j‰øŽ©|ë{ά9säõhlë}§‰­ö©˜Eß¼±õ¦ ^Ì¢íQÕºÔ!ú¡Ó`ëlG¬™j–:EVh-_öyò¾¬fbçMŠüVO DûŽà×Ŭw-o…5ÊjU” ­5eO2`}L­å¨ÛbÆ Ö±oqsÔø>ôèÍÖq4›‹;}/ÆÆz´ :iJZ:O¢i W£‰ÅÖéÎÒß´óÖwn2ÒB5ÌÛ6ÁwÈâÖX~)Y*tN'×jKqB± -]Ò6´²€Ž)oˆ™+:׳²íj ÉLFœ&_Ùgº#EÉUÛØ)uë¸CÒìBxÐ9øbÇqˆîë1)%Éžñ¸\.»^\€¿Su˜ò¹OŽš½)³ä°`M8§uÅ_Îwì´úËêŽÏ0¸W͹0´mpøÍ³¤3,¼Åpm19Íŵ=kP_ò%’˜Q‘ (­×Ì L÷3TDI¹¼VlMq „ߣÃϸ ð3Á I¾/c[]PÜ9:¹kd1N±ö0e¡-#Ý›B]6ÃÁ46¦ ¦ÃJó¯³{WÞšöQ”‰ÕO9 Ù屋”y?ÇÉ‹õ `QZB¦%Ñmµ`%'0ùÔüw‡mQª—wˆšºÕ$u`Zj¢» Ân -òVÖòÁ浦™TÙÐòÖtŽyž›Îmµ\né-1W/6ƒ®pe¡’zœd€òJ† Õz¼8§A™&2–·\Yu™g¨«³iÐtt¬8mžGwï¯V«ÅlÚÓüÖ´ëyžg›ýÉü÷ȯ^Q^^]Þ_=»À Ô…Óï}sIíÝß¾|}qûS.,_ÞÝþúrSIRûÑÇí“OÔÀðAI>Qä•äù£=7#Õ„TÔ¿®&ˆ7 -L­&.v}òF WÈ]™I -£)©d²ɱÜryLÑT… MZ12,ÅŒhä-®Ú—ÉçTßÈfÓ V©Ú©ÒTf­C!÷“V#ÙÒÕ -¾¼¸å=ËÆæ‘K‘Ï†Ó I&s>Ÿ8JÂKí£kÙÆ»vr$‘h¸V²Ê‹Í úC2–&:Dï”±´”¼Rÿ,' è šçWä --Uižc¨+Í5ÎŒ²Ò4*a:/¥–°]¶3¿4mxžæÁ±6ào³VE®ä¨)+ºÎĉtˆœötò!9*vÎP;ózN¨HY9UJäRNÚÿq_æºveE~•vKà^ó‘„:@B$Y–ÛH–¸¾–¹ôÛóýµ¦}Žå¤-Ëg×]sUýCöÈ -ð68þš3€¬’];¸>ÐYŸXé@çB'U­<ð-²ë jmÜ!Ÿ[‡Pcš€ËuÀ࿯Á>у»àðÈ8¤÷0éˆ`Ímð¨s Ò68&½&bN†7ä¨ábšÓ&ntƒó.Ì6+ 鉶$EôøÌ¢æ·²ovìÿtÔ}ÅÄÜ3§he¤ª `œ×“Ïïwëk g 'º,²s«1kÉ0îï¶—©zÚTÎ^+0¦ÍQëÈ{‡‹ÝÕš¿½þôÍÐæ¥¡L ¸4éf²Dr9ù+ߨÒÖTÁÂŒjÛQ(cjà2ŠW,(£³Î -ÌÝÆ´¬¤:>ë ™3é?»ÍÀ˜¶Î´G­Sïuî¶_ox+{½oîUO©dé]• ¨h( Ò-ä½érÄ«Í× NfH‘Z·«1F=PdZ€7«ÊQ¾¯‚ú‰ò/ŽÆð§ ;`!­/ѳÑ5†Û1.¼ŸËÝgñR -Ýï%, ÍÓœ†jU¤ì.x÷ò •šõ†5¶:*ªëä!hO$P¾iÍÜQq‹`ºò"HÅptVïÈʱ™0lo¤ÿŒãŒ5§d”göåÁ1tŸçÌ5Á}é±¢_=›½<†l°¦I²™t\´†#‹ô ¹}“؆jtðY]<êëy¡àÈÀjåg†Œ&4o㪺ÚÍ—pý§e_yô,PäÝݨÔD_{è¹6;(ÜœŸíÃG*÷þÏâw7ö¬Ðš–w°"õÚ¦Nus¢’‡ÜºÁêÀƒn\GÚúDV$!üe\àúÅ_–ڹ㘸£ÿã=÷ Ð%ö6Ys¦OwAWÔKèë•“Ž‚Bòxƒ¨*\FI½ºG•6Òº×Ù¹Û»Yn#)ÉܽN˜Ú»ÍÀèïu¦=jz­óx·¯«5z';~çCÖXÒñ`¢€*ÊôWM½9ÄèàyDGx9ß§©Ÿe´r¦Rv G*åß±`P`¸,á=ùš²Q -÷uµxgˆ[©;tüT¤\Ö%»#v¾ku ¶šU[<ŽÝ$Áôåc8ÚŠ9LZ -ó{XEv pýqCÊÙ™'N0³Y! ǦMÄ4ÕrÜ£œ Ó¡€Áó ljñxKÀ@ªƒ0x4.BjãÄC¤5 m˜Ú9µH!Ø@tW¡QÔ¾XoÈÛq>th¡»è¢]”s[&Ña-ò®OÝÍioŽàôoñkè9p$ 15bú°Ó¡•)Ci½ìôru\‚ö§n906e}ÆÔ, ì7’%<ˆˆi®écŠ‚ó oLªèp›DU•,Zd$ -™M-z)bÔqØ£ë Ž63¨fi#£àñt’uˆ­¦ÎãH‘Ì)Ö‰‘úƒvnbþæ'~³«µ”ÓÌåŠìiÛ}¶VµMv2Ì4ɼ‚pMN¢}ºV’9¬2jaTq £ÐÉÆ!k~f‘\ôQFv©E\Î?6ÖwQˆU.„ñÖO×`‘2VÒ)‡–ÑÀŧwÞßKM‰»5†RDãù³È -¬­VI ×—rÛËdÄð|öZUŸv 3jÝc­óx±+V£‡’4¶—,yº ¦QPÂň`à»;ê͉›C®ÀÈl)pF¹±éYfæfK  ÉßÎ:üOö/»ÍÀ‚j;Ҵμ—y¸ÙRë߯?¿üéû—Ïß~þåö;ÃîþðüüïÛw¯üÛÛ——÷Ÿ?¾ùñ?oþþþÓû·/ïzÄïo¿ù긿¾ýðñÍŸ?ýòæù_oþüÓ‡—¿|~þùÓ˜ñ{þ©Uoß}ûç?øõó#_üjÇhðÐ …ÀÏä§_]QZ¹ˆ7×x˜ ¯fR¹†r]d)È éðWÐC£5-Ç"hŸTÌhcN“ŽXLTmÊI ð3,'ïi½œpêàwÀ¦% ôzA*,o­ äßÞÇú6kÕ ®èˆÓÍ"˜ÉèœK`\®á6¬…×°ývj½P¯‘õš÷ª:°=ŽjãµwPDÃ'{¦&jWwvX.–ìOd¼ðYb¹ŽãG‘\;k­ÈÚsÌÜQà Yz;kÉ;Yööž+2f®³íqçVk­/îù?‘:ð²^³•ÒÓ,^DJUú¨^Cî †2(„5)ß6«´iÎe¦¸q£"YÊô3aˬg‚—Ú ZAßç9“š¨q@I޶C]¢³ŒÚ jîÝ›s@­žÁâÖ”Íâ–ª"Bn‚=Å ÏΦHÌÒUæ.ÌJ&êåÍD]^% Ã”åf9d舗ÝZž«Qì+…ެH¨ˆG²ò$[[µ¹õàC£_âœ9;sß!臞L–‰­¬j’—££¸éñí^Õ%å™S°£¥f’ÛÙ8í z‘ô˜¯“Ò|ÅÓˆ áHª ,Ò6R›£v¬ “dªësË<6n”Üè/%[IµYŠjö3•:u7 ¦VeQ/=¨¾Q+#•< K þ¢—–ÊÃÞtÝUÕ¼ZÄEÉKʇS›öDQ>“ȰJâ‚n4oÏŠJc¦î+ü‰Ùk-iù´ë.ÈAj¹VC¹áKX—ªÂ2)ê«u¨ ¡–G DÉbe'9B2J]ãs‰¸a€bX¸†È´Ú´™È_ƒ~Ôê™QúR…ˆ˜L¼÷íËÆ|ÀAaˆàQ·¶zº6ˆ™Ú³ªiHÌ€¶ËJÉÁìÈB³ØëÝ8z'¹|]kGæž«f”2Wíµddsùì¹#»¢u¶Ë¸}þ½Öã=×;D/‰¤ 8 (?…;£Ò_¢~Ö‰jŠŒñîûæ°˜Ë3G÷/ôPŽI/#ö’F¹ÌÜQò(Æ”H™òÚŒéÓ¨‚—A•r¦'’.{©™[î§Q•„UáZKú8[›Î-W`l¹Nv†íÓï¥oùõrüõ—D_RkW—¸£Ë%ê¼[·]¢Ê";4ÝÕ% -=úa»D*ßÁåÑ=ü@Õ\]¢Ê°PMÛ% -%SB‡,è…_B½s‰ò~îb%Y2'Šy™Äõ}õˆ+¶-¢Gr•&ø]Þ§Áôrï1¯jÒÙö¸ýrË#~ù–e+Ñ{¿÷ˆ'º|©ªª¶÷Ós½÷ˆºDŽ)\Æy¡÷—µväê×.ÑéëÎZËû=¯ñœíŒÛ·Úk=Þó®pýíõ§oõ‡>åS,Œ`e»£ušž$&.åLæ ÔUNšeGF?B€NŒxƉÑ}¹®µ#sÏ3JUëÛµDŠ•Ëž+2f®³qûü{­Ç{î§üù¿´WIv%! »Q˜ÁÔy²îûo[òDågÙ¯WIœÂ€‘eÉpe¥ügöé÷p&ïMµÃ6<Úź߄ƒà¤ðô¤ÆÉê¨>ÇF?4sX4¬t+<„Ó¦K.‰ÎŽ”o—ÅÏ0°Mre cë3FI…bå -T¦^r:ÆdAÓ5x8{'\–Òæe¨¯ÔÊ\ua†l'0}(‡x+Ì}ÔDMøË±¨Nš @›‹(øÃpw°ph‚…zð;º5cŒ¹®}šL_¤0¨°ž£“Víi÷ pòÝX·ÙD4…ƒƒ•VQs0НĹ{8ØNÃ'‹­‚eȸ}„ÆçåamÆm.ÐYc°+*Ów•…î!?1ðáìðpO'J±bê쑊¢ÆÝ®Ô45Qá Òr&VÄ12@›{¼¿ÃPì&…+WEbO_YQ”ÐDÞ\â£òµ§Üáù:[}Wç¯\Ÿ÷ü/*Ppën*¿éU}šË*ô…Ë¥“-Èg²Àújôi ¨³ÁÕG3É5aËu´‹›º¦­ÔŦšû œè;BÚÝmˆ);6Cšƒ«Ow Þïô ®2Úg„¨´\q¨Q2¡×¨t½Z´M)ÀÕ‘s€D ç‹CŸ°7aʦ¾YwlyR\ï<,~ñ-¡#üšInÐQ¦|И‡£‚òd®çåžÈ>vXÊw¿æ"xrüòðQH#÷4|7ŒM8A‘¶ó®K|‰þ%À«j®!µÒiD;XGlo/ÇÝÏœáåúRî¿'Jlê‰òïH§šÐì:Þ‡#™îý´A!]dK@ô7Ö?¨…T¾â!–Ÿæ¯(FË™Ã0¼çñ·‚¾Ú6¼ôñv@¡•Üy¿Ã˜Zm½sU$öô•]˜:$Ø› ¼ÃòÞ3"¾²ÎVßÕù+×ç=³„í<ó1¼Û¨úó3 -. -ˆ=À"ìâÍW!·à_¤¾Œø0XŽ9™ûúUÖ\‰=seDÕEìÍ…†ç{ÏŒøÊ<Ûý®Î_¹>ïYÀÃ<‹#æ¯é -EWQŽfå,g›c-¾¤ÍB4$˜ìøö~†A7©*UErK_YQÊðÿÍ…æíwÇøÛ‰"Ï•Ý ež_WÌËCS¡>mØûîñˆ7ÀNª_ª hRo MYKögè8÷€‘dŽ…2Ãå±2×+{úÊŠJ»› ŠìŒõÞ3"ßqÚ8[}Wç\¿ïY{Àñ˜H0.î"úW€x€yA endstream endobj 178 0 obj <>stream -H‰´W=Ž¥¹ <ïð'|©ÿp_ÁÀf†Ñ€³œlàÛ»Š”(õëuâ™Áô¼®GñG"‹ä|‰¤§Í6^šÓ“Z Èè/Õñä4å ùë?TÛSk—[®>’k¾T’Æ3Këd ý‘™æëèJõéøÿ˜\€ÛŽm¡,O:/=¹ìý ÿ~ù;üŽòú~¦'ç4J{QåȰ„ð>µšæÀÿCj”³ Ä×oÿ4÷óS&ŽÊÔ'7¯O¢RŸ¦¹¾dL|¨õ¥©@eU|èÐ8qAp|hÁ™O’=,|Zá-@. |ÀÎÒùúÔžðAh’Ÿ:‡Ä”L±«…?DìçìÍΫH± ÎðɯQŸ^Gˆ˜K+vÛµ#Pš¹seŽAÃòä¹_¼?EñŒL›ªl#)®¢nCï—³_ Ù½3òžj³+=µuyU˜KEÍ“Zpªú”†dQÁ#óùØ×Þ‡Þrå©2äÖµ‘mÓO:üC,ioó2¹?¸];rÔVõå—<”ׯÿ¶L£¶”™z¨< ²2!³³%á”Ü•ØhøÓñ¡KoÈËBa -ÕÔ,º7ì"/4ãÝðHƨ–SH”†4™qË•GZ–KUË¢ ´!)«?T1_—É…øÉp-äÂûÐõå¾H­ðªàùÉ ¦ÈžHf0J(/ô’‚/¤ã­Š>)!ûñš¥”Ö.9ÔPkðîh -d[ܤä(\“°ú¶.&T™·ÍØÉåYH…ï¡é[Œ‘F¿[EYýiB“Jèê•UëºJxFñz*5Áщt/¥Y¡ÔLK¨9cbÐm&ox}€½&㟹K½I%ãH“gv‡ ¸PšÄ2¢ÍGðØG¬6péDft þ SœóíàFK\* )7k±|ö“ Ô) -Íu3R(‹¹×'Äer¸ý½6èß¶¹ÑžWp¥ÔúL£ !¸ÇÂèò3³ÊAìdGq–CÈAE¯…º ~؄αN -¦¯¼)Ô‡¹o @z{Ä®¢ ‹ÂYXÊLtp¾x›Ê%¦µà«VÃýk;¤ /¥lA-aj·ÇNFœT:î8­«€ö'™|NÍh^”g›Öî/`¼*s<}X£²È¢”I*Ÿät`à‡uÈá>|OÙ¯mFpku DI¨®Ï¯hy¦ridøÞ=f¾uCÖ'’×v’ë†!…‚F–ÞŠYý` ¨¦ãQ…ç±YàX܈ŸÜ޹p>t½¹/Aæ¾ÐY‘²šxTãÀ…ÊlÏLœ -‹¼×!‹•ý""}À3¯K²¦.› ñ“ùQfê%‡S˜GGW _l¾…®ðÿ=θTŠÝ s§SÍçWVɬ=û=c€Eƒ$I59!£ÙÔTX³G® Û£ë ËæÇJº…‚ÕtèëÒ•VdÇæB¼Ú÷ ÿ·®oqþFƾIĶP:˜Ë:Dçh!÷´QæH˜¼E4&@ë–­¡Ôí:AxÂÔD§ŠÆ/è Ý ÌÀ¾‹Q±j±Ç«µ-,HáÌ9,ޏq2O$ugàØJ¶¦Y<Ö†ÔX'Qp±,𜽳»Mø8¦zï7þ`iuœð“9yûb#h½ãkì!µÓ²ùFDéV_\gµø,Ì+–ÎbÇ›•ëÊÀœ2ójþ“»ÉXîNãÂR®Ð[¼ÙãÙÐ8!²«† ^{Íë$F¢2®Ó,ÿæL3”c -„ý*ûÖà¾b¶e½„µ–=Añ†1˜#ŒFÉ8 àåÚÖí€æÑexyèò’Ê ï… ëömœ^”ƒº´¬úF‘ÖÄ~‹T°xððHm:Î<ƒ83¡ ž^ÅŸ‘ì‘Å˯pVà¶Û´ö5Ñ^3ñ éS©î%j +^÷ÑMÛ?Ø“2ïu¾‰LmMÍ{·_&’¾WŸ§vÜ€xÌJöµ-2tä m£cûô@ PÃÖ/Xð´å·"K0®‡G/$G%K‚˜™Ãiت•6¨'<›§¥£÷i$³{FȬë·d®áÎиëë{-¾õ>xÒ¹‹ñ{+¥Ï¯(v”ÂÄA®Œª\TÓ -ÎÕ&²çtåÔxä³åÒuesçÿB‘Û•)·u‘ÝSJõØ dç±ùvÉ…ÿ[×·8oòGMÛ^+§Ï¯¨zÒ1û¸Ùpñrîø"s_€¿¥€­Ë¼¤’Û½ô²ìí1o¡‘T±E/ƒ Ø´o^…PøzÞãû£õ’› Ò¨›xEø†tP¤¦l›²ª -¼™6ÎcÌbÕ¸›çt³ü‘Kå"·®@–M?(*ŠT~éZ-ÿ²y —o[îø¿u}‹3ê5W¹FâÃlwʆçÙZæå®õny]ؽ套P -ûÏÞ³¥(–ÿùÅKÇi0I×镲»ÖíñµQ÷2rì‰&ªY&ýd `èiW¢g1K¾ª†Í…øÉíZˆ…÷¡ê=Ês—ÿÿ~‰Ý³¿ï˜×4zP õ  -°+ؼ±CÉ6ø×´VÉøægtÜrhIÝö¡ÐueÓ}£ÓÆ¡ö:º€ôI¢ ›q›Û·#·ý?ºÞã BÂðë“ åó+ÊÛå €®=+ýC×î± †¤yÄjãß‘C§ISn],›»§:X,G8·ŒË¢ÿî§¶_[æŠgiyð‡¡¼!&°Â†RØï1Ì~~E1EpdET®œ4A¸bµ4sÒƒD-5Õ[p¸t²l~, Ô6£ -£xì²èÀ.û娖º"r=ï!ž‹üü›ùúÆI - -†Ÿ|-ˆ†¢ÕÕ\lÐʺžXC.6€oÄ—5ëâ—J e˘­ê ˤ n+5ΩanL&,3 ­5vN¬Óت†o®'€eÍmÉAJ -=¬ŽÜamv,| -©íõÖóÛÏ(?k³Y¸n4üv† G9ß5&ªöá‹JRŸ&ÒHí ›ÇXÿ–cô6E†®@–ÍÍc EÑôäD¶t5V› ÙÓÄò-äÂÿÐõç'ÞîR¹kí¹¼–5˜Ú&¤ XвÚðùÌdëÝ|àD#.´!E­#ߊ6² úÁ@Õ"yU†ò¸,nÄOnÇŽ\„ºÞƒü3.‰Ó–³†œ™sÕu€œ¹¨iÃ|ÊN×X"Ý=µ|_áòÓpècqX9ªY÷ò·ÐÊ›¯KW{†Ê¸L.À†g!¶Mo!þø„¤ûXÎÄÖ=ÈX×(ú[­>oA‡Zfáé²uÏt½ùcZ+zÏd«Ç\›ùõçp€T™H0Iq(îÆ ‡‹ -y“Yˆ¨,®5—¦¬ÉÌ;ºY&ýäFqgà-(]@¦µÙ°¹‘åìY/×Þ:‹+ -ÿþÃùR‰ Ê™û…~ -—¶ ¢¨ˆHUe¹ÎÜ;2Qþ}Ÿµgæ}ORªRµÁ~—göìû^{è¶Ÿ›êï¢î¹\÷ ÿ>º½ûìêòîêæúâöÍác˯‡ŸÜÜüxøðÑã¯/î×ç:ÿêâêúüÓ›—oÎo¾;ÿüùÕÝŸno^½|pø=7þÀ?þß>8<û–ß^ñï£WVñ^šÈÏ~[Îc»‹1ضà0ÂÕD¢UuâÎv‹¡®R0–³È„±A,qˆê}d ×BhÙj3ªj+þ±â¦ža&áP }wN¦A9É}HDõHŠ 6¦±gè4¹•šO]Ý ¶3—fNdÕ“¨‡P È®ŽkìléÀ†Tk¶@ážñt½;YÂvèÅÍØwØ÷ijVáfü´zȜ쾮ǜE:c¿[*´*BH«O¦LŠÚWá3~îš•LkJV§é];u+1gk{0ŠÜ’5€à¡ƒ®õª Õiï`†Éf%K“™6Ò­ÿEB2o6-®¦USÜÄÅR4[pi<¼í­Ø-½ © q>Õ4¶²ÄŸ¬;Â\-Š8£âÒ°"j¦-ÀŒ'Ä6°¢[ÓºäìÀ|Í®m ëFd{Ýår†}bm3õ¦NëÔ¦õ”óŽmËô¾Y5µŠé·ô=m’ÄÆ¼ÿbD¡tˆè¼ô%etœÜW®TšH|0çк‰wó¸XŒç=ãn¶(B_¼|Eÿ©‰(êLþÇñœ2["Ö·®P¿ØÔvb‰"ëˆ0¹p˜¼YRÅS¦_4óÜ`ôúõrpò•RÂP -°ibayÄAûÇØíï¦IØÖ†aªÁd4èiº¯o+]Fÿ)F)SÉÉÚ°÷0ü4…h'XÚ'qÖ0¾óð©XíðiÔZÄwß+ÿàeFt1º¨õ™&ìöªòȱmi²8zÖº5 -›!š¡7òKœ¼G/ÓLÐáfôøyF-Òhä%RÀ©¡…±äø¨ç¤¾çh·:Õº2.ÌLz+ýÞ®mµœ¤È«u/N¸ƒ´ñF§ Ͳï - ë/[36Ïo³?¦v÷¼ßÅìÀ|Ì®m`æÚÚ.‡¬l Ôí±ùmnÚ4šà®óóŽeËpÒ.B«,Mm"¼x ì“»jß ¶fæ FC,CÝ¿ÍíÍêûÉ!Z/§R6`¾5¶ÔV TQ¸)À•º?¶¾íÖTha»ÆSÊ;v-ƒ#‚f¥ï´ó¾85ñj V[Ö6²¢ÅС ÙíÊX}zZ];9¤ ¥y»‰YÀzÌnm`Ö ó‡%†$4íí©ù={ÒÐgÙ¬X2ìÅ!Õ¡&òÌc³wEôh³ò#MÛªÑ÷ÔL$¦@Üñ™9cûâ:E'ì¶U.90_³k4¸¶É bíùäµ \%§NëÔ¦õ’sß¶etS÷ↆ=Txl%è5kJÓléQ ƒç@{}íu.ÇlO¡ž€°s¹ŸÈYÀzmNÛ ÖÑY79NœËïÍïËÁ4‡FëÌfÇrß°·&´Ÿ„×Á¼ª= ã1e7”dÊNõèPÁ(SŠÌ jÓ·ÕÖw@â;í”]hé2Yz´ë=³eÔ*„"·äxí§ý䵌Zè®ø’ô®ÿÓVñôøòxqw|~Î…±Kü¶÷h_ß -– ›Ûó¯o?__#ÿÇŸÞ«Ä<ûÙÕ équüéüËã›_;ýäøÝÝ9šÿñöæúýöÍýyyÿ,›D,!>=^üâ•«ç>^}ÿüñ«6>½y½l¤ÑËþíÕó»¦l÷Þ£òÊ×ÇÛËãõÝî–ô>]ôãâ·€>¹¹ÜïÜ‹åçüîÑãxþùõó)b|rüþêz">üâêçãƒÆÛ¯ÊÈOúÑX}Z'Å©šc+µÿ>{=wÕ¹¦Â Ežùß³7öù¿þð5ò_þöwwx>n>5ÒfO-Á£Äï?wxrŠnj=ÙïÿöÖíëÿº¢¦ƒ?¹¸ü×Õõ÷#‚O—wo9÷Õ½EâðûòËD`„2YW´Y4ŒMƒåÖ‚þ˜z¢Ï="jSƒ¼B -{ÊÓE/+?KʶêÂ@ªær2 4×FïÐØTC©ú›'HÌÍÎêm‡Ä'yô:­4Ÿuñ,RZî ®®#:AC¡ŸZÈØéÄ@™P\;ˆ‹e†Ãvi`oÅNeé 0;4€&ã ïת¦¬W½ö¡8·=‘€XÓ&í–eÒiÂSòF‘¼Ç5èd³³ñêòΆ1;NX7ëa8AÛ-;Dm-Š”Ðò•´ìMÅ‹1õd‹H*òòr»™›Í¤€sl]ä]çrªI}œI©Ìȱ/´Ê¼èuª`‡TmsaF2Ïe#I‹…Èj2²ZÇ1ï"lUƒ»é(JÅîS£_7µëøb¸&U²¼h€ø‹¿¥I:¾/ó¦—µx¹B))&a,ß4Z7m…Êë ÝOÒeD4£Ï7EÉ >Ï›0%Œ0Ô‡íª0P—sæ -]Ô1ȼŸ'““j+—Ü‘‚-rd‰©ÏÂéž¹C1°çøÆ_ÒÒ’BÊhïÒU,&ª^ð¡ÛžªÅÈ<Ä‚@ ƒíT+Ë6KDz”­ó^¶3M4ŤgíBB13N2n±ÆºTFćtL,R¬ ÷и͖¼/³Ÿ®‹‰­”ŒªVQ=EGh‰^¸K›®Ñ†–©³(ЉP%\[Á1€ÐJ ûµèíTÅU&[iÙÕˆš};­xö¦mÞF˜ª\ ùÊËQµ;mN2¢áIûÃŒ]pâlä«Þ -Cå«â"„±ó3°®…XÙ0O·‘ ê`öíF¤©¾6þ$ j‹[ Qù ºMv£Þ0°º¡rgç“ ìviØ…GG~xy'&fNó–YAŽày¥„ÙáÄóª<¤ªovÆy9^í Þa‡kEtF<q]Œ/&–è/s“=ôí;ô8 ÝJ=l\NZFum©Y - -@W®óÍ­Šì5 Ãf§¢sòÙY a y&V߀ËIæ£ -l;…K-/CVÏEN†ý1!ÃýYV38!ôQÜÊ¥s]&‰ã8 ½JŽ QóºÎÓ÷ß6(9©Z%Æ—l ŠJÚ*VS›cÒž:È 1«÷šq_ìЂúßg¼zR}¾J*¦”ÏÊQ:–¼3÷D~moã®r›,¦þ4–?²wrt†—üž777¾¤JÒê¤Ë ]êÇ.‰lÚ¨ÊÔG…T9 ñêE±Æp°2by|h.HU&wÁ¬²ú7K <×Êi§ùYÊ9rwÓzú`îËæÕÑ¢„î%ž£ô÷*‹Šù£Ž÷úMnÇ6»6¥Í#7!`êq{·ÍòÌ×Y²l•ÛÝG`o~Ã:§Ór@ù²÷JJItRW¸'År¡Y.â.’hÅnüs{å̆› ö%3#=ÑEZÄ:ÊÎU-êàî4™š†ý¸1h©#ƒÂU=´€þmßê'®{cŒÖ¾²Ø™€h-G h/ Ú-ál«ß4 ·ÑîцG•-Þ ÐÙŸœF\0?ÞkÅyÚ3{ˆŽÈèy¨ÇØô.⛈â;í阮ì“æˆiÖ]¢úM½F|C[|€¿¥B>C6ýR8hø“Õ -Àñ'V²‰„TWãâ@°ó>®íULATKo/™.EWƒMµà`.VTû…WYß´C Ì›˜J¬>÷pù$@”Îi™¹tãZ)­DdOa@Nƒ.Q¯A‹iÂ|ŠÊŽSg¤£î§ä«×¿Ýíê8‚‹®ièŸ, -Œ´ïíR ø²]u{ã<º4÷ßö È=ëÝêÆU (DÌ|˜Ïó~§(Í´žÁ\:JîuŠÌpÚùå#æsÔÜ·ýÓ» 2D‡ŠN¶rX>'oTúÆÜE5[+fó¡rlW©¨Í6EÚ|u§­Ãl%® ;Ï SÀˆnP9±»%\êd‘W±¢šŠ΃ËH*nÖ¦äœ]{ €1²}S`ehD°7«Ñ‰ò*µÉ{Ù¤/#öÄç»O¬jÍ0+{oÅ7¤p ×þiî‹2 XštH*˜¬ -¤KòßHÜɪÐฉœr² -1éµ®1ò€@ Ùñ¨Øú(€#(Q_aÒÓΙߴ‚ȆSÓÏêzGÎR.ˆßj©¨­Àа/Q•;1ö>M|UÙRüûrUíÉXóivÍx&ð*{¥&xÖ¢s’í€ÀøfÒ`½6ršŸÕhÎ|&*ÌùÛª0kLml´ôE(qHµ¢öÌÙ* ->3Èæ"HÆ•¥Þ¨M Ó´¨•Cý¦lÜláº}€ãÀ–— ëߨÕó,&)—vÒ§Å6ióíÀ9ÖQì<›ŠP’.IÏ#D;ž/wÀlÂÔ[TZ¨ÏÄón¢%/}9Y’šÝÇ ×#ãn>%¦Jgëé÷93NË\òÆ´Gç(U8eþhëÞI|„÷y]Vá˜"4{Øä6Úˆ?ƒ;Ú…®fÓ‚|€jìŒózb8:ů]”ÍÇuѽ©L ÈÈ”“vV7˜O}|têbù,vq'dþ™6åÀ#î(É‹GM„ ÀÔ÷î4yÃî~¹˜6|𘴎lM²¡lv)"°)Eš2 rwö<ªoÖH_K`]À‡»X8SÞ²ó/Ø>1=¨©n¤7ˆ¡¼X§n -ÿiåx”Ze Ô\ã™ÊgL+ïðW† é¿’+:㎰gÔc§Ô(Á©K ÿ¹<ìAkæ·þÏu™ìZV\AôWî,²oìP_`ËST«R©ð÷^;ó¼B`ßx™y²Ù;U)Õ«H$‰2@lõ}´Û')le“.·ƒ°ÊðÁ’-œ~ï·I…p% ×<&w¤Kƒzü„¨½(Š“à”(Ž -e,EÞ¦J(±µfÜ©_Y9õ˜Cîö;<ü¨A -*óÄ%ùçíf¨Z°ãÊ·w‹66]îÎÓP=5<£|gy xÜ— -ü2²AÑîÂe@V´¹ÛûuºÃa|­ûe5Ín>ÊjÜyzkÿçYzv‰¥uçùÞˆ3Èó—^Tòu€è{ñ¤ -úŽ"!9ƒÁˆÌær?ŠL¨Ì¬­=CNÒÍ` ~'‘«,q €¡‹lŽŠwRÇð?DêA­‹Èxø×€©¿Ú÷_>£A›OÅ¡A|‰ ì‚.Àk×yc×Åh®,/ä ´\ÃSnNŠàøRÌ—ÇW'¶ ŒBÞO)Ï®t1dÂøHß.yâF_O8qÌL+Ííê…Ú4°ÕøšEŸY Å6hÃ" f™îý[- P÷º³Jh@‘,r/:jÓÍ!NŸÌu@&È©÷çdkê‰(J…*ª£üf¥dy<_Ðnû„0V Pqˀ󒀪h¨å:Ð"·¦ªñ(3!ÀB…zÍV6¦%ùN¶”‚œ©1³ž­òOŽæ§cuþö_ýçw•Ëëÿ…WxÓ¼^ò£T~¡Eø‡Uû ¨YeÀ24}MSä×Ï¿h¿[Œ|ýülj>¨‡½ÑJLü|ÁDÙ™vYD'@Ì[ÐCBÖýyST36HâågôÒꊯ¨bhÝ~âkVÎr£‰¥oÆì%‚§x‡Ð( -¦E>”Õ¨2Ù<דðtE!ƒw¾Fî¤ðu¤zL¹ò– þ6[œ¶Ì8Öv™@®”–vOº¦(ì$‡|ß#ÄCÅ…>Þ¦I5ŠšéØð±5Ÿ?´v¾&Poâ‚ ‹4§kÔf @ËÑÍæû»G)D; Ô–ª„WNÓQ”óë²êM+æòh–²-o=ý’ Ô‹¾ÉÝ>evù“¥{ͦo?ëõm&9Ýc³øÑ -yWaA€ZC¿×U³¥J+n¿xLkÅL˜L¨¤Ô¥ÆEßY©xXu´Ôx ðzz{B)n£}UÕi\/¥iÙdÔ.y2þÕ¬Zup”R?êo~H­˜½‡DP>n¯êQ!gÓ.¯™ß×5F%gµÇÉ´¶Š¯’€ûìs²9Ãj«=á<¼†dèdU†H®Þ}æƒ.(^ÊVÒZê ì0‘PU.×8jPƒ?&°+r‰-kÔ4_ˆ‚é¦ -5BùNkê}ö­ý˜9-.«f@NÔ°Ÿ1 {CŠu[£+ù 4ÌÕàìaÈprEìÚmgÃJÛÙ£¹Îú¬Fui¯|é ¿AН‘ßÅ”(˜ûÊ¿·;ÙjÓž€uëJû­Ø#@\aö(˜óÏÓà©ë–òx`z^Q±kÛ×è# ëê:³àv³ÖM,9¾ÕÅ»œDÁy¨ƒ‘B)ôª ŽàܾÏK»ËÛlìJx#yÎq–Yž.r'ò³fjP¿åc Ìâoõk ìÀ¹imˆvßN5vhû¶àV–Üâow½527µ(F³0âZ_X~ø5›†³‚¡¢–KV]\R:¾ -ð×E6*u¤ú|f5µ¢°aÅã ô1-£Ú Î?y>|Zåã‰iùÚrÄ^U£šâd{)úô8{0£ê’†§`w‘cÌà—&óˆŸGTUWlìí(n;5Ã}îмt»#T‘¯¢&¾}IphgQ’-~#UµÔ>ñ8Âþ©»ºka´4OPðK­Cµ¿uÛ-ÖÁØzáz¥óYŠ~6œ nx ‘Ÿ%X'À;©c‹"Ü - ?,ÅžËQT!ògIf°Ï7’³i[pº@/^|Á»8ìþÅü}”zj†‡š(ô -õRS»5%~‚®F‚mÅz®1ÓnUÅXÒ–ú+ÃŒ¢øfÒ. åÝ1<¾v‚ëQÛ¾·£Ü3‹ŽM¸Ó†w xW×>JІc“¼#± Ö)߬[ñÝ ã7nå(f¡3…£˜[ù iÎñ׉)TSh'RØê`)»‘æ~ÒLŽi¤¢OVs{#UMl> [EUw#E„r}nkt×’C•5âv'üýÚ¹ŸwDGæk³Íy:«nOÆ@­ßù¼jÓÛh–rÁ…±Ú;ºMš€ü´ôTÖÚ8™’]2f>'yá Ö*úL%†•\{!€ÑãrVëŒ2Ã0­Ëº X²Â{y¦y磴7»Í^gØŒ'hÄU7‡UkCú¢Ö¶&\_WdzfZ=ס†,u~-‰™B,ƒ²<œ§*µˆ©ù v³FÞY£S Lsöˆˆ³MLØ@å» 3ätÇy4ÀÅ} j”í+Ãl¯Åvé—†šXÛ³vJ-áp%îIm¨Uä„GŽƒÅ¬t,R\Ïå… Ï!“.7­ š[öjœ“Q62Ÿ–àœ×µE¨r7>Zšû§=€¿ÖÕùmTuèɨ«.[,CBq½f{ó1ÅÏá,,&•Ï"kN—Yh+ÖiÈ箩29“g×íF5·Õ Ÿ' 6"ñ¡>ÓŠºhÍ£ètèU¬ãb\#‚@L“­£ =LdaÔæúx"\‡ ‚@VbŽ -!Æ-â<KýÁÉgìq…K@•x覇^áêqM¥ÕðöêÆ¦‚)a¦ÄU@ë¶d¦õL[.b9ÿt¦ùðlòÙ^Ø$CJ÷öåÄkÐÁ¤ûeGÂ&=Æ›~7yAYt®IGÁ< "Ëý·^ïQÇ”=£êÉBTĨb¬ ÝÇ”¤&Z’j)§‹“è­G€½‰/¸ÕZ)%¨×ñ´Ð<Ø -ŠdI8— ² qš’Ý¥ž¡ÚŠˆ6#l³šÉÍ{„ìÞ¶à¯å!4ßz”è…u­í[©Ã¡Ԯݮʲ¾è.,¿sX5ÞnjŽŸÎCã ²Mõ‡ª©Ä¤èuTç¼LzÀEʘ|øx"_úm§+Öžô—fõRŸCñ¼^ -¥Ž»À4OÕì- y@{úE÷LÇb®— -ºG¥³uÞ™KÕÒea³|òÍ zæmo¬·=²-šÝ'7TkW½¤ݵÃ1]¡]›\§«™Ö’Ì å­›¥ð¦R¢±¸@£—SŒ,ORÎ1 ó-$ß¼æÕ˜6Ë•UÅ”ù >¢J½µcÎnëÅ%šÚ‘½U¶9>Fº" AAF(úá‘‹¡ ìwËÝ»ŠÇÓEÙϵèÇû¹('¡;Fe=Œ€ MÍSâ w':aµ[×½ïLm‰MÁxF0ýÇ›C¿¢¦l·`élÁ9#ªPp[Mi¼2çUSóu&qtŸ §ä”•YÔ£7ð±p iJû TÎ!¸jZÓð÷ÈÿY/—^;Ž* -ÿ•3 ‘€z?†à ”BBxve#E‚Ø -ö ÿžõ­]Ýç†À̉”ÜZ§«»{¯¹`¯kâªý™èT¤©^jÔß/|÷—ôöTA'€åÅŒ©Ï²•]ÇãöÎ]áàÅa·†÷µåyBöëĽYÙ*xú倜nÈ–Ü¥jÍÒD 8P ê:ª~JÛÔÐ}Ãp‘¿´µê=iËN¾šälÔîW ¾¨Øãý­á_#Èf•Ù"X]‹ÜªÚ@´Þ–‹FUÜœÉìÊþ+Ä8Íêzå¢à9ŸÕÕ™ú¸g àÆæ9†Nž’’êyg„€Üßxâ^¢@ض’|è8«ˆçÊ-* sõ5Kßí‡æg6eô\!5Ø›yN ãU: ùíuo|BEÁ·ˆØ#2ÛG1ô:u’lË8i)úx·‰ŠÅSð»®±´k–8~Ð÷"\޲Ÿ˜DÌpÅì«Quš¯ÞkFbG­3*sÈá7£"T•mYµeÄELƒôºós&'©ŽílÙ ëq;©véî¿kƒþk}ó!ÒËã¼]G¢ ‘© -Ô¶þºµ~uˆˆ¥Âçh]¡UD¯M”#^ ÅõQ§¬WLØqÌ;æ`&±n¶q+°Dsæç´I !éab (Pñ51QŠ’ÕÀžcï³ö±Øù( -OQÄ -aPcل͸Þ.@ ½h°Õõ”…×ÔtŠo óäļ gœv¢t9$æÂs¬04÷SÌ/b¾©µ6ŠøV{=í€:U8ò½å¢ -í¹:6ê „wS%KxŸOmŒÓ¤_E¹™ÃÝö}úµ¢5©ºÂ%†¿Ò+IþÞ:iü -C,ì -IŸGŒ‹¼Æú™-¨s,å<5)Ù´ÆÇfL3ÓTR^ƒ »¾ÕXºÖ¸×à²Å8[ʦ'gÊGÐbu¶«Œâ‡Ä°LŠhÇÁÀ;Ú»æãŠl”d^‚°lÉ&À¸Û“>±,± í0{Üé M€I~`*éØ%7×Òpå‹UµÔÔêíÓ¯êlí½±T=.¼†ØKÂ)zñª~/0$ù>|îÌ Ü# ÝÓZ÷SÜ -` 0^MÛ:'ƒ£›¼¿ec¨Ãgh!áO@Ú)ÐÒñ¹=¿ Î\F܆~ƒ÷[]-J™Ð!ùL l@ÿ†*¯tªŠPoÞÛ¬ Þ§xá ÖšÏc™T+ØX?Ü$0{ç:‹ds-$µcµÒ²²Ò&A?c&N„¦½Ï_ÈôÒçéân1iF.b#$æX~>¼Þ{P–.:ï_x£7_Ðx}ý×/ô¢ÿóžüøíï?|øçã«ß}ûçwŸ>½ÿñ‡—oÿýò—÷ß¿ûôþ»Mˆ·üïçþôîû^Þ|øøÓˇ¼üá»ï?ýñÇŸ?þì»ûñÕ¯oÿ¦¿>³Ï~×7þ¯o¤IQ’nZZ1ôG’1-%°¾]²Y»)k<Þ¾Ó¬ôÈü¨ßþßÉnu¥Ä‘õ_Mu3&4á9àÇ¢;ñ‰úšÆ»éÅ'_q1b aªªAý‹D„2tª)ÉÖQá†U‹ -Ƶ¥í(¹õ]TQ’,ÊÞ\Ðh*Õô¼åLÅ[`›t¡1KÅeÊõx¬øÉ¸Ö±ŸsÔœÂZ×o¼wÊÞiÜ%¬Œ-Y k0lÃmûžBäjâ"¥V/…Qý6D’ß!Uz ,°üÛmú¿r-’WÆæO¥/ó”û×,ÜHÀnO€Ø´°N²k, -ÅK%D¶Õ¢xŠü#@>âÅmÄ 5Q“Ä ^ )Ž.+V?2ª_;ÂÀ …‘n5£8ôu´Vd5{7P¢á!÷|¦ÍpMÎn¤× -ÎLxÕõèZpãź¤1¦q…ã€ÜKgóe0ïÀ–fˆçZ¤ÀŠ©¸‰5¼‡ÃÈâ5Õˆ?Ö‰R%ïöÎ0_i¯¦Ç*’™÷Î,ÏR*Ñ -cE-©ò¥Q$¶ßtÏŒ‡—Œyj9jÇ_{\¢µsb–»‰¸¶(øä´J®½\“¥zQÏ¢Ò×*€›î…À8KXÉGmTQd^Ü{Ꭻéõˆ;î–žô­úźÕPPs’­9tUÌcµ›R¥j—9éÅRîÿp]&I¶+ÝJm@fÑ7ã¿ÿþ§:2³ž4ª‚›Ñã8Áëi³iß®©cåÝðCªðQÛo®eÈSšÑ…»}K \Š&7nW9šËé$Ì‘¡B7Š\ߨòMÏ©“ÖrˉiëŽ\Ú·PÈïèG»9 TêÐRáQ=z«îÊb„-ÛÕ¶N&?ºžr(Ïe«'Lúªý[6-r‚§o»MÌ“:Ê 0}5s6%7½dîÒhv‘ð¨[•W¶œãY<¹×ÞÊ# â…Ú¹OG†p~¶uYß“jJgœQ?:Jãb“œKIrÓ±¾hØûQ:{,S¶ìù¯eàwG~•ñ”cn5…ð'È;‰mj†t2”ŽO#’ñ®–'©‚G‹ô;!ˆš³îU´PkÔèß™á(&|wL"w³4 -€{ ¶Ð|Wì4p•]%7­ª4ì9K¬hÐa¨[gF0O¯5Á3|ò*z¥_£¥>j|ÁAÎRKyFžæM¥vzÛ7l¡J_VǪý¡nÎßÔ«ý!G}"¤#{‡´MO&tj¨ •lG‹–5Ñ íµËñ“È»³\#‰ÿ•f?ª¸„ú³9ƒ³ŸFôè²!Üð•ÃdoŽè»—¾¦2Þ>,Ñ»d<³$¾}<œqBÒÕ†³´#ê®AYi#ßöÛàÇ èXêž³ p‹asÁcF@Á°õòúˆ` ®!1¥áAyÀ?·Ö¤/–tGÚv³FK+'Õ¨dÊ)Àãþ´AÑÖŒèl )|!¸ˆcÙ¯yÈrE½ß -{®»ã“»ÔžÞ@i—Ž>³QNÌŽ`D¨f}R¿É{¾&¥¨Üxä!IªÊ@Êsþ0(µ»³Þ¨C+Íç×QÖ›™Æü¦ã¶ßôE¦´íAªP£îš²Ç»Ý®½cÉ’ß±{…uüÙ,ô‘+–”]©ÿR)jl¤B²Oð€-Ñ–³ÚCYQ’ñÔ6êØçò*éc”èhw=Â]Áåm© ¼=W¢ †=ÕŸŒ~h×°ßæ0n‚f­$`†@ø7·¼cQ–ž(þ—’ú¤i3 h|³•2$%x¨ Y¾Åþ;ïûK¥Á¡z©ýÞ Vy -Y!¸37ø8¹…oß!h¨3ìYc 9Õʆ¯f¯ïZô‡i‘jMÂ|c ^Ìõ¢€׿ûíé}€}‚ѧ‹?âÑÄèºýa!2Ü ½m+(¤?÷¢ÈQ$ ]ïgGâÖ?/[1ÕævÉ*HåÄŸ.“ L5)óö¸ÌÐÓêi³ «üW ~;ðõ¢@¥zJÚâL{Rì±Ë~×,F5}‘=íÛîcRМ¦²5 C5á„@›?CÁUÑ¢ñ×rh âoÙ¦c`‰]GQÖ»¢«¹ìQ ç¥3|œ“mØÂjDm„u8L+ºÑ-_5—ìŠÈ»‡ÍÀ°<åî<µ7d4ÍHeg2³wg 5DÄgÓt×Óí>ßÉ!Š}w¥Ë­j¿ÛJ3n¦Nßï!þ‡»V²ýÙô3QKìŠýÖrרHµß³l£TE*Q¨>@\£âuÓ혋ŠÃL4išAYk•€ Ž ²-Îe‹C”ËŠz;¤S@÷/m΢Ɵ ss”êê%œ®r„©¢@QUUi«[tè(óî×>$²»;¢$€…Ñ^Õ+™ÐG]ò‰y»4% dX×»ÜÁÔ¡!è,¹êÞõ< -A|ž­™ÂÁ“À”¦±ØAŒ] =A˜‡ Ô)oÕM565ïX‰n®OûÔrw<· -©Ûmά¡9Ë;d¹r{r¨e{bð,ÎnÒÔÉD’ãê쉿ñ ¼ þæÕR -P‰š›«„}jœ(ág ¥¸SÑ"lñŠÆN#–7ã„¿—,ÞõŸ³W^?Jü³fþ´î3y„1û³ß,ÏëÎ}þé=W®Zò©â]xÁΕœ­§0â²õIÍÝ7’¶Î}/ÛRñ™pŧq*ãôp´."óÛÔ±/Á‚@Nó¤–PÔs®²ƒKX~î°o ‚=Õé¹Úö†²9d÷á¦-Ò¸ÇákÅ÷êì俍 g~ÝU‡ó¦Ž&Vc™óbɯššTÇ6$Åò#¢. È’Š{Ÿ¦tøŠÏÒr©xuY O»ãÆ÷uÒ ÉrîÃn>¹™ºÒEÉÉÔE–G¥\å ôN  ¾'šÚ ¬ôAC˜kÞø$Ô€6'æ÷©Z=ŒCº¶äëô&íuy°‡ptØ/<¼{uÞ$¡©×ÕÒ"þ>Db¹Æ˜¹Xóy”$fÓò !q"è#¡Ò•Ô(Yý¶œžÞóún+œ€'¾B61…£ Ì–ÓÅ·lÌø*´QlÎî:ú=óIG}«f©ibY;%_G›nÆ¢Õ“0<Ö·¾@æã(ÿF»ÔˆbiYk§$u¡·{ª‹,îíuuÎÓâ£~oÚãfË›Lá°ôÞU s'¶mÅW´¤ø -5pÓ1g|q¾ÑŒò¥ÑÖŸã8[’^¯Õ€ #LÐG³%ðÔÉù2¸±zÚ‘Nnöžè^›å}fŠ’ÓÞÑ'ÓC<å„ÊÆA‡›qÉæ@§Äï­ÿ. --¡s®¤m*(vùΚ"ݹöuX¤4~R#!ꃫjfKÂάÊE8‘ÿétòÓ1J"`B©éh/gõS¿e£Rˆ×¡³åW½ïp„ÓÑêGÿN‚eÔÛÄNQ _ÅÈŠJ8ážD앨‡<^Û™½zôlÚ”Zª¢c¥þCv™ìÚqAôWîR2l¨æÁ^I_`À¶’‚Zèï'²ªeCÉÊÛÕ]Cfä Kž§+Ø6ɨ`§‰)™.1«;§%ž%(™"¸i~M³âzèí|­ä2éàÝ…u]‹»¨V‡v"<‰ï »ûFF0aÐ éWBäÜW8¤n˜‘*¦¼¹“Æ?¬{¥# -êdr”f¢$9-J7áo"yDùª‘—gfIôZE+©êw‘Ý1Ÿ8y/c*‡¿‰ òÒTè'è~lBrG&o¦:Ð˹A™ §9›´3a^®-Z…Ý.1IÞ­<½—¨3Þ¥î¼PAJ,…HïÕ«:Fi„بÌ>+ZšyJQËŠ"Ñ,ý܉¨Y7GæM‚F¸ŒcáP `O=>øg„à-¥rm[•¾fûlËB®cx¤­[8ŠE0ùâõõÝW·k°˜‚ºoØX9<­DW"^¹wbù´’A—âÝòr@×3Æ»/ác¥Ø¹ß¸Ônuöæ(:ƒì)Ö܈ެ[èx0]39ªœ¨ß¬–@ -×ìóô ]¿±Ñã 8«¿}V,a>6«=sé+!ÿÝ„†Yj1÷y7Eäh²ï&‘RœG" ¼îrð˜a/H wf^­¼+1é9#ÚÚhzPÈ -t¦ë &Ž÷12qvþ„HmNçô\Y%3‰šˆ]éû´HWmáy¬ÑÚu gqÇRÇÝ÷=àéℬ}6>+¼R)ª ç"ºkF^XŠò%įҦq™ì-Åy6ðñ›9«yN/ñLœ3¨ÎJ‘ºŒKÎw3» ¿Wð¥Å—èÂ:#)¹™î§ÔÊÊ“^êSÌÄÛtZÌËcÉ`â -œtQIB cŸt&G))¶¶D•qãé}A¯Ø*m†—Z"lbê ›GÆÖJ»ùÎSF)þÝÕï”9„ 91U—Û’6aú ¸yª«Û¤mo‘f‰+/À¦žø½Uçe\2¡h'ùK b£É*Æ”9=.C»ÑØLÆø¨×Pr*Myi¸t7~¢3Òt$˜Ñ¶ºiTe•jsIåºLa«ÐƒÆR’yû *Ô6aµ§…Yµ‹r3ãw”7•â’õ›lÊ7^¥¿©÷»)©‹Ž›«É5V“â!ß‘9¤ãh°©á„ -ì” ]*0!9`KC`cßx¢\: T¨qÌ”V³BSÄ䮾J Ìüt ÕôÂSh+¸dé©JÞ1‚ þ„o‡Eþòoþø—¼>èO]³îSEʨkƒþÓkûÐ)H‡LX×?Ô Û̯Ÿ?2KãO¾~þÃ(·¨zÓ‹jmâJUU”i4ÒE% —–Ÿ@ìN[iµJŒb¥z^®$¬öÎ…Ö]ч^"Ó!êFCîÎÒáëáY -¾A·tPVél×xDïÛ ]€±2Æc³†<Ù –ü̪MYO°®Àd›{V,8V¬ëÍGõçB¸$€[¹¥JÿH ÕÚäøëàÏÞa!5ËnxF¶`ãÇTÙ*^ä%]*Û€AÔž©&EJ¾…P‚ï(Wt Vd–`vB¶pá;€çùx¦5Úƒ‚«J®4³µó5¥ãzÍD0K]ZÃme"Ðq@›]{ÒY¡DÇŽCë©´Ó5Ã#jëUðR«Ù^/îSwE^,vº}4`1ÍiÚPvlš[_ÂvĘ«4ÕŒ7ޝlS¬¯©H›`øyªñ:k›”MÙqä…Grò[ªa¢ÿjì£=T'E‰{¤~§vÓ- †¸ )¹•¿i Òkj§t÷HLNT–£†«ÑœÁ…ÜšÂ8Çèrºc1TXÈ×Ábt,É${á dX=B2èÚ”ÇûÇ -ˆSL¶²qµ¨ŽÄß«IVXyÓÊÄÛ.£· §*\ò{@aa§<ÚÎJš€<€‘ºç; o‰5ÕšŒÀ«Æ6' ±ÎyøwÖs¸r­…€Ùñ^‹1>j¢çl.ÎZÚš~“¿‘´úý:L;À$•b­®\“2×È­÷éšãgôŽDJwù§¥”¾.Úå¡KjEã•‚|¸ÉÞBů“8ŠI> qb9ÏÙyöoç¨Ã×xg)—T§ºkê¬÷BxÇJ¨¢ÇŽþÙŸ."d‡5©OàØfUÓÕ>­ùz§]¬îÞåx¾ãÒQ¬MŒßi/K´ãxÇ -?s$~Õ¥¡Ð×#XD_†N¿ávvvº·W²K¶í0buJJËDµ¥¸x|ìzÄã¸jDéÝM©Ks.ËêĘ-اœ9tžT  ¸FÆ|Ø$+¤³©”÷y¥W—ïÈÐ/¨3_á äãû•‘磅 ÔÖ%¤©$Ûõ4iÁѱž‚ŠMôv­k:H{OVQÒ©Û+mÖòÒeèCNœŽííôÈ~2C&tÓ¥”‰7ó£éªE>lšf´-õ²"o Ì\"ЦÝÁªZzŸ¶[‰«v÷È€¶ÇmÓ ëœ?§×½¿iŸÃ¯NcÚñ¥FÏ̸PT¨lPÌMlÀ[r2ÂLUq¯ó]´L^­;“ãååt1Õ†ßÿØ>@üáÇ/_?|þôõóo¿~üòÇëï -}÷7bSS«ß¿~ø××/ŸýÏ뻟~úñÓ§ßùço_?òì÷¯¿êÉèãá‡ÓÞ96¦OV3¡‚]¦$‚hŸ6yÀÅ´tºý0/*¦K‘ "+z®1mÔxBùâ°¬ ê† ð±R†á°¡tp舴…ýp"ÏcÊ'g·]†­>£k˜®œ:/ª ÷Ú R°*ØìÌaèþÑmHæ‘´Þõ †ó—èäVYW­=ùDfõ’ÿg"M ä5¾<òšÁjÀΘ3¾XÕÎÄ¡#ÒSÕ€(9)$Úc’·3K;_xÝl¢WáU ív‹›¦Ö†éíñ£í&Á·”‹Ÿ*… aw&2å77Ã4ðýNùëÒ{noÓf4VGiAVÜ“ŽTNná"¼±†ò:·>¾µÑÁM<ç‘NQû&ÎS–MÓçínUKÀ¤»>´Çº žÕïfjÙñÄmZ6•Öþz•TøÀ1Î×Q‡¥:™˜ývM&§¶èSxSåµ#š«>ùZp¡[ç]”doÇc -$¢wd§nîÖÇZ­¸°š2@ÒqîLÁ®¾D0´°ÀhñïPã9B¯ÔKÖ3KäãY;QÖêtOOh#³ÀVó“ÅâÞ8ë~ìBFݘ™îÎsÐT'é’+ïLF¨õ؈œ³iÜMÇ’e£ªìÁð·1âŸòþä@¯J+«-òc¶w4ù/ëe’d;¬[Á­Ôì{rìýïÉ™‡Ò}?ÂSª€+R"œÆ$—Oç#»é{dTä]-PXS¡*Ý÷w.’±œû›E-k†j]Å–÷j¡ÿ}¢à ‘ å%1©&‰g<ï>öbŒÁü>ñ•ilT'µGóÄV "¢Y€@|ûpÔú\-Tº¨o0uòiùè~µ4ÄE#cQÔaþöª!s÷]~ª³Hbä‹(Ú’KMpÖ‚ññÉîEo5ûó.Ëù¡b¥r6ÂPïù¿­ j`QÙV››­Ûò?WýK¾üˆú—TgS%7GË/Û -Ô¢üøÓ¨¸/q—½¢ë÷T½†~˜M°úbz`~¶ïÍÑý©ž£Þůø5#‰s^1n­a÷!èÆAUÚóoCϪÙ Ô>Ô1y®<»<Æu%$XÕ“è7ŽÊÿV~‹?òÄ|fö˜õý£÷õéQ¯†åú)í¬ÍrJ„„°€L«¯f¡Ê õ˜gÖ \É]s‡ÅaXô3&&# "øzš 3VÇšˆÒqÕ¨í·j ¯¾¿J€&Â5”"¸mâ¹ûô³BµmêÛ®‹v - 9Þ©`ðªZ5„ò¹¯yª( •~¦Ç¯WiR!Xç©B·Pd”Âÿ¼Wô³ -’L42îY椲 i 7Fë¬_/Ž:òCӲϽÈ£{IF•m¦|þ+ûõH_:0½ÕžÛ$ÉÜ3òÏ3_5ö5r» 1ãm‹GUÂÈ*H¡W.¿0òåÔ7{*7$£3ïgÝ ´V»]¼/¬oK™=÷±-”š¸°é#š+ã[ý·07D6êÜLz8™T•L/Dþ+Æa±Inœ—9ç… -9¶|Ò¿EaRù8ÉLƒ×rÏÈ¡D±R¶F@ƮϹßÄkž0©ÿrô"úÐE\¿˜òKÈ|g¿«~É)ln›ìaï|eÚïÿhìÿWO%ú¶söme$·xwKï4Ÿi‡É±þ¹Yäé³]óô½Û·fÖùŸKÖC‘¾mWãöO÷±m]6Ýu¨t‹üEJtP¨‰Ç\}Tª S;ÂGw@XR+Žn+Vy¤¢í¸g_ËX^N1·‹¯†¿WžYO>¾èU-?_Fî´'Û<:Vã3Ü‚®VQkžæG]Õâ3#,ÀW«œ)øïÓÀ¤7¢¹…nZe1SÇü6•©ÓÞ8¯mšZ „t8/-t e0ç*Ì| -Ù §]©ý.PATí§V¿4ǘ™‰Äæ,Ðpë䙩žDYWþÝxÛñ)º·’h§û¥¥CÿìýAw|ËÊÞ.ãóköƺ¹ê™á0ýi¾ü™ª¬¢Ùôï¿xÛ_WO·ök”N©ËAGEÝëé6¾LPe©õ'¥m‘èà¸Ä×J³ížhª,•RæNçÁÒ+¦v5æË#¸~kº¾¤Œ+F]s”ÈÌÔs×ãwÌÛÀ®Ë;›6hftG3}ÐBã£Àè%í1¥ÏbŸ?ìì‚Þ_•LG¼“S¯?*$…„Íd¤(KHâpyæ$¦þ†yç»d29æ†m`Œþü ‡Ò{.ip¸À®ÍùiiîÏÖÅ.ϲ»#s2|]emøâhÎò(Yâq9¦Ç?¶2Ì,=b=VÎ"Ñ^‹Jn·‘yçuÇgh‡fŒYX‰™eBÜÌù–œá€âõ n÷±¿2\¾«“.ý:`Ð{ZXF$ŽM­½nOÆÖ4áˆF¶î°hŽÓË%">¿NŽA7Ö†Ddâ³åƒ¡qi×ûš -µ$§:7–bÛ람‡xsîg|kè,sM;7tž\ ñà}Oˆ?…ÍDÅ4)²æ8Q+¼74 PÄì©»+óžã(ùnŽ5”/½ÝÁѬ8äT`á>˜µŸw¤ÉA 抜ÒTQ=1»ãG‡âïÎQÖ¨ZØÞ¬ýgüÌÆal «§‚½?»f5ýã£L™xV>¥Û®=݂ҼV…ìišsRrru¤HC c×BÜz˼æu3äò#_"³$ÏÞg\f¾ ‰¿¾%8î6gûŸâ=®ßk¸úl±ÁYAK ÝâI²Ý¶IO,¿0 XS‡$-Àï7׸6šåJ™¥Ú×ëS÷}ÉêªvÏ—XÜÓ>=4c£u²_£äÙ%±šXr¤–<Àö½#òÍÅOJyd6)„PcA<¤…»¤­Áÿäš`RlÕ™˜Öw pzeÊ{_ÛpÅ úçxõeæ)±‹]:%zh§aùr—ôAuüÛ”]ˆZà/Šù³m…Ú{Rï@ãÏs%•Ðë¢xP¨BâëѸ&ÏXÒ~™ Ê픥»¬<=’iÑ)êA¯èÿèÜÿO-l®×Ÿ¢‡¢¡»Ú–ÏÛí~qxpÙÛóˆ}ƒðÓ[/<ËOrÏä[‰ç !ê£.õ²¿—5¿5[­`Žv"<’ÛŽ7^Ùñg†äͬuÉd ½(£3#}þ&$±øý´;B¡[/oæ49!ˆ{T< ÌE<‡ºqÆŒ¶Ýã_nŸ·¶oý;EÄåµå¿£E-;Í…ŒKË3•¹"l÷×öô)—õ̉ñĉò{†øÙ«g‡öÜ&Ûb;$»^ǵc@ ܰ¸*eÝGÖ³& àŽ[Ô«,üR´ê|ço@Óžëèœ"šÏÖnmãº.0çáÿ"ä×u}ÃùÜŠ‰Òóæ f“ Á׋~Ž|d®í”f½±ŒB|Æ$š;©êãüËV>óÅkÒ^¿Bø-W,Öói•.#.QDßhqd±×}³ºŽqJá -r$šbõ ˆ¿Ä;ÜGSòKbb⊜È15~ßÙ/ô\Ïô!°AÛiBK©“ÄúC©öµ»ä†@b.:]4šû®Š"!LϧޡôÇz¶LúL.—D½†õ—€“í™ÏŒÞíÎIU1ò¼çÐ'yýÑÈô[ÄiW÷ŒB\~,síCØf˜“#ÇÚåóñ &çT†3ZuÞ§¦UÕ}ÔrãþvTz°-w«ì àQ $2S&fm|¾¬\˜Ç¨‰IËÓo™A UjvÓWÀ˜}çzºmW2óqCïC…Ã7œÇë²:ã"K×@zÔG¥É˜’XO¿ÅˆáÑmèç’ÙÞeý8~_¡Mˆ{&2&†Õ!ñÖj߯.w,úú_ÖË¥×®«Â娫×{¡ "3ËJŒ b+؃ü{ê«^{_'À,¶dŸSg½»»º*YJ'.K1ý¹8ùò>¿þÛ/´ÐÿY§¼üö÷ïßÿóå‹ß}õ—·?¾ûáû7_ýûÍ_ß}x÷öã»oßhB®ò¿Çýùíwß¿ùòý‡ß¼ÿÇ›?~ûÝÇ?ýðþÓ‡Ÿì»_¾øÕË××§O\ç“×úƒÿUrÄnâ -uä&>ôA\bš Læ%ø—£üú-:ô¥ð£þ~ý£…¶dS•ä)0©8ÖÊÐhaTl WÔÚÎqNQœ²&šä&;¦&hc[”Ágý•îª *Š -¿erz©ý*º¡5ýªŒñÄiòÆï?©Ë}ÝNa¦fµé><Šd˜JiRµÙØÁg¦$¡På߯™ØQBuBÊ\‰X¸$rš[ö²ò$k©¦Š,oÁ}ç4¬2Èz¬Ê…ÖØçš] -¶+P ÝÏ¡š—UÁ p„NÈžlz©÷|EéÜ5gÖ¶ Iˆš`M¤–×™c´«G‚Ì [ÅZ› ƒH=‘=ÑD¹+ü:Û`^:-ħ³^µlÖdL‘\dºØYË]äQŸgX†'öÓÞQ‘>ÂФ¬—S™$PãˆØEÉœ)ž#UB!‚;F Ôbݨc7x …D6'¿·üÞÊz¦¹OöÖs˜lуŸ ·bodÔrf*ßt£sôò©Ö6èuŒrfÚ^”'G¤=¥³{H+ój¾ÍÈöá•mÕ$Å‚a™5|U5±"å)uÏK«ýfbT½ôn~B‡Û{‚®VóaÑD V ͵ºN))÷iQ}gÞ.¹þ*sçú›ŽÁƒ”ulu´"~Ö×-Ç^ΊJŠäèBÈG¨³8·Äý¨ÍRÕå¥ÎP/±ˆRž⤄Ëf®Ó¬AuˆšhÝÕ㬌@ËÕ2uëu¢z’Q͹ÓDô`Äæ(‘ÓI‹$©:}-èÖ‚%ÄiêöJ©½LaÒY\w‚éà¼Þ˜d‰*šzcÑ«r_僔·–˜Ÿ=­Q™]£Nç‡uæ}1³‹ê CƨƒŸ™¤‹Îf´8:’Ô½¶Ü¡8ãÙ’û ‹_+zf‰Äo5\rWfòS"¬¨>¿Ù!ïYÅ\I³bºâ‰9Lï"R(V×5^ÏŽ€ º²á)-óa°‘žßÍþ^î×¹PhÈZ¡my×ÕÛë¼u”ü½ò7'Ŧ€š"¾D|ô™Í˺gÓë–RñMåv.XΆØÛUIJ÷Ei¨G;‹mjÖ¬ù{KWe‘²Ûôm#n{B¤Ã2Ás­ á´ñ̼¦ƒtÅá=u´•Ⱥª‘Ô˜¬…É™¢Žˆ<[›1˜Iòsqq!5®’m>?"nÞÒ2á=ÕOÕÞÅoÊ™1“èÄîÍ<_*{ªS¼2hDö3*Ï@?i4 zÝ©w‹سq£×Ì®áY Ó•}äÞ±Öõ°ó.È}kfWÆuvg¢K†šž³µÉ}$ùˆx‹ŽvzK9¶Ú3èZi{ËÌ;ñWQ½ŸÞ>OVéÑ$¾¹m ÌN%¹óâ1v9á¥Û§žÀy¨q8tŠ¦Ç‰ùóø³ »õ{d0åX_õÖ^åÄœ×É=hK¤8Ù•yq\ÞgË)Uƒ‡‚× &j?§ß îÑ}⾤dÙÉž‚þÓ3¶‹*Ûù‹ÐŠxk×ÓHJÛжsØU"E¦èc½ü·ýæ8+/²«U j+R« -lÁS.’LHl^d’Æ ¶7B®ý™J‘.ž‰Ò -Œ\„§^GŒX÷ -™sÝ2¥óE#dÀ]yލjÜ5u„ÌÓ~ERR©P\“Ï8=sæo¹ÐŠüPWïÑÓê¾}ÞÒQÅ)¦Ö¸•Ì@ÂuœŸúZ™%tƒ(¯*éçé…fb -ŽÎ¦£µŸ"*ˆrfÞ=Uîú*bË[Õ«…5ÿ”YÑ?:¿"|*¾ÓGá1¹?”òì)WKWgm°Ì+ÔòHdÔ‹çjùko-3y5n7(Í‘‹Ï·Ô³‘Ñ%ת‡InÌD–KY×p”˜x×@tT"çD ÀvÂ1ÏQSDÜpóŽ ¯Hh:¡²7?ÖÍN*"3©( RE;eSo-ð=ÒB#ª½lË£ÜfÔçÍ){V.¯»†™Ú3¤?`ž´ƒÞ’›çaKê§%7­SêðAò|yÜCÙÇÉ­Á³*~2ŽE“¤ì‡P^yĪÆkdVîÕ3€Ý¯=÷àɕˇ¥¤¥RH(yéBÖСæëVF 3\RZ~"hÊ:zÐã" ìL)ìúÌÜ®8¡sµ©±k͈Î<êOIPBu±û¡![ó(#Äÿ,¥´°[ô»JÒžL¯/‚ÎõÕ·ó®vj#ÈräÁC±±rG@WoNŒG3!08£ÿL3€:„ÊÇ•3®$²†i[kQ#v½ß5Æ!ÅŽçYŽ÷¨¦ +õÓgˆX꺩ç]Ç´jýË,6¯è4ž£’‰~k¶×qÇ]Y4ušÓ+RP0gâ *S6VŠî—Pê6¼Oºª„+""#©^VD1x¢ˆd\˜i ï™iN‚â…ä„df ÉÎ.DµÑrÌ“z¤¸†`ì«gTÔH`"Žw×ÎÄænÏÛÜŠ¡¨×5”.MÝ$ð”ô¹â‹ßÈíÊ¢—þù8 Œå¶¹çADî2·ž|P:•ÏT"ÿUy™Œ?ù·ˆfSôN™“ÿ2zašP¨\é´¨ËãDªôíÈÜãÍ€®èó%ÿ!N - 5ª §©j 5@Ôdöo<¹çaðÑlÖ«~6¢àHJå<…q>%ÚO'¹ëõK~)°l9Õãå%Du~½_(g‚ìÞ3üA«âˆo<;‰¯¨UÆô0­/„~œ´¢±˜8#1ó,å-…VÄ`^ .ÅïH¤\gH=nM¯K[9Ëmnkͼ’î¼i+‡˜nž£,?¾Ûã*¹‘gåEVß—UÝG-©ÊˆwWrêjw„?¬Iˆÿ[¨&xA‰ý¬^Eþ©y=§cD3Ûs†¥–ädÅò’’u•d€*k_-#³Á+åtT³t#«Í“•÷çgPÍãæÛSO - ÈÞ(e—ÿ0]FY¶¥ Q/ -êü'ÖÙAo½ÏJÉõ$„_ Me·ôìás^AƸ‘îKçv«ž$1j[ ·ˆ–Ÿ¸MFzD[íéLOŒ¹#¿ˆ´‚ô0ç”xç³Åj"åéad]ÿ˜8lÀ—‰l¸\K¯*ƒ÷{q¤¦Ã>y+Ÿé³éÉu]ö= éW=5°_uõïARùÐsJ+Îà ßK.1ÞÁiëÒA9Ѱ•EN¾âÃ,nïÒ]g4EKÉÆì•LmŸÍΣA<¸6UÀ+3þ^d?ÔÏÞ›Ùp®Ñ$»ˆù­H1ðЮ²Ð^³xf[H˜ÜÀþj•6]R+±ŸÉãÃY`í9ÍÊv ‘TGÕîÔJ_±ÛKm§Ef¡‰‚´zÖ¹ÄÙ´&ÎîÇgP¹£s~uC»"/@ÓªûkžOòEy ge®–ÕÞq]£–÷‘*µZŒ4²jœjëDgôS­»XíJ¾nözøn\8 £1ê’A¢g Ñs²Ä”}¹Gkì þ)lŸ‘ÆÈrÚZéÔÚÁ·’¥þÕ+Ç©oØiEµ¦òõ±”®ª¤½w¸O·)Ñ[qRæòj<é¡7¿=Ê®”Ä] …v†àåb!j¹bÕÖÎTg é‹¼{ªPµ¬çh“,Ö '‹þçŒ:oá„k[|ȰÙN ói‡æo%å¬y0[k鸥TwúƘð1<í‡Êƺs ŠûFÍÊß©õFèÄúƒdb,@Æ—FVÄErþE–=5ÞŽúµ.xWJBêÊÌ75j =C\¡?ñ[»Jî%BDüñ¾Í« `‰<èó~e/èRhu&×Y¿@íw•2ñ´ÎåÊB¬qÜ£n<7¢|&,ž‘¾Õ‡n+”Yþ@ð5ºÏ”URµú(&mìL×ÊçÙ/N–wÒ:¹¾S‚"¯uÉ,t,½Q1‡Ï¶K¢G³_ Ö»;\^çnü —' 쯓… $³e!ñ{%&ö Ukn¿iÙ6 X“é¡EæØœhrØd>CØO+•¬!JŸ½J’ðUŽxĪa½_:W@d¹±•Œ2€ >xûzt¢®"q£‡ýKá1Õj‰óÝVY{7ʽ—kë;e(ÊoH«-d—¾–W^Û¼µ”µq÷3¼Ù²X©õJ -ÂæüÍfÐÇ+¥„éØK±ºÁ,uÙi¸%!+Ïÿ ¾½½( endstream endobj 179 0 obj <>stream -H‰dWÍÎe5|‚y‡» sIÇqfVÐý ‘Ø¡Ö'zH­fÁÛOU9ç|߀­ÛÕvNâŸry>,ÆÓ×ì3{Ž1/ÿøçOg¶h{§Ìb¯a~þÜ{Oœ¿žwÞ‘ÕÂ/öD‚ÆÊ7v˯Ølœ9pèBÊ‚wˆöî«<‰*Ö@ÍŽ·]v½µB¦ÅÒæŠÛ3œa%ÚmÉn-{cG$™ZÅL–'2 C xž1|‰+q‘8‹qɉ’CÌoDž5y^v©gR¯çTouÒz\ž7Šâ2E¹k ßt^‡×N”›Å|E*¶¨ùÜoÍìÙ’Bî|³n‡Cv%å H: ojyn¶"øJœæÊøŠë•@göY(ûŽ -j Ù·!¢èÏýl>öíf!´Ç±›}•E[Bª„Ø©ƒô§¥¯B“…ƒœdw]Öc¾xGT}ŸdªY¢¾;U¿‡ì<ÏeÇâÃׯ}+IÞ¯ÊÛÕ«LÜp“Õ@ß Ák ±å·pÜíØcUÊQFSvmxµÀBºÃŽæué¦<ñpUŸh—©ÎžÈ¸ã„èu•§Å ŸÞç…“Àécà:ú^CC°¼£€ùƒÈfU16iW‹°z¡‰Ž(»> ÙMoD7n/`¼q´Å )«>ùƒ'í…ôVÈZY”r¶ÆÒñÁžuuJOfÍqæëg@Çáy^‰ôµ5„;ÁKI>ƒ× -SwÔYë÷eñ¤]èœCvM„A¤éùÈ!d^ŽÅ4‡8ŠÈõªÖ·Gõ×ÀúáSð²U%Þñ¶‘ðþ–A.DÏL&j"½ìì„ÖÀá;pDÒTr!Å äâoì6:ÃȬ»y ð“a (dÞçMZÖ£";Šz€4Mçf…D…º7uâ, `•”™OÒ^7Ä“u -¤fl.ÎÚè<×+™4¯5Øu–A'§¼P­çܯ(Z*XH8*vVõ#À5‚Vgoiìøš]ì ø>æs®É/ìÃSŸÀ¸Dò7“„&’xÆ%º8‚ˆ¬Í² 5‘-¡_|Úö9®K„? bÃ0¸¾ggØ ÐðDXùêL¸sŽòD¼±ÊÄQ`Ž’¿Þ˜K‚UŒ`ó^©@ƒ Œ…hÕÀ‹2\#*“õp š½D¬çA0!„ ›è>nO -bU”±ë`ŸšQG…Ïë“hœëj%Ô`±”Æãï2ëÝ`_ý—üÁBz¼ÇŸÔ Lùh$—Dõ4þ÷D} -Ç`Œ hAbÖè…¿{Y>~ü“WB¼1œ¨ ¼¿ÒuDk:(Ϩz€tÑfPgÎQOŽÁëïõ@ÔíÒA?2ëJlî@f+±ªŒ`ñÄ»KØŒÒ<T½4Kº )Ü [Fi±áQ3‹¨T@Ûè:«BJܹŒPq$¦évT¢>à^ó5gRtB$®j5ÊäQÓ4[²·{É -È‹)uI@="zwš£ UÊbW©29Q½]¤€)JèöÙ󮜃f$!½"ñDd‰èˆ°õ.Ï ¹]©­¬€Xv‚Dˆ†§{^’™3‰vÞ«mxÿº-T%‚-•¾mW¯éÅX‹„0UçÉDI4ËuŽd@ºAÝ!Ռ˳R3{ØY(HÑÇèWËಋŠ|¨óÏ]ñv±7Á©ÂÃÆÖ‡-d#l“û•D­Ð÷ϸrй~‘³Xª»%²VúžO!I‘š2’åÀÛiöÊCÀ$Öé79¼¡ør²‹ ¶ëaÕfðvÔ¿»á›Ö–ÔÜ%Žy×Ä"j¦û¡è¾,Ï"â=iE{RÐÆeï ¥ÐsPPӨܵ*ôâà -©fÚ‚©}L%ðÔ˜8)€=cØ:D•lÄ…ì/Ñ1ùñþ#û#Õç´ >²åB´7L´‹(.n©œ²ë5å× Ç鳊hçÑ?bx¥0a{ˆ÷”P‘à¿aò6JÊc«Q. ŽÛi$ -fþù¤†ý:(ú•°]jŠwïÈÄê©Ü´Ñ¾Z«½k -}­@]½BÂYzL0Ñ9)êÅľ™š 19Y·ÅZ‘³ ô%1Ù¶Óàò>Súcs&Ãmï$)Q'ÇRÊ‹3$ö~YÉûšP" KÜã°ÇþƒÊCÂYpÂiÌ' ë -Jýª¥ý¨(5ȘinÊS:ÐHv‘–Ãüڳ﵃ Øú…dÌ EsY#йZ±ékcÅ~ÀQ~ôç~(‚ÞŒ+É¡-_»4šSuOa-)ûÜß7®¿.MÙÒ6„÷CÄ8¥%á}¨²¥ è}”ÜA|°ì_ÊB׫g7!²Õ]6h…uÍ¥ò»œV|=pýäìXfEjï1×"ó2$QúBÖJXbÞÞ3BéNåÍ;gGDä–ÇÝ1Ãr6º^#ÕO=þ0ÞBgv˜¾W…ëbéë»C¥¶Ò£þI°”©¦./¨·˜åE NÞœ™¯Ù=¿(T†yÜ݈#ˆ­6­Ï¶: ¹ý~×TzåzëÄó(Ûˆ%ÀŒï”ß%©rË@å-&7!0R÷…äÓÄ@#_C\;¡UÌk7h׋3¿ŠÄ¿ E+;Yag„' š'lV0A7CnËßé¼§rsóWÞf|vKà‘2‘°Ç­•-Ý—‘¦h¿~Ò«ifø9gµj qKªaŒt-fÊáNì©Åζ‹n+,Ó@©Ð$IÒJÛð¸çCu¥Yαƭ>òhŽ$Öº»rߎ‘dBcGǨä\&Ò ¸Ç|3Ý耺SàýE˜ÓHw-A”FJÏ÷iœœ’¢eAÁ*hð‰>DNc¦w®*ßO¢Íõ,Ü|)™27}­‹Š‹ƒ#–öÅòp)÷Š=»æLkúiä嵕ª­‚b‹JÂá,œ‹ÿãôÿŸÝDź Ô¹œ×ôUµ½lxÛ‹ªt q:2€OWö4ÆÔ×zêÇèÔ‰GhTÉÒlkT…nw«.v¢¦@üÇ3-”ר“ -dwÿV‚Wÿ>îAn¾!è]Êö?óDe#¯H™F¤Xí·£ûG…^퇶VÞ­%?Îk`¤âäÃÁ6ûŽ -ª”tzÙZäìùÌתÒÒ|m(gu&gæP7÷xí)}~¹½šÎµ¡êAêTØcÌ;©P»(VDK@GI}E»`os链¹We¹ÕÑüÎypDŒP%—‘¡@½˜‚-³ª ,óàÊóéÓP0d»ýxz‘“3y7Ì¥3ƒ”ŽAÓ´”–?ÐûÆ¥И!ðäØHøæBEgO®ÄVV’z”¡¤9gòöh%èàvÃÊ´ŒzAq–jhÿ&úU –Ëá®Ñ~)ê‰@ö@ªé$n²7wRÈ»Q q<Ô{~L\¥~Ìé»nLÕ¯ŒTú¼œ£Ëuréi¥}¢c>Q9cfL„N{uP\9ˆ¬wVØ¥¯ñi…H:~3·;,ZŒ³‘>Y³²z‹=] -1s¾ï¤´~Õ  1¶š!o.ÖµB2êQÔ¤Nÿ%î½.ŒYÖ±árטOŠAÕÁõ@g ;$‰¢'’­à p‚7ï®êK dK!ê:ÃbG xhϤT-¸î¢Ö1 -ë7Ë[±ÜËHÒù¿3–§KŠè¶±tU\>Óîêl–uÊwÝ´T;膗„ÈÔ4#}hÒšVÈø -ô¸ •p´EFZ‹™®`¯^9È/* êqù¹S­4@µ¿™%jZ¦dF”šÂà{ª#Y‹g€ -µ?Ý`lO(X-VÚÇÍæÛrNš@çºÒC`šðŽ ¹¦“§ú&njb –D“õ7—ÓaJ/±VG¡ ´W^;Üh­#.i£åšu*2ᘙ&æüf0yOz ):3Ïš…©" tÛHÎ%In¬ì.…žêè/„.‘1âîÅ3)Õ7³Wrt2Aˆ¬ù2²ú=ÛÚ1f¾ÞU4'/Ió'ÏÛǤ1g›ù¬h-+‰:&…ÈžÊi»d³æ){ù­ØG‰{Çlê@£O¥…pŽÜ¯!ʬ)f0(ï³§£1ÚOˆcŸ+ÖÊeªb¥¾>ÍëÙÎ*¨jÈR"íäU.G–# ÂÓ'%è™Beˆ=VaRýpc—Ò绤 nF[ãLÊ4LXEoYÎ4R~[ꌇ€(^•„ÕY»iŠô(ézÊKu}®é—d®}%‰"–ß@­W©pˆl¨J*Xåì"T`t@ïBz»YåDî«îÊwI¡'åtøn,uü»Ó‚ð{•Z©yEt¾–WˆnèÉŠê‡3«ê½ÎHG5bŸ'¼»Q†PÉMvÛ#¹ïÜ+ÇoÞÿ)2|Zد~æNa.´Ç ©žF*Zöͬ#¨Àd ‘øtíÄZê<©ó»e7]EUÐSÃpJSùùákˆ"‚`Å÷i -W&§½Ê#nsu§Íµ •P;wÜb<••Uê ¾n¸2;`½Êä! QŦ»í³1ý|šÐuRUÝã,¼lW "B•¾‰_Øpÿœ`´@"”ÿÓü_ÛøÜmNéˆrtsaôô·ç!„„ˆŸŽÂ;‚‘nd=£¤WºiDA®»…=5[AæýiT³=)eÝBÉZÏbó‚Wx;¬KÝœmÉÃô(#´÷]áøêFïÆv÷ç’ sÔ‘xí6ßÚkfÜ­g¤^åTL -ùÛÛ]9 ‹Êt÷{]lÀ†W)~}€ýEL¼iú…†>1Î9~ñù#fÊÜ@>³qoÊõ¥ˆ¨&!Ã4÷Æ1 ±ºD1g®ìNöµÜµTjà¨Z‰O¡X ƒsÒB}ã6DooÞÿ wü™h+*.›÷A#(°Y$¥ù!ájuþŒ»ø3ϔ⌿¿ Ìš_DŒú¶6eBÝ>XO_§[œ‚]¹8½–3…¥€Ú`ƒä0‘c  a:î?ì±ÐÎg¡gå¸í\²Mˆl¹s¦‘˜©lÙ< -(œ­¿c¬(6YÕëÆuL¥‰£¥ajª·V[ãMf—–uÇ%ŽÙê8_ò¨ .T¡³ÔÌvˆZ€9_À==æõ¯”µ|¹˜¡r+³9žBn¼n÷£2Åb"± ¿sáJ±î!ZVF¨õ )½YÛ’_½ÂN VüÑ•ˆov”ÎC§d6²u#kÑèñ63ãhtÞ¨EûÏ3ÆIñ „ÿ(&ª×;F˾ՙVK¼½‹ÙÀÀ@°ö\''ÊŠfõys·2XAäȶ C½>*»•«fJ½@£»Ù‚èÌÕ‡U®1¿ºsË> °Ë¼úh ¶ð°^‚ß™idöU¿™VyÐ5j\ªã©Aœ›ÿX뼇åh¦Ò&sª "Y†rPHMï÷øãCâšjrµ9ÿe½\Zí:® üWöÐ „ôû1L”<„@ˆf!+`ˆ}…# üïS_­ÞçÈ(™ƒÑ©ÛÝ»{=jUymªÈ©ÐI«V¾‘ HX湎 ƒõ,(Q‹ñ¹Â+±Qn²›2­Ed§7 -`"˜Ù'6 ^ªÛ&,ü£= ä—ÆA,±æŠ!knc¥°sï'%ö‹®Q<ñ|OD"åq¾ùD•êI¡ê¬î9ObøtÙ#{ôC“–„¦—ìšl  õÓÑEýBŽ¢º}x2;+К‘"¸´Ñb]u¨û ÁãëÔhé9R÷ø‚ºuqcz äP$¤u›ü˜Íž6Y:ÏvQ¼ Å»ÎT_éTJÖ¼ØWÖåAÃ!ÜÕ¡F?ºå ÍA|ú^'°ØF¿8ZÈ IÈvÓ -n1wÆ-%Æš™ŽŽè(ø‘!sƲèh€ÝâðáÙéÝê—§32Étf¾¾ÒYo~E÷ÛüJýŸsòõû?¾¾þûúæßþíݧO~úñåÛÿ¼üýÃÇï>}øîEâ”ÿ½î¯ï¾ÿñåÍëÇŸ_^ÿõòçï¾ÿô—Ÿ^?üÅw÷õÍo®·ÿÔ¿>óœÏ>ëOþ¿sÒ”FÕ†èX-«Š’ÔVÒX_«ðǶ›æõõöv¥+óGý÷ögèo ¾šÄFèÎÌ]UêV´Wr¬Bè÷nHÿ>¡ªöé\-¼‹jkÐhÒ/än6Û‰Ò -2T,ª -œª;ØgRˆ‹m`×Ö%ê¢5mkÊÎ’m6Ù6ßÙƒE«Ì1Lð¹úsÝí®C9|]¡íb ñ»í64ÔQB ‡×t5¹&?Dn\ªé†Jð‚…y™V=„uçýrb;íéÆ] )“kfÔô™ib榻ŠG X3 -GhÔã&4–AFq«áØ|9 :’¾Û2M&Іoô%WLµ~Ï[­(gÉòˆ“«»Ú–§¯³W(Î(Á°È&Ñ”Õdl뤰Y”‰‡P¥³kwãÜ¢sGŠI"P§uÞn)&EÿÝ?Ûñ€`•*Ö[÷¢B0 -,Ç—úØŒ”Ü[ø@©@çUJa@s÷7Ï¥µbÛÀìÔX•°¬`XÞž†”³~_XyVÃi¦UdµÓÁd0é$¨¸A#:å3¼nuåA>Zqhd ÈÃi]º½>;Ý;€|î(°b»¼mgÎÈæè­Åþ¹#7š:óÞd]HVãh¦¨¬$±–üèü–Ò“d(ñ0y¹TC˜VÚEŽf{”&šK•¢»ÔGqCÜÂ"e€ÒJ¬Ú5 ‘ ?cJ !×zlÚ±ÇòŠ“]vêp€1m¸z¼KªlîTþ\²#6·ÕÞö"ãÚôTça|ðÑ¿uà*—T­Ù;ÿ¢@¬ Ì/âhtˆ -@] VºHº½S쵄œJ©ìÇÎNóÍ8t†½¿`Û -’ꑞc¦tI9Ñe÷›ªz«ÉRvIU6éÂô  ¹½[Ý{×|ì!î#§t–‰‘«Ä‘éˆÄ?&}[ïæÐà î1TVˆM?:úw~ိp æX§²ë_îS…ÏçÉN½bš¡n•×"³bgÕfÌ„¬²,Ç^®©¡âyå|L]KUz|Jk …_IV¶5§›ù}dÞM—'ä¬ùº™Rä[ÀJjnÃ1úm{vnhïbP Ì¢‘|¶Ÿ€ÞSl[·fÂë®"·Íâþ©»ù¡òjÝÎ`ÐïLB‰ºlÖ`ß«ïPlR_ -‹¢ØÑílƒÃnêêØP -S`¬‰OëgSÌÞþ]ÏF\Sõ»úKœƒx|©Öusk_ŒÞ‰½’˜ù ~¥««'…­ÔæqJCQmŤM} ©¸¸‹y¯[h¦DIÉ0e«˜¼ûÔË¢$Ó`ôíG‡x8ª2û?Fñ™óRç#Ò£„]Ö,À+44Ê0²*6 º‹4‹ š틚’î½·³”΂È -ߌ®ª[kXŒèå< S· 0JH^*7[Mýƒ¿ ÖØÓX‰&+‡S ¶íUd¡ñÄëúJ ¾?*Øvš5ZêbÖ Z²«kXàü(úÞ…{!j6‹ÊMG¶ÑÀ’RÁ1êòÒ‡bN#¢„Ôå17´«ª3!¡–bvŽ|¼ªÏ×ô;T!=Ç9c+JïgÅ=TQXs’Q92wäôùf’Ñ‚æK*äMÈûå¨ ŽÂ¨UM¥ ¥Õ{ÌJy§1Û½ÍS µº)Å -œí¡í5Ý<@¨väL .P Î’loÖF<°jWÛ$ç ï6o›¤‰mmkXþ]»ž]5N)wéSàñ°š¨¨$€!:.šÔ3òO«¾ÁgJIýÌÈjbªqCQ}G …%ï'àq§o•úÄ’¦Õ“>Ò¶Wþ¡ÓTã ½˜mÏ(¬áƒa(4+ Ig¤Ž2žž%dl–gkšB½ÄªÀ$Ì2÷:ÛF±Êy(q¶r²¼ËmØB\»¨Äi ç9K|^¾…ôf -å!s]¬-œA¤¼¯R¤Eª>ºUxX5%‚ÄSšÉCû¦F»¦þ^´‰9^J÷Ϲò/ç8&,I0[M³°¬¡cg =àóý-qö 1†.´móªÒuØã ®°~ÅŒ¨U8,‡K>9¹ß±‡x®:˜Z˜]µð²+Ù»n¬÷¨ÓRÎÙjÄlA{—¢è¨2Ø-×4.;ò Õ¡$`•pTЫ¨kª›4G`Ù`'”ÎSÓ¸è¤E¤ßúîECK ¨±Ø—êÈ5Ô•{ùw‚ÄÌ#5§ºI™;ìf,ÄÇ@b‰jw[n­…BPubÈšµƒ›Oƒ#·Õ¥†«=³­U»š&ZÕ›žöe²A‘W⓼ÏH§C%5û8á›xŸ„Õ:Ç)ïû‚ºÚpéO?þ -QÀQ -ÌÝ:Š»\_̇R1¨èåh‚Šäg„?¤=b¾´X«ŒZËy:ä´•p{¦îÁǵE1Ç‚µ•íìXêÚ ¡£Zå¨äö]™©HÝ•ÙIJ3  µ ¬B« BÏ6½"d”=‹¨–£Æt{*~b†È‘#Rbè£"´H¥‰ÿXñÖ.úgŠ´2Ëá‡M –wî¦Tе¾#™sˆ(hOt¿î¯E1ŠzYå¢Êª*÷+˜ÕöZ÷6'‰Ú‹§ÅkÀÓ—Ûë8/¸Ë‹˜šô±)N¹TŠê:>†1@ª+|¡)³Ýà¢RÜ\1áú(ìXµàÐ:‚g'p„çÎõ !l¯"V+ÐÉe¤=¢ Ÿ ÚÍrDí’h1Kí+Q}kn(¨akŠtÍý`T" ©" ¡©X.Õèš DY\KÁ^^âyÊ»iÔ¶@QÜ¥…¬4<ó7[±O¦µ¾Xƒ ÝÄ€¹«Ùj˜âV’ŒÌÿ’]î8{õFÞÊ;øÁk“Œå- àtàxBÞ½ë©&d zK$Ù—êªi `m Œûrêëˆÿܨ”+Ôy|Íß[%ÀïòºƒÓžHºZ²Žq®òhót¢1nÐñCúHÌr&ä ŧ]!mÈ|>íÔèãª]Wå›:´,ZŒ;p–¿ ŠJ˸•ž÷ö»%" &Ò¯9 ÉÊ/çm‹s'‰Ã‹[‰û:C¬UìÀ¡|•Ãqò¬‚Hçôävþq«é‡H/µ,)´mI÷e AÝúGc†~ÇÌeCèŒëDRLj{_¤½ -;¡˜šÏ”Úɳ6eÁƒ¶Fן¸†|¦š¸)Äõœ+¨º¯îséœQÕÅ:­- Û1ÚZÏu’扤ê2 œÊzò픅܉nt)Èš¹.M"Èœ¹f~vPÒVDjÔv€€¤ûTõ¸õhóÀ(=U ßÙ`9¾yp½uæ:Æ›¬œâ±rH¹©ýÍ϶¢jzÍW Kw&dçÎ!£®‹Äø½3EèÙ^¦VË£¾OÎuò“ß,F#!ši|JªÍÒké°AIn…[]æ°9*qÑÉÈž”;´$dNt,ˆyYH¬³¾£ºuûÕ’œÕW"§&Ðê¸À÷IÉ ÓîT{&v2ú8û•»×8%Ì0y2äF¿ …sÖ«7S+aXvIF©óuµÐqc g¦a¹m¡ÜË3!ÙÊM:SB'£Åg ß‹u Xo5ÏŠù½S}Tó8è¶Œë– °Ö°´M=OH¤¦LyD…¶¤IÏ%B6-†(òÀpÌñW©9&¢µË#£T[1iá9lB@d4Œìý -´ nto¯sùƒ¤!“Ü>Û2~{ßÔ+S§©_F³a{ãs¬Ì×Èw+Å7™Ò@î‘l6V¶^IB:SˆòÁ´þR©˜T;ö »Tf3rÖê3:hâÀÈ$Z¤¿JŸøÖTébçíe9k½ì"šõÃÈè-¾Ã -Pèt‘ñoͪüà;€ÏÀ¾îhÕˆý½AAªss¥sæ ®«‰§ïÔ2åà¿V(aë~O9úæÂA`Œ‚‡¾™j^‚È|“"4 Î;‰‚9çó—1w¬ømpøbƒ£çÀëk.gX’Fînìl¤õÊÉŠÔ¾ rõ°¥ÖŽÔ(næàs«c¶ÎoPñ¸Q¹J[ü„ -¿ó}9¶>Æuo#9 ' U  »ÐxòïOÚ ó5¨zdÑ€™¾UІy";Vº—XEÕÁÒ-¼$DBø³wÄ<À²i¦ÔùÀ 'MV‰þ†õ*‹‚a𶤠ˆÛ炵ÏB)íø 8Ô6éýV¡¡xŠÒ4°1 ƒƒÝø_—^²Æ½Ò -]iÓû4ë¼RÌw,Ùñi-&D€CÜêiÕz¾mÑ2£¹ª¢ÖlµË-wm½§êܪ±ÕîŒ×%GYígáuÔ÷PVœ‘] åvAûÆ´.Ù•á|@þV½]HŽºn0î¢`¼è”ƒJÔïõtÙrª2³k©ÛÄáÊ"­å -Sˆ ëê:ÅPSB)ýqì‘úq½¦Eb?KÕX\²HonkæT=LU-Ì6ŠÆ¾¤f°'¸UëÞ¦»&Í=L€õ Ç…À_‰é±ú¹+FSŽº;œÀZ;©– $ˆ¦µæÚøQâö ?r>³Kä¯ëR«f ¯_sÐ0½*Òyù÷V¸ º¡²ï†VB`SƒžÓøü&»üîWÝÎß{<^ÁºIF€­5½ -ñSêÂy™PÊy5åP¯˜¥ëþõx€ëä2Ô+Î’Uý±‰wFó–v3ƒ?ÀÍ"þÄQý^uÒã!|5–çÏéˈϨ×âI¯1ìfqƒØd¼Ë³èá»í˜t ŽÈK#aYëëãÀcÁ .ç´ƒ_FìUKRÎu‘güäùãwC½ìkÓ>P -Ý[Çô(YÑí‡ÄÇ:—0jìHÓ+jmD®J½]/± éÔTm“„(f -ñø¬O¡Ë6DȘ{ bk{¹ÇòöŪ÷4ëšÂ‘‰ò$ð7ºÔMßÍñ Q»¦þóŒ¿,êTª6ž—!y+ò­ïy"+z†2¥£¸’£«¾n”¹¦Õc^Ç# âG õ€ÙHb#Õ%£,bCĬäò8€Y@. 3d§Û-’¶ó(kß^K¸Þ Ü.¥g*Óøiäòÿé _W!ýíøë_óówýÍTo4#ŤÑÑ~ -äÿºÐ?¶æ€ÊT´«ù£hýãÙ¥ß#Wþüãß–—rwu$W…þ ê8ÐOfRæXÏu j ©ÀßH¾q¢ì¶Ñê1ïÉ/(šJ,yÍÑð4!üºÊkb‚6ÙTËçf!aë{÷ôÎÚ16éã*+¡íÌdˆî룪b1"ä6F} éQ²då1¦‰®D’>@âÕjEÈÎÜJ}*Ó]<Ä“É_T5Ÿ‰ç×íŽjè‹EWQžËVK¤ 1‡uµ:^êìEw•S"Ö< ÃÜBï½] ‘NA°×Ùïx]7c·K/œ>vû*¶LÖ©™Ü:HrÙ¼lKM°éüÚœ±Æ·0[ÉVd¬JÝTº6W©»EŒª‚¥d•isO3ä“[µ¥âGF›:z}-ÓÒŸÔ®“_"vÓ5 IȈ6Œ˜-Œ˜½:]ò^h”Ù#tœ«ïûDß é{ÞOR‡ë:Ѩ”U~²­’ /2@‰ ª®ÆÝxi¼¥u;J#jÖn—8œÐš`'o~ä ”Cêfój¢MI0i¤fËZ©yúÃhˆÎÝÓ:ÉVXqé‘x®b¡šéÀ®®×<wbcl\ê,tèZîÑP±~Ï}Fá¾zS|t3LçË›ô™lgu¹Ñ´§ôÍ¥oíIjÈD…EöE% ¨‹¤ÊúµiêŽF¯\e$ë7‚Ðlþö(äwÀýŒ…võ G¡@?‹c\‚ãQ0‚h1˜áŸ©¯R]| 1T4Ún(˜[¼Ä+†ïx²ë~¥šëRoù5D‘fº—$¬KÑ´ŇèjI|MàjðÂ-UçvgÊHÿ""@±ÐÚÞF9p'@$ðxªsŠ6 |í?¬—K®^·„·r‡6ØdómlyÉ -  b‚<ÈîS_5Ïhš€û—H>ºë“õ4UÓr&š&CdÍ›œ[Ý"/;Òÿ¸ßm9õ¢™™ª2-GMX¼ ÐClüþªï‰ÐD ;KÀ°w êö´äB—•5!åuÅxܺÑ-Æv%xóé’+•d¯¸€<§0 -Ý'÷éúY5¹îQNÀš1;Þgž· ,L2åÖ…\úJ@ÓH‘‘zM¼Ë X*SW™+›L¦o8bæ—nö‘$›Éçd1ØY× \/ÒêÅþ®Ñ°jøõÙö‘®/¿¦M¬?›üÆA~¼–õÇ_>ùíÓÇ/Ÿþüã÷ÏÿyûIÐwo„¹qÚ÷o?þóËçOüëí»_ýåãÇ¿þý?¿üÎØïßþ¦‘?ëŸ ëo×MpEQõN2»6©L‡AÓ§GV¸uÌŠäiýÄG‹5#$×P @Èd¨¨rV ÆN69´ŸÖÖÍ8ˆ…X8H0p.a×þd=oUªü}˜*Ìuå%~éÑôBÈWëmôû*‘éa -‘¹P8Û1ƉsúâºiÆaë’-H^CPÚ‰u”CáACréúp  © <¬eg rjNÌ΢ûà0Ï|2h¡òñÓãfCˆA0Ò ¶SFN;¯™ºöz…Ik?Ø¢XÓ E÷j,]? 3 rûêmbcijÎwµM=}Y¶¯XB L|‹@•.—épó»HQQSÓ© -;’—%Åw©žÉXŸ…QBš¯Z|ÜjØ`õÇ`UºÑ‘e]î# ™d*#ø|õäC¯×í7TŸ®;!®[¸<¦t¾Ìkûx·ùƒÜ$7Wý -tÌ«ÌSmÃ>/€pÐËÍ/pbò:¹±,Š_'s)~ãêÿ¯ÁÁ×]2±¸ªÉ Í—«ºâRŠŸn;ŸøXùÑ33ªFÔ/êàŒ’¨N£yPªÇi¶Ê­WÙU¿–ÀŰU¾ò}©FÀœøÝýÔœ€soNàŒù?³V™õ}m‘€+žYÍÿ©:Йt­Tˆ}—†Ÿ·ƒCÜMu‚?æ`2HAL„&äK'“”¦&˜“’ŸWFÙÍÉOíZï®eàwý›öÖoY™vì׬ÓÊ]©“¯œqÏåRÇp·<ù!Ýi“qÕŒ‘¤.^ðµÁs“)ÝZzÞ¼;Ž­£þ¨êކ%æu@µ{¼I%’ãá¹vÕ¤‹ÆÎµL¾’GK‚Y‚¯hu¼Aœ¦?5)Ѽ5Ò†V¹Î^[mÒzÉ '?™Çj\4ì ØõGcc`uþ0æýÜÆ -`ëðª4 P$za [¿”Ü9ÍòÚa£ÖÞ+¨ëê%¬¾Ö—»êtGO‹%yF· QÚ±Å5S›o%=» ‰iî«™„µkäãÈæMoK « ŸiÝA‰D€fgt  tYøôüšKœicñ3--Í&ƒ³©îݵãªT¥LçLޢ͠ ê§kžšFó|EB³8sþÿKM²JöÐÓñI«"¢ÕïÉå'_¾sfôSiç@¿€F—0«i[óëÛPÙ‡M¢8uêÎ1•n'[Už¹‡KÃ>–ΊÞ3­ÐÜÆ¡¡;nHu&'˜®E‚yvf…zìV®,wŠW\ R¼¬þc­¤‚íuAdk»¹†…d ˆ<{M¯t§õJ5ìHþA޶Ý*ªô“¿ëc„uù‘KžQç°Ìšv¶½z²¯dH5YÎcǤüÛ$g=A2mRZ´@4<à!ñôK_ôgï-É»m…¹Š*å Xp&UÁ–ÛÙ¯ºÞ*’#ú • 0=ÓÓ°! Ã"”ÕZZ­,Ǿ€WÄFÆÄâßï9Õ=SÕ}qxÀBž9·§º¾ë”+T©|5Ç…W¤Ù8…|®‹H©é}e§Én©›LeMd'àBÆ„ÌL/.>¹²uXšæÒá0°$©YdJ\j$%çy­cÄi,kÑ´@GÅd*’¡Bvl]…ÔMœw²UM¾RÁ•#¡Œ1?b”qÆÃHî·0c€yÀxó¸",¼ò%šÒzn!&â}.7Hàù÷}²{v_Ù%F,d bäöžl›="ÏEeЦ¥°&4*¤&‚}))INß±€Âª’XtfÌp™ê#°T 0 9!Ȧ ËT£œ¼db‘»m7ÀÐ p(E™PhŠàp–#¡]ƒ'²áS)6êŒ(¿Ê“X»`( ɳ$L$Ý`ÉÖw©GÔfZKyu’Û£­eäí"W…ÄK£qd×A@)Ü\NeÐ[s=°Qt`e¦æšŠ™w°¬§ø5¹`EÅDÎY©nˆicá)CFÌi* Òî,:¢Sà´b?Ì‘­¢Ìs€…L÷ØvÒ À\t ܬ9›“hW§lòµò.h`<3³à ïÁ××µ0Åe)aø+€”¨0,eñ!¿âˆ‘\BÛÑÔx²,¢0‡‰ãP†^-TŒIØˬLldLNR^Æ&’3ãN*‡¸˜æX¼±Ôˆ ÈI”ë<Ï\¿b9…}ƒï…ò}Ô¯‚gï(Œ@ ìï<%ʼn¶&N†Ø%T@Væ˜i±4ÝŒ-ȃZaSA_ZÔ,ë«X>ò% ,6¹®UP~r{@Û.V¹%5‚B„„xR!ö[áhÂ{^|°¼”‚f¹±Y þBFË;ê2¬-ÒrÈù4°uæ¢s'€Ìƒr¢®,Õc¨ÎG¤À¸½s&vL§&üèB¹MAô†ˆ 9°²ä´•DJ€–RЉî¥y}½ÿïÅþò?|*"¿¢D=û׋ÿP‹ý§“î¿|ëôÑþíÍ 4ÿÛõÕåÍ·ÿëêcvÌ¥%>y³?ýê'ö'ÿØ_¼{_¿ø¦o®nWQ ªþ ÿõâüæ}•=Þy”^y½¿>Û_Þ¨[ü]ºðÏé¿!\ztu¦ßt±|¾ûáé‹ùäùåyÁ÷…ï'¯®._#ÉngøÙþüg~ؽúÈ_RùåÙõçOïW9^ío‡ú2¸‡»qxŠÿÇ·»Ïøã†QþÁËOxøÐíà‡—Ão¿Ã9O¾Ù=ÂBJ*—¸I¬/h„9aÞáK@ï»NYåí.!ûçÉuä⋇¸Låë炇8çí »Ò HÄ¡A¦]ãø”2ÁÔœG—ÄrJ:Ž>#Zb,NÎY˜ ‡:@È_¦[dëdÏjat݈ ¡ñ†FàÆclÎLÞÇVª­ -«²*ÔZuà³Ýۿɤ˜˜|Xž÷Õ˜\fA´A½ðcIàX=h¼êÆáå@²XLQŒbPSq-6®L­0A°Ô0ALhÌŽäv8ÏÅ2Ïd -ih¥bö0Z *xöuÅ>Àâõ‡À=û -¥7Ï®ZpaÈM"¸ĨžÖ`˜Œ` -C+ì~žç¡Õ ‚g_W¬jüÿô½+}}òð325Œ $xH` 5dxÏÌE™ÞaŒÉ3ƒçÒ(J_Øw#¦s,(î‚ñݪb]‡Œ®Š5fX] B³TƱ¤¹\9Ú ¸ÇȬԅKÁ&´l²`j­:ðÀwö…G¢ ×AºRk„©½ŸöchU¬±ÉÀj¿ -5žR¯òræ6ÄsêÒÕ€M\7ؤÀ&ÔZuà{IW¶7.}çb»‰ÞÂJgq~n;—mç2°v.#U;—ÑÀv.^á£ëÎB™1ôRl4PØh«R]>8+M’Óîw§Ç8wB8(¼”‡¹Î€V5«Fªl4°Î‘m4Äî,fÒ¼äNª‚ -mUª±ëÀÕ9êµfJkŒÍ”Öl0SÚ€vJX§´‘ªSÚh`§´ÆØžÝ²ÁJU°Ñ@a£­J5vøà sçhŒÍs­jV3ŒT5Øh`£1¶g·l°Rl4PØh«R]>8ë¹gJ: mè'Í{:‚I“¥¶0Æââ§–zp€fŸ»É_ÁŽz˜³†N¨TZ 6ÚªTcVï€ï:t­O• èåÊ$Œ–†‰X‹ ¬Ö*£~2CßúÔãe&R -6QÝ`››TcVï€{:u­[•!èýJ%Œ¢†ŠX£ ¬0\F]e¦¾u«a&J%L°l»Á6 6©Æ¬Þߟªšý,˜8/}ý¯pSÔ«,@»DÅ8õ €¢üÛÀŸ“ó]ýU°kæ¬)j•j@«ÂF[•jí:ðÁ=/kµb -ZÛFYÓ¬aV'˜æ¢î2eh]k*Ö„AkÛLÁ&¸la“jí:ðÁ}®_µdÍýZÜFSÓ¬UV˜î¢¾2uhýjJÖÄ@‹ÛDKÁ&²l³`“jí:ðAçi~œs> ‚€Çà:"˜¦Çóè:®c@Ë4 ¬¬ÄHUþb4°\çP±UcßSz;wûŽ(P–%É´„ÚÀJ¾T¥éårËæu¨â/»ž¾H'Ï/ÏŸ]þôþõéÍÍþú²€Ïöï..øÁ«ýíP_†ùánžâÿñíî3þ8¦7þÁËOxøÐíà‡—Ão¿Ã9O¾Ù”(«.‘­Ö?Îi8’\壻¬Ÿõ²Žv—¸ãçï)@7/×ÁÊØt‡äÙÇäë0^’‡7»C.kkR…£™,QªÝÜ¿‚ÛØÈ1¶gY#Kð­TUUU¦µéÀþ{ü½s«ˆ¹SAè†d´êª˜µÊ ê•i\¥÷7n-ÄdêB@:©´qÝP“›LkÓý÷20Ò˜RU”žºTóæ6U³&T­W™ÆOzãS^àCèüUFŸ»H)hƒº¡&ü›LkÓý÷’ªÒrçim—smUl¹i‰~TZìýÚ½çØk÷60»·“îm¤²[;™?Fƒ -¸bÉ©; e‚T 6ÚªTc×ê–áY¨®uŽ Ï¥"s2¸ö:ZÕ ¬f©j°ÑÀ:‡£>¥ÜÅHö½s Øh °ÑV¥»|pûÊ–©²ƒÈ„o³e¥M¬V°Ë{vË#T1ßgjò+Ñ­ -d“¥3—ª¿Õ·öì#T1ßgKUð‹~½­+únÜ#&dßÕÜΕ«kZ©Ê/–_jíÙ-dVª‚ -mUª±ëÀEÿ'ëÕ²bÙq¿`þ¡7Ûà¦*ë½”/lÚØd$Œ1‚ü€ž…¬AøïY•Q•çÞ+y¡FîD×ÉÊÊGdä%8'ÙÎÈI»ÎÞ5Ÿg8«çÁΜSBþì.oõ€ì¼=VÝ»îbð\…mº‹k)ÏCÂÍý¥>W-ì‹§ô¯rð‰€³zbå<ðq½wÌX@ÿÐM{úWÛQDí¬Jwxú¿wìmha«á¥ôn—C/ -꿵HºÁôßÍ6°´ª\·ªÚ«7ðfpgÄ?Vè=8°óöXuϺ Àϯú#…}Lj?—yï¼tÛ‘ƒÏëÝzqâ䤸©“í.þGß»Lð’Õ û -ØVݳnð&²õ¨aÖ#ÜÏýGá;GÝ‚àåà·aœP95îÃê”»KÁ‘ø.Y¼$vþ¶U÷¬Û¼*ÛÕ¯ Óâ]ÿ¾45Àå†ÔT+ý–ÔTêéJúç~Ó}ºiþ}εó±ç@÷ŸÇ¦ÑÝëߤPOù_‚zzÕ¹pºÚ9ëhÁ?ÌÁ'ŽV,×~'¨®OwðO?»$ð’Ð ûäo›þEw¯±+ÿÑÓ¦îþÓÐÎSÇþU>pŒÂH¹Î;u-º#ZÙe耗lnØg~Ûô/º{½Fô«w¿øâwýï¿ýôáËï>ÿçŸúöûï?~÷i_~üÇ¿>]à_~õéÓ·¯?<µ_½ O_àÿ¯x÷ÿ…§¨À_ÿÿø=~üÐOùéOý[xú gÿüî79ň:ÏOëGÑ$d‰zºêÀ/W8tì9èÇ—‹Çè1ñiúöGN…îíÂÚŠ¬º\-’4JøWÿá‡@jMDФ³|..¢Uó¨Çs•~^úmͰP±}-¬,ŒößÛ÷5d3›áÓíËyÛ‹jË,‚[FžpDÿjp.(õ wýrSû­+ÛK -É.ìb~N¼âÙN‚’†=mà×Ѳv?š±ìÏÑîG¥Ù“Ç6K‚š˜[ÙQ1EFLŠD²x íTíëdŒmèe†Qâù4§Z¶ ´\*_BÌŸç—Tè?ø˜GK³ïOnð~e&A“'³‹Sm%¨än¨.“/D±r<{|cð¬@§?²j·åøœc°?,ë:ÀVŽŽÓ°‚²Œôg½Ø,Å*¢ 7…SçKslÌS*‹XòÚ$ƒ[´K•ý½õ2ÆÓC–gúO­Ç9Õhf:¶Ðl½1zR ´É0Z”Uk‚QòrlÂð‡ßÏ&Z EH¼Üo~ ‚²qaEÅQ†QÉ{±T”<¶À`U’Çòö -B—,oïî²Èå9ÅdAK¨ecZÀ¡WÂm±¢‚->¥ì¤Ú‚™Tj¥·jg¥Qui·¬€~Cs—½¦!-»¢Œ3a.6ÃHÜ -.ÌÄHRyV¶Ä”5` d’!+÷~½ØX@n1SA¼C4^okøO0%SW c˜àb €5Ú0aïËn,ÃÎæZyYoòôЯûxÝÓ¤ˆ…ì䜲AÊ‚{Š04Uê>!]be~¿)æGt_ë[NÆ­[#޽>à”?´%‡áhm—?X·\Øo€mÎ+ÜY”Õ‚`šµûzÆÊ$ö:´¡©Àg/íòB8äæb&Z¦‰º„ß½]>0C#¹{`Á°©T kRlËè‘—a€±rŒÌ†aÇV¬T†®ƒÙVêb)£®i…ý}ç×iÔè®â”N¸âžÛ샊ÿæ§Ï^ìþþúóü@s8,‡S®¼ ?á©BÌ9Y¤,L•7¶ÀÎD![Õ!ˆü>¶È µÁïƒô´nжê÷­&Vá= -–­ e K5[6Z¶O8KrUx6òûY)–ÊG…|8½™Æ@i›:6!IˆV©&N,è‹D^Ão‚Ô¯Åâw—~.‘±Ê‹W8̦¤‘öýv0r_ - s5¬mŠ‚Þ’aVæSÔŠYß«À&uÂìà÷S ™¯¡Øõ¨ŸóyOÜA¡OûÏ€ëQ"Œ@¨Ì€Œ<îÀRbßvm]Ѱ$+![MöÖ)–8_³¬–ý9ja'`d;YÂ,&ÚäçµVw½½ª$ |6ÏÈbÀ*C2ô ›ÌpiUBµï±Ïnÿ3k¥>e`ePÕ·¹k -PW–a-vz´u‹T3É¢'+“]’eKFßœ[ÇR'Ç0_SŸQQ,ë.¶îOT,€±Ò°1C©vVzdZYFz¬lÎq†³àW²½Îä9pºä¦öµ¤¥„€IÞ‚©'xOnHÍÎV•Ù T9bú -Ý·ÑÈ­|ÕNRdÅ—¼ÁPCt |Çwu¦£b”³ŽL͂Ȱ·­4t¥ì´º¯ U²Iøg½Æa”BngǵփÝïÚê2¸{…½8û®ͧ™¸7QAÆ„dô]k‰´"fÙÙ ;ýÍ<[*¦ÊOWŠÏŒÙ5ÁNêómáñ`k%)E©°5q3D -a/3g&a‡h½­aI¡WíOÂs4N«}YÁ0uŠ *ËÃGˆ¶5Áa$‰£$EŸ.Jld è™U;î7tÿ»{+&vo§£¼Ø½ªªJút€PBeÇÐRžƒ–ö¸þü$Ü+…hQ!ìñ(o€­ÑüöIó§¯:÷‚‚>n.•0» ‰­æQùÔøÊDæ$?Ý]-ìP¶ÍÙ£¡‡¯ržz2!3Õ Ü2K0-ºÂkMDʳãƒqñ ùÎXÝΩü¯ƒ{N,ýÕ“t’ñî’ç°ñ÷Žƒ­Çd> -ÆKìFõ†EÌŽ[‹Ò»wÐW$àLÐë©K±L–^Y\˜'®•ƒüî+ŸÁî½ö#–òÛÁúKÑØEbþ@bÆÑ9¼Ï²Ê:9‡Áõ¥ZKO#hF§·“láûµd÷„çØÒ­ùS‚`^U)%k!•錻|êÅ¢™þ…êgÿü2€xúi±}~ põñ×{[¥ÌS—€”ÛÃH9rÜ5f8½¸¤È½&MÀš˜ pÎÍA)Ug9cŽÊ,™ 0oöIø¨™2}N‚äüû²±¦,9¨Ç|ë`ÿ´Ñ=J€ª“e„é2¸ÖPáŒ=€é¦Ñê¸w$\¸8;9z¨OÇÚàö4 XšYm>âpj˜&äk“ö -wX–Jîýe;‹ä™–Ñ•î‡õrm|€òF:=‰­É¹S"÷œ‹b°ŸIÕÝvo%¨wÛå:oàmTÝðº…8Àˆï£*!òÀÝ_Ci¸`®šKš ç_ kùôÅrãYÝŽ•íHvñ u+;ò¼1ªÞí0Ùx 8h¤‘ Åk8Ègb[º7×ná#4;õÙLCê*Àåõßü@åh„Vƒ£à©ÜÕs?6->A¯µ•íÊ VZaÕ[Óå†ßÙà¡Æ*jÁ(áÏ ©Œ;&þÞãCú3ÇX}Ã3B€ÑšÂ×B þ$<+-˜­à6i|dE¶11GÖ¾Ã~O0…îäâkÝîwUþIøùœyº #BKºÞÚC;Ø<ù¹¸úÃH&.n+Áç”ç á½ÔO¬õ>›kCèÅk’Ñ›òÉïèò…ÿ<¿þ“kƒùý[nIÃÜ: ^+µËáÎw¸>(ÀÑ7mYŽQ¾rSDlW:é8AèeÕ1ìÄCe¶¯{¾Vr×½X‚¥3³…­p°TjÊØ`LVXÃ`ï.%¹«[cÜf’ÐQãY) s#ß´+Ò‡æÚ´kžÙ“à‹ß÷P `5VôòáàâÚ¾2[û£>WrJ–™çÜf˜æßeg>€"Ì& ^Á¢3’z2‰.uy-hìJL«=–²§›ËIöÏï«{ ~ʧ-Aþì¢Fâ¸áî¦ã'a¸ô)¼|à\GÈ}B°q°ê&»ÂöÎrAŸI.}4‡ÆSÁv¾ }‚{Ë+ˆÏV‚{X Ì ÂîV/Hà XKÂo -–n!E€­•÷9 HM=wÀ.XÅ̓ÁÚ΃©\[Yñ.Jä'Të-ù6îÈV’´n&8Æú–Vð3RV`8¸Væ©Fˆñf^^ };ÇÝã|nvÕì‡ðf"›Îà.aÃWg‚èÙ¤ÔƒÛTÜ­šE³S0&{:'Ϟ؇§çg{Üë’o}j•^£:¸_;i|öãOõW”×pŠ:ÔÐ=ˆFoÕÛ¬ýmQ¬®´çÚ)yüÿ~APídé=8$¾sE¤EóêÌCN¿ D+s Π á*î’’Ããßsü=ê.õiúöW·Íí­¾¦ŽïƒuP5”¤– ø,ëÌÕ3À/TFýŒ¿e”£î1=:8Wq\&¥õ^š `0él|K– j"w |˜ðë…)sœ"ê=掃0ß›Vfô˜ßNÑôÙ¦¸ÆŸÿʵʸ¸¦äZéßZJL8T]_øGîQ“fN_-¢ËBÐ8KP+À­“fR)ÜØ iy€-z<ˆ"ûÃÍ7û{µ˜N¥£¯¢‡wÏ¡~Fµöw¡^®à¹ÔF©*ÁUÆÂ¤ö·YÎB¢Š$ÜrœÞ ˜á]éU4‹éë©IÁ$lƒ–U4ðóJê}éê§î%k'@”— ͹¶|TÏñ žµ¤&O0P½TÀÖz}k”ÛØëÔJÊW_›1륯rÄö^eZï¦Xš&îZÖð5Xùaí¥/À´P=»³Qdùìó‹_âðö £‡Âsmɵ˜˜‹™à°wÕ-`àŽyƒµ¹Ö)•þÚ£6¦Àõ°ö—_›ä·öQ#N€69y48Î Im$³3wÑ${û¤‰q°<+žc%x`ïH {ÖÁúzsx¨ks0ÝCŸ“ÖSûÛaq^Züá}m¤ÐÌóÿ7+f帼’9@Ý¡ÿd!B|ø¹á¼”›ê#\åBz¯úÞÚ©€¯˜ý¼/Àj”:õù,@C(º_ 9kɼ› ÍÓÒÏ;Øx¬ytU€#¼Âu¯}èý?QÏæ À¢$‘&ÁÍQË EyØdI–YÑÎW-Í„E˜£èâ¼9 Ñy0x×w‡Í°Ö™®EÇ%¨@ZïãŒüGîm¹ÖƒQWç£Ã’éƒ7gK´™d`k”ñ+ªl‡Ùí}í´mÌ­2À%ÓàŸQmÊGU‹ì•»“#uéä“Û+ÅÝ3_ç‰ìI ; -bEÛ)Ö¨O–=ÌûÛoü~o›ZÝ{¿LTy¼bD­aÓýX½QíΦE°ƒëµø25€\c°ëq7…í‘ ëNÛç`>stream -H‰|WKŽ$» <ïÐpA~×ÞöÚ€ï“I³æ=Ë¢©H‰¢‚ÁÏ=¢?ÿ¤så£NþCwùg íŸý£`¾º¶û>kF·b×^ à»^•!0©Ø àX¿îjü|@ý7õzýl•^o{w$“[/'–u5fgßYNJÒ¤ëÐÏoÃÂǰY­-Cìк(ö^³ÝŸ9»yíÃB\ðáX—`$tß>Øå>ƒä^èñæõ8$| Ží³]¥ó{}aËiô~e‘3–Vüd*6ñŸ{n{³SŒÖF,7A°êy¶E;³„Ú ¹CàA÷·øBÉ\[Þñ-üž&Øf> “ŸŽÐ܃4HÇÙZ4—o'ÑÌ{·tÍùQxnWìÁÙfˆ%Ãq ¤uOÜWÎb^ÌÚÿm˜ -YéâTv iÑ‹’cÙCëÊC÷ÿ­¹OF‘•·!Á¸–º—n^×6/I")³\èHJÎéP¶=åºé‘Ê»•yáÙëE¬ï®•ø|}ÿÆ¥ØnP㦰žå€Öëy&)Ñ÷(ì§OYßÈ‹*QÇê>ŽWp°~ŸÎ -¿p_M«»×S”2x/7å×™ÞZNù÷þÒvE]Ð'îbC2†5^€<Þ`ˆÖ†—¯mìÖ_^aÆ!H­)4?ðx¼d2¼6U¸îlA&(âtÇÓ| –?‹‘ëÌðç*dÄÅ¥.ž¯ûÕynýÞ"Ö°SbÚ .2кw>¿§ -‰âru}6%Èë}Ë%÷Š&õ4H¬¸îlCnnª7Ö«Ý>غG;–çÁ‰ö®äKHŸ§ gÚ_eX±ûàÅGó> ¼Ø›ŠSë“öÀ­x±~£Ç+xe¡ŽÞ°¬Q <ùj\ææ Æ2‡â{ öBed þÖi]xõaŽ úÙ©»ÕÏ"+ɯN?‹:¶Œ°=wËïúǼüQIÐÃ@ìo-°Â.x5chÜ{ï«=¶¤$ŽôìS%'ÒI×1¤Û³‹þ6lŒ„qªA±7ô×ï•‘‚ÔzBÂòJ·½ Xç&U:¹š /pÙ IMAˆÿš7†2[Ðx®¿Æ¬Õ r |Ï´Ñulã™öÆlXý`Òy†Ú¢½q©xUu’óDñ¶tèJ¸›½¦N¼]+Að2Œã£(®èbH É„÷œöºµc_ß¹ nÁÍŠß8|§ñ,§:ß°Éʗѯʋ ÅSYpˆ=}È‚ÈǪA p#!Ýñ%|¾a®Õjl½ûçÙ¾ köÀN¶æœÒ¡$ýèlÔ?'2Žêä*Çíз`c¶ÃúCë Ú°Àr¯d‹Ý Åx<{-ÎK—¹½ÕæJºõ÷QO3ø²q Z?pÒôÞ©[I{k -è´ ÊHÝ])Kà‚Þ0}'žyÇò†l>³]Šò;þµ>͉fz)^JóÓë'¯˜¸ä"±é‡4m2`¸œ!Ê›2´X +áÈ,ŒÒ×Û¤—:Uº(í]Åj_á¢f:ã*.•èM ê$ðfüg÷H»!fm–7Ô˜sê£GÂQ<ýýԉ߆íØ_ &úœ¬­Æ&”¬f¯(^¯9¢?W#¬­jm£Z‰í%l6f¾Zð%<Ð[ï3C»Oç¨ZR lxÓRõ:wPC’xókÙcC‚ºgò™Ï¼ìûü6¼iA6ò(2†¤{6¾õ8·>ô=`;°ýžºioy†zöZºk4ï0U²¦$ãhø>ŠÇÕ¼‡‡ý™!œrÆì„Ì8„;áÙG*jcY\„[¼^ç ߎ‹Ye×,ª(¦RT^\D:ánžÁ£X£#Íøµ¹Š+À§9¾Ž¯@ñ;“j>à¨jT}ÌAÍûÈãAyqñ¦ư‡©#„zc»ìPÔD•°>¼?BY »æ$ó7®<Ë•¶B§«ûú -­ñ.¤½«:$RÃÿ$ÌäGÛ :µá6ø4šq¦öW«cj‰ñ=V8GP£€3€zI—ÃüÅxÐŒùf`ãwX·Ôv7¡£c9Íú˜ æK¨×ï¹Õ(ìÝ ³É×—@ðÌ¡ý-oð[ÆÆ^kÎÚHlqNXE{s4ƒ-ÖšÜ$!CjH §ÃÄ“õ!`Æw?Ú±z6Æ9/ -0üãý«ÛIxF?¸mO[:¾2[_ƒ#_©¥PHy[ßSí²#‹§ç…}êêÙ+\Cï¹)A£Il)‰s4‰™Ó€ \ìf‰l`§=|NŽe?þË|Õ-·yÜÐ'Ð;ð&3v'¶vûÛ^ÙN“ñ ëfÆq›^yd‰±Ø‘(—¢ûí ìâà#%ŽÄöBöE2ò!>,€ÅH¨o°æ:0ÁPâ” *RΈjRf}C³Ï ² E°¼'l;@{š}PïÓàPU@®À4š¶dÞhƒ/—éó`ŠBö•¹Â6R¨`2‚51˜ g`4·Üf›aËͳRB¨•5$@_Í/i—µ[Þ`Q~`Œ¦à$—á€a²™îð=¿ ßLþÎ÷µ¥éó‚j×é$äå•$Âå®Ëö}0X£ÙZ[ÑX¢"7L,(p¶Ð̲°”»X÷á TÌ'ˆ]³M[r½’’^šl [}Ñ2™RkEÏòÎßj³* -Ј¦P†Rñ>¢}{O»Ù­&ŸÔ²?8˜FQSµÚ -ËâŠG Jm€Pk& \!OX«LfÎè¶Ò8¨!Ϥ¤`gú¹Ü¤‚Æ¢Ç÷ «%P±*`Æ,ld=Ä*¤CÅ0•¸±Êr §ìfY»«9¢Â/¦ó~µÉÅR5{Ä*Åä;0íQ´\<ø!©Œ2ygK¨UËn - N3:ò_su[3DJ"˜œ(Ûq ›Ü!ž‡9áxRÒ86‡9-SXÁDèçà * ÈäÓõŽ ÷y.ödÇëàGȬ_uFÅ’8m-fT%oÉ¡:¸¥ƒ-b–ñ,R°ºŒQ$› T¾%Ü‹GY¸cD#³ö6¸èzÔ@{]Ij½¤7" -£úeðÊeë½6U Ã+gNM•eM¢Éb ù@ʰÖõ"l,(8±T‰¿¢¹ -™–8ÛרãòŽ÷‹áB…­ÀS}¹'e"è*æLïä7µØtP -ÜL©V` -{®‹ç<0 - '%„Ëpà²bôƒ®\Yꓺƒ¹i'%{ZE¾/½s9Œz’˘”¦$Ý-Á÷¥ÑËÓ‰d)¥êõcÛä±ËP1–µh)°¯u«®]BIØÔM÷P;ÏŠm¤ª ¥¨Ù"…ÞtbKIMo¹k¾ô<”á€6¨£ÜŠoÚÂN3æ•È4Œ£j_šºe$[õqê®q =ñáÀ5œU¬=sZE¦‹©½yZ´O}ǔƞÛÛ¡"ª]6!­wÉÎl[Á%PF4è §Õ&¾™ƒ˜ðÄk „êôî“FÐ;W+·ÄAòæŒû’A,û­ ô°Â£.ülÓñÑh¸ƒÂO®³÷–çɨ¶|(WppêZÒ.ô5§‰(E'iË÷)œ‚Q‹ -™š3 †2(I-y›³ -æp_3!ØçEv3-€Þ·HÖZÐpÚY¬ƒÇôè”'ï6sè©LÖßž6ak©>3»BV÷×ÝYMëïmzË,`[AÊO Ʊßt°L5l…ï)o«¨)+„Œ·™@Ы<Lðaª¤)Œe€D<'¼¢’lTóìC,&`ë }å4+Ù\Që–Š}ÆÎ0L›šf×´X=êýväg?¨r9Ê„¼Üg¬4Û`ÝššãVp ”¾1`§ѲØÄ¢–ì{QU§øÞòÛ2ók×ç­^qvX#<´— -&…mån*À°Á6ID[´¢è=m& -º¨ˆiÔ¸˜[|æH³Ÿ8tsh^M UÅ(|+|ä•GtŠ2pc­eËLº–°¶ÈÀ"tvJ1Ø…M߳ĶçLûõuÖ–%•©,7Ø2Â6f¨ïÌAÄۇіƒp÷°P°ðúаn•@jó§wGN›úΖy 88áAl¶¦ZØ]‹ ò´¥…Û†5—œ-ÞVÏýK^(N‹Á¬Œ}.$Û]ÚRCŽˆ -}"g¥ ´øw  ÍCL„'ð•â6¤6ÄÒ0ΪìºÂQ0DiQ -zˆöÎ@¯ŽöÂæ7@6óP÷³;`éÔµ'\Í£òPÅÔ×ïÒ`¼$–i(0+ eÐ]óá<´-î -¤5b”fnà2S°`’†:ø@ÀžbúÕÖa‚¾*s`Nkí;_“¼EÌçÀ\+ü00tzˆs…YL€Uht–€çñ~¶×/̼ß`ôMÃAàdNX0Ï’ß%1#ÄÉ{±Ü×€áÀ…= 7ÐOßïÆ¥73Oh¡,n/†Œ >v™šÖv,USÑL§ú}-¸¸J]‚tÛf²Â5sºs¾2º­²÷¹|©pIZ2/zd`LhèWUø ¬FFäóqʦ¨mnÎÀâg{Ï×Àú©`ÚëwÕºkëZ›À``Qª8Ú‚Ìw¡÷~¾.˜ÿiÒ;0Gk!ùãDegªF]»t?kt%[®uw‚‹Sž,âlox+]†a‘±¥¡i›lÆ2ƒ¢«,‚êÀ†¬ÃöÎis‹â–¹…°_ÆÆ•²0’í‚+X@– ûÂÀ<3!Õ‡,2GNHò89j³½^q\`µìå{ugo¥ãg=œ@¤¼eŒüÄï†i¶×/$~™q1;U[ 3¯CEV:Œîþ~rq3,¿Üo¸:¹ìvÄ—Õãæqõáß‹ÓÍË«›Õ‡öòêó¡iýÖo„M7×'¸óÍ£§zø•=P„­Œ>…<^¼~ÿââÓùÉ{h>Ë3¶| ±yôTXÐ|),Ï6ç_ŒZÓ/–Ï7§óïý›¡IÞ†-LJ“ëÅëÅn«ÓÃIóÖW~á››õ‡C3\/®o.¿p˜?zNáЄV7—?Ýœü¾8|lò艭®Þn–›ÓhdÊïº[ÿ²¼øÜùæ«´ãÍ¿…Å¡9ŽOLçüßÁû{‚ß?£¶$Çâ—³›"¾çùfÞ^ݬO?­O>/OžÜ«ƒ¯f¹úÆÙo¹z€Wv’ _!›‡ª=årõi±þ/ûå×ܶ­DñOÐï —ûЙº–déöÎõ“%5šÎÔv&ÊôÕ ‰"X”¥|úRÿ"ÊN˃$@šñ$æ8X ?îîÙ³ÄH¼5ÏX.2©¹±èsÜc» W¸œ°¸sÝ®€í -Ø®€_Zí -Ø®€¡¯€½v¬ÛëJ»†¶ÆŠoWÜI®Û°ÝÃÒ¿vlwÀ&í€ý¦l6$Á/G#¶db–H>?Àî3ÜiиÉ‚è ¬H;[p#²„4ÅÀ „6Ñ„-9Ù\ÈÂa—ƒœÃÍE^1½¾ÃÆçÉ!LI®5'騒1Dƒ —]„ϰÈÇÃAp[ùð6½º¨É8ÖÌTwF}»ÿ~KX¿¾ïuáy“1š ¢~]e2e)ž›×îm“-äX¦Ú¯€<:‡Â¹Š e3J¼Î¾r'6洸ߕBªÿ?'ÜTܽì”Ö6 »Ó­Þ˦îóŠîq"ö¡èìE¿[üA_È'ø]|òÝ‹ž n³|¸¬‹¡ -n}W­È{ÉSóûF/q;r–‹Ìö3ñ÷½v×ÏYêXè²<“¹¢ìFd Á‘úL}PU/ýÈ"3¦ˆ‘S¶t xÃô,Ò0–‹LêJ¢&À»ÄÞ9O>{Od4HEîÊ ½×Ô§+äÊÛ ™*’%œ6ezZ›Ð''QÜ$ fðÕi‚ -nÞ“Â ·#´z„V#„2}ekfF"¯¨ÁoOù¼eê‘mÞdý,‘m«58%织ß;pa,û—w®¸œý1}· H@.Ýÿ uº†ËtíaÀÉùŸŒš‘ÌÓ¨¸ÚH®P¬]2‹£FÀ'1ÎQ/†pÎ*ÞB iåäæ·‡±”b¤ûTÑÑ%¹Œ~ür–u2ò±¯ôð^zæ‘IàÜìO»'²P‡„ñÇ7Œ‡ãÈ4 E,{?Wì0%ûL"žãzr8îi5½YBš²˜F\ª5 ž;œ¢¯^ÞBÚj>Xs‘O‹,U–H!a¯ÎÚÒ@uk5-xM›7MÓ` VÓ\¬·h6"|»|¬·xY.eó^ã:&ªKËßDZfð›§Ý-2x—tq36'š½S쯜¥±Qî›7›5‘! -”æ‹{jÈ’áºâ,•3à MP>½=ý‘ À“˜€‹ÑZÁ“ÄŠu"î$×𺰠©Ÿäi2}ÌÕ<…fÁ7g:Ý  Y’¦L̘`Ôf{è¼? «¯…|èò -–BJÞ[ûÓ!ØÀm“…§GOPú>Xà*«‹C‰ê²(M¸Î¡lÁRsK²úͤnçðÕyõØ;yDS·}ÂßáxÈźè '0Qè~|AŠ_µj¢K!Õ-€¢ìYXàÍ[7m¢ [r²¹îHO‚ÜëÀ°qÊÁ…Ò}pÍÆJ.à·°;ì<£x_¹>üÝöú à‹(礩L+.["¤4_ä‚ ¼Rˆs6Ŷ>Æ‹"nøÒîs€s4"žÉºÂŸ©!ÊJIwçsÁJj$89Q®`”íYç,]˜eÎ-¼Õþ´sÁSF*^ú‘‰Ao‹ŸÀXÇçd±bì,x1ŸÄÛÞ6’ò…ÅØùéwˆÙ”äZs’ŽÞ²á¬Gÿƒi ÒÚ‡ßnÊžGaÓ\—U':Ã*t–¦¿cÍà7N»[d"ð.éþÜ…máœhöN±¿r–R\Å^D¹ïš~Ót ×E‰Ò|qO Y² -“Y¢*‡8'KåÌpC”OoOäÂð$&àj´Öpçv˜u"î$×°)Þ£«åþ“<ͦ¹šç¢- gÊ|ºA²'$M™˜1Á¨‘°óþB óü€B®¾òu sHx¯Ð”¼·ö§C¶°' !O+Žž ô}°\5Í"áDuY•&\g‚P¶`©¹%YýfR·søÚëýÓ#šºínüÇC.ÆÐEoÐ8¡€‰B÷ã RüªUøX -©n¼eÏ¢Ào~غiMØ’“Í…pGzä^†S6˜¨.hJr­9IG"‡w¸ozíÁhžJ[ ñ”Ê[¦Ùæ ÖOÐçm2ÂIisqÆ{ø½†Á:9aqçú‡ËÙÓwÛÀ€äûæ·‡ İ|ÜŒäï4‹Cy 0¼"Ï5î°öÇ;¬™ÌeSE²„Ó¦¸üh[©(̘"FÂmZ -ð'±ReI±R>®[}ûÎúöß·¬o0|«o­¾µúV+}ûU?hí[+o¡ËÛj«n­ºÙ«[kÞZukÕ­U·¦©Û”äZs’ŽD®oYä`xm¢ [r²¹Ü>§AÞZ¨œî¶‰ÎÒD¿¼å&‚áÛ&j›¨T7ÃngØEkg‡ýáF³áÜ–ÉùŸŒš‘ÌÓ¨¸âH®ì0‹£ÆtãµÂ÷|ÅÄ{AÖ½·¬ƒöÝD|å3•)œ@Bi¾È©Jy¯✭(A(ŽEÜð¥ÜççhD<“5\šŠiC”±è»ýyç\½. YIäEBp–9{ä¸IÜŸvΣ3Áqµ DÐÛâ'0Ö1À}Ùuz×ýn§7,þívŠ¿×Åsñýºø -¼}ÂÌá¸Y\È*•;ñhÂÆœ ok IùÂb6ýË{wœ™Ìe7"Kì(qµð"¿  § /ˆtän.ªFÏÉèÍ…ÕäÝši»Î€Ån5gƒ˜MI®5'騒-DU°ÊHàr°S¸©"YÂ)Õ· ê{ÀªzíG™1EŒÄë1À9•‹LjnØ}^!\ßAæ>stream -H‰ì—ÑR¹†Ÿ ïà›­ -UKl“MÅW(ª¤ŽsrÎ%K=%iV£ÁxŸ~å1Æ3„ g-ßl%D½è›nýýÿŠÁØh.§×w™ŠÁáâ?’dpÐùýÕ óúûÛźÿ»üteÿ¡óñUwÄ©áJ=·¬ ‰±ÿ§Ii ¨*N´&NД ¦A.þý¨Ó½¦ùkÍ<¯~íkª²\ÜÀui:ÝÿHNÕÓ7½%¢\ÖpùüÉ—˜ÆªÔNDž<Ò‘ÓQ(¢¹I30œb™Tš¥Ñ`남cØÇj(Já˜ÚÞêøï/gè?ÃÐé>ÛNWØ+ÿ_møié6´Ö[b"µôôßÒÍÝ#î¸0€Öšî’ÎàUwüõü¬*lÑÀ÷:Ç=ì .±ÿ½øµÈy­U—Y5ùÔ U)™½âPÝùaÚ£Æô¾&8êÉÅÍg~â³ óÇr¯é;xzÐë‚Ãp‚Ó–yæ’AÂ¥sïÔkÄŒJ¼u¨Uï4ò ®ñ~÷U€D|TS*‰n ¡´ÌJAðV£QœÍŽ Ç7üÖî¡ ¼o32G¦õ¨†h/O»<œ«ßCC1!aQ$Ï2©‡7½?œGp ÄñÑ×L”z©ð¶Vœ¬2gƒ£^ç¨7ð2jÕŸðæeu<‚fÊ¥l _&| ™ˆ–•ˆä™Ç>zæ»nÈX•šÂ‰ÈS²±ôé,HaØn9Y\Ô, -7®uÓX·¥ðÚ¶ÕñV3U9|È$³9Hàœ”EÁ‰:ÙÚ¨ -}¿Û•‰ß¯šàÃ6!Ô Ë'ø45öß© -ïó—…÷¯h÷Ê“¤,àTIkµ%^,~¨ ï•Ð2_êÄÆ/¿!mµ[[¾ïGe×¶–'ÖW[¶— .¹ËÿÖ{œ1#üj¬WDÈ›ø%P‹« \UHÎGUÁY¥’è.Jˬ¹§Q!|æÂj:1n¸+­Öá -‚£1#óÂCb Ñ^»<ÞÇ£¡˜‡š°(:ÒC³L`ê±ÕïOGÐE ­‡ÖIÑKû4Öº RHL5€X/»ãøT n¹`Ø@i"§h1©þäè}u<‚FfÊ%yµœË…@3-cŒÍO.Þæâ®CÌ%Ï<Õ3ß=´~è¡Ö_<+MŠßW«óÁ§ì=š „ýËâ:hªZE¤YK`Äí”æÓÂ8âGnCW©bʧ{»…à;+EÔzKý¯»ÜºX‰÷7?†7:豺쩒ÕyS® #l†Åô ]5ÈÇe+º‘¥Nl[Ÿƒ7EÍ¢àtÖ ¡ Ÿ‡ƒb_Wïáºt¼¡Fp*…WnªŽcöP[äÖ]H¸ä.¯Tÿ(93òˆ_µŠ¡¯+5kµºÀUE5Xͪà¬Òn34!¥efŸÞ#7J"¬’\X!Dã1Æ w%›:ÜCAp4"fdîÈŠ M2D{‰Òò|„Õˆ†bj¢èHÍ2©Ç*¼?A%´ZûA/íOÐXë‚àdv£ñ©L5€ÌA5Xƒ[®˜5¥¥‰œ¢Å¤ú“£ÿ5öÕñ™)—äÕ²"Í´<Œ16HµDòÌcQµ(Ë~@Ç<òÏJ“â÷Õê|ð){faÿ²¸šªVÇ)¢ÃŽ#ØÖËöpq»ý¥ùäf«¿Ÿ\e|Ÿ¿>Ý;òí{Î/HN Š «RS8yJðHGLGQ–Eå ‰qåÂк 8Õ ¦ÏzÿRxE…êx4µ:UY® -¾«½¿ã_Ï÷òò.FüDƒ8NÖAú­îÈ[<ÈÛhËæ\“<åtW6(ãIRèÔÕþíI47iߢmÚ¢‚›Ï„Ëý -mß -Å ö~…¶ ¤å+?Z-_¡¾òÕöíù‚P³ß íØ è7õ+¯P7B[¶¯w[½¥%R;/AOañ!ñíÜÜ=âÞ héŽ é ^uÇ_ÏϪ «š|j†ª”Ì Õvh—ŸÀ5zz5Áåöäâfœ¦f7ø—Éž…ú“d¸'Ù–ŽU©)œˆ<%»â}6f R6‚[NB#5‹‚ÃMDéPší5ç¤, -NäÐɈò;ãÈœkPæPÕZKGƒdŽ™·ü­´]ÔT’`/Có’ëmSëŠô—Ê/o¶4géÎ5ÉSN÷}Ù‡¸¶‡¸ÃþñoØ9Åoð üŠ£>MÃûÇöñäâfœ¦f7è ÆÙÁÓϳ.“,Kÿ]Ý•g&Ewæþtx¢·x¢ø4Å;ÇÕqÌ2k‹V.—ûf-W`¤÷X°Ür²¸©YÔêH·mÁ眔EÁ‰:Ûh“?`ÛÂðë‹ÅØ_x¼yb1Ü“Ï[i»¨©$)À,^†æ%×Û¦×é?ðþ·g ¿¼¹Þc©©U¼]|ÑíÓõ¥C:×$O9Ý÷eƒ÷ˆ{.  mGwIgðª;þz~V¶IM&߀š¡*%³Cå°?=j -ôô6j‚oÅ“‹›±±Vÿ.ÙÁÓƒPl»"íïŠÉé½9Æ¢LHgþ,AR¼ }Tmܵ&ê÷°D²Ì®©!·€—zIp2©Æ†šbùŠêô.<5-žÆJ6‘ÂÁ"$šØ9WбfZ#©V¿i{¶— n÷2úƒhȘQ‰6AõŠ6ïŠD« ohªÃÁq<öÙìá÷_U÷G>ªŠ ¬=“„Ò2+qMq¯VœÍ¾A(1nø­ÜCAp4"fdîXm ÿbˆö20Ëó„äôÊPø…¡" £ÛÃV¥¦p"ò”à‘ô ¦£P®¾fQ9hb^cבo§*ËUáÌ ›~À\@·î’ÎàUwüõü¬*lQëý†‡ß¯É<ÂÔ«É7 f¨JÉìÕ†êÎcsÙŽØ£ÆaKš l]Þ -¢[æø5¢»'7ë5xó­ÀìàéçYW^§ßÃwfÆ™IÑݹ?Ýj¢ø4Å'©ÕqÌ"iV¾éc?Ç„p¦áÏÒ7^9Uo¸±ïK¨¡(¾á«ãÁ™>`d™]SCn¿ê%ÁÁ¤n¨CFÖ|Euú €š(ãˆIIkÆe)nõ{"YÙm΀>B±Oûø?} -ܧÀ} -ÜÁˆö×ûØJ¢_"¾Û‡Àm è–íC`ÛB`¢‰ýºâJñb÷1p÷1p73-‡ý}ܺ èÓ´ÖGÁÿ*Ŧšàe«½9ðxçr Ñ/—~á\“<åtWL:'†à–“Å…<‚D½(8ÜD”Ž5½}ÁÖ‡©ÒJä𱈶EÁ‰:ÙÚ˜‰ÐOˆá·1‹±Žñ x/Èb˜A¯7ÒrVIR€Y¼ Ì+¬n‹¢- wMÓ®TmT³DXG~H•PúãDú}ÐYþHå„r3ÿØ{ãáæ<ÌBu:øüU¬»ö¨¼ ¶åM-qûž”_/vvqyävÍõí×,*MŒ««5 uÁul[Ä®H S³Ó]”¼S•åªà½FÛ#{}¿1Sâa5Án–:;²Æ|šû=P#|\Ý?Æ“¤,ì¨Ê‰׋ê‚#£l©BÁoF›E³_v=mÃPþ+üP¿¶{(ko€N+švë&ÎbÕ‰ƒ?Û¯_Rš$ŸDرӈ›¶ÊÁy|Žß÷µs¸]©øCIõ¨ ͸ZbY0-oÌb>‹è/É”LÁ[ñö¼óö~@™0-¿è×S5*œsUÖdóáE­[RÙІƒ§-K¯RéÂ]Ì~àÉŽEüÛKÁrÜ"=¼/ô7!ÞµuDz_8fÝ1žq<ˆ2¢OƒczÓ“­ô4†'kái[KD¸é©ƒÈù®Û[¦x„¯i‘"8’áŠqÂ4ëÊ´éGV`Žd‹Dt,8s‹µ"K–Ls­Ú6Å=üôìû8>stream -H‰ìWmoÛ8þúü -N -ß%Þ~ŠÓm±·iwÑlö†k«Yl9Pì¾üû›RmYŽãK7YàZĤ†äp^žÎL?®–åÝKö·äô¬®GߨߓØ‹¯óYµ˜”éøélR—®KvúSµl×ðgùí¶ÄµYÎ8{ÉN¯ªéè—ËzZÝlîý<š­üæåèã¬ü?ïö©Fs:mœa¯ß]¼‡ îéëéx9]T£zKøÑX>ŽztûÁêÑ©Cõ -W-·Ø#7;Ý/é§òͪ¿=TØ=fÿ“ý‘ Æÿ¶¿$Ú‡£í»Èp¾˜ß.ª²ZþVª»Oeý×C?ªp ’¿™ÖÃdZ ’iõ˜¿\¬êqù¶Ýþ1®”|€Vò ÔºÏì­.‹Û²-Ã1:ð§k…ô{ëòn5[¬_³ýɲeŠ»éòàôú|2Ä»²¾)Ïf³gàšçb’ã0ûà´ùDX%‡£5Ÿøu%9žV†élyø£~úºüÄ~HNÎ~|øc5¹üýíb€$ƒ”áûEõ+°X—4õäAy3­â…äý-ñÐ~éòÛüãb–¼8›LØ›ÑçEI$áì þ®¿$+øÏÙ/ ϬË%ã™Ð…ÆŠãÜò¼Ð0±97E“¢°27ìz‡„ßÅ®¿ÁÇ?`ò }a‚³wì_ÿæl‚7|HRžimeá˜Ya´aó$6ŽkØœ #4K¥ÎŒSÃÝRpG* T,u™…°ìpw\µ zÅ7 9…w®÷ðV![­@MmŒUfhìÆ>06Ï[¢;Œ’­Ï“5©qÇ‘´#+Œ¤cÊX"p ˆA‚Dß8F|/ð®Lqc‰ËœÓ6&)ÄšÖèÜ"wL‰LåtÏÁ(ÖHhäQRJqM©]¡´çàõ&#šEÁy74„AçÁV¥Àk`@§p–HZ‡Ææž°á‰†0N@.n•iI -l!r¼)G¯al…"`hGÍ.ÔÏq®\˧a{‚— í„È[¡VP)†±¢„4­ö)ÚÌJÓ(U²1¢€kZclˆ;8iÁ"“ÜrÏÀ‚¯Ð6¡mÖê62‚óa³19“œµLgV i!bÀàBà ̹Ò¬) Wx/È A¡" -Ä£pNJ$ØaøKd ˜Q± M:O>%W %¯IbÙ‹—ìúŸÉÉpWªê‘É -NîHWH=.ayIŽIYxò˜¤[$J['Ãnâ:>8u J^pì˜ôu2Ü‘À<ñÁ)ŒŽm'1 vÓØÉð¨DǺ©Œx=<™½ŽIg'Ã#€æ¨”æá}DRóuLZƒ“;RHmàÿ‡&·“a7½»: îdxLŠ;VP½¾8«sÒRŽ ÅwN905q¾ƒšŽ˜Ñ/¶p˜ý -¸ÔiEÑy"Jì"5ç.¨œ°¨]$ rGI£9×¥Írª ‚]J{ŠœˆîéPÚë·u»ØýtMÐÒ"ÁK]3´Äöt]DZ¹=½‹Öªßʳ‹Ÿíš¥¥ÅÂtMA‡ìrh—¯§ãåtQjlA v:X,f°ñ'¡~…³¬««ÑÇYùv5ø^؇*ÞôõvQ/ me(>Ç4DŽ…´ª „1 .µôÝÈé‡r4{7‚ê+Øàæ.gÓqy9Í ýy[O'?—ß<_Ó½ú4EwËz„z´@Û5L\ƒ‚uæ{§ÝÔ`µ\.ªáâ3´wq3õjv{‚¬§AÒ›ýg7 d ξ±sM°³YÏ ÍH¿žú—Bòß$üÈ}Æ|Q&-"7_~‡ì)°£ñ¢¹“æ¸^ ˜7ç #ŽPSÓ Is­ƒî0lGq"ɱ¨â ¼ppŽxÓÀkIÙ|Ìy³f^Ô ܘ£ 1—˜Å‰‡ÅG‡Ø¢¦Â D\52gë£Pè0o·pEJ¬×brßn<øÕ0Á+<çs¯ÀE2øˆ1pUU£y9a7õh2-Lê%95uè`ïâæwpƒ}ÇXÔ€4ð¼\WÀÓÌ {v=ߨhvn”’³Áø@ŽƒC8Š\!GtÓ`¼ºÄÃsbZ˜FfšÇÆ “tç,¶ü†O{¦Á îìøÚ£à¼…Cwl°3K"Hµ8 i»6vy¤ä¸ÏÉò`'Ã&¨ô6,-Ð%zÛÉjçF ÅÍ–“û9áˆZëäžÌ-+skfÁ(PÄ>Ã$}^—“é’êIo’†—@.´h`ny^hFŶ)0ŒŠÂJèò DêÍꀦ´.-Å+x,Ì|¨HGŸô©[4ú°!‘c«¥¨ä÷_ðµZø¤¾…&kfa‚Lá.‰•¥)Õ5kÑÏÆçö–ûÆÍA 0i¸Dò­š¤7lŸÓ˜C¬A¹!Ã(n†ßs²LÐíbI=ÜébÙ:_$Û§°Í =_Ö›šš‡À´™Ðm–F²QJÂÄËñ¹Àí<‰.¹Ø¸E€4úýË#¨Œ´B<Ã0{=Z–o¦ålÒ-‡|ˆa5™VBÃ[Mxn4T·°‡C‡ºkB1xXÔåTz¤Ö¿7à`CÞ 99 ˜åFY p#­6M@c %9d,W¹4Ýx‡¹çŒ –ûgÆ6ƒG$Tw ¾¾^ ºG¬ªÍz°ýå…ÙûòÀ¾\†µÏ$üŸŽÇ~ÄôìÀxöòìç fû¶>óµz8j¯Ÿnµ=ªŠê¸OMuŸš¨Ä=j‘š+Ò +sÐ+¥rËÑ q3Š~]­k•Õ;•-8ŠÂâõyPKªxÁåA³îÁÎyì/X‘^ é•à^ö0Èý@þ5W"ªW„ÚØ 9ß§LÿÁŽRÆ+e¼RÁ!aØARJýo*Ù-•Ô¡*Ù}*©7à&ÌT;>ÜT ·|“îtW£mkÿ¶Òë ½ -ÜK†G›ê‹Õ1ª/bv)a¼Æ+̆G—º/^TO¼¨û⥣÷Ø’BÒ#Н‡Ç¢7éNtá±O¶öoÉ/I|ªn M<ü>"¤xOTðž¨à=Q±CzCÒ’ÞÛÜÿ>–x_8ðžpà}áБžòÏ< éǬÔ ä¦GÀŽ»ÖELGfÿ¶õ‰¾%?bÇR ¡F…ßÇÃΦôzKú.ò7¥×{¥7$½¯!½ÍýïcaçûYþjÝP¼Zœ¯©¦wR -Q4ð— '…êËnż/·æÍ£ÞDʺ¾œnôÊÌ›w¥yeD3ȦQìì–®Öl]Ôc á›*ìçÛ…}(÷{ì›ï¯×·²²È7kMë1±]TPYÚÝ*yîKÛønW=\E^l8êû¶²Xœ Þü( -«g×ÐÖ‹ÛÉâKÕígW_Ž òþe³?Œ;S½nL ËœÝ$.sÎA» žà\;€Ú6åbMIm¦iò_ö«®·mc‰ú¹€ÿ_ $iMs—är™ ²|úBI´A àÄJª9…óÇû˜;³»óARJœ8¸è"ˆ<äÎΜݙ=£ Ÿ›Ú5UæsW×°t»mzÇÑŒa×â2ƒIÆ`'ã@4À”{|­Û‚8±E˜¸ù)ˆMÑtmz‡}"`¼Mž·l†‚#„¢'«}ÊÆ°s×nÙ{X´›¢iÝýlï7ØZ‹·Ù½ýýÑë××çÏ–«°GÔþe„ô¼BHLQ·Ž!à.¾Óä.<`@ØPŠoofOÌöž.WÏf¯——§°X?…š¾qiúõx<:zœ–÷÷7ËËóø(9 øtùj6µSp÷·ÕÍÙl*Swr já)îû¹}³F¨¯.q\E_KáíoðóíAÈžç<éåÑ ×t•ü[‹ “¹Ÿîƒ’ð™2¡ -ë' .Bƒ2ÕO×µÜOs©.„ E¿ün¨ö˪@³)7£N©)7KUÌÆÜ ƒê’«@©ªÀδ‹™Ú²;É·©ÿgékoŸ¾Ò @¡n+oÁqWB+_ÐÈì¼ö¥3ø@þ /èÉ­Ð$P™”DРR&ΫµfxïlÍÉf‘–º¸UÍÞP²Í·RÏUî¡·2üU˜²ÉÒ×?OGÎÏÎ{ò™%ô'”36dI:$ œÃ4‡øÝšÐ¥Á¥õÐþ4/ÊÎæ \ÉÀ7AÎï›­ŠÎ:Û„I„e¯2a´É½ƒÃˆÐ°Â¨JR­ÍëóÆÃAa+Pº`f׺¼))q‚‹¼ñPžLÑ@/ˆž¶ÅJX¡“°!vË:/me×µAþ”†VPÎjWa¥‚ƒÇywë¼²M½aÖ¦É}[רº¼(­ÅªØä3m8¼jSB]?Ô aœµ(ð õVCYË«±—…ޚХÆBÚHjȆ¤Û{rrõ®Û¼- ¡[ÍNï§šàñÙüâ²¢̯0EÓÛÇ?ÿkøƒ^OakÏÒMØôÏN® s°dÜÇ2ù8ðÙ{È9(½7ÙñS^ðzï"”ìeüÃ/ìõ?7¿ƒP|/þzµ*øktg'ørp²:yyd›í㣶îüùûãÆÏßø|óãÿ7Ï78þýù÷ç[ÿ„ýùéçŸË¯»}°,À9EëØ/T¶ã¢õô³Â¥Í¯?|¸É°ª*9°3ÅòË¢`züc—«ø[˜Ì猪> -§=S±˜Y¬žŸêPQ“=)Ñy‹öƒëàËè"ø_Ãÿ· tÅÎt²P 2|-¨‡¿ &úB¢'ÀÂ@c&*cg -:£úR¥Ró«µhЯW;Ó;èéÇ-Ý^«9v¦‡a¿„ŽîÁó´å×)ŽÑ%õ¡oe£ëÕ2‹6ÿ0“þaÐuýúêjvù~v:I>/]©¼€-–‹¬µmØÑ¬¡a7 [ƒ˜šliàÂÖì'¹€Ë¶j ;øöS›sn×`‹æq«C+f¡Ï=ïb…i÷/â÷•w˜-&>!`5uQV‚MfMUé6‡Åñʶ‚ÑTÂlnpá&]¬lš*ãpQWM´] mž'@“m GrÄl\!Á…ñ®b‹ëúŒ&¯Jã*rÞÅ¢á6¯©õäÆÖ§![ç}Çëbs^‡ÛæRM©Œk„¼Œ½î`i“q^(vA-1yªV˜Ãár²­ZáWHånÏ+g: j,YAý­êRQaA¨š…u^ûVÓ5AÌE£h¤m -½î - þBdÃÌO¯èc7 ”€“q ¦¸Õ›ÚwøÓXÚÚ¹ñ”Iiûƒ¾êæ ¦œŒþàª-µUi\é4! -5ÂdãÌ» « ¹ª« $U†ƒ¦*£®2}¶C«ÈIj(ÄUNQEƒÁzR·š?(1pu ”Sv8-òª²¥W)ÜA -cþ:†(ƉqAøcO…>ކ ‰7ZÖ÷‰»KHÀ­ëR§¡^ jÍŠ‘ÊuªÑeaÍ\ ¡¥"Îó -4”Ö@¢M fMCÛ¥Øyn¡Œ=Ê8 -‚$ÎhWß'Êì e*‚­;G††Bd^•Ê»“ÆyMY“Û²)5c è„F….÷ ×j±«Ä˜@̘†02¶K¡ÓÔBû'„q I”Ѭ¾O„ ¸ §-nàÖiÂ4€î˜ž(}çx0˜?U‡1œ¹ÔE]s¥bL‰1˜1 ahl—bç¹UZ’‡BGÁÃ8ÎdWÝ'ÊìÄS!Éø6µo´Â5_ù¤‚$jsÐ^Ý+}G’w2*‰4±›š[‰»Ð!¹Fk;üŽ}W2 ßU“œ09"ìQºNFQälW€0÷xÈN Œä‰¢Œ ”ŸÔ‘¢Œ4”¢Œ„")Æv P”1$”)(†F†9xš\Q–´þŽ¡x<—ý/‰á( ¡ˆ$!$¡È$Ý EŒ0E - áM -7M* ‘_—ÂŽ5™T÷‰¡>Zp C„P8$T8ã’–†HðE¤‰xLÒLl3Ý EŒ0E - ñMŠ—fU™–<ŽÈwCÑ’M¹Oõù@Ž<ß~¾½3Ý]®æ¯Wóåâäò&{ˆÐ““«wáªÈöö—˳ìÞÑâýìr5;½Ÿý¤áñÙüâb¾xÛƒæW'¯ÎèíãŸáßux>º€¯ÑQ==œŸÍÒÍþìí|ñìäj5»èÞýÌdÇÑ‘ƒÙûùëÙãË“›ìø)/àI?ÐûxÓ‚Ç/3 =ÂÇn~¡ø^üïùµ"«à®ÑàËÁÉêäakº}|ôÃÖ>Ãg‹~?Êý]nuéêûçû‡?köÐÖ·Ù}›~ísï_‹SÌ<¬¿PmŒ+ÃÓõõÊPݵÙáõ‡7V°X}Áüb©k3(-Ç ùá¼¹Š/±…É|ñŽêÖ£`pÚ3+†Åu7ÿ†›ÿÀÍ_P[³'Ù‹—Ev -ðñ³íPN·]šôyà›þÓé¬Ü×á…µm 'WÅî‘{FèŸ@@9”ر¯d`Æ¥þ“ÑIBC›ª§NVì+ ¸Aæ -Ê͹šÍ1Z6M•ÉpH´!$Ú3<[')Öš æèy…GÆk¹C{‹pîÜ-–‹¬µ>‘mâId²H!›;ï£qZj;ŵԚvâ¶uº2¸Í èˆRM ‰KPWM+Ÿ&àeeG:›‚|îì KøÉ¾dO ¸ÛL:7”]ž5i nU¨¢–¶Kt×¾Õ”N"ê‹¢QôÒ6…Þ? -šÔ,+0ÀÆ™'v¢C2;Üa™ãÑ|š@Âò€¹O°Lh—e¦$JÝ—J4pÏWý,ÅôÆf°Ë2\·e£¶> +¦Y#³ šh"xæŠéÖ8rº[ã(8©qLÕ8¨×gï¿ÔWmo7þúû1)n×|_nûÉRŠžï¤°/@‡ƒ¡ØJàƒeŽÜ6ýõ7Ãå ‡+Éqš ÐCbíòYr8ó 9|xœi#d¢%˜X€Ê§£D¡~¨Y†¢gœ™C(hÚVÜãíÀØ(ŠF…0Ë,W(’P& žŠ#’eöY’Ì‘Xb­Ë63¼ÇÚq‚=¤6L –`"Àƒm/ùô0¹ “ªì:eá2Zók!Xe½¶ np¢I€É- àV‚<Û&vØI,û*‰åˆ,1¶e›‰Ýcë8±ª“ñ“O‚)ö(J{b'Âd:ÄšØ­yí;T÷¡‹>8_lK€y- àU‚;Û&rÈI+{*iåx,¦e›iÝãêUÛd5­L¡Àâe,ºs&N7{ÕMxE¿¬,Ðèx°‚W 0¯¼JƒgÛÄ{PòUËñPŽ9Ûm&v­Çδ,íà©=<+U/_%£„QØ$õˆÒƒ’QŽ’PR—„‘ú$»Ô–l2&ÈXŠ˜ì#4·d’|”LR„qìÙ®h3“S~>¯W%“„QÄ‘­‘’€’É,%‘$' #¹If©-‰dL)°0Ù%BòÔ’GòPò˱“0Ž<›mæqÊÎçªä‘0 -˜Äïñ¬ø$$ %‘¤y\Ö—l7·%‘Œ "–"&»ÄÍ]ííì£d’âàq;Ù-mfrÊÏq&¿{ ?'§÷»7W»›íÝêþSóýݯÆ×g§gÍéÃnÛœ¯>îÖ÷7¿¯Ÿ7'»û›»÷Í_àû`ôzûv}yz6\¾zûq}ÿËúúòïëO—c§ÏÇnð7ÓŽÌžúͳÑÉÓ3­.¼»¾ø´y»½Mmw9_¿¿¹Ëȳ¿n7ëç3ÕœÂß›_g³ï°õ~^Àß«”Ö¡7PPµ‹pØ+übäòÛ+j Êm (~³‚AzìÕ¼ù¿ÁËú(m^6ÿú·j®q®ó™u]uÄ…Õì“ÍÌ@eµk× Öc²0‡³ mCÓ @-,"¥†ŽE  µh­çtiR£ Þ©Z3tÂhR¯!&UƒBa"±dÍ¡k@ÿ= R^#„¶…åiÌËÙ»™Qã0’Í E­rKúâaì†aPæÄÃÚd\ÞGPp)‡š4ÜÝú)!J¯‰è6¬ÿ#kP5'óíöì™¶?¯v°ôï~¼[½½]ÿôps½Î«Ú4'gw»ºÓo¶÷»|ú°»è¾³ÊšOT7®ïz¯`s‚`ÕaH‹ìä|½º}¹‚ýòŒ¨Ì ·7Wë‹«Õ-쥟îo®ag†ýþÜç°+>îîWHñàK·ÓÏ«»õíåâvûq=Øí¶w¯~YßWûëaÜcš¶×±Ýâx³hÜ,ªy? )U–IÀd”žpŸñ½ÁÛTúÍw|PÙà™V1.¢ü…F¤ôÁß%Ï‚ïÔÔISÞÑ^´œ‰™ÄŒÂѬ,%Fmà·ïtº4àÓÁ’F<¢øHaÞ–ÎmLsÂ#MŠOü„'?¶1ÅÑÆä<âÈGLtÌßb]}}w·Ú¬¯›÷÷«ë›5¬ ûW¥`k°f°85êØÚÍ›ìhôÁŽJÑüê‰çO±R-"éó9îQØ%]_–Xâf3k3G}’ÖLS;òTœ‘¨*ƒò·ô)ÇTŽör>żœÌ#)2ONØ1ªæÉ!¡f’"¸,êh´ž¦è¸ÅùS,ê>ˆ½æò¢Ó± Ç­‹˜×`5¬Áh¯ñB㣠?”¿ýÓ*…éð>iA·’˜l|5WVþ†'¼º¿iÜìô_,ä -«þÄ–ýƒÿDÝGQ8ÏæóÓ««‡Íùv—Šª(¨-¤ 6<Õx]:í™zÄG}>èÁ=ÉÇo}¶¹‡¥lýáÓLÿ¡Óìÿ(Àow\o?¼þ0Ô—ÛéIMJø ŽjEGµ W°‡Z¨›ÔJ¯°¥ly5üÚŠ­]¯S£u -aÐ**nâEe|íÓÀ·ÔOÜq0ŽM&áe1£·%»56 «Š©QÙȦ3šn9~ àÍÑE(õH@k‡de“ß’™ü -·UïMŸœÕ A`°jˆf23ŠHJo9 •)JÓ8´I|äiÑö€{@]M#ÞEÙõ4e1ž2TÞF7ع¥H­ILö°U¢CW(ì9òõrÎû6z:Pð”ÖNclzðSÁát5p"ÕçÙ£VçO³ŠÚã1Ù!IÛH6Ç…ø’ ‘£Â5QM)¥”—…6Ʉ̑päëÅp9=á©s2!À°Å -x¸³1±óÓ¤.“ÐÛ'£cTCÞ÷:5ø>í£!ôé:vÙÈÓYÚ©íÔU(_ûñ´2`lN i%]­dê6á¦áñ&‹ pÆÂ–ÿgú†Þã5+Û„ ð+N™_9²Ü¤@Kà‡šÜ¹Ø÷z1}qk1“þÊP~ÉR î=Þ 5ˆ;ð&Ùq~(È’ÓwQ x ܆;Þ—nÉû #)©—î9­¢-Òq ›Ë½YRùÃ>eÚ¶j“ Töš'4¥9 ½:½¿t#þ>Ô‘¯N·xˆÄ‡û\m/ø?«í)ã+^¦å-á¯-Ö¢,v—OâqΫÓÚ=ßá\E ºÛ <—Þ”0TÄéÁYâ91Š±Ú²Ûåq,øÐß.5±#âM±)ò6¯£ª|Ù;˜/æ\*´0&î²lØžÊ3ç$Ìài#mÇÚXoæLJŸJ¢è‹h'­âQ´™Ä?€aˆ0 Ëx;—*ú6N5–Mt’{¢]b,ÃH ¢Ñ"pšJ¡5Ë7Öìš¹fÏ-)º¤ëèTB}+£³ ¶Ö´!!L’eP'‘äR„=Îú™¡¦•$…ïÒø”YÈ![BSfÚ‡ªeˆÆ½X¡óšÚ*-Ë ;ïàÁ7&…ÂJ3ÏÒ!Kk -N‡4Ç0²™„ón/IS=S@8Ѱ…;c˜ (•§Â'9ñÒ?áÄ@’3ƒÀÇÉLŨžò£°i¤½ÀZÒ#òQbX$˜E“í™­O%ðN)m*W”k"8GPTFušÒ%±ÑÈ^41´œ›ÊøÈQTÓj‰#\M{‰å„ÇL×›Z-UÌ9Ž8POÏÉßPrCl -f[:$­L ¥„)ôJ<)õÅŽ…FÕi9mØöãá#ÔÑ©1@äûQÿ`dþ9Ú ÆãëËãÅZPÅ¢H¢_ÛígÇP -¸ð Ó™qˆÓY†¸à©­zŽXêbquECGËuRIa|³ãâhT/“˜‹c%x*Cбü9çb>3Žb‡&gTÂìË ¾v s¤ø¹Â°##.èÊ.÷”¡Ëžj3ɯŠÄ¶‚L8 -³Y£€ÒiÚ…5û °86ÂA‚äN©\I9Ü ¤¸RlK’ÒäsÕLT GRf´ `ÉÙÞ4‚ R õ¹¦u -|âD²3"°$d´ ÀÍŠX@j1:)Åø£Ê5—WU“+Êi¹ÕQc¤·Ð±4™”óƒ‘[òNÒÒœ·8}í—0wP#‚šÈÌ=iµ4rè¸S®qzJ‡–Ì>ra4DaÖFêvì¡‚ UýMÌæ‚8JЏ(g¸U|mJ%‰E* ³l¹ï’Å7ËÚà¬)€—¹±bCÖ¨Xg“V1BýÁ‰Žx5 {;äçAÚj– ŠT+[òµ)¥$Šg±—6T«_‘˜Vºˈm´ŠÍd¬Å·$… -ÞÍCv -Íäð”.=Mˆ$M¥ß„u"©Ä"òò„ @¢_€†?"¬Çlè*PµAü¢ŠÔJB}FI)µ"J%o\cLß`‹Ý¸X‰+‚jx§X.ËËuP©d*ÙÕ° e¯º²QrDÉ\.KÙå:]2Åšze:Ûq7ÄQÈËMe€èŠÚÒRè’À¿Ï°~ FËîztvºøR,ýPám}-i¶µ®ö³ 㞯L6TŠºe {]«ð2ìhåëµ,‘µÚwrI.›û%üè·–B+BêE…%23”nmo£ËÆ2÷ “"µÌ³d‰*mdµ¡¬¬Ù ôÆ;XUXvuZË”…W±ë+wÕYìUPkpÆyíÓ|>º,&Ñçåh2-àvköÅ]Gwx‡”Ÿ;,ÔüÇR©‚â6\0|‚º9lç?æ 8î·Ë'¡{œÿN͉ÛãÇž:xÄ©˜X-=G¼ qä|™ˆ¸ì´#¦O›±ÖŠÄ*FùÚ ÞF\ÛÚ·@kcÒ½[|¬îíâ¸4¶Ùb²¬2¶i»˜ ÕènN x²ÅÅ8uðˆS·¸XEWâ,œJ@·KQô}kMlîb•&e ‚C²kÇDé‰Ë-yç¸H܆—Ú”šãÜŸaÚg”\—7¤r•·$¶)5Ç­MJ=U“2ùқ䉞+ƒnéϰE¬–Åèô|1¾^ÝèP ‘è˜óZž¦J†´\ -ø‰Q’Ý$V†5m¬‰~;ØÞÔONÔˆVoËô8ØJՋðè†U{ÞW6i}$ËeŽÐýÚÉrn }³^†E7¬Ú‹ð¾Úy´ 8ªÆÊÓq†D’…ÇŸ,–ËÓ÷‹ù‡åt¾Æ1Ý®'Km~輿â—Üù0»Æß£³ãugï`²8+¢Áòzuý:š>Ëèh9!ºó[ä?G³Ù•üêb:;?ÂøýÈDWë^t¼¸žOúí½ûQ·³×dPñÍÍ6º`x7­Ëý†£9ŒzÑØ<¼-Ç‹Ñ,êFŠùx:+·‹ˆ‰ßÚ`­ÿ²ÂûüóuQî ®º)^DeºÏŠU?êySÃ7 C?±ÃZZÃ%›jc#™ Ìü¯aÿÈ,G>øæà—ÓÁ17+DÂáô Ùs:<ÁÎô”=•‹}X@Ÿu¥[œ›l†—ŒùïkÀߥ룎67NÆ Ö87ÞѹVÎ¥'äXÌUr“ÿ÷8ô)³-«n7Ó -4TÕ¨ÄwY?*èŸ~$èNÕΪО¼ÿ¨ÛÜ’Èr#ŸÄáåæH5—¦µäÓ,1@’;Ì7‹Æ´æ<6N{Ä·Úài=êüxïdý ×êôÿ>_|Ërï`ömµþíd?꿇ÇÐtúè¤_ŠrK¸¸¼bè¿›ÎpQ2ÁéÓyä7xªïý°å¯À®ýLWS´[ -lK8YÆ¿?@Â`´šŽ7Ù—‹ß‹ûókù0;ZFHÜÄ ¸úb}\Œhk~ôÛ‚¢­pI'¡ü4€’l™@vq½Ž:ÑÞ†¶óב½îDý£åzË͆‹ùäzº¾Ï¥îÂË>ÀºwÚ‚²jK•!³ßÜ蟪—…‰Ä¿¥±Ë{¹ÆÄ€7Í{κEWÛñçvƒª¦A+ehθÄxŸVÅÛ/Åüh2¹§•wivÙ8'ïÅØAyl3%ø·—Z˜„`\ÁÜ“»DXÊüöƒ­r‡³b>y* ‰°'S}½šÿÖ‹túoÿ(Æ×ÔA>o«ÖÍóç]æ¾_‡~ôÝ.T½£óóU$§nçËïì¦Ø}߃°¿–ÛkÈ‹aÅèíù9Zvœ®Sr÷Ž®×+ fô¯hïÍtu5}óËý–å*c6/ÿËÜ«s¯zò¿–.OÝ~ž—ýåÅϯؘºj:;0ᾉ~d]ELìf¬}5nH5Ò`äaÊáðÂ0«ÿYåTމG¿f>‹vv2¿¿¿ ¾EÙïå½Ìï+¬GcG;‰£|D8¿¬—±P9°U/,íeÿ‘ -¹^…zÚª™`”Ä --{%©+I§ãÌ&z£ÞõØÛ¢ödä0ÇÁ÷x2î'’%åˆü -¥`ÆNúÜãd‘°Pka]5 œÂ4†¸ ~ÔÇ´rL+>˜YUO,{!¯`ÚHƒ1 #¬&ÄgÎyhT¬$÷»¬t‚ëFhø.A£5†MÑKC0xL$BbÈI‚fÆ*â£U#&"ÜHŒÕž¡Â0(!áÖ -I pIhä’i„D†bw0±FJK²X7Æ•Ñ"DÀ±ËK4b¡Ú¢õYq-'5Hª1 RK¯E¬êP”B˜VÆË4C1Àvð.G ²ƒ!bÇ8ZZGׄÅwøúÄÖ×Áx˜Æ?£YÑÛk·ù8Î2º -ÕÕãôxû­_ÇyyÈ ÆoBþOÝ:ާHþìÔŸïêï¦Kµ >þ'—“+äñ,é…Ù4îŠ÷½0Á}—qÚJ¿`BrŒkUUëBÓ©Jg]¡¸ó¼Zï©â¬`©…ÊA{èÅÛþ䇻µ£×ÞóÀ¾gÓ[Ϭ ‚Ñ4£Œs`ü'rqÅ ¹K¥$—æ‰E3ÑÀâ“+Óì]Lg¡&§××YœgQ>Z®„ÅFÚ×(‚µ³Ôoi*TU·irK¡@³è=ËË“ë,ß/2ìËãfœO_X­ªþRöÒ/ endstream endobj 183 0 obj <>stream -H‰ìWÛnÛHýý_Dêû%,'cLf'6äL&‹ h‰±9aH¢“ñ|ýVUwS”‰•Ë ›…-X¦ÉîêSU§ªW{Ùô¤º<:>ûc^¼'c­ºIöS•w{Ùø`ÙœÙÍWeÏš¦êÍ‚ÍÅ¢Ëfãhǽ˦ó"¯¡>¯Šçy[æøö­Góæ²^ÖÅz½,w•à`W´qéÏuAæØT¾/ž57=*VE½\¾ß~7ÞÚrjú[].šeÔ”õ9¾p½ªò«ð/®žÒN»+àòAƲ9¼-|8}^Œð2Üzqÿ<‹?26‘F8óðô×ìå+–-áá‹ù¿XB€ã‡Ù(^1ô&9¿å»NÍ-t^LÈýÓ-è‡åEöp±ÌÛ½ŸåërÙ/ʌƳ -–gŒpwüžÆ%÷À¹éór]žU·ç%b¦üM‰?¶Mà†¹ Äß80ôå°y·BÇ7î^äeýî\c«ê[‘X›$;þxN}Œ \Ù4;ƒªÿV×Ë êsYjÎX0ê¾ 7|ÏÎa÷l6à³·"fË *P×Åã÷E}¼\þO¤‰½Ë’ož%"õÿ“$zGb¾0K~¼K÷χø»D{g~>+Ô£éã?‹Å%Ú@hïhúKÝ|¨ã›GãGm³ÊN/òeóF‰8ŒM8™¤Eß@Pn"œvùâí—KRwÞÿ¹äõ™içþô`´ƒ¨6õò²ìvqê»”ó—2ñí 2Ló[ÌÿÞGJõ°n’—«B¶«!>>ÉOž\®‹“ÓϪKõmcßm‡7t?Ø.óöí^ØI£ìbÝ.†ÿŸU5‘¡Ó†³ˆÙ¿j•—Û/¹hÚ¿ˆÖ‰íw5«œ`oª1,b˜šë“tÁ„Àžã7*8ÿláÞD{½¨‚Í&l(Xß¼Á£Õã?W9hé¬xÓ´Eö¼h×q¼ÿ®M÷;ÊðÛ×G§w|'Á;MT”0{qøIÄàç%ܘ(›Ý§o–I­äDi«<ûD î_e«¯¨ìo4;ÿ£óædÌK‚Ƽ0%¼×(zè÷Äø±_«qw#æNÚv|‰¦U͇Lg«îNãî4î37YüÕSæ꫆LqÛÄx7þ šùîæ—U÷j –§å»UÕ«%E.šÇéCñ™ï΃ÝÃÉc8O@Ž»Õÿ:øÙ¿~\/ÚŽìZãw^?mê“V—õùýûáö¬€B8É«¢ë -²ýälgkÇ/ç°{ݵ9÷j¼~ñ×èúýÑÉâ&-ãß/Ê®ÏvOv&ôŽ„„ôÎe¼O \2?šeób¡™áÞ‰ŒVÍ•ëdz´ö?E…e–aò=ÞpÝQ[u\¦¹õÒ*Zzß;—V^åi±sÒ K­ñÜl&ÃÍbD…0Þ3ôÜãLöVlÿšŸu—Çõ0T‡èuÞÒT%¬Pø:f¬¢ «3øˆkáÍÁK!÷¹—ÙѾôÙl_éDƒ­†(æJ(—BâƘWôÁÐTμc¸†+ÈVAGû¬4}È,,•Yã,2x<ÄZi‚ Ù›¹…·Žö=àá^àVjÆŒ!36hxx„oüîñÐ>ßÈ6€‚#ŽTN9Dv–K¦ S’HK…äH€ DƒgûÚ'@¥¹ŒöHHNHM÷ð‡ÒˆÈLH©“ÄL‘v< -„Io EHʉ‹Ì9‹&Þ€ã ãN3'8òCͤ I­UHB›˜²˜ö)aCG=šgžU†k¼ó–Òaª ŒRÄK™"ƒOS 8«RÑé´§TÕàÀzDEІÊ$‰¦äÚkI9Ã]n Ý‹ÒÇ;Ï(*‘d­˜¾E,cN-ljk„ ùo#X§\S‡0œ‚:L½6öŽaç¡ÆÓ‹Ÿ„¡ŠÂeÈ5õE 9o)¡5‘cŽm'æß¦(õí~²€IÚ ØZHý0W)ZÓŒÐwÇXPJj=2ˆM¼*kƒZèF&¡åT–j›hÉVžÊŠù ¨Ä«$Õ Å4;ƒ3g˜¦ïea<ÌÚi|ÄïÙ9”ðl6Ú^¼Á8}{uëV\³ÙqÜ..Ê孛Ⲹ/¿³ zéå»wéxø©÷†e…8jªeQgs8ÖÜŠ3\‹`ã'åûbokOø¼¼ÊVq!m9¨®Öë|§Mqièbã£6¿ZïÁã“óÏ:ô„^‹ -Ú÷1¡C1cHŽáhã9Õ;œx莔ü#Q–1fgßþWA `NÅ?PÏTòÎ/”ˆ›ß8·á¡Q‘tv£¥¥¦¢aЧ† -=Ô’¸©d˜Lö\¿ –j‡rÛK'ˆ/ š£à³–À´[êfªÿvküFaK -M_‘£¸x=¼`VǦŸÌº~)&kà;U¶å%7•uA¡{èÐpaذ± ™a? ÍGËí~Ç6Vç.ˆu87ØdÒõ‹ˆhC‡¤YÂ&ÕöbÈ6Ž˜¥ -ãñÕõ¿1/˜¢¶Â ßé㔦ƒRžÁðlM<×$[®_¤€ÑaóWlZ0%…ãŸÐ¡I§ Ü›Àößtl£¹Da`á;ÕÖïÅYvØTM›µÍ媯²˜Ì Ðÿå¾ZÛÒV¶ðùþ‡ôQ¼lE·€Ú–›(nT -j{vké 02dÒɵ¿þ¬É rénûØžµ$yךõ®ûdRYŸõ/3‘ »]ÈrépÅN…‹tü¤æ_+³n]¸{Ž?¨µ` HyƒTñV(wfká4ÓîüåÜûŒ7Ÿ½¤f³3—TÏ/’Ñ”¯¶qÍ&jôâ©HI:é‰PŒ°~H·§S°#ø2’†×‹"œgCÊÍS-(¥TzÖͪ”&%Ïi9‰óÆ«ŸZÞ¢éû$_˜ä—ê)k–×b¥z¶slMD±Ø{.ã>1;Ìlrb -hÙk–üR𾔸h‹GŠÄkÛ«¸‡*nwÖ¶«œYJ{€ vO—ŽÀ”Ý+YÅð¦L¬\`fÂïÊ€³VNI@áŸü,[}礽ôo÷·{.X8uj`vÔÈx|±õjÒûÔ~u•jþ9B0³ÃÆrÈm_¡nñ¸@Ýð ~%ŽQ§ÇtdžMf][ÓR’50Ÿ›ÈÄ´S¡ÌÆðÒÇ!kS#ÖÁ­¶¤ÜÆƵt ÇJqC¾0ËòYúèœ&dJ ‡B)©îø,Á/QŽó}ådz -ÔFØ`Z‹uÁ³rà>]f"þè>'•D #ª@,16®˜uƒ ¨;ÊÞÌ·–Œjäk6ø -ÑE´…-‡Ú ù9Ù2¿"™|hbn[ŒãNŒÎ Á÷@© -d‘©øì<¸kV é¸döéRt÷ž‚ó0ñ÷vçÊ4¸^Ïʶ’žsž¨ÜZ– éˆNÜY‡(Ì@®MâëËÎuJ2Æ/-¤ñècç{P’<~80sÔõ^ +>\$ž7Ô5â„cìÇ:^N[„-O’e¡±SÄ õ«ó,àˆKÜÕëÙX¬hj ~LçæNSZaÎÄ«¸ØÌ·sB>5Ÿý)Tü7fžb·eºh‹éjCCÓs•JCÛä›úÓŠO”8ìÏîÏC¸7`zŠ´8ózÕv¿ú’Ï# rúp@Û¥XžêÓŸÃæêÑòMÜV3û0Aw”D[pÙ·‡¥zÍ¡4h]7 -àëâRrÓy•¬sSi·(C\t$ïdˆ²‹°a¦Û ŒßtuUT`àÈ¡TrµÌøþió*¬XîŸ'½§åPÌ/90}ôR‹¢ÇsćAã -üRjù”’J<›‹hlazÅZž6¯³1›„ý/\YDõc ƒ¿Ë`*ð"½OgÂ.³*´°ÌXX·1™`ƒÌ ‘| *&hªÓ¶˜p—Ús8Ë÷ï‡óÆ<=ëaPù0¢&|Ž#¦uaó±gãò‹Uüý”> ÔàA5|•Ĥ7M»3FÜ>Œ”d:ž$±ûÞžƒ3#± -€{¼wºÄ4€ªº‚sÀ‰mì§ìrEÑ?)Iÿ-G“™óLŽò£LÊ^·œ[€üIáÿAöêBö+Å•È)·Jâ/äŸTèã•K]B_8‹%=¸çÁÝãe;Ù¯ËÃ,ضà®­cÕtüåuÑ–‹÷ocÊÿC•Ú½ûßx¿pØ”èz/Ž«j!XËçñ|\%²Áíí嘉iºRо4‘ð2F— ˜-òZ\»–³š•yY’©LfY´î‰!«pó/µåu4À¤?XeB…Èß`Ö»M®Í®ã2sLãŇ=Œ¤—6a„2`÷ùQ; -?hǺÁtg„Í•r*žê2¥ºšTzr ›˜+Ç6æc¬°1æèöbKљ܎ûPp¾„–õù=‘àȘÇÇXŒ+]D‘©”>žcƒ8#¥…mFY½·r HUª>v,ÇRj¡Þ¦4](“›¬šM5Yª”sl”–{8ù†¤îÈ1žD:9%qéËKd’–3Æ5ÙwP+Mf9–‡Ï„øB`¼$÷ÎA”ˆG¥Ç˜†šC—ç"D¦ - Ñ’Ð0GPbbÅœ ƒ¦‘\øÁO‘§ý3X Æm#dŸ¼²-&ž¼£ƒäÚ©a‘ýiÇèŒò0mKu¥äÆÏ²P• µ•¡Éô!0Qúœþž%E$°˺i@fÀÅB8Æ&#‡¢I¼S‘ø ŽLÛBPÑú#œI @ÃÓ]Fâ]†¸…B™O.›Ê¤òs1J -, *})´ÏqÐT–b9öc—ËfÓÙùH5bÀRhÄ€¥ØÐ5—ΧCdP:dŽ‘ÝŽú1¿fП® O•cƒÔ%²p¦‹±‰¹mAƒ!c|aé´ä@mB§Á7Ä&žD[@ü=±¼ZP­Q½ o2è{²/ÐsÅ,QÏ|‚²»’Euä4Ð!­¢ã™Ä@âF4h…,hH«¹eä"èQÁ”?<ÅcG„þ¥Bù7Ì ¡C1÷¶×ºià‡6Ö™i|ŸLp;𕦮æmiésΞwf2Æç§Ú<±Ð!s¤âÙ`6-H ,Õ»&“^-A&iú4C¥¨Î¸Ù)¡$.˜øžÏÛŸ’I&üµItØX‚AŸ˜¬º b©-öm÷ø×i>ÓaI‘éA®›C¥Al¡HSž´ù§¼ÛvJŒ`)¬ ûZó—‹ý;Öe–ðvœèZ’RÎXW¹ô>EVM‹nAÓ¨I‹K”Ià R»R¯ç³U,Ý!?fÞ^n~Ü=zÿzë}Ø;Ko^ÆËE~2ôÍWgµW{Û[‚öíÜõéqný x}òæ<óö ñië¼È]«§Îó15“YO&íê]µ¿—Ü(~Þÿ«x´gÙEûïTb-V&x ÍÖ´DÑ}gY ñnÍAvOP -ˆ "y!¨ñk>ŠÞÉ´Æ_ßø¶ZÄär@af‘N$B÷ƒ"Ói5Q2óÔ•O;Å'§«÷ò¤©0àW‘bW)€H*˜ -ô-hoJ‡D³(úsHÊA­Ì¾3Q¦Ë¬&bCY‘Š.Õ¯/KbÆÍW%>šbE–ªŠQ_…c?1!¤h§1Ä`v™iWÒdKŠ~ˆMYµ‡òrÅ„“Æ–˜k²á§€éËêÓ½%/^?n‹b¥ä/jŠoZÄØÜ€Æ±¼>„jd¦õuÄ¥™ø—lœ_ÅFá|ùiÚ²6nŽø89n¬ê s*2(ÿjwJÌ##>£PÚ§ð†B€ñš¢Ã ¥=7xôÕ=²vÇÞ#'³ø¾ ”€-vœ -¥¬8,Ð(bxòi^£)¾Ñø\+rsѹ™æu|ò‚Ñ×*Y -iV¤‚èìa…©«S¡Hª­˜æôÉó…úÍ&'M]d»‘ö£ª¹MëŽ÷kV ÆÜ3—pëYQ~!ÄFyJ‚ -“æ©ÔY?ÓQÚè²ÖI£F¨H6Zþ9çªæ«n’šëFÈtv|!,»€UCS•+1ÁJ œkP%<:ø¥Õyº•6»Ö^l,>\€E‘4ÔÀþ=¢¹ƒlOÔ…\ë»%†,-pµô)†'Çm÷ \ÕÖGîV€b¿ñ¦ óÔ,ð#e]´Å&1ù¾§s‹z£·‰¯6AU4«)Öù¾@ñÒÚ{Xj|–öÚj{W÷Ù1½ÄV¬ij|Q½©cÛê4§ ’½gvÔ›ÕœÇGd2ÿm€Š=qÆ$ú²é‰õQA¾žrâHàsrŒZ  -”Üݽ Åú¥µN1¨càÇV8Mnì-{~†;|¦"ïXݘ{éñ )¾¹.Æ´Lgå’ßÒT!K§¨Ù8‘¡^9cþK[7^‹ý…Ÿ,…2ºˆ>™z)Rƒ§)|û&@†ÿ$ÌLäƒ *zdØ=¨„GÄðSy!Lõ$HônñÁR ¼{‚©|Ú¼‘D$P›*RÉ4WDмÈLl0TŠ­æÊ ø/‰˜YR‹Gˆn*? -EŸ&¿úUŠyÝIÂsdFÆ‚‘#õ0Š»y²fBPGxšRø×ïß;ê‰kÿ G<¸á*ß`Y¼‘§{8RÈ*ë13%gŸè <µ%ý÷.Á*£7“#zÿ‰ÃTþßã×°€Ä%Ó*+Tž‚…@$ÿ+…mE™sƒ#eÙ ‰+Ï@}ÈTÀFìÁL„IâžEæ^Ù”ŒcúA("¶²D²å­;¯¦­¨Eä ñIª$M «fñÀAŠ®¹Øþs¨ÿ:^äEÄùcÏ - 2ÍL͆Ø%fáj‰tÔ™8í« 7 ?4)ÝûÑÏ/6ZÅ&xf 0é{ÃàÄè•ó’6*wšÃ] Ú¿uû  L.ÊZh;›sy9 -êd}tãVf'bçêïëŒ}ì Ûh»ØýBƒUæA_~Õ¼ïÓêqwÛåZ/'/.zW)’Ý i8õRêƒÓL°aKßK!Ñîx§6C>8Òö§áW_,¡­ƒ: 4ˆm{#-çÊ̯æ¬Ù -NJ… gsÂ>ãÛêf"Àj -w[n£í <žý`ðׂûpYÿ¡^`RÓz¬ûo–“?XMà¤ô/—“?XM®SŸ¡AhÚÏ¿.–3ØV­÷)6äÁÚÚPâ›Ð)wõA“X_磂„ÆX '‹Õÿ×fÁž–®ÑmŸÊ}*E‰ñ¾±Tz~©FôÏh†¥‚}‚“}AaŸfŠ!%¿b¿,ØÀf»Â/îrlkSjˆ•f„;ÈNœ–"¿-Ï4ÃøÍÈJfÞCÓÿ aÍÿ?U”욘ôª[ØLÀ[àœ=¼Ž9ŽLFßïÙ–~YRx®0Y±¾Hp{~¤'z¦š6ü3Ö: - Wï÷¼Št×NyñéH…‡Ã›÷û!`nä¾´.“`©Q3Ap1HëHÊa˜ÁN%¦Û ÝT°íg•#i¼ú2¹°Ú ïwjêî²2BpÛ8ެ€+Ü‹³“RAªUÐ-:Û÷«¢—!ÖÞë-MñMoíÕÛã½›b×—q•*B›ìwevz|ÍÊÙÿkÉ/„’šp:-šÑD¹A’T&9‚ÛLœœ·ñ®¤œ½Hh~;î|Ј\²4Ñch)¢]L §×BNóûQP®Ú`¿ Lw ;éš6ô9ÐÒ7vB»Fº ²¾Í[¡8·UçJÉ_„¦q¦¦™\P)œü#c?#Æ¡¦1¥™¿wÌþ,{#ŒèFÄØßæï›bP…ñd¯M˜½`Üòò{É€Ü7‚=*¨Gù#·že[¢e;¬lV#T$-?²­9@ç¾eï_ŠD’ ã0ók¾Nõ,;ô»1U|Ÿ*Ó-¸Ÿ÷U1<J‘sNÜŒ‚{G:¢s­jQP¹Xb6rÏ®8åªaiÒiÀ´¾CcÇ %¾7ã}u8 z@ù¹C8J¯Ù±fܪ˸€—‡=g®ŽÃÝåý ƒ*véêþ¯k¿.ÍÁ¤Ä¶Ë‡ú}ïÆ”,ÿ¦ÎÔAe<³IçNHêSŒz¹(í8ž®âßœŸiº•üvÙ“b­XóWç¢Þ Áf‘%²}VZÓÓ“}TÁ %Vò½’:"Õ™¯?S>Þp»êÚÐéî(ÀKÚÄ]¥àõyÑpcæ>š$æÄÄ÷š4\õÅ¡QÐDõo•ô3†½½A_†Ò@h¹ÎgSr ¸xî`Î%M‘k„‚wG•ïeù+ ³¿B•å•a$–žZŒtQS:9ÿ3Óîèbä ‘ìï{ŸEÔò³ïÿa¼J×SU{èô¨ÖY+N8+ P­µVE­¶ˆ(‚2œóœ?ßµ'ì¶Ýý㣒÷MVVVøbû‹IQœ†65iE…W©(ÓQmœfÌ$ˆ^†™Bz‡»;_ARïŸoÔàú³‰aef_/QÊKæ"‚Eœzï©eo®ÕdÏC€nj¥¡ÝÂ]tmßå[Ëx‚hè&^$wnå}Õa¾ìÇÅѹP) JÚ Ú5²èXûñÁ’µ\¾+سE=v…^x]o\â>XÌè5â¥çß»ÚuOØÛ+¹…éw•þ€_‰Óù)ÕbÚŽzÛ¢êSࢠ†.…|}ÀâhOnÛ•ÌŸxéx`|mƶR*&‚ÀsiH56N-Y–=t¹uu`Ø̟|Ì}×½S“Zjúã ÀæajJ¡Z£ä}gjËjêÒ>ÇýÅY謃ÄbÞ×2šÌlVÔSÅ'‚ÄÈcØÆ4?g·E&؆örùisÄ;%–¦öª`E.  c|çCSá`(—Ñ‹CPEOk¢ S;¨nðReçu÷âIÁ7!îÊ"jDÇX¥Ÿ¦‰L¬Ù±‰"ñgÇÈ9è”I²7g’‡yQi>£BäØcèF²D¶×b £7B#–ÁÛQ óÍÜw.‚ žP©ÐФ`’²þû_uêìuùøa/Õœ°)GMhbV%Ðd•鍿(Íô …×wû“qT³vÒÓW•lê"R~?»²SgB*YüÁY% O¸ ÖÀ…–ÍÝBlYÒÏ7™ U;b«BIEÙÍm‘·½…1ר^Ð ´p+ø£Gìð€P8‘è.W^ؽ(ÑÕ^L*ÚÞ '¥´±Î§vÏ'ŠŸæ=Ø6™{¡sÝúW±±¯w_` <—[¿×­5vÑB7@ ›~tŠ Q~ÐÅ!i"Àiì'»J Ú°ù‘™Ç[‘ï|çØC¼¤0!·ÿê¬÷}ßÙ-¼¯½Òù¹3P"cœ¿#°¥}¥r°ÙÊk\öJGA{2bfJŽÄ<û.ÑDîÉ0ÉXnc‚ϱA-ÑßE±àß»!wäÊ~ë¨H›“«¼xÍ–‘[ì$×HpwÜáê õ4´¸´Dý+õja*îzã mO ¹óaûD¾z»Ç0¸ ïY¬ðwübÎÒëäÁÞZŸaôH©Eô¢8ÔE -«î(8iÞò̈\ìÑc Bì ¼`©"™Þ6èO¹lµV¯­>½ayðR'5¥šÍ°üˆÝz ôÃùi¼8éƒìÌv"h2ºçåǘ¹ËÑU2Ã+æÞq#ôÏ)€½—ÜÝ"ÔƒT°·q–Yê,keJÊ`žRÔú”±Ê>LÃÞ3%†?¢ñÌOgj:qÒ‘ÇŒãRñæ”ñ¬‡‚%-cÀA&µlOÐJ ÆwÓØßtAx¶äÂo¤K°Oïãwêb’ç,M^§ ‹™O¬Õg7Š©Q6íÂ]lÔäà.N5–ñØ -ßêB2ÎÜvåqšÜ:3° OŸRñU×n ^§$päZëX—§Œ ¶Ÿe/¹Ëoðõ Ü|;t‰ÒC–çCQ;Ô ÐÒëîÒš‡d‘K…å8_ŠŽš$‘‹6l~îâôêY}—ùSqŽ -1EòD»Yç`J#;É«#u<0Ä"7ÔÖ°½Æéµ¡óšLOßW} œØè†ùë·?ÖG†ya>¿ṏ̢́FóX(C¶B!9«6:°YéqÌ­‰Áæ~‹ œÆtl”“Èô0sU_žF%‚¥Œ0¶orÕò'%a¹*%®ã½„ËÐ/‹Â¦LMä‘×´³Ÿì@yaaæl¿s‘êÔV¸£Jmøeä£ÉΧ— 6ÉÔåmÕ\÷wüilÙÌ Ûûg†^°tæÂŒW‘Ƕp¨ @=1 ]xiû¿<>ìDüw¾ì0… -n¾– 47_G µzÿÆÌƒ“¤Ý ŸÔóý½ïä{6-6Úõ.Vxï/à."s”ˆµ#[<£Td^|Æ\wÅ -Þ VLpG!DÊ­b<»ý,ËÙlÜX¦o$"›B—ÈägºÉC×E¢ÐC¬Aó•:¸êûwù>ýñ—†úNVOÛ ;%ØoÚgü_åÎ7+"A¢‘H"ÏÚiïLYS „âL.„Dáiœ’yû?Nÿ) ñWÍ슼¦ ¢à"}Ãq Ÿ×ÎþÓ,d§ÀKšŠˆ‚l?qBÜIœ¬"òU (ÁίªÄÔl¼ˆÈ¦mÌ! -ÏL€ ÈʘÊúFÚi°TQÁ´cú<ÂGÒùZp¤¬¦xä¸å/,BËÑ:¢QÈd«¯ßµACiõn$G'Á]€…(}'±–ni “ø&yÖÓ SI9k¯n÷çHΡǼº¸?Ê}8ƒÏŠùQú0òål;ÐHtN§×uâÀ‚Ù)Æaw´"“eU<Åý'͉³®¢&¾†Ã -’ét“R]"hº‹çu6’xäœ7ÚØOè’zÐö‡ÂàS¨P½ŋ+óùÒŠÏ‚A¡.³¯Ò,¥½lö%äʤS6_?†ØÇö¨ìŒ[<5hsuÈY(@«óò™my1²9sU>‚~-…ã«Õ -IÑjä#$kÓ1 ]39Þ¡H̉m¸‚$G³KY&š S‘¡-¡¥öÇŽYŸhä* tÍ—îbä‚Å:Nq“ÏÁ¼û¦P6ʂݻBqï| IWx‹—‘Tƒ—Ä€1}›K°}'éá~ppœ·ëãÙ4…U4P0Ou)Ê0?•h‚Û*íF”3ò¦l.J)`°  ðt§YÖ"öÃÁ¶Pã$âÊq „NF24ÿ±§þº°Ié67@ÄàÄѳ40´»,MŸIaX_aNÖz»—±üŒ`¯Ñ…c}Ï`UÑH5SC…/y6F'#Ø-9zGa,¡fðr«`è»;m3£h¤2ý¸ò¹ X* ~ÖP´•—’¡·!×4¶´Θ ˜¸1ÇK„ÍÌÜ*¼mæm˨Kç?ôÔÁ> aßÓX(BVÖ.kic!ǫȜÓMüÁÉ/¬M9.EB[ãR"Õ”‘"#ïè, ¦KU±'â`8wdö±…‡ò|æ[\C6 8Î3`}2Â{„…ÍU‰“%6òÄÄ^¦„4ë RU͉{uµPa‹4óKÉ©^ŠneÂ…+åPxJö~Þtž¶„÷lÈj6ƒiÎ7ò±fHÀÐå -þqŸCK“w,Í>§œÁÀjæÄÝð‚&M{Äd”EXðï´Úg®aK—Ï \Õ¤sú_'îGB²ÒÈd„8…Š{P¨Ê’é+zû€Ì -•†P'hHÇN©C¡…‰/Ï¿È{¨ ƒ‚P!ö¡>(À—CËLá²Óûk*ûT8—7ëød>£$=lÎu¡‰Ôñæ ¡£és}áÛsM³8USº «z:8cnõ»Yì:¤æ” çC^™BÛ/.[¦H±P1¡²$c¾Ù÷]€BÍtõhèÍܤs›Ð³ÖøJº„ê/äzÑO\H&&é;,™Îým%³½q=fDõ’ËÈn¢à?Ù7;ÊoŸå¸r1Ó­™Õ+W!ÞÓ÷÷ɦàåkGþÀJ“v«õHH·5³‹% AN­Ÿb HÚ×Kuèž«"Ñ3™×s0_¥<î·XšþîÿE8Ò•ÞE£±_¨b*ÇôÖ“Â[içônÓ;­½Ó‰™£eóåÛÃÜâÃíâ/ëÃQî´ožWGõéÕz÷UGâýÉâkvç¸[œÄ·rWÇñ½ôf7–ˆïœLËñ­öÃA|w"ç·Q*¾3?ìÅw[ÿ«Æ÷ÄVVLß'-úBübë6od<®:ÍŸÞ¼äÎ÷sûŇâ졼÷VÓJ?sâÐû*^½â‹X‚“ãAeWo?»>0Nö¯Ê?S5í!wIžÄêCí¾_;®K™íJIuXr·;{Û]àkƒÌµ Jåšà±/ ¦Aȑђ݆˜Î÷l3¼—û5ó.û¢M¿‰Ão‹ùÆ»–<‹FîÞŸïœÔãß,í¸T§©´±_Ïïÿ>úÿ­+pú¾ºLúDž[O·lÒzé¥pØxI1I_6ÚÍXb…Ö#-Ê×õ›´O#“ lÒNæ)¿–=ÜöHc ÖØÜmí&I´yÉ&Ío=픳c¶¥kµ—|,±þCWš,[ÅÚùõYiq}C%[Ǥ÷/bmÔîy¤`‹¶/Ë|í3IëWÙ~ {³'ý7‹rqp¹ÓŸÉOó“&¥ÝúÕä}îQÉli^û’JMñÜ!íln® -³WÝ#õ2Ù¦}%ϵ@z†Š¥ÚF†IúrúÖ "½Š%6rÉ£'¶­åø³±>Á]6éíÅÖÉïY“Eºs¤žx¤—åTÚ>}8»a“æïïÅÚØf’®ÕÆ¥î,{Ã"%ÄÚós-ÀÖâzbª¶.‚H‘Xß}»c“ÖÅÊ&N–î-ÒXbÕÁæúî©Cz¿—\qði;ì¸÷òiZ["}(‹ÍÒ^†’n¯ÆÆÚÖŠ]´—Ú’¾š¿ÍÇ@Z\/M‡µ— ÒªØÚ~>°HiŽ­ØÚø}xö‹´»LÒÞÑf.ô÷r"‹”*þqOì½n­±l5Ö®¯pûña+É$½ÛTǤ½ÉíÛÀ"%¾ÚúXï®õ2›´™Kü¨•Ù¤ú÷5)h2¥½û?ëUÚ–8EAD -[Ùq@Yd“QTTdðu`¡ðÿß$ ]BÒ¦2_òø{—“{Ï=wX“¶ €_nOÅV…î´]¨ß:ƒÕéàfÑ@Ná|9ÌuÞ?™^1œ¾ž'Úß(Ýé¯ù×çMö’wæíóê­(Œ¯Á(‘ò>®ù쌸==Oð­¶8?èÊÓå‡Ô£Ýë¤xÛȽ2oÏSá»ûöcü0;¼¿L)Ï¿™·×‘e1žܼÿ0o ÄN}7ÒïIñõy]©ÿìjúí{`%¾íFþìÅé{RÊ Ö4ï—´{å*‘ņyû$Oâ"ûöµ’Ëï£Üä·3?óv¾½ýª3o©RǼ=@ìsqUxc} Bêü8aÞ6S™B˜ü{9¹¿f}­ˆJã5̼­^¶'3æm3U”’lÄ.Å”?”cÜžÔÕ|xŸs.øƒ¸{ŽM|éø°ù‰zn:–Žˆ·Ï—°Çöv€Z%ø{ÿiøóÅÿä'!ÀNRu³Å¢6ºÝH‚lºE›Ãé©î9/t§™þ3Ó)"ó$¡Ç¬¹¢M‡é޼ß,§S«Ó̽_-nÏ•î-N§Šâ3"õo8MðBõodZûksê£íÕêÖp>ÅtŠÔ?Ã)Øú3‚\l¹˜NÀZ†íª¦SA†úÿƒžëO1æäô:ÀtŠ4…éö¾Í-Ô¶We÷îÑ_ø!Båçé'Ïÿ½í>—ÖÞgüç©oýVíݸþßÉ®;Ì%óë%f˃Ö?!:wFõ -¿Úm0¹(÷DÇÇÿørªy¾‚S0ük¢¢sU _¡Ÿ_†Å 2QÈÖýsE![{©âW¡ç´IMØ}¡*ãCm¯°$÷ m âÉå¿ôÚ›H´WŠÌ*²qÜY3°ci\ðÏè¥fMwÔ,"æG!woÁ -´»ð]·c:¶dp«Ø¬,LÍYF,È'û–D j‘mAYCî tÛj*PL4 žAÃJÇ,9`ËÁ®Ôr8øÌŠ‘_@dæ'Èf†è`¾àþýî%÷÷óù…qÑ2„âµëÿû­P}ê›'XÆ’áÒüŠiJà)÷=X?¢ž*ˬ+ÛDÖ+«öºöŽ<w nžq%|ªôœm:ã.°Á²SOèzÞªvêI3©Gp+ÝêkccÐÙ ¢S»·*Ô0`FÉ´æ¦Âx©gq® 2s0qhFóŸšyÙ2Ç’ {yßĤî]=ÑzZ³ó4¬öʼ!m‹M欼¹ÃñðH:[ÐíŸNù^0ëwnšßö‚KÙQXxx¿Úí§iJ¯ä#ŒÝ/9â]ÉeÌ>P¼Æ¥3¿a¬ï¼ÄxIÒªêŽFl¸ù‡ˆÙÍc\h¾˜T1:Û,®Û‚öMulÆ -¼€xê´e%h©:Uê}ˆ.içxFƒV FÓgåwíØ-eµ¢–‚¸|òí¸ ÓÔ€m=®HaQ5‹û‡¿é\£Ò5JF½Ó»· -ÜyHA~›ÆU~ÞìGƒŒùòX³iˆS™•AŸßliÍ óL³ÀØ£è‰d™I³ÀX_:–f¡n#¥tŒ@¯F^—ƒaÜíðI{¦˜ ´^¿w|VïI©O³f¥7;¹à3£s$¹¡.cì6tÓ÷ä,ùE º°OCðkô}o)Ò±t§½ñõžhúž6 Ù}>yÒ÷´YhnÐØñúþuM›…^§|5g}Ï7Å cô½ÅŠ1 ¿?Åо§Y1¶W†Þiè< ü®ž†¶Y8ܳy¿; qö¹`‚ÖÑxVÆ?V‘<°SUõÃM 7Ob…RÏV2‘¿µ!{¼ÝíÜÛˆ“±c»Û¥·ÍÞwåZ;b\rwÿ’Ð k#oãêsdŒ¡kžÕwÀò¶Š /©DHÌŠ€¹¸·9˜Ê±èÁX*Çâ\{%Ç`J•zÓK=]$fÛn<þÇ—SÑafoLd"ÿr,Å%GsM4Ëc¼/i,¹dK v¥ë]Ìb6–Y1¥ý?Z×ütäˆØ™7‰1–¶5ÆKc•Lc4{­8Î!ȸ&¸‚⬈ƒæÂYo]sžNÚKêfßàZÛlRÚbtÙŠêã[UŒ^¦ßÄh3[Á–á_}Qý˜?À ½ÕÊ]ÿ³^µki3Aô -r@ä+áµB[‚X,âGETÐJËÅB÷ÿîn’Íî²›,Ð?yü!;3gfΜó#g~+'pCu&eﯡ+ÜÍfN{GÛ)j6yÅT3 ~ÖžçòÎq«7*eØ}å|çø#YÈŸ>¬mû$®ƒx¿Np<‚šf'Þ°×£\–œ*hæÄø}ÍEœŒÂ©êÝâÏ€´ÔuâÍiQ´ÐüuuC»W¢Ö#U/¶‡?EAßÉ ¥›ôøªvC}×uî¾ÖQ'ã@&˜ ÀÕebŽ+µþPAÓ}aPï©A©>–¬µ\¸=R½¹ñ"Úf‚*°SµG÷ ÉqêÓ„ô$&Y p¼ù-) j;wÕ˜0hìËsö–T ì¸ì'€þò‘>|ŸSÝüßËzþþ {ùÒxøùâoî<1Y5?}E¿ØXÜQjLì,šk[LRøü‘7ЊéŸ{êÂÛ¦z Zn%¦Ôiklž²Îßè{]ÏT»É&Om£(\]w  úA=ð%²)yû²‘Ô›ÙXW·Hˆsе¦ã«>?G×b\W±Ÿp-÷ ”õ˦R$õï N_ûíZç:>?©Êuç_àôù€WØ}æÐÃ|RX=‰G 0žŽïÃq -PrýKØcÎìÇÞõ)¬0ËT¸k}ÀïöC÷Eôüö)¹·r3©óÜ`Gœh®I£W`->Û€'^4×pd³ ×4`d+HtŸï!Ó:š¾Xî®Â%)C­PÃPäJô ñt)SDþôÜÒ¾¾5x¥A†Ùô´Û––UÃK󽨏›ÓE luçÑUénUœ9G“ zÎ,ßN½ZÐ'Aè’¬Kämª‹ýi`Cx°l ÚRÖ4ʆ4g žryl«Çd‘£â"voÆ’©yGN~mnezÑVŠlï›—iüx\ÓM&œüï圜—ø¿ÊR—±4jå6S$Öc‡5€ÓiçÐûxpdHÄ<­çÛÙñÞà|ÆJˆG€5…Û¤Dú˜”!K)ÑË}ÅBp*ɦä:¾°¤ÎsƒqòX_±z§Zn%¦þó6­Ì8žŽš±ÆÓ¬É™±6<é5c¸tjðÓ:|.…%œ7…Hœ+š„m0•œNî4Þ!£5üéñÖÇWJ¨8¬Ñ÷(-Å+ Ý}ÊñŽ»0oþµ([ÝytUº[)¨”ˆ¡=g–o—‚ÚkšÅMZÁ¢ÙAëRžr3Q^–Â{ÎÀB°% ÌÐŽFÅ,,À.\ô$ýã]dZ,›g·«-–/±ìó@N,›gwUbªàÅ%m48 e4`_*×I™^ÂO8ƒ‚Ò*)¶´ÿ!`, endstream endobj 184 0 obj <>stream -H‰¬WéZâL½‚\„`¶㠨à!(¢€À€Ë ¼àLjÊ~ÿ_wÒ$éÐÝéþôã#PË©:U§.Zù´ ʥŦ”œM+"|$ø´åâl›ùqRŽ´²›ô¦!~Tæ…œ¶¬gнN#•Ì>d²­|F.öÆÉTRn´äBAÑ£Õ%¹¶³›ÌiK7%ˆÙâýk!UµK™bWTàçåÔDz¸¶µëÓÔÍQ4ži3!–‘‹¥Í=tš†×—Þ¢° O:(ð²ÿœ;¡Ô[hÕ·Å€BÒ?í6SµWIODÁõ+ºàÅÈËL½˜o(£ÓPÍ;08,g, .4`’ÿ.ÇôO•Q`«QÐoè° -b:TL]ÃÏe;DÙXÛf± 5?áWÚö¬àÿ&¡‘ÊÈ9ÖXè±¢\õy^%D['œµôZÉþô2Ï]3j9Ü…Ò¡ËFÌÌ9L5&ÃjdJ±Æ€h h,Â0¦Ôo}öÄû›ä³õÐt4Œ˜#¾|׎-½W9¢uaÛQ_6šï¬Ñ7u;fo­¢ÕÚFÃÆ™ÝXé1wãÒ¡)àC³ý&Ú&†Œ¸³1g"]®™Ì *±®ƒÏ“Þàƒ -šÉNN¤òÖ†¢ACÑÑßc•È艔NèÃL]¦<|Ü |ŸFÙPšuš¡ùâ"´hÔ|ÏÊÔt3€éõT¶{ÙÌeöZôÑ6[$Jc|W. âš'Æ[|ˆ!Æ÷ìn½£ÆŒÅ­|9ŒÙL½ìJuËì1R7ÚÌ.¨Æ2§çõ[¿ÜßÌ3~e@tàyTb'æV}N;q?ÑzL·“8JVI’AÔí$g ùrßEî §aÚ^øX)Œ¶ëe#iqŸEC ½¢N‚ÿ¹ÂAB4- 4ìù¡á¾ÙKÝd¥c8 9敆ƒ%/ jâõßhêsÅ9<1/ìx£­ú;G °’äÛb®vRÑÒ^7†ŸO•¹—+aúÍk$¦©«¾›Ì?ÔNT¦”ŽÚGÆ vŒ 4aRoJ€8¼8 -ôw$eb»^éBçÐØ0àIæmI:ÀØ8è÷tù/Èvñ}gR=¯ èì²­|v6ó?~¢¹@;`¸ôýgzhÀq‹¹Ûɇ)ÑÜ·Ìö±ÎCÙ¦“JVÐÆ{áåFÚ,üUjºí&“ÿ‚ù•†8 ã¨ú8 û¾iˆH˜§s “ÖÃ6·Êášqk ˆ¦p‚I€$9Ï]3“ á¦ÂôºôåbX­»¶|@«@cz\E¥~ëÎJXwÄ2Å^§qŒ»Ô2aïzWbldspD{ôÁìM¬Ž0¼8{Â! Ý„a9?†å„-`¬.4iH+í€% í£L~s¡P7rºÔŸÐv6 -ÀC‚×cå„ËYt`L;‘Èu)'~¸!f=ÈX3¢;;–†I—É}k©ÃCÏŬ¥Öüä5FáçxCZy–Æz ·X7\ Bu!­‹¿©du#ùC5NËëuá~¦}ôFÃJp²S«¹Ó«¿ÕN¡©^%·!0ù«âÏAå±:èTÕõÕïÚYç¦\JüW.—’u{Xîבø‡|güUfBà{7Ÿ‰äæW-Ø]~›ÉçÿÝ7lýbwúc/N€/¸[ä4;èÓª“$ÕiªÚ)µNõºènÏ‚âý¿Æˆæô•áT‹çlN'’´œ®7yycl±{cdâgû³Ûó½SíÃîô"¶;Í>œZN×»W%ápªoä=ÀçŸmŠÓ³`pu¶{&;Íž¨N¼Ÿiì²ÀsMUÕ©t;MhN§§Æ„Ù·Ò]«OwªÞ=iTxO¿2çCšS `ª -‹²ÖÿB}žçüÞ9é{/ŽofŸo¹,f#Mã{huÞž„èÝþJ*TwÎ…:‘.×Ô!eÍ;ÚI…+XùËÈ¥mŸ«MiÁ¾TùöõSE‰–Þ«6u‘&Kø ?—äQß”V!A¾¸…‰àÀp²íBõy^uìBãz­8õoíõ¦È¡I!¥_v¥º#$X:N٧Љ§Ò!î“‚Â¥ï7pB(5/ˆ´“«„v¼M`Ò[`¨0R©! žúia5§§ül“ßÌp°F±$c¥0R -à±!†]ªÙXÛVäÂü×Ò! Á¯».C߆èzÅ¥¡Õ@¦J7÷m+Z¶¸{?§M4œc„ âV_ôåù¯IÜ iÉ;\÷`O<,må˘c„ rªâ²¢á i¤+%io¯ŸcÞãâ"Æ-O'š«$×Ïœ–ö -®õq|”fX;÷¾/cl9(x4ö½Ž'#æz°ðÇ¥ûXˆ±…¡+b†ÌÛ7ZºÔÄaëÞ™M\ƒTQ™VT0ÄbÖ &2«ÔŸì¼+O˘ɥþŒw^MóÛðòšþ«Àç•Éîš\ «u0†ôâZÄâ6ì1»ÿWËœž×oyô=y<„ñ€_¯®&RÓѰˮ4ª3¦žöWj–‡/Ÿ¦Ü÷ 5:‹È´Ø6®Ü'ƒa©qÇ›x‡ƒ|·aÁÑ” HÈÛU$T°Ä ü€që´{¿ÖWwŒ”+éÚyBÜñ+ÉBž¥Ó/›• Ù1ð³ Šº<RÕ…7Áó²EººðtM^ó¨ >œ¶rÈNJæ•dàTÙº - ÎÐz +$cŽqå‰w 5Î -êyõMœ,§1~mùÀ ¿0]' §ôË®T÷42áÃ/¢¢r³q\D™ÓÜÛû¦r„?—”»´;×]9m&$ÚL¾§Âµí·&£õ+É.œ’üóG,s€˜ù¸N¥òŸZ1ßjè¿uÁ“ÃIDÒIJ äf‡S˜’•V—‘ºÅAÍWé#ÔJ,ñiyÐ;ú ”ŒiI+“s‘`x€Á9KÆ·ãLÄ Ò03tûÜÌoiGûõjCjã&ß:a;°$üu”‚ݲŽÏ æoz3» -»ˆA%ÖUbðyrHnƒ/VOÔ¢›ÜâdÑíH͒܆‚¥w:+µËoÚô˜3§òþqAÅ•hé½j»+¿—˜åhMMÝúÁ®üq—uàå-~tʶ€†èàšÚÉþâú7<C0—;3«2ø_ø“š³ r¬:T+­ùIå»’ûɯW 4UÜm -ðéVh*i™BJ‰8ÑáÃÖ›ÐXÊ•õÙç³Çú0€·o;ÉJ¬>§Áò›ÑXW’nÇ7u+ø kNK‡ ¹Kd–1\­’C2Ls 3†KÍ‚öðåØ|úÿܶtLì@àe")_cžEóëÑò 3ûî¢BÙ!AI¬‹ýdˆˆHTÿJ!W;}7½táÜG©L=˜ø{qŠýŠœ/è¦Ù} -'ù-Y¥Ôn1)Nšˆ¦¶pQ’óe¬hÏPoi;¥Ò4a¯@Lå.ÖøxÅ€—o~’LFÃa€{ߥaÁˆïа`HÁ¢!EB¤0ሆ¸ p·¹¹±R‚¬þ¡/Ql‹™FÀ²à#+eÁÈÈ’´¡œ¾4}aXNeäàÇ‚êë:•C…•<¯CVì6ß_½+A'›ý7õ»’#\ãµhÓz3†C´+V¼ ˆ‰P2† †1¡WdÖPÉVincáý‚‰»P¸yºIO‚z‹½p)ÀJÉ÷cÀl,NN…Iê$˜Á…‚¯õŽtûÂؾ,«œîtYPÞ=Ìt“-ß\õd[Óí$çJÚéeÒ ^ -ÆY™Êpl.À}ÆLPëA¦h $ñDh!…õÛäâ»Ý#ö{¶õK$7‡­âUm‘®V’íÛZ`Ö¾ÔBµrìòª¸|ŠåÁOÍþ¯ä§^m Ͻ䯙‹§õбð쟩p|øë›ã³òt¼öƒÐû±â ?×B›ÀͨU´Èê»ý‚:n• -Õû‘;JÉÞñ»žJ‡Ûõ:&²Ý—Ÿ¬G×Û§BšÔdâÙT#íqÍ‚GƒÈ#çÑÑ÷Q‹¿ñ‘åæšjê§ÓÄûÑæ_üÑŸ¾ˆû(È F/pÿ0ƒ=úÜG7úQxí<š%=œGŒòý_Ö£ZøÏ•|Ôߘ$¸¦Ÿ}Σù@(wV{BZ~Œ,ðXðh3˜ç?Ú¼ܱÕBh”Bçÿõ&ìçFþ£Çgþ£õúu=jodðlþ{ÜùÉüËõ6ZL’Ýçü]¶šâþâ¾ýöS´ð[1VX~ÖÝ5 råhÓiÿ¤£Ú@MÆ—gÕ= vÉ^tÜó‰<AQ#P7Ï0S£w3}•ªíf€]üÀ}D¬—a:%ô˜N¢þ°h0d½F{^aHp’ùAU×TPdHBÊ>Ø{¯Þh!î By]±Ó!u·Ü´³NÑßÓ:³NÔfWlåaˆ .ýßR§¥»ÒíîÓKă™Iþ4/ß…!™UÒÔæ©y³Ü'?¨üv†éúã¦É>½åGún_”‹Nj„$$-$ -jºùž9jù¸­tØAYñ(n¾\ÕJQ$WN uJ¬\×çU®ê§kù-FÃÅõüÿÔêlV^¤ÎØ|”°oVô±Rëë:'µ‘Ÿ›¦0frÜÔ”œ~³¶ºF]ŸJ-¦’Õ¬ŸóL~}‡½vB bŒnqJ½è«¡ô¤Š„‘„¹m‚ÝÇÿœÒÂ8eIQeÜÿÚÕÁÒÜSPZˆfUÞJ#Š 2i¤žõI]4çj -Óˆ•'§‚Œ·ºuaY¼28íœ4h…á4~¬êä–lòM3+.¡»‡Ÿsö¹‘Ÿ‘ÁCòž“äùE:~Ž;Ÿ{»bÿgÓAü NÅÜ -¾7ÀC^¯½û0cŒY ¹¢ÿ‹-xtTct·‰|›uYð‰bŸ›$Í襦y×ʼnOV,{Q!ÁŠAe*w'mÎR“ºq"¤€ª”Û<G 깊—6ê˜1…– ½}úg傊•šMÆ×ß3 ©Ùëì†Øû{m· -qÁ‹OFm•ý*ö’ö¾©b/ãîÛ*F)Úžëæ8`çJiYîЪX¦2þ°õ=Ç,@~ÞÚ»Rê„™;@Ì} -¦ëãA,dWÙSæŸ4ü< iÝ‚ƨw…1ÍüX÷[„Ó¿?­lðG§ËÒ@-D».á- ôBÈÅÅî4ÛV¶Ä¦é“åM§TW kÀŠ}–6Ê'%¯žbÝ€ÜW)Çxíáö+¬¨„À+fÈ !ÁšÜµ‹¤õ!Cš}R!ìx3žÝ¬H÷TØÐî©lÔ>Å]Ó(KÀ#Ãë©rëP¦ÑßÓº›)–Ë)´ä-uáâÜ~™ÇÍg€_1Ì È½À©'É€ÝÕ‰+ -urC‚:&3(Šuš'¹# …®ŸšÜN0C‚¹ì•ñbT!9zàÜ•_®SN!$lï‹‚’™IHPǬ òÜ ¬íÊ6yå&v¯Ü·6ºrÍIV¹syWnÝA‚+ù±Hq‡y"”Ó ‘¤S6щǮX6XH„qYphh‹BÈù „ løºTj®ƒueA’š!NÍüÌú0j[ÙµÐN•›ý7yVa3+öT‚ž“ìctKšP{K.‚ÝÉAŸf'Œ¦Þ•»lËOV9ï…Ù-‹µÈ¡Â -p8ãW‡â,g’!uY¾À±ìèÿdËWŸ)Ò°whÃN?`‹‚íÆy–=[¾Žö†¦c<¨ÇÍ•nú=… ÛIk¿¸±ƒÔ -†÷ÔàŒÉ‘¦[2¡œ@Bi*+g¿¨O(ìùÍÒSB&÷én¥^ôÕP<œ2â.|éIPo¡L§ôÅÂ䈋VRK¾ë…Õ™näÕá°7Þj$íÑïàªÛwÑUÑKxëån'‡—±Òâä”ÛISat¸ÔãNÖŒò­ì±Ø9uY3Áv÷·ƒÕv©÷åƒ÷nÄ YBa0cBœt´òÚØG -Šò´ôøÑ8 d¡hÊ82í¶Û’Ûi6âB:†ÀˆÖi5u04qí=ìƒRQ\ ™£z©A¨ê§ …9Xï‚e -b¦»‹È/åë,ªTJøaXg’mVB¿êu_Å_Ù,b2³Œ_NQJ<\;¼V0ïRÆß,Y³ûâÙI °Çm¥£Z@ä`sK.X6ø£Óݳ›EV íkT«`DÅ(š*N|Ÿh@.6ÎÁ·dŤu‹yÁIò¯Üù2V´g!öeBÒ0ƒ7>^1¬íZì%œ<Èx¯(MCð;I#Ä4tHxƒHh9¥¯Ópô¡`çµ ˜R$tn1l‚jÓ×âÜx˜»šD<)˜ çèP®Ží…“TÛbRœ—†”µç{[aXz°|ž"qô'¥“VðÕb%äøM_]Àœñ6Š‹ÆèÀ`WÚÏ, W›ø‡[ï6‡3cÿØ/¿6Tl€š´Ð¾§Ë-¼!{bÒäJõ°‚¦óz½ƒ:†p6‹Û=u q²PÐŒyÁIûGÞ£¡ÔâŒ;œÄOí²s~á {Æø +5§Ôvì•ŒÓø_©Ùçu2ù_ W¤áECøÊÐ%¡­É_¥aÁHqu̵Ô#v7^ÊñZpmá6€YJè.ðb‚4'§B­ÑI0ƒ×—a¬lÔ;Š™Ã?`X XD–ît嬄=W,[¾¹ê}Ç] z™p‚—‚qÔó†fü®5äWBq"’óB£ï³—jâ`ÇV’eìCózåZÑè>Ã¥À](‚œ© ç>Þ ¤|d¥¬&²2?¶Öô…y`‡*fÊô0X_×y`y0%“©ŒüaùÖ È•t²Ù£ @Åx`~N7¢•Ç^˜»`õ°Ršér0÷~’±îDíü×| 3`RPjη0¸µ+ÁoŸõICgÖ ëiRØzV¤{DM“=c gVÅl Óæ¼N¿+®AYûˆ‡T„”/7d®_XvsîÅ%/ŠnäQ^¸ÒÜ9ñæN‹x!æ^×ó´4Úv©â¦Ýf”¡NûhÂ’¬fz}ëƒXõÆéx…аW™íer¦ÜéLè|»« 7p¸¾Ëê†k¹XöÂÊž†;'ž;ûYNÎz%æÂ¬Ï|üp®?0r»ƒámø à”0L2¸Â¸}p‹ 4ø ³æ®«Q€Ux:Ç—‚_)•Æ·ÚæçëcŒçR·67²—ÿÌ8&’´cbæ‘“7¤9%í)1ÛoÝ›%k¿²s¿ §´2‰y¤ dì×B±âšYßh{ñ )ÇìÜš -:pЇ;}ã }~„aÝ»”HEDCQÇVǤ…ýDëKÔƒ€úS' RtÕ#úR~}eõEóˆŒpžxP¡9M˜+5<4`çý`ĪW ¹êóZ‚Ù&ƒgE*r·07m²æ.<å‰òâæ™Ì31 -²ƒo{p"š äßâêm$ƒ-ýÐC/ÇèD"§'ûxø¼ü"ï@8÷)A·âZ$Õ -=fnG ?:uY‘ê?8Uc½h~*y‰iaB Ê"uY¬M×;Œ01§$QNwX¢\¿$ ‹Ü#ææµ°ñ¶i‰ÆÛe06´¥˜§fãM| #ˆ°1é§bª¸'› -¯ÿ=¹4 ì)Õµ²­/:¬™Æox3ÖY§Ruø2í2ºiâÒ}óÜÈnØ×@¦>©äÊ%âÙ.$ø@b%„6õZ,TÆ]‰)”ÈKiiÚ3â°’Wl…°µ’7>o¹Ùkd¬ko3[S“›£BnãšgÍ¡ï†Ì«Át]Ö qtZqÆÙ?"úY¼–zn˜uÓ{U7­²ö¾nš·ªœÕÍ»QmïÏw²Õ‡,µÑêPA#J6ϳÍ÷uÓ*ÌFÝôaÇ¡¬E}¨€Q7f®Bù7Üè®i=ªÙîøÄskËýqÕ½’'¶=ó¼Ÿ=u ª%,éAËá ía¢6L ùa ïhnŽ*„P-­ÀáŸ6*) -‹uÀQu¦¼¨õÑw­Aøâ‚ú>úh¢ì§SçÔêÃï¦f@˽†02©Zßã[K@9]†Ü¸m+òtY\UÕ -χÕ2 -DYpVÃì1‚uòk Õ>Ø ·ÇW r}˜AßSžUn &Š… ^\ãà -gb£ZЬZjk½ò/PRƒ?N%]áYŠÙ\"бpÙ8;C$@´$÷†O¥."~é -s¶¬ÄßÈÐcî‰_»,×h§ÌÁ‰ûg@iȰ׫TkÈã¾²qF³Òé%aËNôÍ ß¢]ezûâƒCjë²+QË[Oï.:ø¢C(^Å©z!çÁž‡-ŽñGâ’‚‹‰QhôÆZß8ëÄ…y>"} éÉißwÜb^[{È15%VR4Õˆ2ÕÓ‚`‘Öc¯$"¾0C!j„Ä$M§ñ-„¸0!ê Q=¬3õ©ø¦õèìAàê4â’¥ÊØ?ƒëzkt6eƒøXck(ÿý`c90“nkkCõŠÁ¼t|^«¢¶ÁeZc3_ 8(h’jRp'ØPr÷‹I¼"!t´H;I_Ÿ0 h¢ï¤¬qR'Þ¦gò$Ì6 Ò`#Dm v«¬sSCø>¥jò ¬ý]bÏåu´loð³î¯ öÄ÷6|Y4ÀŒõ¶6¯T{sçÊÞÐÊßž#ð|a¤4®‚Sßþ:Çžw¿Î±åù7°!~cíÝ/s¬·ÿ,Ç~ ¡jß'Hÿ*ÇÞ¹±ú%•õõÅαƒèM~p\uã®|¡~^û~fÃÒA¥ÎØÿFoõý‰wÚ¾¼³býËhôv—¿¨4û¹Ú7gã#ôŽÏ‚¸¸~—Ø}·ûûY< mÂ×^=;!Tõ_ïëFV—Çï˜øÆ†Õ'çlpT˯˜P×§ßVKuwþÁMôÅ=¤/_Ûð}µT/„s8w»®†^·Þ*@s©÷üË?f7„Aô™É¢K0ÇC…`ªÝš.០ÕvQÇq´fHòËs:Šuif»¯œ2åNgìè&gží°0¡eè {áÜçzÄlw ^Ä{±Œp†'4„æ$•G"WñYo~½±[žÖH+z¿Ë¿. c(³H¦*,þ ëd…£óí®‚ìJ÷íCÖl{CþB^¬"“Ë”ÃP&vž™ýi™vNTè¹5a“QÍÏŒo—Ö”½ßHòÄ_3æ~5Á&œ$7ÌÀG [6 yb[Hñú@âªÏk þnÒtÊp£Y6`A´ô*AkÓ©¹Ë8Žôƒ9n–ðÞ½î|­²È‡Þ¬òáJÅŠÝ'ó’ÎǬ›CYû„lŒ;ù#ÄðnÈ о”+g"RѧX´XHû–Í\i‘$pÿ^u3Uš¢x‘ÚLà®ÌÏ×Ç,š…,×g°Ë9fL­E z jFmqü²ÎBQP»¼ VJ¼ þ!LùêXLÅJ"ÄJIæÛN%†0B»n`Ä ~ÅsÝ匿×Þ|ÛÙ¦Š¾ûJʰf½cBšè§rZ=’–/ëmwmR6*EãÿÑ^¥[©3Kô x‡ÃHÈ‚ 2ÉŒ2EDEÃZ÷×}ö[ÕIÓwýΟ¬$•TWï®Úµk>æîóG¥‹ÜsÜG€5“R° ïB×yº!ç‚1¤7\rchô%{Ñì…&‹1VÔ²šeáîFµîî4çK Š6ìÏxÒÿˆ&jôJa.}뉾ziZgŽñLs‘àdSÎÊ|”ÔþèȬžâ'Cª5‹bñé!!8—xˆTŽÅ5͵‰bÉ[<5†±ôIò£¯¤¥ °ÒÞF,*…à£hZTç°†8(,>&xµxJS¦²éþè)”®rë}Ün%„ ªå±4¤Ü†eKçÒF“‚¦<>í Î)·«‚²šÚœDÙRòÌ­ýN0ßuU‰Ð"ëUòÓåé–v3qÕ%z{žÁT–sÛ#ȃŰÀ`-aã¿Oñ - l,³˜‰C¹$ÒLæÌ£-×dËwC¡ñTŽjVŒ ¾»3"I¥¨÷ô¿iO\ë¿ÈEnžç»‹ÝãâqõKðœxäÓªªvWwëÒn>¿œÿÇ(¬g‡—ùÊø•ø%ŸvòÕj4öxX÷uK‘ù½L.P°\Ì‚n]Cäd—µÔ/«ú^ÚÆÂË2Hvù1Ý-q€‰–&yn½ëm­wƒüx±â#drJ–¤Ü+¹{ֹ߆Ê.„ƒOž¼´Q‚xÑÔGƒŸNž» v”ÂpC‡iJ#Š -ƒg¯Â7P‹| DG7×Äàa86sýìCÆz‘ØÅö×?ÀT\Ôg.:»¨+òÅÜ‡Ñ ^Nsë{×rüùŠÀ\œÈ²ìm ýJE/ÓxÜŠRÝØ ŒÝh‹– ÁÐ DC €Ó§ ,ã „lÄ“ôN-tÙ£Y:éC “ɲ™Äref^ƒ Ú ˜‹"Ö‘|‚”}ŸfÿÁë€àÕ÷×ÁïäA&Ñ4ÌÄÎqç6•‘ä{êZH¢‡q@x“Ê|¿ä,ê©$‰;žpúßÌÆ?\¨>þ»1@½¼ë"Á -?ÛF^’"ˆýãmtò7N㳪ŽðOrZò ÿƉØw‘P…®*~µ›dÃq¹~V©·]lòÊ»Ûø&”ª¨ªÄÁÞW®ä,G~¾ÞE¶®/˹-g~YzR/½Q˜ºóüfúaŽ@a–c5]r|˜cŸºg•ŸæXèýYŽ)+îƒû¶‹/|™ nd¯sl“~rª°HÉï9€û®‹rÍ÷u¹¾ï€œ>ºè²ßæ¾÷cKïC‰1x˜ïœÌ/+þ³`•ò&ñ³Ó@Uû9”¤¿|¶ŠXúgµñG G5Õøj£’ik_İK˪«#WtCê&].nÇÌÏzÀí‚ç­ŽüiŸÄ°Q?Nª71˜µÿ6ŠY &þ(#fbJr t±åÈíâ(ÿn‰ƒÍ– ÿ9ª²D$j¡´¯`ÍÑJ\ôÎôB†Ÿô ‡›r-?:y†ºþÈŠæŒØWüd=Kë±0CèVå—±ª¾Ô`lM‰õ•=WNøb¯_Á»)Ÿn>“±¦Àòy t\• [çÄ c­•BÖ -ÌX2±â*ÑX˜Œnæ¸M ävu sn4/Y?–äRQ«ÇÁmEá s(±•j{ÅÄf9·áظ!r.ç¼ÛTãgö?¢Û0ŽÍmƒì6lò Û º ÐÜÃð®†U\o»ì­õyCpúmÈ”„¼¢ÈóBé3¹yZ“JÅÇVØq<µƒØ¶ú$qœ6„úšÌƒ˜—˜J-ÈþfðEeª[Ët;ku‰[¸ø“~D›‡1sÇ4NÔ©¿t£q™ì ®rÉ\íܳ´Ÿ6g÷µÂyÕÛgÚüñhùÜzŸGgÌëK›d ‰Pã*¥$’þ5­ZÊö—‹ÍÀ¼<Ææ´s<‡wMw¥:ù«ãlþñFVy0ŽXéu©»6^ÈÄìT¹ €Z¡•G^¹’­´¿R±ÛŽœW€rºˆ^i÷ï"öN]O^ŽàqhzœÌÈÁeëß¡bß©îÓ×¦ÚøÑŠgq:-,ÅÙr{¬È˧¨µ—á.W´çSŽ9(k¥ ð¾®ý6Ùî…ì‹\0мnëûH ÿŒ$gÑH»@PGp\±x§Úwšû»úBÇwº Ô¾O«4í ò>ΕJÅz/n2•ñUæ·‰#ÌP)H&§¥ w=ò¬Åìá/?›‘°´Š¿OYü «Òı³1?ºÙŠSé¬ÃT6¹„ø´‘Þ¢”æñ‘#5„3$y„ËàœWëR\Ç~‚ó'©È^,8LÏ}-;‘²ŠÉ8T¹(‚La‹EE–Rø“gÏ×Ýs.°Ž¹¨e{z»gzúòuÏM§õéwÂ&ùùq¶m?ýâoÛHªÏ_ì^¯;6å“Ý«í½§ÏßÏοqxöÕKµaø§?|ùí_ÿ¢¸9üãŽpJ>O[‚¾Èddí‰ '¸_<0ù¤‚çóù[6³'ÿúþ§ƒw¿_}ýѦôíŸçÿüiÿ‡¾?¨¹ÿ§½-΃WâYž.>ɤ~ŽeÕåkÅ1@XWÑK@ -SÑáËÏo öymøø-Üôr¿ßûÈJ ðïéŠ+õïþæ?Ï›g¸Ì ¢Ó¯Vçß\ü{}x³¼»¾X­›'OÀy{±¾{Ïáôàâòjµ8»¿¸m¨Õ?ƒ?þŸJK6·6,sß73‘mi«] »œîîß®¯–ë«›ÕÙí}»Ç¬ãW‹£‡í^«²§}ÖÎ`9…4~Új·! OÓîãsü‡ï¿õº1] -Æâü.¦³ÂXkACÑ‹}Ð9kL5‹{,^‚ø¬-™öUû݉iÏyó7M4íQi¯›J,˜ˆßqJèO?°1«†ïn B™¿ò½"SvJñoÿÃ3ב§PÜV»ûv}{µºlgûKÄâÍÍúŒE'¾SïØ%í‰Ûo;Ÿ½‡ÉXv”¬yÌqÞ[åx£_rŽ Û¥èe“u/lP@$|¨Ëžò°ç,-©ò¢.aZ $»g2$œƒ0‚¡ Ÿár>Îu¶Çç.:ƒã\†Qfn=ôëñO=z¶tÑò¦ƒ”Åq%0'Õ [ßã‹ì3âƒ-Î3Ä»—ÎÆØjk;›Jž„+YI8Å5Ù˜œGlÀÑ.ÙXyì²]ˆÙ‹ ž¼á]Ž)!‰Âêë K.*»—9†¼p¼w^8Ù¡Uϧz)rŒÀ¡@*•œ½q•‚ˆwøÍ9§Œ,3<.õ¤ì³ªQʉÔê˜XMh—sêiÙå¥.'q¥ÆÏ ¼±Õ'vbw„'A_ŠÙF+¼Ì†Ádï’ -JrIã - t¥3”%K‰º„0¯8ÃRž3šï&ú2â z§ !Ù㣔…íDduJ±¦ {N‚$Iã;¸Š3ØtÙÂiœ4©‹Þb |ç%¯7±¹L·çÀr‰Q -¦ct÷¨'”@ÒŸœ×ƒ£W¯+A¤Ôs“ -óÄ>»k&”´Z®¥‚ÂÈò‰Éj!ò]Q)Ññð#%Àâ\*ŧEž"Z)À$eÿ°Rzôœ-M¤@’ëà8g|ª™;¦/ǼqÎF¹½lɆ#Lã]9óFÍãÒ¥ø -Oˆ%ûv¼¨7j -ëõÞàLe-qìyØÊ -È¢y›ÆÀ¢4qIþćè¢g/<¡\·Ò=‡0mDrÞ|]›U{8 tÍWp4²s“b ÜmÔ2®TbT%Rdi*&iÓè|Mgé<^lQ—¸a”ã(iæHNAÑüvŒY} c\çÇÇ~å¦ùíF÷II¸©@@ƒ­›8÷8ªêY²’Å\û%kê øµ_$R#\ÆK~؉”E1¹~ŠžË ðON¬>|)ÚQ‚ ¢:)y†tø2†’ÄÎÇéì†tæ¤!O¤PNÔÍ ÆØ”¹u124Y†hÈ)O›;.à’F²Y ™´ãƒCüÄ¥LÍ_pƒ¬`.‡údѱvýʰ?PÝA@ÝÅ >Õ½ÏÊ1Á­ÊÌ.h—²Y“vÒØÂú^8 -Tôä=ŒÕÆ‘QÅÚ<©pÀŒach)A;"Ò" -Ç›¤Z‰<úz‰±^Ëm¸‘²Âåã !¸‡¨¢ß="´|§3Iò¼¶oæðzaRB”Á­¦ ¦§õh@¡P’Ø…½QýóŸA„aºýì¨9jdz@ªkal€Ù&àmÀâ’5aç´>†_Q‚3‚#W+ÄZйŒÛi‹˜‹Ž™f!3zìæcn ¯”ìÏ´9µy£>ì–0,Z›p½ éSÌŸ?ö4[ÍH>Û_ݬZ€F’¨ü–—‘`0讦 1Ø£â5ð§&¾1^_vœ(ÈBF¡\U¸‘HŠ[Súí™-÷ -Õž%ÒïNþ䕳ø<éSJuÁs¿˜ƒ©[s»²=×)¨wLõ’,৪²ÐKq(DZë¦nÙ«riå‹´ŒÉ"Ý.fª*)&Òj÷;\g£ŠŽš2PvW?Oüÿÿ#Š\œ5пè.–ê&ô¯ºŒ¥z§õô/»¥zljU¿êºñ¬ñ>GâñÓ“Ó)ýFÙê!/ôb¼I¥ÍCºÊ°%4~4”aɺûØ -4-õ‹{,^‚ø¬-pêUû݉iÏÁ>~ÓêË€0ðÃ|<€{™YdP‘‚-¹•ç¿Ó(£ùeâÑ`h ‘ãNÌ¡ MX°‡0âc•ù Ãkd:åÂÆî@$L(0‹"žíìt`F¿Ó$I‘=‡“³Q˜°8 VŽŸ%Qò½³©Yœ¦xAÞ,àId˜ƒ™É 'Yø”9Ù%•.¥Ö‚Ês& œ—.¯´Ã»P^²D±.”⹇›:oI…ÄlÄâǼì‡,ƒ¸ bï"gHËï ˺´•|ð&#<6¬Îµð¡át—i×¢ä5"ËÀã\¥œ±;9E–ç@]€ø‰4ªÊB¤ãx« ¥tŠly`j7½Ò§†º­Nœ2öG™l4á!Ëß ùæYcÁ? ÿ².ïîß®¯–ë«›ÕÙí}»Ö ) q[íîÛõíÕê²ì/—w×onÖg,ºÕnCð>jA>>Ñù¹€;^7@¿l5±[ÐZÁŽóYÏÐXŒ¸™¡`ÉòHF•AÊ$Èíâ¢4ÜÎD3‹~åQÕ¼¥5ÒUœ‹0‚>cÙñ™_-YqT¶@RZya”¶ü—ù²Y•ãH¢ðô;ÔF YXÎÌÊßÙ‰^˜öƃÀ`Ìe¸Â`#]ƒ°0zû9çDdUu·F–½2⪲¢3+ÿ"N|±zä3æ(U‚`pʬV*Ê!Ï»fµª2ËEt Þ8î(àvC‹*JMˆ¡[´ÒbZÆÌë–ˆƒAycöbÙ“›-¡QQˆ¾(=DU -+ÆFô¯ã›*aiY3uÅ#¾Xd)­i\‡Û8˰©l¡¥zgJv$h8žË%ÏQ3" eµï"«¤âz*ÊFë::öŸV-¸à -Ô†pàèØšŠrñ×l‘Ío´¦Ð@îݦαYZIsi©JµéÉÖZ´/¨qÔYed»µJèPq´ Z¥ZÊpž–Xn¬Ý•7ä1Ú79pvÝ ä‘«õŠ#e9ÉHÕ’MÁÙÈIà‰L´a*å쀛Œt/ŠÎŠ›ôÛnKWºÙ„£Øæ‘×ÎUàe_"ñ¬ÇãFK5 m{B|4­PF¹‘–[9p ÆÑ%{N‡^¼zå 6tŸ·u>}ã)uye'NÞ¼+ vöX¿"à³®ø†€5ã$àžÌ²#p®J‰±Ý"0·ÀûÓ¶C¸Æ ‡v‹À8½s¨®¹wâ)Mó¢ú~Ý\dò/²ÂñidŽ+ú…›Ôkømug_o;ú¶êäk /G¹ï×ØË¼vC½[ÊÝÒIs·îÈ‹öñ¯€÷,w¾â]lú -w÷Ð)3t >7°Â-ì†õv!ww°‹;»]Üë5ìîJ16¥Àa^Ã.|ív©÷W°{V¸]Xn`—é -v•}n`7åvÕÞa7å »)`ŸØ`|4dÙa7_ßu±ªjŪEêy†ìeâ×à@Õ›Su|öÜÏ\ÂÞ¡y«nwòw'‘u«£÷J{¯Çã 1\PÎÊåa²[v<&3¹B]ÔžÝpä“ý“‘e âNA5õÒdø¨Ïì|Ôî;a?êþy?M.êùüåÓoO βíþWA8›ú6–W_Z²'–±´ Çã©28‡´n¡ÄÎÎ’[þÎ’ƒ] L[߬ñâæùM˜òÞÓ¦g9ñAÿÄòÍê¡wÞ°š¦Å½Ø!Á-j¨ñö„"v«•s”µÙ¦ŽËWÕúnc°àÁÿ±ÊÈçÛÓ6V˜¶lŠQl}o±ê;¿ß ¢O„Äÿãáÿ/¿%Üü<“ÙüÌ©<{ØÎÍ?;v±³±Öÿ?LíçÃÖçNh[/»þŒ¿×ÚµŽ³4âïDÒATÛ÷e.\-­fkùÏ\BÜf}} z 8gúˆ—oÑø¦?æËwË?…å Ì?|¯‹}wBZ¦R0;«´ ÛóŸPáàn&ÄhÇ -ÁÁ‚gÕ€|8:²7 ke!Ó—âX$z—Þ£¹²šCï–Rã{Rã‹b0ôF¦ªÕˆ«°Àêb²’8 ÊB ´Ò7 -dµY×+qÉÕmrUFí”ÉzÓðxÊàAÐè¡Ox‘›Ê] W…~Båkcb¥æZòP¹” ôFx­(®‚v°$bn÷M3s”äP3Iß"N´aX««TÉp0¬j%ú¥Ó?(Ó‹4Û.Ù|“`[Ã8ŠãY툴º r‚ -5p‰”Eß‹5…Õ¹‰é›Ûb<ª¢=XR¾XYG™øœ&›áøÈ…¸zûjÌÜ(òV !yu"¬J’ÎQ ?äý‡È\&:sóeV2Ùw¢0ØÆû<ŸÐê£YY—‘±nµ4‡¬‚›Ì‡=‹Ÿpë@ö¸pë“.§©F¢Í=:0ˆÜ»•¥f˜ -¼ÛxŠYˆnߢqGæö#ÐíiHÚ%¢¥´bç4¨ - -ÂÚ%”êˆÀv°¢ã« "-wÑ÷8a©2¾;­žñ’öt˜ÜùáÜ:„C± ‹Áx9Ë53àkÉÙ‹=Mó.÷EÿƒÇ]Ûž+‰Àò0|ÿðå„K’×mÓÒçšØ–7…}å]鞸TËø¾ß=!Jcé¬5¨Ü j]¬#½¤æc«þt”ž ŒØ)q|kŃ`Ç"ï…(ß;¥á‘Ý£°¦: ôc´­´R›WƒFsµ¸Ì7p¾>;㆘C0äÎú¬­(¡„š¨¾òª>ˆýÑq—ÞKÕ@ÊÁ®²ëÀ -{ö ô`¥(7‚mè*•R¢ê7hͺÜlÌÚ(ÁX7±4€AÌÂÉtzZ([ÔFœÐÞ+zi¶Ðhö¦¦µ°¡a‘ÄR ¦u`Õ´H˜`@¶é2”œm”\͆Y¶‚-¬5ª—â”ûŒ”-í-œ&kJ3{Ú㨬o+]ÙwbVj£­Ça½Ö4øm_rÁX½´ B¹Ìåá⯸‡›>Ü:E –R[–% -8,mÅ}ÚTkd [ÅÆÅ•‡=¨Uëª n©“â0h^U'¯`Y ¬£š£yåZ]U§…7ëJ~èµZ¡I‹R{ PÚÌf4ËèÌe›·Å+…N`åöyøWÂnð¬±Ûö¬¨‹J(óõñÔ±¢²–ÝÔá2ÊÊØ|tix(30˜˜3àèÕóœâ ClÔ}£Eèy+G?œtóM2ÃÖñvªgIÌžG‰:3ˆ@³Þœ™[Î:3 µ½W~J5KªôkœYë5j#ªCÏ'„r£Ý£ŠUü”VzÕX¯ÏÇ_Ï:ŸDÏŸ&œG›çv¥õ¨³WóÒ±C®FRØíR ‡ÅwÖÐý—¹¾æ•꾉æ-7Åaãt¹⠖[1p #éV[/†¾»Qqs_æMOߨíÅå•]Zíº¾-ÂM”d«Ô‚²cí¦gݰ1i”jNcÒêQN‹ ´ŠJ›Fe§ÒjXºPÉ K[ºÛbÚ¶H¿˜î½²“is2Ut M›£)ÇgÓjpÊÀ16ÅFwéæŽ êF§xƒßž6ÇSœ¬áis<…_dÇÓæxJìjާÞv˜í #ód’N¦ú9\¶-¨ikÚš³×·©_Â,Ã,ÎÙ>âå[4~…éÂòÝòãOayóßC„«*[° 1Y5®ZV÷êçCS¿?aÞ¯_¾ÿýÕ/,lÿûþãòo˜žCÿr,cý×òõ~ÿËÓÿ(­{„a -ÀWéCÝ´I*&zn€:0!¸?ï¥Ôoc¨”Xqÿ”Øß½;,Ëe]ßëóuãÒcwÂÂ3®­*׳ôgQõ¤3ðí{í „ü¯3ä¾bKóŽp˜xÂ!à ÇŒ,„C@‡ˆ#³¢FÇMê‡<Ô&!7¦'J“'ó!œM©Φ¡!«ÇØg! ã,DqRBÈYˆMrßIíeZZAm˜+7qš³„s|TÏ1Ò@glzpiÞ‘Ž3o: ³ Ž?ˆêlœ…uð–s²ð;+ì> £æÐ endstream endobj 5 0 obj <> endobj 29 0 obj <> endobj 51 0 obj <> endobj 73 0 obj <> endobj 95 0 obj <> endobj 117 0 obj <> endobj 140 0 obj <> endobj 148 0 obj [/View/Design] endobj 149 0 obj <>>> endobj 125 0 obj [/View/Design] endobj 126 0 obj <>>> endobj 103 0 obj [/View/Design] endobj 104 0 obj <>>> endobj 81 0 obj [/View/Design] endobj 82 0 obj <>>> endobj 59 0 obj [/View/Design] endobj 60 0 obj <>>> endobj 37 0 obj [/View/Design] endobj 38 0 obj <>>> endobj 14 0 obj [/View/Design] endobj 15 0 obj <>>> endobj 164 0 obj [163 0 R] endobj 185 0 obj <> endobj xref 0 186 0000000004 65535 f -0000000016 00000 n -0000000250 00000 n -0000043273 00000 n -0000000006 00000 f -0000179331 00000 n -0000000008 00000 f -0000043324 00000 n -0000000009 00000 f -0000000010 00000 f -0000000011 00000 f -0000000012 00000 f -0000000013 00000 f -0000000016 00000 f -0000180537 00000 n -0000180568 00000 n -0000000017 00000 f -0000000018 00000 f -0000000019 00000 f -0000000020 00000 f -0000000021 00000 f -0000000022 00000 f -0000000023 00000 f -0000000024 00000 f -0000000025 00000 f -0000000026 00000 f -0000000027 00000 f -0000000028 00000 f -0000000030 00000 f -0000179401 00000 n -0000000031 00000 f -0000000032 00000 f -0000000033 00000 f -0000000034 00000 f -0000000035 00000 f -0000000036 00000 f -0000000039 00000 f -0000180421 00000 n -0000180452 00000 n -0000000040 00000 f -0000000041 00000 f -0000000042 00000 f -0000000043 00000 f -0000000044 00000 f -0000000045 00000 f -0000000046 00000 f -0000000047 00000 f -0000000048 00000 f -0000000049 00000 f -0000000050 00000 f -0000000052 00000 f -0000179472 00000 n -0000000053 00000 f -0000000054 00000 f -0000000055 00000 f -0000000056 00000 f -0000000057 00000 f -0000000058 00000 f -0000000061 00000 f -0000180305 00000 n -0000180336 00000 n -0000000062 00000 f -0000000063 00000 f -0000000064 00000 f -0000000065 00000 f -0000000066 00000 f -0000000067 00000 f -0000000068 00000 f -0000000069 00000 f -0000000070 00000 f -0000000071 00000 f -0000000072 00000 f -0000000074 00000 f -0000179543 00000 n -0000000075 00000 f -0000000076 00000 f -0000000077 00000 f -0000000078 00000 f -0000000079 00000 f -0000000080 00000 f -0000000083 00000 f -0000180189 00000 n -0000180220 00000 n -0000000084 00000 f -0000000085 00000 f -0000000086 00000 f -0000000087 00000 f -0000000088 00000 f -0000000089 00000 f -0000000090 00000 f -0000000091 00000 f -0000000092 00000 f -0000000093 00000 f -0000000094 00000 f -0000000096 00000 f -0000179614 00000 n -0000000097 00000 f -0000000098 00000 f -0000000099 00000 f -0000000100 00000 f -0000000101 00000 f -0000000102 00000 f -0000000105 00000 f -0000180071 00000 n -0000180103 00000 n -0000000106 00000 f -0000000107 00000 f -0000000108 00000 f -0000000109 00000 f -0000000110 00000 f -0000000111 00000 f -0000000112 00000 f -0000000113 00000 f -0000000114 00000 f -0000000115 00000 f -0000000116 00000 f -0000000118 00000 f -0000179687 00000 n -0000000119 00000 f -0000000120 00000 f -0000000121 00000 f -0000000122 00000 f -0000000123 00000 f -0000000124 00000 f -0000000127 00000 f -0000179953 00000 n -0000179985 00000 n -0000000128 00000 f -0000000129 00000 f -0000000130 00000 f -0000000131 00000 f -0000000132 00000 f -0000000133 00000 f -0000000134 00000 f -0000000135 00000 f -0000000136 00000 f -0000000137 00000 f -0000000138 00000 f -0000000139 00000 f -0000000000 00000 f -0000179761 00000 n -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000179835 00000 n -0000179867 00000 n -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000000000 00000 f -0000044989 00000 n -0000180653 00000 n -0000043646 00000 n -0000045295 00000 n -0000045181 00000 n -0000044253 00000 n -0000044425 00000 n -0000044475 00000 n -0000045063 00000 n -0000045095 00000 n -0000045371 00000 n -0000045743 00000 n -0000046721 00000 n -0000052837 00000 n -0000053300 00000 n -0000071520 00000 n -0000098254 00000 n -0000121507 00000 n -0000129082 00000 n -0000132781 00000 n -0000145416 00000 n -0000162249 00000 n -0000180680 00000 n -trailer <]>> startxref 180863 %%EOF \ No newline at end of file diff --git a/bower_components/font-awesome/src/assets/js/bootstrap-3.0.0.min.js b/bower_components/font-awesome/src/assets/js/bootstrap-3.0.0.min.js new file mode 100755 index 00000000..1765631f --- /dev/null +++ b/bower_components/font-awesome/src/assets/js/bootstrap-3.0.0.min.js @@ -0,0 +1,6 @@ +/** +* bootstrap.js v3.0.0 by @fat and @mdo +* Copyright 2013 Twitter Inc. +* http://www.apache.org/licenses/LICENSE-2.0 +*/ +if(!jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(window.jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]');if(a.length){var b=this.$element.find("input").prop("checked",!this.$element.hasClass("active")).trigger("change");"radio"===b.prop("type")&&a.find(".active").removeClass("active")}this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(window.jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)}).emulateTransitionEnd(600)}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(window.jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(''}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(window.jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(window.jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(window.jQuery); \ No newline at end of file diff --git a/bower_components/font-awesome/src/assets/js/html5shiv.js b/bower_components/font-awesome/src/assets/js/html5shiv.js new file mode 100755 index 00000000..784f221c --- /dev/null +++ b/bower_components/font-awesome/src/assets/js/html5shiv.js @@ -0,0 +1,8 @@ +/* + HTML5 Shiv v3.6.2pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed +*/ +(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag(); +a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x"; +c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| +"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",version:"3.6.2pre",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment(); +for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d type pairs + class2type = {}, + + // List of deleted data cache ids, so we can reuse them + core_deletedIds = [], + + core_version = "1.10.2", + + // Save a reference to some core methods + core_concat = core_deletedIds.concat, + core_push = core_deletedIds.push, + core_slice = core_deletedIds.slice, + core_indexOf = core_deletedIds.indexOf, + core_toString = class2type.toString, + core_hasOwn = class2type.hasOwnProperty, + core_trim = core_version.trim, + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Used for matching numbers + core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, + + // Used for splitting on whitespace + core_rnotwhite = /\S+/g, + + // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE) + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, + rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }, + + // The ready event handler + completed = function( event ) { + + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { + detach(); + jQuery.ready(); + } + }, + // Clean-up method for dom ready events + detach = function() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: core_version, + + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return core_slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; + }, + + slice: function() { + return this.pushStack( core_slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: core_push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ), + + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger("ready").off("ready"); + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + /* jshint eqeqeq: false */ + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + if ( obj == null ) { + return String( obj ); + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ core_toString.call(obj) ] || "object" : + typeof obj; + }, + + isPlainObject: function( obj ) { + var key; + + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !core_hasOwn.call(obj, "constructor") && + !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Support: IE<9 + // Handle iteration over inherited properties before own properties. + if ( jQuery.support.ownLast ) { + for ( key in obj ) { + return core_hasOwn.call( obj, key ); + } + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + for ( key in obj ) {} + + return key === undefined || core_hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + // data: string of html + // context (optional): If specified, the fragment will be created in this context, defaults to document + // keepScripts (optional): If true, will include scripts passed in the html string + parseHTML: function( data, context, keepScripts ) { + if ( !data || typeof data !== "string" ) { + return null; + } + if ( typeof context === "boolean" ) { + keepScripts = context; + context = false; + } + context = context || document; + + var parsed = rsingleTag.exec( data ), + scripts = !keepScripts && []; + + // Single tag + if ( parsed ) { + return [ context.createElement( parsed[1] ) ]; + } + + parsed = jQuery.buildFragment( [ data ], context, scripts ); + if ( scripts ) { + jQuery( scripts ).remove(); + } + return jQuery.merge( [], parsed.childNodes ); + }, + + parseJSON: function( data ) { + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + if ( data === null ) { + return data; + } + + if ( typeof data === "string" ) { + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + if ( data ) { + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + } + } + } + + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + if ( !data || typeof data !== "string" ) { + return null; + } + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + // Use native String.trim function wherever possible + trim: core_trim && !core_trim.call("\uFEFF\xA0") ? + function( text ) { + return text == null ? + "" : + core_trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + core_push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( core_indexOf ) { + return core_indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var l = second.length, + i = first.length, + j = 0; + + if ( typeof l === "number" ) { + for ( ; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var retVal, + ret = [], + i = 0, + length = elems.length; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return core_concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var args, proxy, tmp; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = core_slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + // Multifunctional method to get and set values of a collection + // The value/s can optionally be executed if it's a function + access: function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; + }, + + now: function() { + return ( new Date() ).getTime(); + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations. + // Note: this method belongs to the css module but it's needed here for the support module. + // If support gets modularized, this method should be moved back to the css module. + swap: function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; + } +}); + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || type !== "function" && + ( length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj ); +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); +/*! + * Sizzle CSS Selector Engine v1.10.2 + * http://sizzlejs.com/ + * + * Copyright 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2013-07-03 + */ +(function( window, undefined ) { + +var i, + support, + cachedruns, + Expr, + getText, + isXML, + compile, + outermostContext, + sortInput, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + hasDuplicate = false, + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + return 0; + }, + + // General-purpose constants + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf if we can't use a native one + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + + "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + + // Prefer arguments quoted, + // then not containing pseudos/brackets, + // then attribute selectors/non-parenthetical expressions, + // then anything else + // These preferences are here to reduce the number of selectors + // needing tokenize in the PSEUDO preFilter + pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rsibling = new RegExp( whitespace + "*[+~]" ), + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + // BMP codepoint + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { + return []; + } + + if ( documentIsHTML && !seed ) { + + // Shortcuts + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // QSA path + if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + nid = old = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && context.parentNode || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key += " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = attrs.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Detect xml + * @param {Element|Object} elem An element or a document + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var doc = node ? node.ownerDocument || node : preferredDoc, + parent = doc.defaultView; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + + // Support tests + documentIsHTML = !isXML( doc ); + + // Support: IE>8 + // If iframe document is assigned to "document" variable and if iframe has been reloaded, + // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 + // IE6-8 do not support the defaultView property so parent will be undefined + if ( parent && parent.attachEvent && parent !== parent.top ) { + parent.attachEvent( "onbeforeunload", function() { + setDocument(); + }); + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Check if getElementsByClassName can be trusted + support.getElementsByClassName = assert(function( div ) { + div.innerHTML = "
"; + + // Support: Safari<4 + // Catch class over-caching + div.firstChild.className = "i"; + // Support: Opera<10 + // Catch gEBCN failure to find non-leading classes + return div.getElementsByClassName("i").length === 2; + }); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !doc.getElementsByName || !doc.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && documentIsHTML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + + // Support: Opera 10-12/IE8 + // ^= $= *= and empty values + // Should not select anything + // Support: Windows 8 Native Apps + // The type attribute is restricted during .innerHTML assignment + var input = doc.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "t", "" ); + + if ( div.querySelectorAll("[t^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = rnative.test( docElem.contains ) || docElem.compareDocumentPosition ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = docElem.compareDocumentPosition ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b ); + + if ( compare ) { + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === doc || contains(preferredDoc, a) ) { + return -1; + } + if ( b === doc || contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } + + // Not directly comparable, sort on existence of method + return a.compareDocumentPosition ? -1 : 1; + } : + function( a, b ) { + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Parentless nodes are either documents or disconnected + } else if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return doc; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [elem] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val === undefined ? + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null : + val; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + for ( ; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (see #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[5] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] && match[4] !== undefined ) { + match[2] = match[4]; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), + // not comment, processing instructions, or others + // Thanks to Diego Perini for the nodeName shortcut + // Greater than "@" means alpha characters (specifically not starting with "#" or "?") + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +function tokenize( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( tokens = [] ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +} + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var data, cache, outerCache, + dirkey = dirruns + " " + doneName; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) { + if ( (data = cache[1]) === true || data === cachedruns ) { + return data === true; + } + } else { + cache = outerCache[ dir ] = [ dirkey ]; + cache[1] = matcher( elem, context, xml ) || cachedruns; + if ( cache[1] === true ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + // A counter to specify which element is currently being matched + var matcherCachedRuns = 0, + bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, expandContext ) { + var elem, j, matcher, + setMatched = [], + matchedCount = 0, + i = "0", + unmatched = seed && [], + outermost = expandContext != null, + contextBackup = outermostContext, + // We must always have either seed elements or context + elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1); + + if ( outermost ) { + outermostContext = context !== document && context; + cachedruns = matcherCachedRuns; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + for ( ; (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + cachedruns = ++matcherCachedRuns; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !group ) { + group = tokenize( selector ); + } + i = group.length; + while ( i-- ) { + cached = matcherFromTokens( group[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + } + return cached; +}; + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function select( selector, context, results, seed ) { + var i, tokens, token, type, find, + match = tokenize( selector ); + + if ( !seed ) { + // Try to minimize operations if there is only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + } + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && context.parentNode || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + } + + // Compile and execute a filtering function + // Provide `match` to avoid retokenization if we modified the selector above + compile( selector, match )( + seed, + context, + !documentIsHTML, + results, + rsibling.test( selector ) + ); + return results; +} + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome<14 +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + elem[ name ] === true ? name.toLowerCase() : null; + } + }); +} + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})( window ); +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // First callback to fire (used internally by add and fireWith) + firingStart, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + firingLength = 0; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( list && ( !fired || stack ) ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var action = tuple[ 0 ], + fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = core_slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; + if( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); +jQuery.support = (function( support ) { + + var all, a, input, select, fragment, opt, eventName, isSupported, i, + div = document.createElement("div"); + + // Setup + div.setAttribute( "className", "t" ); + div.innerHTML = "
a"; + + // Finish early in limited (non-browser) environments + all = div.getElementsByTagName("*") || []; + a = div.getElementsByTagName("a")[ 0 ]; + if ( !a || !a.style || !all.length ) { + return support; + } + + // First batch of tests + select = document.createElement("select"); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName("input")[ 0 ]; + + a.style.cssText = "top:1px;float:left;opacity:.5"; + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + support.getSetAttribute = div.className !== "t"; + + // IE strips leading whitespace when .innerHTML is used + support.leadingWhitespace = div.firstChild.nodeType === 3; + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + support.tbody = !div.getElementsByTagName("tbody").length; + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + support.htmlSerialize = !!div.getElementsByTagName("link").length; + + // Get the style information from getAttribute + // (IE uses .cssText instead) + support.style = /top/.test( a.getAttribute("style") ); + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + support.hrefNormalized = a.getAttribute("href") === "/a"; + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + support.opacity = /^0.5/.test( a.style.opacity ); + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + support.cssFloat = !!a.style.cssFloat; + + // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere) + support.checkOn = !!input.value; + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + support.optSelected = opt.selected; + + // Tests for enctype support on a form (#6743) + support.enctype = !!document.createElement("form").enctype; + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + support.html5Clone = document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>"; + + // Will be defined later + support.inlineBlockNeedsLayout = false; + support.shrinkWrapBlocks = false; + support.pixelPosition = false; + support.deleteExpando = true; + support.noCloneEvent = true; + support.reliableMarginRight = true; + support.boxSizingReliable = true; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Support: IE<9 + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + // Check if we can trust getAttribute("value") + input = document.createElement("input"); + input.setAttribute( "value", "" ); + support.input = input.getAttribute( "value" ) === ""; + + // Check if an input maintains its value after becoming a radio + input.value = "t"; + input.setAttribute( "type", "radio" ); + support.radioValue = input.value === "t"; + + // #11217 - WebKit loses check when the name is after the checked attribute + input.setAttribute( "checked", "t" ); + input.setAttribute( "name", "t" ); + + fragment = document.createDocumentFragment(); + fragment.appendChild( input ); + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Opera does not clone events (and typeof div.attachEvent === undefined). + // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() + if ( div.attachEvent ) { + div.attachEvent( "onclick", function() { + support.noCloneEvent = false; + }); + + div.cloneNode( true ).click(); + } + + // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event) + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) + for ( i in { submit: true, change: true, focusin: true }) { + div.setAttribute( eventName = "on" + i, "t" ); + + support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false; + } + + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + // Support: IE<9 + // Iteration over object's inherited properties before its own. + for ( i in jQuery( support ) ) { + break; + } + support.ownLast = i !== "0"; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, marginDiv, tds, + divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;", + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + container = document.createElement("div"); + container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"; + + body.appendChild( container ).appendChild( div ); + + // Support: IE8 + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + div.innerHTML = "
t
"; + tds = div.getElementsByTagName("td"); + tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Support: IE8 + // Check if empty table cells still have offsetWidth/Height + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Check box-sizing and margin behavior. + div.innerHTML = ""; + div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"; + + // Workaround failing boxSizing test due to offsetWidth returning wrong value + // with some non-1 values of body zoom, ticket #13543 + jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() { + support.boxSizing = div.offsetWidth === 4; + }); + + // Use window.getComputedStyle because jsdom on node.js will break without it. + if ( window.getComputedStyle ) { + support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; + support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. (#3333) + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + marginDiv = div.appendChild( document.createElement("div") ); + marginDiv.style.cssText = div.style.cssText = divReset; + marginDiv.style.marginRight = marginDiv.style.width = "0"; + div.style.width = "1px"; + + support.reliableMarginRight = + !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); + } + + if ( typeof div.style.zoom !== core_strundefined ) { + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.innerHTML = ""; + div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1"; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); + + // Support: IE6 + // Check if elements with layout shrink-wrap their children + div.style.display = "block"; + div.innerHTML = "
"; + div.firstChild.style.width = "5px"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); + + if ( support.inlineBlockNeedsLayout ) { + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); + + // Null elements to avoid leaks in IE + container = div = tds = marginDiv = null; + }); + + // Null elements to avoid leaks in IE + all = select = fragment = opt = a = input = null; + + return support; +})({}); + +var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, + rmultiDash = /([A-Z])/g; + +function internalData( elem, name, data, pvt /* Internal Use Only */ ){ + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var ret, thisCache, + internalKey = jQuery.expando, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + id = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + // Avoid exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( typeof name === "string" ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } else { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + i = name.length; + while ( i-- ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + /* jshint eqeqeq: false */ + } else if ( jQuery.support.deleteExpando || cache != cache.window ) { + /* jshint eqeqeq: true */ + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } +} + +jQuery.extend({ + cache: {}, + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "applet": true, + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + // Do not set data on non-element because it will not be cleared (#8335). + if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) { + return false; + } + + var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ]; + + // nodes accept data unless otherwise specified; rejection can be conditional + return !noData || noData !== true && elem.getAttribute("classid") === noData; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var attrs, name, + data = null, + i = 0, + elem = this[0]; + + // Special expections of .data basically thwart jQuery.access, + // so implement the relevant behavior ourselves + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + attrs = elem.attributes; + for ( ; i < attrs.length; i++ ) { + name = attrs[i].name; + + if ( name.indexOf("data-") === 0 ) { + name = jQuery.camelCase( name.slice(5) ); + + dataAttr( elem, name, data[ name ] ); + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + return arguments.length > 1 ? + + // Sets one value + this.each(function() { + jQuery.data( this, key, value ); + }) : + + // Gets one value + // Try to fetch any internally stored data first + elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null; + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var nodeHook, boolHook, + rclass = /[\t\r\n\f]/g, + rreturn = /\r/g, + rfocusable = /^(?:input|select|textarea|button|object)$/i, + rclickable = /^(?:a|area)$/i, + ruseDefault = /^(?:checked|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + getSetInput = jQuery.support.input; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call( this, j, this.className ) ); + }); + } + + if ( proceed ) { + // The disjunction here is for better compressibility (see removeClass) + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + " " + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + elem.className = jQuery.trim( cur ); + + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = arguments.length === 0 || typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call( this, j, this.className ) ); + }); + } + if ( proceed ) { + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + "" + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + elem.className = value ? jQuery.trim( cur ) : ""; + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value; + + if ( typeof stateVal === "boolean" && type === "string" ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + classNames = value.match( core_rnotwhite ) || []; + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( type === core_strundefined || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // If the element has a class name or if we're passed "false", + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var ret, hooks, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // Use proper attribute retrieval(#6932, #12072) + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + elem.text; + } + }, + select: { + get: function( elem ) { + var value, option, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one" || index < 0, + values = one ? null : [], + max = one ? index + 1 : options.length, + i = index < 0 ? + max : + one ? index : 0; + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // oldIE doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + // Don't return options that are disabled or in a disabled optgroup + ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && + ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) { + optionSet = true; + } + } + + // force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attr: function( elem, name, value ) { + var hooks, ret, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === core_strundefined ) { + return jQuery.prop( elem, name, value ); + } + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + + } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, value + "" ); + return value; + } + + } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var name, propName, + i = 0, + attrNames = value && value.match( core_rnotwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( (name = attrNames[i++]) ) { + propName = jQuery.propFix[ name ] || name; + + // Boolean attributes get special treatment (#10870) + if ( jQuery.expr.match.bool.test( name ) ) { + // Set corresponding property to false + if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + elem[ propName ] = false; + // Support: IE<9 + // Also clear defaultChecked/defaultSelected (if appropriate) + } else { + elem[ jQuery.camelCase( "default-" + name ) ] = + elem[ propName ] = false; + } + + // See #9699 for explanation of this approach (setting first, then removal) + } else { + jQuery.attr( elem, name, "" ); + } + + elem.removeAttribute( getSetAttribute ? name : propName ); + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to default in case type is set after value during creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ? + ret : + ( elem[ name ] = value ); + + } else { + return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ? + ret : + elem[ name ]; + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + return tabindex ? + parseInt( tabindex, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + -1; + } + } + } +}); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + // IE<8 needs the *property* name + elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name ); + + // Use defaultChecked and defaultSelected for oldIE + } else { + elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true; + } + + return name; + } +}; +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr; + + jQuery.expr.attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ? + function( elem, name, isXML ) { + var fn = jQuery.expr.attrHandle[ name ], + ret = isXML ? + undefined : + /* jshint eqeqeq: false */ + (jQuery.expr.attrHandle[ name ] = undefined) != + getter( elem, name, isXML ) ? + + name.toLowerCase() : + null; + jQuery.expr.attrHandle[ name ] = fn; + return ret; + } : + function( elem, name, isXML ) { + return isXML ? + undefined : + elem[ jQuery.camelCase( "default-" + name ) ] ? + name.toLowerCase() : + null; + }; +}); + +// fix oldIE attroperties +if ( !getSetInput || !getSetAttribute ) { + jQuery.attrHooks.value = { + set: function( elem, value, name ) { + if ( jQuery.nodeName( elem, "input" ) ) { + // Does not return so that setAttribute is also used + elem.defaultValue = value; + } else { + // Use nodeHook if defined (#1954); otherwise setAttribute is fine + return nodeHook && nodeHook.set( elem, value, name ); + } + } + }; +} + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = { + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + elem.setAttributeNode( + (ret = elem.ownerDocument.createAttribute( name )) + ); + } + + ret.value = value += ""; + + // Break association with cloned elements by also using setAttribute (#9646) + return name === "value" || value === elem.getAttribute( name ) ? + value : + undefined; + } + }; + jQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords = + // Some attributes are constructed with empty-string values when not defined + function( elem, name, isXML ) { + var ret; + return isXML ? + undefined : + (ret = elem.getAttributeNode( name )) && ret.value !== "" ? + ret.value : + null; + }; + jQuery.valHooks.button = { + get: function( elem, name ) { + var ret = elem.getAttributeNode( name ); + return ret && ret.specified ? + ret.value : + undefined; + }, + set: nodeHook.set + }; + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + set: function( elem, value, name ) { + nodeHook.set( elem, value === "" ? false : value, name ); + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }; + }); +} + + +// Some attributes require a special call on IE +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !jQuery.support.hrefNormalized ) { + // href/src property should get the full normalized URL (#10299/#12915) + jQuery.each([ "href", "src" ], function( i, name ) { + jQuery.propHooks[ name ] = { + get: function( elem ) { + return elem.getAttribute( name, 4 ); + } + }; + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Note: IE uppercases css property names, but if we were to .toLowerCase() + // .cssText, that would destroy case senstitivity in URL's, like in "background" + return elem.style.cssText || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = value + "" ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }; +} + +jQuery.each([ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +}); + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }; + if ( !jQuery.support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + // Support: Webkit + // "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + }; + } +}); +var rformElems = /^(?:input|select|textarea)$/i, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + var tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + eventPath = [ elem || document ], + type = core_hasOwn.call( event, "type" ) ? event.type : event, + namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && + jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + try { + elem[ type ](); + } catch ( e ) { + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, ret, handleObj, matched, j, + handlerQueue = [], + args = core_slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var sel, handleObj, matches, i, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + /* jshint eqeqeq: false */ + for ( ; cur != this; cur = cur.parentNode || this ) { + /* jshint eqeqeq: true */ + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Chrome 23+, Safari? + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + try { + this.focus(); + return false; + } catch ( e ) { + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Even when returnValue equals to undefined Firefox will still show alert + if ( event.result !== undefined ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === core_strundefined ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if ( !e ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + if ( !e ) { + return; + } + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For 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 && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "submitBubbles" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "submitBubbles", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "changeBubbles", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var type, origFn; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); +var isSimple = /^.[^:#\[\.,]*$/, + rparentsprev = /^(?:parents|prev(?:Until|All))/, + rneedsContext = jQuery.expr.match.needsContext, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var i, + ret = [], + self = this, + len = self.length; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector || [], true) ); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector || [], false) ); + }, + + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + ret = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { + // Always skip document fragments + if ( cur.nodeType < 11 && (pos ? + pos.index(cur) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector(cur, selectors)) ) { + + cur = ret.push( cur ); + break; + } + } + } + + return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( jQuery.unique(all) ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + if ( this.length > 1 ) { + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + ret = jQuery.unique( ret ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + } + + return this.pushStack( ret ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + })); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + }); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + }); + + } + + if ( typeof qualifier === "string" ) { + if ( isSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; + }); +} +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
", "
" ], + area: [ 1, "", "" ], + param: [ 1, "", "" ], + thead: [ 1, "", "
" ], + tr: [ 2, "", "
" ], + col: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
", "
" ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +jQuery.fn.extend({ + text: function( value ) { + return jQuery.access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + append: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + }); + }, + + before: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + // keepData is for internal use only--do not document + remove: function( selector, keepData ) { + var elem, + elems = selector ? jQuery.filter( selector, this ) : this, + i = 0; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function () { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return jQuery.access( this, function( value ) { + var elem = this[0] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch(e) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var + // Snapshot the DOM in case .domManip sweeps something relevant into its fragment + args = jQuery.map( this, function( elem ) { + return [ elem.nextSibling, elem.parentNode ]; + }), + i = 0; + + // Make the changes, replacing each context element with the new content + this.domManip( arguments, function( elem ) { + var next = args[ i++ ], + parent = args[ i++ ]; + + if ( parent ) { + // Don't use the snapshot next if it has moved (#13810) + if ( next && next.parentNode !== parent ) { + next = this.nextSibling; + } + jQuery( this ).remove(); + parent.insertBefore( elem, next ); + } + // Allow new content to include elements from the context set + }, true ); + + // Force removal if there was no new content (e.g., from empty arguments) + return i ? this : this.remove(); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, callback, allowIntersection ) { + + // Flatten any nested arrays + args = core_concat.apply( [], args ); + + var first, node, hasScripts, + scripts, doc, fragment, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[0], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[0] = value.call( this, index, self.html() ); + } + self.domManip( args, callback, allowIntersection ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( this[i], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Hope ajax is available... + jQuery._evalUrl( node.src ); + } else { + jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return this; + } +}); + +// Support: IE<8 +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName("tbody")[0] || + elem.appendChild( elem.ownerDocument.createElement("tbody") ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + if ( match ) { + elem.type = match[1]; + } else { + elem.removeAttribute("type"); + } + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var elem, + i = 0; + for ( ; (elem = elems[i]) != null; i++ ) { + jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); + } +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone(true); + jQuery( insert[i] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + core_push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + +// Used in buildFragment, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( manipulation_rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + // Fix all IE cloning issues + for ( i = 0; (node = srcElements[i]) != null; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + fixCloneNodeIssues( node, destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0; (node = srcElements[i]) != null; i++ ) { + cloneCopyEvent( node, destElements[i] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var j, elem, contains, + tmp, tag, tbody, wrap, + l = elems.length, + + // Ensure a safe fragment + safe = createSafeFragment( context ), + + nodes = [], + i = 0; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || safe.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + + tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; + + // Descend through wrappers to the right content + j = wrap[0]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Manually add leading whitespace removed by IE + if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); + } + + // Remove IE's autoinserted from table fragments + if ( !jQuery.support.tbody ) { + + // String was a , *may* have spurious + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare or + wrap[1] === "
" && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !jQuery.support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( safe.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + tmp = null; + + return safe; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = jQuery.support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( typeof elem.removeAttribute !== core_strundefined ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + core_deletedIds.push( id ); + } + } + } + } + }, + + _evalUrl: function( url ) { + return jQuery.ajax({ + url: url, + type: "GET", + dataType: "script", + async: false, + global: false, + "throws": true + }); + } +}); +jQuery.fn.extend({ + wrapAll: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapAll( html.call(this, i) ); + }); + } + + if ( this[0] ) { + // The elements to wrap the target around + var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); + + if ( this[0].parentNode ) { + wrap.insertBefore( this[0] ); + } + + wrap.map(function() { + var elem = this; + + while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { + elem = elem.firstChild; + } + + return elem; + }).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapInner( html.call(this, i) ); + }); + } + + return this.each(function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + }); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each(function(i) { + jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); + }); + }, + + unwrap: function() { + return this.parent().each(function() { + if ( !jQuery.nodeName( this, "body" ) ) { + jQuery( this ).replaceWith( this.childNodes ); + } + }).end(); + } +}); +var iframe, getStyles, curCSS, + ralpha = /alpha\([^)]*\)/i, + ropacity = /opacity\s*=\s*([^)]*)/, + rposition = /^(top|right|bottom|left)$/, + // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" + // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rmargin = /^margin/, + rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), + rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), + rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ), + elemdisplay = { BODY: "block" }, + + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: 0, + fontWeight: 400 + }, + + cssExpand = [ "Top", "Right", "Bottom", "Left" ], + cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; + +// return a css property mapped to a potentially vendor prefixed property +function vendorPropName( style, name ) { + + // shortcut for names that are not vendor prefixed + if ( name in style ) { + return name; + } + + // check for vendor prefixed names + var capName = name.charAt(0).toUpperCase() + name.slice(1), + origName = name, + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in style ) { + return name; + } + } + + return origName; +} + +function isHidden( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); +} + +function showHide( elements, show ) { + var display, elem, hidden, + values = [], + index = 0, + length = elements.length; + + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + values[ index ] = jQuery._data( elem, "olddisplay" ); + display = elem.style.display; + if ( show ) { + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !values[ index ] && display === "none" ) { + elem.style.display = ""; + } + + // Set elements which have been overridden with display: none + // in a stylesheet to whatever the default browser style is + // for such an element + if ( elem.style.display === "" && isHidden( elem ) ) { + values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); + } + } else { + + if ( !values[ index ] ) { + hidden = isHidden( elem ); + + if ( display && display !== "none" || !hidden ) { + jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); + } + } + } + } + + // Set the display of most of the elements in a second loop + // to avoid the constant reflow + for ( index = 0; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + if ( !show || elem.style.display === "none" || elem.style.display === "" ) { + elem.style.display = show ? values[ index ] || "" : "none"; + } + } + + return elements; +} + +jQuery.fn.extend({ + css: function( name, value ) { + return jQuery.access( this, function( elem, name, value ) { + var len, styles, + map = {}, + i = 0; + + if ( jQuery.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + }, + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each(function() { + if ( isHidden( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + }); + } +}); + +jQuery.extend({ + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "columnCount": true, + "fillOpacity": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + // normalize float css property + "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + style = elem.style; + + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && (ret = rrelNum.exec( value )) ) { + value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); + // Fixes bug #9237 + type = "number"; + } + + // Make sure that NaN and null values aren't set. See: #7116 + if ( value == null || type === "number" && isNaN( value ) ) { + return; + } + + // If a number was passed in, add 'px' to the (except for certain CSS properties) + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { + value += "px"; + } + + // Fixes #8908, it can be done more correctly by specifing setters in cssHooks, + // but it would mean to define eight (for every problematic property) identical functions + if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { + + // Wrapped to prevent IE from throwing errors when 'invalid' values are provided + // Fixes bug #5509 + try { + style[ name ] = value; + } catch(e) {} + } + + } else { + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var num, val, hooks, + origName = jQuery.camelCase( name ); + + // Make sure that we're working with the right name + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + //convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Return, converting to number if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; + } + return val; + } +}); + +// NOTE: we've included the "window" in window.getComputedStyle +// because jsdom on node.js will break without it. +if ( window.getComputedStyle ) { + getStyles = function( elem ) { + return window.getComputedStyle( elem, null ); + }; + + curCSS = function( elem, name, _computed ) { + var width, minWidth, maxWidth, + computed = _computed || getStyles( elem ), + + // getPropertyValue is only needed for .css('filter') in IE9, see #12537 + ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined, + style = elem.style; + + if ( computed ) { + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right + // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels + // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret; + }; +} else if ( document.documentElement.currentStyle ) { + getStyles = function( elem ) { + return elem.currentStyle; + }; + + curCSS = function( elem, name, _computed ) { + var left, rs, rsLeft, + computed = _computed || getStyles( elem ), + ret = computed ? computed[ name ] : undefined, + style = elem.style; + + // Avoid setting ret to empty string here + // so we don't default to auto + if ( ret == null && style && style[ name ] ) { + ret = style[ name ]; + } + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + // but not position css attributes, as those are proportional to the parent element instead + // and we can't measure the parent instead because it might trigger a "stacking dolls" problem + if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { + + // Remember the original values + left = style.left; + rs = elem.runtimeStyle; + rsLeft = rs && rs.left; + + // Put in the new values to get a computed value out + if ( rsLeft ) { + rs.left = elem.currentStyle.left; + } + style.left = name === "fontSize" ? "1em" : ret; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + if ( rsLeft ) { + rs.left = rsLeft; + } + } + + return ret === "" ? "auto" : ret; + }; +} + +function setPositiveNumber( elem, value, subtract ) { + var matches = rnumsplit.exec( value ); + return matches ? + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i = extra === ( isBorderBox ? "border" : "content" ) ? + // If we already have the right measurement, avoid augmentation + 4 : + // Otherwise initialize for horizontal or vertical properties + name === "width" ? 1 : 0, + + val = 0; + + for ( ; i < 4; i += 2 ) { + // both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // at this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + // at this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // at this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with offset property, which is equivalent to the border-box value + var valueIsBorderBox = true, + val = name === "width" ? elem.offsetWidth : elem.offsetHeight, + styles = getStyles( elem ), + isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // some non-html elements return undefined for offsetWidth, so check for null/undefined + // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 + // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 + if ( val <= 0 || val == null ) { + // Fall back to computed then uncomputed css if necessary + val = curCSS( elem, name, styles ); + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + } + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test(val) ) { + return val; + } + + // we need the check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + } + + // use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +// Try to determine the default display value of an element +function css_defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + // Use the already-created iframe if possible + iframe = ( iframe || + jQuery("