From 2f4f56f40d7803eb2bdde66cbe711f4ccaa009e6 Mon Sep 17 00:00:00 2001 From: Mattia Astorino Date: Fri, 20 Apr 2018 20:07:36 +0200 Subject: [PATCH] unlock files --- .DS_Store | Bin 6148 -> 10244 bytes .babelrc | 5 + .eslintrc | 19 + .github/ISSUE_TEMPLATE.md | 2 + .gitignore | 10 + .gulp/consts/log.ts | 7 + .gulp/index.ts | 10 + .gulp/interfaces/iicon.ts | 20 + .gulp/interfaces/itheme-icons-accents.ts | 8 + .gulp/interfaces/itheme-icons-item.ts | 3 + .gulp/interfaces/itheme-icons-variants.ts | 17 + .gulp/interfaces/itheme-variant.ts | 42 + .gulp/tasks/changelog-title.ts | 11 + .gulp/tasks/icons-accents.ts | 127 + .gulp/tasks/icons-variants.ts | 60 + .gulp/tasks/icons.ts | 82 + .gulp/tasks/themes.ts | 60 + .gulp/tasks/watcher.ts | 14 + .npmrc | 4 + .vscode/launch.json | 56 + .vscode/settings.json | 29 + .vscode/tasks.json | 89 + .vscodeignore | 17 + .yarnrc | 2 + CHANGELOG.md | 352 + CODE_OF_CONDUCT.md | 46 + CONTRIBUTING.md | 104 + LICENSE | 201 + README.md | 185 + assets/header.jpg | Bin 0 -> 150460 bytes assets/screen.jpg | Bin 0 -> 619994 bytes extensions/commands/accents-setter/index.ts | 142 + extensions/commands/theme-icons/index.ts | 98 + extensions/commands/theme-variant/index.ts | 41 + extensions/consts/files.ts | 5 + extensions/consts/paths.ts | 13 + extensions/defaults.json | 197 + extensions/helpers/changelog.ts | 61 + extensions/helpers/fs.ts | 106 + extensions/helpers/settings.ts | 120 + extensions/helpers/vscode.ts | 42 + .../interfaces/iaccent-custom-property.ts | 4 + extensions/interfaces/idefaults.ts | 63 + extensions/interfaces/igeneric-object.ts | 3 + extensions/interfaces/ipackage.json.ts | 61 + extensions/interfaces/ipaths.ts | 32 + .../interfaces/itheme-custom-properties.ts | 6 + extensions/interfaces/itheme-icons.ts | 513 + extensions/material.theme.config.ts | 49 + gulpfile.babel.ts | 9 + iconlist.json | 113 + logo.png | Bin 0 -> 268646 bytes package-lock.json | 9623 +++++++++++++++++ package.json | 142 + src/icons/icons-theme.json | 10 + src/icons/svgs/actionscript.svg | 89 + src/icons/svgs/ai.svg | 3 + src/icons/svgs/android.svg | 54 + src/icons/svgs/angular.svg | 54 + src/icons/svgs/applescript.svg | 3 + src/icons/svgs/arduino.svg | 1 + src/icons/svgs/assembly.svg | 54 + src/icons/svgs/autohotkey.svg | 55 + src/icons/svgs/babel.svg | 3 + src/icons/svgs/blade.svg | 11 + src/icons/svgs/bower.svg | 3 + src/icons/svgs/c.svg | 3 + src/icons/svgs/certificate.svg | 54 + src/icons/svgs/changelog.svg | 54 + src/icons/svgs/clojure.svg | 57 + src/icons/svgs/cmake.svg | 65 + src/icons/svgs/cmd.svg | 3 + src/icons/svgs/coffee.svg | 3 + src/icons/svgs/console.svg | 3 + src/icons/svgs/contributing.svg | 54 + src/icons/svgs/cpp.svg | 6 + src/icons/svgs/credits.svg | 54 + src/icons/svgs/csharp.svg | 54 + src/icons/svgs/css-map.svg | 60 + src/icons/svgs/css.svg | 54 + src/icons/svgs/dart.svg | 86 + src/icons/svgs/database.svg | 54 + src/icons/svgs/dlang.svg | 3 + src/icons/svgs/docker.svg | 39 + src/icons/svgs/document.svg | 54 + src/icons/svgs/dotnet.svg | 12 + src/icons/svgs/email.svg | 54 + src/icons/svgs/eslint.svg | 6 + src/icons/svgs/ex.svg | 3 + src/icons/svgs/exe.svg | 54 + src/icons/svgs/favicon.svg | 54 + src/icons/svgs/file_dark.svg | 54 + src/icons/svgs/flash.svg | 90 + src/icons/svgs/flow.svg | 65 + src/icons/svgs/folder_assets.svg | 1 + src/icons/svgs/folder_assets_open.svg | 1 + src/icons/svgs/folder_bower.svg | 1 + src/icons/svgs/folder_bower_open.svg | 1 + src/icons/svgs/folder_ci.svg | 1 + src/icons/svgs/folder_ci_open.svg | 1 + src/icons/svgs/folder_dark.svg | 10 + src/icons/svgs/folder_dark_build.svg | 15 + src/icons/svgs/folder_dist.svg | 1 + src/icons/svgs/folder_dist_open.svg | 1 + src/icons/svgs/folder_git.svg | 1 + src/icons/svgs/folder_git_open.svg | 1 + src/icons/svgs/folder_github.svg | 1 + src/icons/svgs/folder_github_open.svg | 1 + src/icons/svgs/folder_gulp.svg | 1 + src/icons/svgs/folder_gulp_open.svg | 1 + src/icons/svgs/folder_images.svg | 1 + src/icons/svgs/folder_images_open.svg | 1 + src/icons/svgs/folder_js.svg | 1 + src/icons/svgs/folder_js_open.svg | 1 + src/icons/svgs/folder_light.svg | 3 + src/icons/svgs/folder_light_build.svg | 13 + src/icons/svgs/folder_node.svg | 1 + src/icons/svgs/folder_node_open.svg | 1 + src/icons/svgs/folder_open.svg | 3 + src/icons/svgs/folder_open_build.svg | 16 + src/icons/svgs/folder_src.svg | 1 + src/icons/svgs/folder_src_open.svg | 1 + src/icons/svgs/folder_test.svg | 1 + src/icons/svgs/folder_test_open.svg | 1 + src/icons/svgs/folder_vscode.svg | 1 + src/icons/svgs/folder_vscode_open.svg | 1 + src/icons/svgs/font.svg | 54 + src/icons/svgs/fsharp.svg | 216 + src/icons/svgs/git.svg | 3 + src/icons/svgs/github.svg | 3 + src/icons/svgs/gitlab.svg | 11 + src/icons/svgs/go.svg | 3 + src/icons/svgs/gopher.svg | 167 + src/icons/svgs/gradle.svg | 439 + src/icons/svgs/graphql.svg | 11 + src/icons/svgs/groovy.svg | 57 + src/icons/svgs/grunt.svg | 3 + src/icons/svgs/gulp.svg | 3 + src/icons/svgs/haml.svg | 7 + src/icons/svgs/haskell.svg | 75 + src/icons/svgs/html.svg | 3 + src/icons/svgs/image.svg | 3 + src/icons/svgs/ionic.svg | 6 + src/icons/svgs/java.svg | 54 + src/icons/svgs/javascript-map.svg | 59 + src/icons/svgs/js.svg | 3 + src/icons/svgs/json.svg | 6 + src/icons/svgs/key.svg | 54 + src/icons/svgs/kotlin.svg | 108 + src/icons/svgs/less.svg | 3 + src/icons/svgs/lib.svg | 54 + src/icons/svgs/license.svg | 3 + src/icons/svgs/lua.svg | 70 + src/icons/svgs/markdown.svg | 3 + src/icons/svgs/markup.svg | 8 + src/icons/svgs/movie.svg | 54 + src/icons/svgs/music.svg | 54 + src/icons/svgs/mustache.svg | 3 + src/icons/svgs/mxml.svg | 54 + src/icons/svgs/node.svg | 3 + src/icons/svgs/nodejs.svg | 3 + src/icons/svgs/npm.svg | 3 + src/icons/svgs/ocaml.svg | 3 + src/icons/svgs/package-lock.svg | 6 + src/icons/svgs/pdf.svg | 54 + src/icons/svgs/php.svg | 3 + src/icons/svgs/polymer.svg | 27 + src/icons/svgs/postcss.svg | 3 + src/icons/svgs/powerpoint.svg | 3 + src/icons/svgs/pp.svg | 7 + src/icons/svgs/procfile.svg | 3 + src/icons/svgs/pug.svg | 11 + src/icons/svgs/python.svg | 3 + src/icons/svgs/r.svg | 58 + src/icons/svgs/rails.svg | 3 + src/icons/svgs/raml.svg | 54 + src/icons/svgs/react.svg | 3 + src/icons/svgs/readme.svg | 54 + src/icons/svgs/reason.svg | 6 + src/icons/svgs/rollup.svg | 38 + src/icons/svgs/ruby.svg | 6 + src/icons/svgs/rust.svg | 80 + src/icons/svgs/sass.svg | 3 + src/icons/svgs/scala.svg | 3 + src/icons/svgs/settings.svg | 54 + src/icons/svgs/sketch.svg | 12 + src/icons/svgs/star.svg | 1 + src/icons/svgs/stylelint.svg | 10 + src/icons/svgs/stylus.svg | 7 + src/icons/svgs/sublime.svg | 3 + src/icons/svgs/svg.svg | 21 + src/icons/svgs/swc.svg | 82 + src/icons/svgs/swift.svg | 54 + src/icons/svgs/swig.svg | 3 + src/icons/svgs/table.svg | 54 + src/icons/svgs/tex.svg | 93 + src/icons/svgs/todo.svg | 3 + src/icons/svgs/tune.svg | 7 + src/icons/svgs/twig.svg | 3 + src/icons/svgs/typescript.svg | 57 + src/icons/svgs/typescript_def.svg | 72 + src/icons/svgs/url.svg | 54 + src/icons/svgs/virtual.svg | 54 + src/icons/svgs/visualstudio.svg | 54 + src/icons/svgs/vue.svg | 60 + src/icons/svgs/webpack.svg | 6 + src/icons/svgs/word.svg | 54 + src/icons/svgs/xaml.svg | 54 + src/icons/svgs/xml.svg | 54 + src/icons/svgs/yaml.svg | 3 + src/icons/svgs/yarn-lock.svg | 6 + src/icons/svgs/yarn.svg | 3 + src/icons/svgs/zephyr.svg | 6 + src/icons/svgs/zip.svg | 7 + src/themes/settings/specific/darker-hc.json | 45 + src/themes/settings/specific/darker.json | 47 + src/themes/settings/specific/default-hc.json | 47 + src/themes/settings/specific/default.json | 47 + src/themes/settings/specific/lighter-hc.json | 47 + src/themes/settings/specific/lighter.json | 47 + .../settings/specific/palenight-hc.json | 47 + src/themes/settings/specific/palenight.json | 47 + src/themes/theme-template-color-theme.json | 821 ++ test/--.tmcolor | 79 + test/.gitignore | 0 test/COMMIT_EDITMSG | 0 test/Dockerfile | 0 test/LICENSE | 0 test/Procfile | 0 test/TODO | 0 test/adobe.ai | 0 test/adobe.as | 0 test/adobe.cfc | 0 test/adobe.cfm | 0 test/adobe.pdf | 0 test/adobe.psb | 0 test/adobe.psd | 0 test/angular.ng.html | 0 test/archive.7z | 0 test/archive.7zip | 0 test/archive.gz | 0 test/archive.pzip | 0 test/archive.rar | 0 test/archive.tar | 0 test/archive.tgz | 0 test/archive.wim | 0 test/archive.zip | 0 test/binary.tga | 0 test/bower.json | 0 test/conf | 0 test/default | 0 test/font.eot | 0 test/font.otf | 0 test/font.ttf | 0 test/font.woff | 0 test/git-blame | 0 test/git-rebase-todo | 0 test/image.jpg | 0 test/image.svg | 0 test/package-lock.json | 0 test/package.json | 0 test/settings.ini | 0 test/shell.bash | 2 + test/shell.fish | 0 test/shell.sh | 2 + test/sketch.sketch | 0 test/source.applescript | 0 test/source.asa | 0 test/source.ascx | 0 test/source.asp | 0 test/source.aspx | 0 test/source.blade | 0 test/source.blade.php | 0 test/source.c | 1573 +++ test/source.c++ | 1502 +++ test/source.cc | 1573 +++ test/source.clj | 0 test/source.coffee | 0 test/source.cpp | 1582 +++ test/source.cs | 259 + test/source.css | 61 + test/source.csx | 0 test/source.d | 0 test/source.do | 0 test/source.dot | 0 test/source.erl | 0 test/source.ex | 0 test/source.go | 0 test/source.gql | 0 test/source.gradle | 0 test/source.graphql | 0 test/source.groovy | 0 test/source.h | 0 test/source.haml | 0 test/source.hs | 0 test/source.html | 0 test/source.html.eex | 0 test/source.hx | 0 test/source.jade | 0 test/source.java | 0 test/source.jl | 0 test/source.json | 0 test/source.jsp | 0 test/source.jsx | 1 + test/source.less | 0 test/source.liquid | 0 test/source.lisp | 0 test/source.lsl | 0 test/source.lua | 0 test/source.m | 0 test/source.matlab | 0 test/source.mjs | 0 test/source.ml | 0 test/source.mustache | 0 test/source.note | 0 test/source.pcss | 0 test/source.php | 57 + test/source.pl | 0 test/source.postcss | 0 test/source.pp | 0 test/source.pug | 0 test/source.py | 0 test/source.r | 0 test/source.rails | 0 test/source.rb | 0 test/source.re | 0 test/source.rei | 0 test/source.rs | 0 test/source.sass | 0 test/source.scala | 0 test/source.scss | 0 test/source.slim | 0 test/source.sql | 0 test/source.styl | 0 test/source.swift | 0 test/source.swig | 0 test/source.tcl | 0 test/source.tex | 0 test/source.textile | 0 test/source.ts | 0 test/source.twig | 0 test/source.vue | 0 test/source.xml | 0 test/source.yml | 0 test/sublime.sublime-settings | 0 test/text.md | 0 test/text.txt | 0 test/windows.bat | 0 test/windows.cmd | 0 test/yarn.lock | 0 tsconfig.json | 22 + typings/gulp-bump/gulp-bump.d.ts | 7 + .../gulp-conventional-changelog.d.ts | 5 + typings/gulp-stats/gulp-stats.d.ts | 5 + 354 files changed, 25573 insertions(+) create mode 100644 .babelrc create mode 100644 .eslintrc create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .gitignore create mode 100644 .gulp/consts/log.ts create mode 100644 .gulp/index.ts create mode 100644 .gulp/interfaces/iicon.ts create mode 100644 .gulp/interfaces/itheme-icons-accents.ts create mode 100644 .gulp/interfaces/itheme-icons-item.ts create mode 100644 .gulp/interfaces/itheme-icons-variants.ts create mode 100644 .gulp/interfaces/itheme-variant.ts create mode 100644 .gulp/tasks/changelog-title.ts create mode 100644 .gulp/tasks/icons-accents.ts create mode 100644 .gulp/tasks/icons-variants.ts create mode 100644 .gulp/tasks/icons.ts create mode 100644 .gulp/tasks/themes.ts create mode 100644 .gulp/tasks/watcher.ts create mode 100644 .npmrc create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 .vscode/tasks.json create mode 100644 .vscodeignore create mode 100644 .yarnrc create mode 100644 CHANGELOG.md create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 assets/header.jpg create mode 100644 assets/screen.jpg create mode 100644 extensions/commands/accents-setter/index.ts create mode 100644 extensions/commands/theme-icons/index.ts create mode 100644 extensions/commands/theme-variant/index.ts create mode 100644 extensions/consts/files.ts create mode 100644 extensions/consts/paths.ts create mode 100644 extensions/defaults.json create mode 100644 extensions/helpers/changelog.ts create mode 100644 extensions/helpers/fs.ts create mode 100644 extensions/helpers/settings.ts create mode 100644 extensions/helpers/vscode.ts create mode 100644 extensions/interfaces/iaccent-custom-property.ts create mode 100644 extensions/interfaces/idefaults.ts create mode 100644 extensions/interfaces/igeneric-object.ts create mode 100644 extensions/interfaces/ipackage.json.ts create mode 100644 extensions/interfaces/ipaths.ts create mode 100644 extensions/interfaces/itheme-custom-properties.ts create mode 100644 extensions/interfaces/itheme-icons.ts create mode 100644 extensions/material.theme.config.ts create mode 100644 gulpfile.babel.ts create mode 100644 iconlist.json create mode 100644 logo.png create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/icons/icons-theme.json create mode 100755 src/icons/svgs/actionscript.svg create mode 100644 src/icons/svgs/ai.svg create mode 100755 src/icons/svgs/android.svg create mode 100755 src/icons/svgs/angular.svg create mode 100644 src/icons/svgs/applescript.svg create mode 100755 src/icons/svgs/arduino.svg create mode 100755 src/icons/svgs/assembly.svg create mode 100755 src/icons/svgs/autohotkey.svg create mode 100644 src/icons/svgs/babel.svg create mode 100644 src/icons/svgs/blade.svg create mode 100644 src/icons/svgs/bower.svg create mode 100644 src/icons/svgs/c.svg create mode 100755 src/icons/svgs/certificate.svg create mode 100755 src/icons/svgs/changelog.svg create mode 100755 src/icons/svgs/clojure.svg create mode 100755 src/icons/svgs/cmake.svg create mode 100644 src/icons/svgs/cmd.svg create mode 100755 src/icons/svgs/coffee.svg create mode 100755 src/icons/svgs/console.svg create mode 100755 src/icons/svgs/contributing.svg create mode 100755 src/icons/svgs/cpp.svg create mode 100755 src/icons/svgs/credits.svg create mode 100755 src/icons/svgs/csharp.svg create mode 100755 src/icons/svgs/css-map.svg create mode 100755 src/icons/svgs/css.svg create mode 100755 src/icons/svgs/dart.svg create mode 100755 src/icons/svgs/database.svg create mode 100644 src/icons/svgs/dlang.svg create mode 100644 src/icons/svgs/docker.svg create mode 100755 src/icons/svgs/document.svg create mode 100644 src/icons/svgs/dotnet.svg create mode 100755 src/icons/svgs/email.svg create mode 100644 src/icons/svgs/eslint.svg create mode 100644 src/icons/svgs/ex.svg create mode 100755 src/icons/svgs/exe.svg create mode 100755 src/icons/svgs/favicon.svg create mode 100755 src/icons/svgs/file_dark.svg create mode 100755 src/icons/svgs/flash.svg create mode 100755 src/icons/svgs/flow.svg create mode 100644 src/icons/svgs/folder_assets.svg create mode 100644 src/icons/svgs/folder_assets_open.svg create mode 100644 src/icons/svgs/folder_bower.svg create mode 100644 src/icons/svgs/folder_bower_open.svg create mode 100644 src/icons/svgs/folder_ci.svg create mode 100644 src/icons/svgs/folder_ci_open.svg create mode 100644 src/icons/svgs/folder_dark.svg create mode 100644 src/icons/svgs/folder_dark_build.svg create mode 100644 src/icons/svgs/folder_dist.svg create mode 100644 src/icons/svgs/folder_dist_open.svg create mode 100644 src/icons/svgs/folder_git.svg create mode 100644 src/icons/svgs/folder_git_open.svg create mode 100644 src/icons/svgs/folder_github.svg create mode 100644 src/icons/svgs/folder_github_open.svg create mode 100644 src/icons/svgs/folder_gulp.svg create mode 100644 src/icons/svgs/folder_gulp_open.svg create mode 100644 src/icons/svgs/folder_images.svg create mode 100644 src/icons/svgs/folder_images_open.svg create mode 100644 src/icons/svgs/folder_js.svg create mode 100644 src/icons/svgs/folder_js_open.svg create mode 100644 src/icons/svgs/folder_light.svg create mode 100644 src/icons/svgs/folder_light_build.svg create mode 100644 src/icons/svgs/folder_node.svg create mode 100644 src/icons/svgs/folder_node_open.svg create mode 100644 src/icons/svgs/folder_open.svg create mode 100644 src/icons/svgs/folder_open_build.svg create mode 100644 src/icons/svgs/folder_src.svg create mode 100644 src/icons/svgs/folder_src_open.svg create mode 100644 src/icons/svgs/folder_test.svg create mode 100644 src/icons/svgs/folder_test_open.svg create mode 100644 src/icons/svgs/folder_vscode.svg create mode 100644 src/icons/svgs/folder_vscode_open.svg create mode 100755 src/icons/svgs/font.svg create mode 100755 src/icons/svgs/fsharp.svg create mode 100755 src/icons/svgs/git.svg create mode 100644 src/icons/svgs/github.svg create mode 100644 src/icons/svgs/gitlab.svg create mode 100644 src/icons/svgs/go.svg create mode 100755 src/icons/svgs/gopher.svg create mode 100755 src/icons/svgs/gradle.svg create mode 100644 src/icons/svgs/graphql.svg create mode 100755 src/icons/svgs/groovy.svg create mode 100644 src/icons/svgs/grunt.svg create mode 100755 src/icons/svgs/gulp.svg create mode 100644 src/icons/svgs/haml.svg create mode 100755 src/icons/svgs/haskell.svg create mode 100755 src/icons/svgs/html.svg create mode 100755 src/icons/svgs/image.svg create mode 100755 src/icons/svgs/ionic.svg create mode 100755 src/icons/svgs/java.svg create mode 100755 src/icons/svgs/javascript-map.svg create mode 100644 src/icons/svgs/js.svg create mode 100755 src/icons/svgs/json.svg create mode 100755 src/icons/svgs/key.svg create mode 100755 src/icons/svgs/kotlin.svg create mode 100644 src/icons/svgs/less.svg create mode 100755 src/icons/svgs/lib.svg create mode 100644 src/icons/svgs/license.svg create mode 100755 src/icons/svgs/lua.svg create mode 100755 src/icons/svgs/markdown.svg create mode 100644 src/icons/svgs/markup.svg create mode 100755 src/icons/svgs/movie.svg create mode 100755 src/icons/svgs/music.svg create mode 100644 src/icons/svgs/mustache.svg create mode 100755 src/icons/svgs/mxml.svg create mode 100644 src/icons/svgs/node.svg create mode 100644 src/icons/svgs/nodejs.svg create mode 100644 src/icons/svgs/npm.svg create mode 100755 src/icons/svgs/ocaml.svg create mode 100644 src/icons/svgs/package-lock.svg create mode 100755 src/icons/svgs/pdf.svg create mode 100755 src/icons/svgs/php.svg create mode 100644 src/icons/svgs/polymer.svg create mode 100644 src/icons/svgs/postcss.svg create mode 100755 src/icons/svgs/powerpoint.svg create mode 100644 src/icons/svgs/pp.svg create mode 100644 src/icons/svgs/procfile.svg create mode 100755 src/icons/svgs/pug.svg create mode 100755 src/icons/svgs/python.svg create mode 100755 src/icons/svgs/r.svg create mode 100644 src/icons/svgs/rails.svg create mode 100755 src/icons/svgs/raml.svg create mode 100755 src/icons/svgs/react.svg create mode 100755 src/icons/svgs/readme.svg create mode 100644 src/icons/svgs/reason.svg create mode 100644 src/icons/svgs/rollup.svg create mode 100755 src/icons/svgs/ruby.svg create mode 100755 src/icons/svgs/rust.svg create mode 100755 src/icons/svgs/sass.svg create mode 100644 src/icons/svgs/scala.svg create mode 100755 src/icons/svgs/settings.svg create mode 100644 src/icons/svgs/sketch.svg create mode 100755 src/icons/svgs/star.svg create mode 100644 src/icons/svgs/stylelint.svg create mode 100644 src/icons/svgs/stylus.svg create mode 100644 src/icons/svgs/sublime.svg create mode 100644 src/icons/svgs/svg.svg create mode 100755 src/icons/svgs/swc.svg create mode 100755 src/icons/svgs/swift.svg create mode 100644 src/icons/svgs/swig.svg create mode 100755 src/icons/svgs/table.svg create mode 100755 src/icons/svgs/tex.svg create mode 100644 src/icons/svgs/todo.svg create mode 100755 src/icons/svgs/tune.svg create mode 100644 src/icons/svgs/twig.svg create mode 100755 src/icons/svgs/typescript.svg create mode 100755 src/icons/svgs/typescript_def.svg create mode 100755 src/icons/svgs/url.svg create mode 100755 src/icons/svgs/virtual.svg create mode 100755 src/icons/svgs/visualstudio.svg create mode 100755 src/icons/svgs/vue.svg create mode 100755 src/icons/svgs/webpack.svg create mode 100755 src/icons/svgs/word.svg create mode 100755 src/icons/svgs/xaml.svg create mode 100755 src/icons/svgs/xml.svg create mode 100755 src/icons/svgs/yaml.svg create mode 100644 src/icons/svgs/yarn-lock.svg create mode 100755 src/icons/svgs/yarn.svg create mode 100644 src/icons/svgs/zephyr.svg create mode 100755 src/icons/svgs/zip.svg create mode 100644 src/themes/settings/specific/darker-hc.json create mode 100644 src/themes/settings/specific/darker.json create mode 100644 src/themes/settings/specific/default-hc.json create mode 100644 src/themes/settings/specific/default.json create mode 100644 src/themes/settings/specific/lighter-hc.json create mode 100644 src/themes/settings/specific/lighter.json create mode 100644 src/themes/settings/specific/palenight-hc.json create mode 100644 src/themes/settings/specific/palenight.json create mode 100644 src/themes/theme-template-color-theme.json create mode 100644 test/--.tmcolor create mode 100755 test/.gitignore create mode 100644 test/COMMIT_EDITMSG create mode 100644 test/Dockerfile create mode 100644 test/LICENSE create mode 100644 test/Procfile create mode 100644 test/TODO create mode 100644 test/adobe.ai create mode 100644 test/adobe.as create mode 100644 test/adobe.cfc create mode 100644 test/adobe.cfm create mode 100644 test/adobe.pdf create mode 100644 test/adobe.psb create mode 100644 test/adobe.psd create mode 100644 test/angular.ng.html create mode 100644 test/archive.7z create mode 100644 test/archive.7zip create mode 100644 test/archive.gz create mode 100644 test/archive.pzip create mode 100644 test/archive.rar create mode 100644 test/archive.tar create mode 100644 test/archive.tgz create mode 100644 test/archive.wim create mode 100644 test/archive.zip create mode 100644 test/binary.tga create mode 100644 test/bower.json create mode 100644 test/conf create mode 100644 test/default create mode 100644 test/font.eot create mode 100644 test/font.otf create mode 100644 test/font.ttf create mode 100644 test/font.woff create mode 100644 test/git-blame create mode 100644 test/git-rebase-todo create mode 100644 test/image.jpg create mode 100644 test/image.svg create mode 100644 test/package-lock.json create mode 100644 test/package.json create mode 100644 test/settings.ini create mode 100644 test/shell.bash create mode 100644 test/shell.fish create mode 100644 test/shell.sh create mode 100644 test/sketch.sketch create mode 100644 test/source.applescript create mode 100644 test/source.asa create mode 100644 test/source.ascx create mode 100644 test/source.asp create mode 100644 test/source.aspx create mode 100644 test/source.blade create mode 100644 test/source.blade.php create mode 100644 test/source.c create mode 100644 test/source.c++ create mode 100644 test/source.cc create mode 100644 test/source.clj create mode 100644 test/source.coffee create mode 100644 test/source.cpp create mode 100644 test/source.cs create mode 100644 test/source.css create mode 100644 test/source.csx create mode 100644 test/source.d create mode 100644 test/source.do create mode 100644 test/source.dot create mode 100644 test/source.erl create mode 100644 test/source.ex create mode 100644 test/source.go create mode 100644 test/source.gql create mode 100644 test/source.gradle create mode 100644 test/source.graphql create mode 100644 test/source.groovy create mode 100644 test/source.h create mode 100644 test/source.haml create mode 100644 test/source.hs create mode 100644 test/source.html create mode 100644 test/source.html.eex create mode 100644 test/source.hx create mode 100644 test/source.jade create mode 100644 test/source.java create mode 100644 test/source.jl create mode 100644 test/source.json create mode 100644 test/source.jsp create mode 100644 test/source.jsx create mode 100644 test/source.less create mode 100644 test/source.liquid create mode 100644 test/source.lisp create mode 100644 test/source.lsl create mode 100644 test/source.lua create mode 100644 test/source.m create mode 100644 test/source.matlab create mode 100644 test/source.mjs create mode 100644 test/source.ml create mode 100644 test/source.mustache create mode 100644 test/source.note create mode 100644 test/source.pcss create mode 100644 test/source.php create mode 100644 test/source.pl create mode 100644 test/source.postcss create mode 100644 test/source.pp create mode 100644 test/source.pug create mode 100644 test/source.py create mode 100644 test/source.r create mode 100644 test/source.rails create mode 100644 test/source.rb create mode 100644 test/source.re create mode 100644 test/source.rei create mode 100644 test/source.rs create mode 100644 test/source.sass create mode 100644 test/source.scala create mode 100644 test/source.scss create mode 100644 test/source.slim create mode 100644 test/source.sql create mode 100644 test/source.styl create mode 100644 test/source.swift create mode 100644 test/source.swig create mode 100644 test/source.tcl create mode 100644 test/source.tex create mode 100644 test/source.textile create mode 100644 test/source.ts create mode 100644 test/source.twig create mode 100644 test/source.vue create mode 100644 test/source.xml create mode 100644 test/source.yml create mode 100644 test/sublime.sublime-settings create mode 100644 test/text.md create mode 100644 test/text.txt create mode 100644 test/windows.bat create mode 100644 test/windows.cmd create mode 100644 test/yarn.lock create mode 100644 tsconfig.json create mode 100644 typings/gulp-bump/gulp-bump.d.ts create mode 100644 typings/gulp-conventional-changelog/gulp-conventional-changelog.d.ts create mode 100644 typings/gulp-stats/gulp-stats.d.ts diff --git a/.DS_Store b/.DS_Store index d56ec1c51252120d2e20ab1163e84f7e2853efe8..f80afa309053f2fa597154f924e97c4037e30443 100644 GIT binary patch literal 10244 zcmeHMO>g5w7=EW;ak4FSyDi-c4pA$lm9|u^SgDIpwIOZTjTW}038htc$vTOfnmTr5 zJN=}n7k&UYK;j2*;=qwV04I)|5I+GVPJ4o9#!fqS673D4Wv24Hx@f8 zEZ?p#6J?1=!@;dSimFH9*ZI*^2BMxhSOz|kNj7;@E81?Y3#~eo0!jg;fKosypcMEo zD1di1FWQaJs#+Km~fAHeeSq_j;TsVj%M-!P}s9a4N9xq2}k0(en{n<(@uxOk^M9 z5vNRBRHQtZWmrCvUL)XflGz!|?*ub6p@|PIU2fx}7V(lf6Hr_{1GEo@4X(Tb7U|QZ z2N4O`!}N~H1A{}uBPmVGXqmCh)6#)^Tndb!?dJ_|kDqNC!9g`@ zmtEJsY8%yU%RH{=Q){jh7?xvtf^5}IK%RVTId%6q@3x(~FZ`6k3!0YJ(iQ#I`T1K* z%M01%m6eNy?D@TWOAFb%Z?9Zjq_vqhmRF0*ejXx!3TldZ}g9ET^#(m?uHWIx{Q!WCFTn)<3!KDxbE1nY!)}?jCri=?H%t`}@8b z>{Rq|zvj8Nz3KW^V7bn&banTM58;b}*(^HyF79{)p*LC_=5L#x58K7x*)=@Ra2jU* z^r>xBO?$)1yFuVKIg)#;xz46%a!)%J+I%ka_x}uqoX=JwKHLNKYYu&|~YGH*n z;&`4}V)#*D#5(|)uqj$R&){vD;Ni^|<4wT3fmM8nx&i!~;=cU6&sydgDdu4`;h_&t z>xS%L3RJvvY6=GK2I0Ww?QaD-gGBEd0(qnO{Yh6J)>vAZD0s!y`R8L4} \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2287f0c --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +*.log +*.~lock +*.js +**/*.map +*.gulp/**.js +dist/ +node_modules/ +.DS_Store +/themes +/icons diff --git a/.gulp/consts/log.ts b/.gulp/consts/log.ts new file mode 100644 index 0000000..bc933ba --- /dev/null +++ b/.gulp/consts/log.ts @@ -0,0 +1,7 @@ +export const HR: string = '\nā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”ā€”\n'; +export const MESSAGE_BUMP_ERROR: string = ' There was an issue bumping version:\n'; +export const MESSAGE_BUMP_SUCCESS: string = ' Finished successfully\n'; +export const MESSAGE_ICON_ERROR: string = 'There is an error with JSON generated for icons'; +export const MESSAGE_ICON_ACCENTS_ERROR: string = 'Failed to create accents icon themes, please read the log file.'; +export const MESSAGE_GENERATED: string = 'Generated'; +export const MESSAGE_THEME_VARIANT_PARSE_ERROR: string = 'Error when parsing json for theme variants'; \ No newline at end of file diff --git a/.gulp/index.ts b/.gulp/index.ts new file mode 100644 index 0000000..6e2342e --- /dev/null +++ b/.gulp/index.ts @@ -0,0 +1,10 @@ +// export the tasks +export * from './tasks/icons'; +export * from './tasks/icons-accents'; +export * from './tasks/icons-variants'; +export * from './tasks/themes'; +export * from './tasks/watcher'; +export * from './tasks/changelog-title'; + +// export default script +export default ['build:themes']; diff --git a/.gulp/interfaces/iicon.ts b/.gulp/interfaces/iicon.ts new file mode 100644 index 0000000..9c63e4e --- /dev/null +++ b/.gulp/interfaces/iicon.ts @@ -0,0 +1,20 @@ +export interface IIcon { + /** + * Icon filename + * @type {string} + * @memberof IIcon + */ + filename: string; + /** + * If set to true, the icon is marked as last + * @type {boolean} + * @memberof IIcon + */ + last: boolean; + /** + * Icon's name + * @type {string} + * @memberof IIcon + */ + name: string; +} \ No newline at end of file diff --git a/.gulp/interfaces/itheme-icons-accents.ts b/.gulp/interfaces/itheme-icons-accents.ts new file mode 100644 index 0000000..e2a5324 --- /dev/null +++ b/.gulp/interfaces/itheme-icons-accents.ts @@ -0,0 +1,8 @@ +import { IThemeIconsItem } from "./itheme-icons-item"; + +export interface IThemeIconsAccents { + iconDefinitions: { + _folder_open: IThemeIconsItem; + _folder_open_build: IThemeIconsItem; + } +} \ No newline at end of file diff --git a/.gulp/interfaces/itheme-icons-item.ts b/.gulp/interfaces/itheme-icons-item.ts new file mode 100644 index 0000000..1a5c615 --- /dev/null +++ b/.gulp/interfaces/itheme-icons-item.ts @@ -0,0 +1,3 @@ +export interface IThemeIconsItem { + iconPath: string; +} \ No newline at end of file diff --git a/.gulp/interfaces/itheme-icons-variants.ts b/.gulp/interfaces/itheme-icons-variants.ts new file mode 100644 index 0000000..15e91e7 --- /dev/null +++ b/.gulp/interfaces/itheme-icons-variants.ts @@ -0,0 +1,17 @@ +import { IThemeIconsItem } from "./itheme-icons-item"; + +export interface IThemeIconsVariants { + iconDefinitions: { + "_folder_dark": IThemeIconsItem; + "_folder_dark_build": IThemeIconsItem; + "_folder_light": IThemeIconsItem; + "_folder_light_build": IThemeIconsItem; + "_folder_vscode": IThemeIconsItem; + "_folder_gulp": IThemeIconsItem; + "_folder_node": IThemeIconsItem; + "_folder_images": IThemeIconsItem; + "_folder_js": IThemeIconsItem; + "_folder_src": IThemeIconsItem; + "_folder_assets": IThemeIconsItem; + } +} \ No newline at end of file diff --git a/.gulp/interfaces/itheme-variant.ts b/.gulp/interfaces/itheme-variant.ts new file mode 100644 index 0000000..3f74e6c --- /dev/null +++ b/.gulp/interfaces/itheme-variant.ts @@ -0,0 +1,42 @@ +export interface IThemeVariant { + id: string; + name: string; + scheme: { + background: string; + base: { + black: string; + blue: string; + brown: string; + cyan: string; + green: string; + orange: string; + paleblue: string; + pink: string; + purple: string; + red: string; + violet: string; + white: string; + yellow: string; + } + caret: string; + comments: string; + findHighlight: string; + focusBorder: string; + foreground: string; + guides: string; + inputBackground: string; + inputBorder: string; + inputForeground: string; + invisibles: string; + lineHighlight: string; + lineNumbers: string; + listHoverForeground: string; + scrollbars: string; + scrollbarsHover: string; + selection: string; + shadow: string; + sidebarForeground: string; + statusbarForeground: string; + } + type: string; +} \ No newline at end of file diff --git a/.gulp/tasks/changelog-title.ts b/.gulp/tasks/changelog-title.ts new file mode 100644 index 0000000..c892c40 --- /dev/null +++ b/.gulp/tasks/changelog-title.ts @@ -0,0 +1,11 @@ +import * as gulp from "gulp"; +import * as fs from 'fs'; +import { CHARSET } from "../../extensions/consts/files"; + + +export default gulp.task('changelog-title', () => { + fs.writeFileSync( + './CHANGELOG.md', + fs.readFileSync('CHANGELOG.md', CHARSET).replace('# Change Log', '# Material Theme Changelog'), + { encoding: CHARSET }); +}); \ No newline at end of file diff --git a/.gulp/tasks/icons-accents.ts b/.gulp/tasks/icons-accents.ts new file mode 100644 index 0000000..a643185 --- /dev/null +++ b/.gulp/tasks/icons-accents.ts @@ -0,0 +1,127 @@ +import * as fs from 'fs'; +import * as gulp from 'gulp'; +import * as gutil from 'gulp-util'; +import * as path from 'path'; + +import { MESSAGE_GENERATED, MESSAGE_ICON_ACCENTS_ERROR } from "../consts/log"; + +import { CHARSET } from "../../extensions/consts/files"; +import { IDefaults } from "../../extensions/interfaces/idefaults"; +import { IThemeIconsAccents } from "../interfaces/itheme-icons-accents"; +import PATHS from '../../extensions/consts/paths' +import { IThemeIconsItem } from '../interfaces/itheme-icons-item'; +import { getAccentableIcons } from '../../extensions/helpers/fs'; + +const BASE_ICON_THEME_PATH: string = path.join(process.cwd(), PATHS.THEMES, './Material-Theme-Icons.json'); +const DEFAULTS: IDefaults = require('../../extensions/defaults.json'); + +/** + * Normalizes icon path + * @param {string} iconPath + * @returns {string} + */ +function normalizeIconPath(iconPath: string): string { + return path.join(process.cwd(), PATHS.ICONS, iconPath); +} + +/** + * Replaces a file name with the accented filename + * @param {string} name + * @param {string} accentName + * @returns {string} + */ +function replaceNameWithAccent(name: string, accentName: string): string { + return name.replace('.svg', `.accent.${ accentName }.svg`); +} + +/** + * Replaces a SVG colour + * + * @param {string} filecontent + * @param {string} colour + * @returns {string} + */ +export function replaceSVGColour(filecontent: string, colour: string): string { + return filecontent.replace(new RegExp('#(80CBC4)', 'i'), ($0, $1) => { + + colour = colour.replace('#', ''); + console.log(`Replacing colour ${ $1 } with ${ colour }`) + return $0.replace($1, colour); + }); +} + +/** + * Replaces white spaces in accents' names + * @param {string} input + * @returns {string} + */ +function replaceWhiteSpaces(input: string): string { + return input.replace(/\s+/g, '-'); +} + +/** + * Writes a new svg file + * @param {string} fromFile + * @param {string} toFile + * @param {string} accentColour + */ +function writeSVGIcon(fromFile: string, toFile: string, accent: string): void { + let fileContent: string = fs.readFileSync(normalizeIconPath(fromFile), CHARSET); + let content: string = replaceSVGColour(fileContent, DEFAULTS.accents[accent]); + toFile = normalizeIconPath(toFile); + + gutil.log(gutil.colors.gray(`Accented icon ${toFile} created with colour ${ accent } (${ DEFAULTS.accents[accent] })`)); + + fs.writeFileSync(toFile, content); +} + +// Exports task to index.ts +export default gulp.task('build:icons.accents', cb => { + let basetheme: IThemeIconsAccents; + + try { + basetheme = require(BASE_ICON_THEME_PATH); + + Object.keys(DEFAULTS.accents).forEach(key => { + let iconName = replaceWhiteSpaces(key); + let themecopy: IThemeIconsAccents = JSON.parse(JSON.stringify(basetheme)); + let themePath: string = path.join(PATHS.THEMES, `./Material-Theme-Icons-${ key }.json`); + + getAccentableIcons().forEach(accentableIconName => { + gutil.log(gutil.colors.gray(`Preparing ${ accentableIconName } accented icon`)); + + let iconOriginDefinition: IThemeIconsItem = (basetheme.iconDefinitions as any)[accentableIconName]; + let iconCopyDefinition: IThemeIconsItem = (themecopy.iconDefinitions as any)[accentableIconName]; + + if (iconOriginDefinition !== undefined && typeof iconOriginDefinition.iconPath === 'string' && iconCopyDefinition !== undefined && typeof iconCopyDefinition.iconPath === 'string') { + iconCopyDefinition.iconPath = replaceNameWithAccent(iconOriginDefinition.iconPath, iconName); + writeSVGIcon(iconOriginDefinition.iconPath, iconCopyDefinition.iconPath, key); + } else { + gutil.log(gutil.colors.yellow(`Icon ${ accentableIconName } not found`)) + } + }); + + // themecopy.iconDefinitions._folder_open.iconPath = replaceNameWithAccent(basetheme.iconDefinitions._folder_open.iconPath, iconName); + // themecopy.iconDefinitions._folder_open_build.iconPath = replaceNameWithAccent(basetheme.iconDefinitions._folder_open_build.iconPath, iconName); + + // writeSVGIcon(basetheme.iconDefinitions._folder_open.iconPath, themecopy.iconDefinitions._folder_open.iconPath, key); + // writeSVGIcon(basetheme.iconDefinitions._folder_open_build.iconPath, themecopy.iconDefinitions._folder_open_build.iconPath, key); + + // fs.writeFileSync(themePath, JSON.stringify(themecopy)); + + // addContributeIconTheme(id, label, themepathJSON, PACKAGE_JSON); + + gutil.log(gutil.colors.green(MESSAGE_GENERATED, themePath)); + }); + + // writePackageJSON(PACKAGE_JSON); + + } catch (error) { + // http://ragefaces.memesoftware.com/faces/large/misc-le-fu-l.png + gutil.log(gutil.colors.red(MESSAGE_ICON_ACCENTS_ERROR)); + cb(error); + return; + } + + cb(); +}); \ No newline at end of file diff --git a/.gulp/tasks/icons-variants.ts b/.gulp/tasks/icons-variants.ts new file mode 100644 index 0000000..c95f049 --- /dev/null +++ b/.gulp/tasks/icons-variants.ts @@ -0,0 +1,60 @@ +import {getVariantIcons} from '../../extensions/helpers/fs'; +import * as gulp from 'gulp'; +import * as path from 'path'; +import * as fs from 'fs'; + +import { CHARSET } from "../../extensions/consts/files"; +import { IPackageJSON } from "../../extensions/interfaces/ipackage.json"; +import { IThemeIconsVariants } from "../interfaces/itheme-icons-variants"; +import PATHS from '../../extensions/consts/paths' +import { getDefaultValues } from "../../extensions/helpers/fs"; +import { IDefaultsThemeVariantColours } from "../../extensions/interfaces/idefaults"; +import { IThemeIconsItem } from '../interfaces/itheme-icons-item'; + +const PACKAGE_JSON: IPackageJSON = require(path.join(process.cwd(), './package.json')); + +let variants: IDefaultsThemeVariantColours = getDefaultValues().themeVariantsColours; + +function writeIconVariant(filepath: string, destpath: string, colour: string): void { + let regexp = new RegExp('(#4a616c)', 'i') + filepath = path.join(process.cwd(), PATHS.ICONS, filepath); + destpath = path.join(process.cwd(), PATHS.ICONS, destpath); + fs.writeFileSync(destpath, fs.readFileSync(filepath, CHARSET).replace(regexp, ($0, $1) => $0.replace($1, colour)), { encoding: CHARSET }) ; +} + + +export default gulp.task('build:icons.variants', callback => { + try { + Object.keys(variants).forEach(variantName => { + PACKAGE_JSON.contributes.iconThemes.forEach(contribute => { + let regexpCheck: RegExp = new RegExp(Object.keys(variants).join('|'), 'i'); + + if (regexpCheck.test(contribute.path) || regexpCheck.test(contribute.id)) return; + + let basepath: string = path.join(process.cwd(), contribute.path); + let basetheme: IThemeIconsVariants = require(basepath); + let theme: IThemeIconsVariants = JSON.parse(JSON.stringify(basetheme)); + let variant = variants[variantName]; + + getVariantIcons().forEach(_iconName => { + let basethemeIcon: IThemeIconsItem = (basetheme.iconDefinitions as any)[_iconName]; + let themeIcon: IThemeIconsItem = (theme.iconDefinitions as any)[_iconName]; + + if (themeIcon !== undefined) { + themeIcon.iconPath = themeIcon.iconPath.replace('.svg', `${ variantName }.svg`); + } + + if (basethemeIcon !== undefined && themeIcon !== undefined) { + writeIconVariant(basethemeIcon.iconPath, themeIcon.iconPath, variant); + } + }); + }); + }); + + } catch (error) { + callback(error); + return; + } + + callback(); +}); \ No newline at end of file diff --git a/.gulp/tasks/icons.ts b/.gulp/tasks/icons.ts new file mode 100644 index 0000000..da574b7 --- /dev/null +++ b/.gulp/tasks/icons.ts @@ -0,0 +1,82 @@ +import * as fs from 'fs'; +import * as gulp from 'gulp'; +import * as gutil from 'gulp-util'; +import * as mustache from 'mustache'; +import * as path from 'path'; + +import { HR, MESSAGE_GENERATED, MESSAGE_ICON_ERROR } from './../consts/log'; + +import { CHARSET } from "../../extensions/consts/files"; +import { IGenericObject } from "../../extensions/interfaces/igeneric-object"; +import { IIcon } from './../interfaces/iicon'; +import paths from '../../extensions/consts/paths'; +import { ensureDir } from '../../extensions/helpers/fs'; + +/** + * Returns an object implementing the IIcon interface + * @param {string} fileName + * @returns {IIcon} + */ +function iconFactory(fileName: string): IIcon { + gutil.log(gutil.colors.gray(`Processing icon ${ fileName }`)) + let name: string = path.basename(fileName, path.extname(fileName)); + let filename: string = name; + let last: boolean = false; + + // renaming icon for vscode + // if the icon filename starts with a folder prefix, + // the resulting name will be prefixed only by an underscore, + // otherwise the icon will be prefixed by a _file_ prefix + if (name.indexOf('folder')) { + name = name.indexOf('file') ? `_file_${ name }` : `_${ name }`; + } else { + name = `_${ name }`; + } + + gutil.log(gutil.colors.gray(`VSCode icon name ${ name } with filename ${ filename }`)); + + return { filename, name, last } as IIcon; +} + +/** + * > Build Icons + * @returns {gulp.Gulp} + */ +export default gulp.task('build:icons', cb => { + let contents: string; + let fileNames: string[] = fs.readdirSync(path.join(paths.SRC, `./icons/svgs`)); + let icons: IIcon[] = fileNames.map(fileName => iconFactory(fileName)); + let partials: string[] = fs.readdirSync(path.join(paths.SRC, `./icons/partials`)); + let partialsData: IGenericObject = {}; + let pathTemp: string = './themes/.material-theme-icons.tmp'; + + ensureDir(path.join(paths.THEMES)); + + icons[icons.length - 1].last = true; + + partials.forEach(partial => { + partialsData[path.basename(partial, path.extname(partial))] = fs.readFileSync(path.join(paths.SRC, `./icons/partials`, `./${partial}`), CHARSET); + }); + + contents = mustache.render( + fs.readFileSync(path.join(paths.SRC, `./icons/icons-theme.json`), CHARSET) + , { icons } + , partialsData + ); + + try { + contents = JSON.stringify(JSON.parse(contents), null, 2); + } catch (error) { + gutil.log(gutil.colors.red(MESSAGE_ICON_ERROR), error); + cb(error); + return; + } + + fs.writeFileSync(pathTemp, contents, { encoding: CHARSET }); + + gutil.log(gutil.colors.gray(HR)); + gutil.log(MESSAGE_GENERATED, gutil.colors.green(pathTemp)); + gutil.log(gutil.colors.gray(HR)); + + cb(); +}); diff --git a/.gulp/tasks/themes.ts b/.gulp/tasks/themes.ts new file mode 100644 index 0000000..9dca1a8 --- /dev/null +++ b/.gulp/tasks/themes.ts @@ -0,0 +1,60 @@ +import * as fs from 'fs'; +import * as gulp from 'gulp'; +import * as gulpUtil from 'gulp-util'; +import * as mustache from 'mustache'; +import * as path from 'path'; + +import { HR, MESSAGE_GENERATED, MESSAGE_THEME_VARIANT_PARSE_ERROR } from './../consts/log'; + +import { CHARSET } from "../../extensions/consts/files"; +import { IDefaults } from "../../extensions/interfaces/idefaults"; +import { IThemeVariant } from './../interfaces/itheme-variant'; +import paths from '../../extensions/consts/paths'; +import { ensureDir } from '../../extensions/helpers/fs'; + +let commons: IDefaults = require('../../extensions/defaults.json'); + +let themeTemplateFileContent: string = fs.readFileSync(path.join(paths.SRC, `/themes/theme-template-color-theme.json`), CHARSET); +let themeVariants: IThemeVariant[] = []; + +let fileNames: string[] = fs.readdirSync(path.join(paths.SRC, `./themes/settings/specific`)); + +// build theme variants for later use in templating +fileNames.forEach(fileName => { + let filePath: string = path.join(paths.SRC, `./themes/settings/specific`, `./${fileName}`); + let contents: string = fs.readFileSync(filePath, CHARSET); + + try { + themeVariants.push(JSON.parse(contents)); + } catch (error) { + gulpUtil.log(MESSAGE_THEME_VARIANT_PARSE_ERROR, error); + } +}); + +/** + * Themes task + * Builds Themes + */ +export default gulp.task('build:themes', cb => { + gulpUtil.log(gulpUtil.colors.gray(HR)); + + ensureDir(path.join(paths.THEMES)); + + try { + themeVariants.forEach(variant => { + let filePath = path.join(paths.THEMES, `./${variant.name}.json`); + let templateData = { commons, variant }; + let templateJSON: any = JSON.parse(mustache.render(themeTemplateFileContent, templateData)); + let templateJSONStringified: string = JSON.stringify(templateJSON, null, 2); + + fs.writeFileSync(filePath, templateJSONStringified, { encoding: CHARSET }); + + gulpUtil.log(MESSAGE_GENERATED, gulpUtil.colors.green(filePath)); + }); + } catch (exception) { + gulpUtil.log(exception); + cb(exception); + } + + gulpUtil.log(gulpUtil.colors.gray(HR)); +}); diff --git a/.gulp/tasks/watcher.ts b/.gulp/tasks/watcher.ts new file mode 100644 index 0000000..e0be4d1 --- /dev/null +++ b/.gulp/tasks/watcher.ts @@ -0,0 +1,14 @@ +import * as gulp from "gulp"; +import * as path from "path"; + +import Paths from "../../extensions/consts/paths"; + +/* + * > Watcher + * Watches files and build the themes + */ +export default gulp.task('watch', () => { + // Commented due + // gulp.watch(path.join(Paths.SRC, `./themes/**/*.json`), ['build:themes']); + gulp.watch(path.join(Paths.SRC, `./themes/**/*.json`)); +}); \ No newline at end of file diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..aea17fd --- /dev/null +++ b/.npmrc @@ -0,0 +1,4 @@ +git-tag-version = false +tag-version-prefix = +save-exact = true +progress = true \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..acc9440 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,56 @@ +{ + // Use IntelliSense to learn about possible Node.js debug attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Gulp build-icons-variants", + "program": "${workspaceRoot}/node_modules/gulp/bin/gulp.js", + "args": [ + "build:icons.variants" + ] + }, + { + "type": "node", + "request": "launch", + "name": "Gulp build-icons", + "program": "${workspaceRoot}/node_modules/gulp/bin/gulp.js", + "args": [ + "build:icons.accents" + ] + }, + { + "name": "Launch Extension", + "type": "extensionHost", + "request": "launch", + "runtimeExecutable": "${execPath}", + "args": [ + "--extensionDevelopmentPath=${workspaceRoot}" + ], + "stopOnEntry": false, + "sourceMaps": true, + "outFiles": [ + "${workspaceRoot}/out/src/**/*.js" + ] + }, + { + "name": "Launch Tests", + "type": "extensionHost", + "request": "launch", + "runtimeExecutable": "${execPath}", + "args": [ + "--extensionDevelopmentPath=${workspaceRoot}", + "--extensionTestsPath=${workspaceRoot}/out/test" + ], + "stopOnEntry": false, + "sourceMaps": true, + "outFiles": [ + "${workspaceRoot}/out/test/**/*.js" + ], + "preLaunchTask": "npm" + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..e3fc186 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,29 @@ +{ + "editor.tabSize": 2, + "editor.insertSpaces": true, + "files.exclude": { + "**/.git": true, + ".git-crypt": true, + "**/.svn": true, + "**/.hg": true, + "**/CVS": true, + "**/.DS_Store": true, + "**/*.js": { + "when": "$(basename).ts" + }, + "**/*.js.map": true + }, + "files.associations": { + "*.template": "json" + }, + "html.format.preserveNewLines": true, + "files.trimTrailingWhitespace": true, + "[markdown]": { + "diffEditor.ignoreTrimWhitespace": false, + "editor.tabSize": 4, + "editor.wordWrap": "on", + "editor.quickSuggestions": false + }, + "gulp.autoDetect": "off", + "npm.autoDetect": "off" +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..97c75a8 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,89 @@ +// Available variables which can be used inside of strings. +// ${workspaceRoot}: the root folder of the team +// ${file}: the current opened file +// ${fileBasename}: the current opened file's basename +// ${fileDirname}: the current opened file's dirname +// ${fileExtname}: the current opened file's extension +// ${cwd}: the current working directory of the spawned process +// A task runner that calls a custom npm script that compiles the extension. +{ + "version": "2.0.0", + // tasks list (build, build-theme, semver etc) + "tasks": [ + { + "args": [ + "run", + "build" + ], + "command": "npm", + "dependsOn": "tsc", + "taskName": "build", + "group": { + "kind": "build", + "isDefault": true + }, + "problemMatcher": [] + }, + { + "linux": { + "args": [ + ".", + "-name", + "\"*.js\"", + "-not", + "-path", + "\"./node_modules/*\"", + "-not", + "-path", + "\"./src/*\"", + "-not", + "-path", + "\"./test/*\"", + "-type", + "f", + "-delete" + ], + "command": "find" + }, + "osx": { + "args": [ + ".", + "-name", + "\"*.js\"", + "-not", + "-path", + "\"./node_modules/*\"", + "-not", + "-path", + "\"./src/*\"", + "-not", + "-path", + "\"./test/*\"", + "-type", + "f", + "-delete" + ], + "command": "find" + }, + "command": "", + "taskName": "clean project" + }, + { + "args": [ + "run", + "changelog" + ], + "command": "npm", + "taskName": "changelog" + }, + { + "args": [ + "-p", + "." + ], + "command": "tsc", + "dependsOn": "clean project", + "taskName": "tsc" + } + ] +} \ No newline at end of file diff --git a/.vscodeignore b/.vscodeignore new file mode 100644 index 0000000..420a7ae --- /dev/null +++ b/.vscodeignore @@ -0,0 +1,17 @@ +*.log +*.ts +**/*.map +.github +.gitignore +.gulp +.vscode/** +assets/ +gulpfile.babel.ts +node_modules +out/test/** +src/** +test/** +tsconfig.json +typings/** +vsc-extension-quickstart.md +yarn.lock \ No newline at end of file diff --git a/.yarnrc b/.yarnrc new file mode 100644 index 0000000..1b2af90 --- /dev/null +++ b/.yarnrc @@ -0,0 +1,2 @@ +save-exact true +save-prefix false \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..d6c4a4e --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,352 @@ +# Material Theme Changelog + +All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. + + +# [1.6.0](https://github.com/equinusocio/vsc-material-theme/compare/v1.5.1...v1.6.0) (2018-04-15) + + +### Bug Fixes + +* Add babel icon to .babelrc.json files ([41fe77c](https://github.com/equinusocio/vsc-material-theme/commit/41fe77c)), closes [#154](https://github.com/equinusocio/vsc-material-theme/issues/154) + + +### Features + +* Add .gitlab-ci.yml file icon ([5b5c9ec](https://github.com/equinusocio/vsc-material-theme/commit/5b5c9ec)), closes [#155](https://github.com/equinusocio/vsc-material-theme/issues/155) + + + + +## [1.5.1](https://github.com/equinusocio/vsc-material-theme/compare/v1.5.0...v1.5.1) (2018-03-10) + + +### Bug Fixes + +* Fix notifications background. Close [#143](https://github.com/equinusocio/vsc-material-theme/issues/143) ([8981088](https://github.com/equinusocio/vsc-material-theme/commit/8981088)), closes [#142](https://github.com/equinusocio/vsc-material-theme/issues/142) + + + + +# [1.5.0](https://github.com/equinusocio/vsc-material-theme/compare/v1.4.0...v1.5.0) (2018-03-08) + + +### Bug Fixes + +* Add support for the new notifications UX ([008bac1](https://github.com/equinusocio/vsc-material-theme/commit/008bac1)) + + +### Features + +* Highlight line number on selected line ([cf69a74](https://github.com/equinusocio/vsc-material-theme/commit/cf69a74)) + + + + +# [1.4.0](https://github.com/equinusocio/vsc-material-theme/compare/v1.3.0...v1.4.0) (2018-02-19) + + +### Bug Fixes + +* Fix constants color in php language ([444cf9a](https://github.com/equinusocio/vsc-material-theme/commit/444cf9a)), closes [#138](https://github.com/equinusocio/vsc-material-theme/issues/138) +* Fix input validation colors contrast ([30df0a6](https://github.com/equinusocio/vsc-material-theme/commit/30df0a6)) + + +### Features + +* Add a subtle highlight on tab hover ([405000e](https://github.com/equinusocio/vsc-material-theme/commit/405000e)) + + + + +## [1.4.3](https://github.com/equinusocio/vsc-material-theme/compare/v1.4.0...v1.4.3) (2018-02-19) + + + + +# [1.4.0](https://github.com/equinusocio/vsc-material-theme/compare/v1.3.0...v1.4.0) (2018-02-19) + + +### Bug Fixes + +* Fix constants color in php language ([444cf9a](https://github.com/equinusocio/vsc-material-theme/commit/444cf9a)), closes [#138](https://github.com/equinusocio/vsc-material-theme/issues/138) +* Fix input validation colors contrast ([30df0a6](https://github.com/equinusocio/vsc-material-theme/commit/30df0a6)) + + +### Features + +* Add a subtle highlight on tab hover ([405000e](https://github.com/equinusocio/vsc-material-theme/commit/405000e)) + + + + +# [1.3.0](https://github.com/equinusocio/vsc-material-theme/compare/v1.2.0...v1.3.0) (2018-01-21) + + +### Bug Fixes + +* Fix editor rule color ([2732da4](https://github.com/equinusocio/vsc-material-theme/commit/2732da4)) +* Fix highlight backgrounds in PeekView ([b66e88e](https://github.com/equinusocio/vsc-material-theme/commit/b66e88e)) +* Temporary fix to git edited file background when list is inactive ([6b1925e](https://github.com/equinusocio/vsc-material-theme/commit/6b1925e)) +* Update main field of package.json ([#130](https://github.com/equinusocio/vsc-material-theme/issues/130)) ([40dd529](https://github.com/equinusocio/vsc-material-theme/commit/40dd529)) + + +### Features + +* Add gulp icon to gulp-config.js files ([83c058f](https://github.com/equinusocio/vsc-material-theme/commit/83c058f)), closes [#128](https://github.com/equinusocio/vsc-material-theme/issues/128) +* Add zephyr file icon ([9e64343](https://github.com/equinusocio/vsc-material-theme/commit/9e64343)), closes [#124](https://github.com/equinusocio/vsc-material-theme/issues/124) + + + + +# [1.2.0](https://github.com/equinusocio/vsc-material-theme/compare/v1.1.2...v1.2.0) (2017-12-29) + + +### Features + +* Add ci folder icon ([a2ba7f8](https://github.com/equinusocio/vsc-material-theme/commit/a2ba7f8)), closes [#119](https://github.com/equinusocio/vsc-material-theme/issues/119) +* Add laravel blade file icon ([f7070f4](https://github.com/equinusocio/vsc-material-theme/commit/f7070f4)), closes [#114](https://github.com/equinusocio/vsc-material-theme/issues/114) +* Add reason (.re, .rei) file icon ([384d8d2](https://github.com/equinusocio/vsc-material-theme/commit/384d8d2)) + + + + +## [1.1.2](https://github.com/equinusocio/vsc-material-theme/compare/v1.1.0...v1.1.2) (2017-11-14) + + +### Bug Fixes + +* Add dist folder icon ([a6600d2](https://github.com/equinusocio/vsc-material-theme/commit/a6600d2)) +* Add test folder icon ([0a73ce4](https://github.com/equinusocio/vsc-material-theme/commit/0a73ce4)) +* Improve markdown highlight ([dc9a6fa](https://github.com/equinusocio/vsc-material-theme/commit/dc9a6fa)), closes [#113](https://github.com/equinusocio/vsc-material-theme/issues/113) +* Improve src folder icon ([e06b881](https://github.com/equinusocio/vsc-material-theme/commit/e06b881)) +* New bower_components folder icon ([adcb304](https://github.com/equinusocio/vsc-material-theme/commit/adcb304)) +* Update .git folder icon ([2f37966](https://github.com/equinusocio/vsc-material-theme/commit/2f37966)) +* Update .github folder icon ([d371804](https://github.com/equinusocio/vsc-material-theme/commit/d371804)) +* Update package-lock.json and yarn.lock file icons ([7136700](https://github.com/equinusocio/vsc-material-theme/commit/7136700)), closes [#108](https://github.com/equinusocio/vsc-material-theme/issues/108) + + +### Features + +* Add Rollup js file icon ([5755813](https://github.com/equinusocio/vsc-material-theme/commit/5755813)) + + + + +# [1.1.0](https://github.com/equinusocio/vsc-material-theme/compare/v1.0.5...v1.1.0) (2017-11-04) + + +### Bug Fixes + +* Add babel icon to .babelrc files ([f2a64ab](https://github.com/equinusocio/vsc-material-theme/commit/f2a64ab)), closes [#101](https://github.com/equinusocio/vsc-material-theme/issues/101) +* Add postcss icon to .pcss files ([9eac9c4](https://github.com/equinusocio/vsc-material-theme/commit/9eac9c4)), closes [#107](https://github.com/equinusocio/vsc-material-theme/issues/107) +* Minor UI fixes ([65a18e8](https://github.com/equinusocio/vsc-material-theme/commit/65a18e8)) + + +### Features + +* Add set italic style for keyword operators ([ea9b755](https://github.com/equinusocio/vsc-material-theme/commit/ea9b755)), closes [#99](https://github.com/equinusocio/vsc-material-theme/issues/99) +* Add sidebar git colors support ([0cf2007](https://github.com/equinusocio/vsc-material-theme/commit/0cf2007)) +* New folder icons ([2dfbaaa](https://github.com/equinusocio/vsc-material-theme/commit/2dfbaaa)) +* New High Contrast theme variants. ([79d68b3](https://github.com/equinusocio/vsc-material-theme/commit/79d68b3)) +* Remove arrow icons beside folders in explorer view ([28006e5](https://github.com/equinusocio/vsc-material-theme/commit/28006e5)) + + + + +## [1.0.5](https://github.com/equinusocio/vsc-material-theme/compare/v1.0.4...v1.0.5) (2017-10-12) + + +### Bug Fixes + +* Fix show changelog command ([370a4d9](https://github.com/equinusocio/vsc-material-theme/commit/370a4d9)) +* Improve tab inactive foreground contrast ([c3d0b82](https://github.com/equinusocio/vsc-material-theme/commit/c3d0b82)) + + +### Features + +* Add .asp, .aspx and .ascx file icon ([f7d4af0](https://github.com/equinusocio/vsc-material-theme/commit/f7d4af0)), closes [#96](https://github.com/equinusocio/vsc-material-theme/issues/96) +* Add .mjs file icon ([605b8bf](https://github.com/equinusocio/vsc-material-theme/commit/605b8bf)), closes [#93](https://github.com/equinusocio/vsc-material-theme/issues/93) +* Add .yarnrc and .npmrc file icon ([f715cd0](https://github.com/equinusocio/vsc-material-theme/commit/f715cd0)) +* Add colors for sidebar git.untracked and git.modified files ([3f1077d](https://github.com/equinusocio/vsc-material-theme/commit/3f1077d)) + + + + +## [1.0.3](https://github.com/equinusocio/vsc-material-theme/compare/v1.0.2...v1.0.3) (2017-09-27) + + +### Bug Fixes + +* Fix brackets color (punctuation.class...). Fix [#76](https://github.com/equinusocio/vsc-material-theme/issues/76) ([02d20b7](https://github.com/equinusocio/vsc-material-theme/commit/02d20b7)) +* Fix wrong gutter indicator for add line. Close 89 ([83df9f9](https://github.com/equinusocio/vsc-material-theme/commit/83df9f9)) +* Update gutter line colors. Fix [#79](https://github.com/equinusocio/vsc-material-theme/issues/79) ([0298a59](https://github.com/equinusocio/vsc-material-theme/commit/0298a59)) + + +### Features + +* Add tab active bottom border ([5bd1934](https://github.com/equinusocio/vsc-material-theme/commit/5bd1934)), closes [#88](https://github.com/equinusocio/vsc-material-theme/issues/88) +* Adds "show changelog" command. ([038ded7](https://github.com/equinusocio/vsc-material-theme/commit/038ded7)) + + + + +## [1.0.2](https://github.com/equinusocio/vsc-material-theme/compare/v1.0.1...v1.0.2) (2017-07-25) + + +### Bug Fixes + +* Fix squiggles visibility ([0900c30](https://github.com/equinusocio/vsc-material-theme/commit/0900c30)), closes [#70](https://github.com/equinusocio/vsc-material-theme/issues/70) +* Fixes an issues with the old settings "materialTheme.cache.workbench.accent". ([6c2ce83](https://github.com/equinusocio/vsc-material-theme/commit/6c2ce83)) +* Fixes an unhandled undefined, which causes theme to break (issue [#69](https://github.com/equinusocio/vsc-material-theme/issues/69)). ([14a471f](https://github.com/equinusocio/vsc-material-theme/commit/14a471f)) + + + + +## [1.0.1](https://github.com/equinusocio/vsc-material-theme/compare/v1.0.0...v1.0.1) (2017-07-24) + + +### Bug Fixes + +* Add .ex file icon ([b6eb130](https://github.com/equinusocio/vsc-material-theme/commit/b6eb130)), closes [#60](https://github.com/equinusocio/vsc-material-theme/issues/60) +* Add accent color to progressbar ([4758c45](https://github.com/equinusocio/vsc-material-theme/commit/4758c45)) +* Add squigglies color ([8502a39](https://github.com/equinusocio/vsc-material-theme/commit/8502a39)) +* Fix editor marker navigation color ([16230f2](https://github.com/equinusocio/vsc-material-theme/commit/16230f2)) +* Fix notification bar badge colors ([a3428ab](https://github.com/equinusocio/vsc-material-theme/commit/a3428ab)) +* Fix python special var parameter color ([027b342](https://github.com/equinusocio/vsc-material-theme/commit/027b342)), closes [#57](https://github.com/equinusocio/vsc-material-theme/issues/57) +* Fix theme variants and settings reload ([ada03ed](https://github.com/equinusocio/vsc-material-theme/commit/ada03ed)) +* Improve workbench theme and colors ([4798102](https://github.com/equinusocio/vsc-material-theme/commit/4798102)) + + + + +# [1.0.0](https://github.com/equinusocio/vsc-material-theme/compare/v0.0.17...v1.0.0) (2017-06-19) + + +### Bug Fixes + +* Add and update file icons ([ef9abab](https://github.com/equinusocio/vsc-material-theme/commit/ef9abab)) +* Fix inputs placeholder color ([6d5cef6](https://github.com/equinusocio/vsc-material-theme/commit/6d5cef6)) +* Fix tree selected foreground when sidebar is inactive ([351cd20](https://github.com/equinusocio/vsc-material-theme/commit/351cd20)) +* Improve sidebar tree coloring ([4993587](https://github.com/equinusocio/vsc-material-theme/commit/4993587)) +* Style welcome page links ([e873530](https://github.com/equinusocio/vsc-material-theme/commit/e873530)) + + +### Features + +* adds theme accents config. ([c648ab8](https://github.com/equinusocio/vsc-material-theme/commit/c648ab8)) +* Adds theme changer command ([cb68fdc](https://github.com/equinusocio/vsc-material-theme/commit/cb68fdc)) + + + + +## [0.0.17](https://github.com/equinusocio/vsc-material-theme/compare/v0.0.16...v0.0.17) (2017-05-22) + + +### Bug Fixes + +* Fix inactive group inactive tab foreground ([2d52311](https://github.com/equinusocio/vsc-material-theme/commit/2d52311)), closes [#47](https://github.com/equinusocio/vsc-material-theme/issues/47) +* Improve sidebar colorization ([9cf9f34](https://github.com/equinusocio/vsc-material-theme/commit/9cf9f34)) + + +### Features + +* Add puppet (.pp) file icon ([d2dc180](https://github.com/equinusocio/vsc-material-theme/commit/d2dc180)) + + + + +## [0.0.16](https://github.com/equinusocio/vsc-material-theme/compare/v0.0.15...v0.0.16) (2017-05-18) + + +### Bug Fixes + +* Fix C file icon ([8a5a331](https://github.com/equinusocio/vsc-material-theme/commit/8a5a331)), closes [#46](https://github.com/equinusocio/vsc-material-theme/issues/46) +* Fix the waterfall of bleed words ([6d001c4](https://github.com/equinusocio/vsc-material-theme/commit/6d001c4)), closes [#44](https://github.com/equinusocio/vsc-material-theme/issues/44) +* Fix the waterfall of blooding words ([8b62470](https://github.com/equinusocio/vsc-material-theme/commit/8b62470)), closes [#44](https://github.com/equinusocio/vsc-material-theme/issues/44) +* Improve tree colors (wip) ([d9a1f2c](https://github.com/equinusocio/vsc-material-theme/commit/d9a1f2c)) +* Panel hover borders ([a83dfcb](https://github.com/equinusocio/vsc-material-theme/commit/a83dfcb)) + + + + +## [0.0.15](https://github.com/equinusocio/vsc-material-theme/compare/v0.0.14...v0.0.15) (2017-05-17) + + + + +## [0.0.14](https://github.com/equinusocio/vsc-material-theme/compare/v0.0.13...v0.0.14) (2017-05-16) + + +### Bug Fixes + +* Fix bracket match border color ([4f778f1](https://github.com/equinusocio/vsc-material-theme/commit/4f778f1)) +* Fix invalids color highlight ([100397c](https://github.com/equinusocio/vsc-material-theme/commit/100397c)), closes [#40](https://github.com/equinusocio/vsc-material-theme/issues/40) +* Fix notification bar foreground on Lighter ([c177e46](https://github.com/equinusocio/vsc-material-theme/commit/c177e46)), closes [#34](https://github.com/equinusocio/vsc-material-theme/issues/34) +* Fix selectionHighlightBackground color ([9578f38](https://github.com/equinusocio/vsc-material-theme/commit/9578f38)), closes [#38](https://github.com/equinusocio/vsc-material-theme/issues/38) +* improve C# highlight ([c72c314](https://github.com/equinusocio/vsc-material-theme/commit/c72c314)), closes [#26](https://github.com/equinusocio/vsc-material-theme/issues/26) +* Improve c++ syntax highlight ([1a927d6](https://github.com/equinusocio/vsc-material-theme/commit/1a927d6)) +* Temporary fix buttons background ([f97d06a](https://github.com/equinusocio/vsc-material-theme/commit/f97d06a)), closes [#37](https://github.com/equinusocio/vsc-material-theme/issues/37) + + + + +## [0.0.13](https://github.com/equinusocio/vsc-material-theme/compare/v0.0.12...v0.0.13) (2017-05-10) + + +### Bug Fixes + +* Fix statusbar background when no project opened ([d0a7cbc](https://github.com/equinusocio/vsc-material-theme/commit/d0a7cbc)), closes [#27](https://github.com/equinusocio/vsc-material-theme/issues/27) +* Improve ansi colors (integrated terminal) ([d1fa94f](https://github.com/equinusocio/vsc-material-theme/commit/d1fa94f)) + + +### Features + +* Add build/dist folder icon ([668db44](https://github.com/equinusocio/vsc-material-theme/commit/668db44)), closes [#6](https://github.com/equinusocio/vsc-material-theme/issues/6) +* Improve worckbench theme ([caff8ce](https://github.com/equinusocio/vsc-material-theme/commit/caff8ce)) + + + + +## [0.0.12](https://github.com/equinusocio/vsc-material-theme/compare/v0.0.8...v0.0.12) (2017-05-04) + + +### Bug Fixes + +* Fix folder icon color ([81c03e6](https://github.com/equinusocio/vsc-material-theme/commit/81c03e6)) +* Update workbench theme ([232d1e3](https://github.com/equinusocio/vsc-material-theme/commit/232d1e3)) + + +### Features + +* Add graphql file icon ([ba18877](https://github.com/equinusocio/vsc-material-theme/commit/ba18877)) +* Improve workbench theme ([c7c8038](https://github.com/equinusocio/vsc-material-theme/commit/c7c8038)) +* Update workbench theme ([6ddfaa9](https://github.com/equinusocio/vsc-material-theme/commit/6ddfaa9)) + + + + +## [0.0.8](https://github.com/equinusocio/vsc-material-theme/compare/v0.0.7...v0.0.8) (2017-04-11) + + +### Bug Fixes + +* Add bower icon ([3e73e1f](https://github.com/equinusocio/vsc-material-theme/commit/3e73e1f)) +* Fix background color for highlighted searched string ([060d24d](https://github.com/equinusocio/vsc-material-theme/commit/060d24d)), closes [#4](https://github.com/equinusocio/vsc-material-theme/issues/4) +* fix lighter scheme colors ([2ba1c0d](https://github.com/equinusocio/vsc-material-theme/commit/2ba1c0d)) +* Fix opened folder icon ([40700ca](https://github.com/equinusocio/vsc-material-theme/commit/40700ca)), closes [#1](https://github.com/equinusocio/vsc-material-theme/issues/1) +* Fix some file and folder icons ([b927646](https://github.com/equinusocio/vsc-material-theme/commit/b927646)) +* Fix var hover background ([a8fee8c](https://github.com/equinusocio/vsc-material-theme/commit/a8fee8c)) +* Update json icon ([ce30ff7](https://github.com/equinusocio/vsc-material-theme/commit/ce30ff7)) +* Update some file icons ([cf2a1ee](https://github.com/equinusocio/vsc-material-theme/commit/cf2a1ee)) +* **Icons:** Fix .ts and def ts icons ([4c0cf00](https://github.com/equinusocio/vsc-material-theme/commit/4c0cf00)), closes [#10](https://github.com/equinusocio/vsc-material-theme/issues/10) + + +### Features + +* Add lighter theme (wip) ([0f7d3c2](https://github.com/equinusocio/vsc-material-theme/commit/0f7d3c2)) +* Add Material Theme icon-theme ([7d3b7bd](https://github.com/equinusocio/vsc-material-theme/commit/7d3b7bd)) +* first beta release ([b4dead1](https://github.com/equinusocio/vsc-material-theme/commit/b4dead1)) +* **Icons:** Add new filetype icons ([5bc8002](https://github.com/equinusocio/vsc-material-theme/commit/5bc8002)) +* **Icons:** Add new icons ([3921218](https://github.com/equinusocio/vsc-material-theme/commit/3921218)) +* first full theme implementation (wip) ([c3c42d4](https://github.com/equinusocio/vsc-material-theme/commit/c3c42d4)) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..059647c --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,46 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at astorino.design@gmail.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version] + +[homepage]: http://contributor-covenant.org +[version]: http://contributor-covenant.org/version/1/4/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..3e296f9 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,104 @@ +# Contributing guidelines + +> Note: this document is intended as a draft, it will be updated soon + +## Requirements: + +* Nodejs ^6.x +* Visual Studio Code +* GPG Tool + +- [Contributing guidelines](#contributing-guidelines) + - [Requirements:](#requirements) + - [Decrypt content](#decrypt-content) + - [Installing and compiling source](#installing-and-compiling-source) + - [Testing the theme](#testing-the-theme) + - [Adding new Material Theme commands](#adding-new-material-theme-commands) + - [Adding new icons](#adding-new-icons) + - [Financial contributions](#financial-contributions) + - [Credits](#credits) + - [Contributors](#contributors) + - [Backers](#backers) + - [Sponsors](#sponsors) + +## Decrypt content +We use git-crypt to encrypt compiler files. To contribute you need a GPG key public/private associated with your github email. + +1. Export your public key by running + +```gpg --output PATH/FILENAME.gpg --export ASSOCIATEDEMAIL``` + +2. Send the exported `.gpg` file to a contributor that will add you to the trusted people. +3. Fetch and pull then decrypt files with `git-crypt unlock` entering your key password. + +## Installing and compiling source + +First you will have to install node_modules through npm or yarn + +```shell +npm install +# or +yarn install +``` + +To compile to the source code, you have to execute the build task through visual studio code. +First you need to invoke to quick command (on MacOS `āŒ˜P`, while on Linux/windows is `ctrl+p`) +then type `task build` and wait until vsc will have finished the task. + +### Testing the theme + +To test the theme, you will have to go to the debug section, select the *Launch Extension* from debug and execute it. + +### Adding new Material Theme commands + +Soon(ish)Ā® + +### Adding new icons + +* Add your icon to the `~/src/icons/svgs` directory. + +* Add the reference to that icon to the `~/src/icons/partials/fileNames.js` or if your icon is referred to a directory adds the reference to the `~/src/icons/partials/folderNames.js` file, otherwise to `~/src/icons/partials/fileExtensions.js` if is referred to a file extension. + +* If you want to make the icon sensitive to be accented, modify the `~/extensions/defaults.json` file, adding the icon definition to the `accentableIcons` array (e.g. ["_folder_open", "_folder_open_build"]) and the path to the `icons.theme.iconDefinitions` object. The same applies to variants (the variant icons array is called "variantsIcons") + +* Execute the build command. + +* Enjoy your new icons in Material Theme, and don't forget to pull request! + + +## Financial contributions + +We also welcome financial contributions in full transparency on our [open collective](https://opencollective.com/vsc-material-theme). +Anyone can file an expense. If the expense makes sense for the development of the community, it will be "merged" in the ledger of our open collective by the core contributors and the person who filed the expense will be reimbursed. + + +## Credits + + +### Contributors + +Thank you to all the people who have already contributed to vsc-material-theme! + + + +### Backers + +Thank you to all our backers! [[Become a backer](https://opencollective.com/vsc-material-theme#backer)] + + + + +### Sponsors + +Thank you to all our sponsors! (please ask your company to also support this open source project by [becoming a sponsor](https://opencollective.com/vsc-material-theme#sponsor)) + + + + + + + + + + + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f83691d --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2017 Mattia Astorino + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..7423c7e --- /dev/null +++ b/README.md @@ -0,0 +1,185 @@ + +

+ +[![Twitter](https://img.shields.io/twitter/url/https/github.com/equinusocio/vsc-material-theme.svg?style=flat-square)](https://twitter.com/intent/tweet?text=This%20is%20the%20most%20epic%20theme:&url=https%3A%2F%2Fgithub.com%2Fequinusocio%2Fvsc-material-theme) +[![GitHub tag](https://img.shields.io/github/release/equinusocio/vsc-material-theme.svg?style=flat-square)](https://github.com/equinusocio/vsc-material-theme/releases) + + + + +The most epic theme meets Visual Studio Code. You can help by reporting issues [here](https://github.com/equinusocio/vsc-material-theme/issues) + + + +- [Getting started](#getting-started) + - [Installation](#installation) + - [Packaged VSIX Extension](#packaged-vsix-extension) + - [GitHub Repository Clone](#github-repository-clone) + - [Activate theme](#activate-theme) + - [Activate File Icons](#activate-file-icons) + - [Set the accent color](#set-the-accent-color) + - [Override theme colors](#override-theme-colors) +- [Recommended settings for a better experience](#recommended-settings-for-a-better-experience) +- [Other resources](#other-resources) + - [Contributors](#contributors) + - [Backers](#backers) + - [Sponsors](#sponsors) + + + +
+ Screenshots +

+ + + + +

+
+ +# Getting started + +You can install this awesome theme through the [Visual Studio Code Marketplace](https://marketplace.visualstudio.com/items?itemName=Equinusocio.vsc-material-theme). + +## Installation + +Launch *Quick Open* + - Linux `Ctrl+P` + - macOS `āŒ˜P` + - Windows `Ctrl+P` + +Paste the following command and press `Enter`: + +```shell +ext install vsc-material-theme +``` + +#### Packaged VSIX Extension + +[Download the latest .vsix release](https://github.com/equinusocio/vsc-material-theme/releases/latest) file from the GitHub repository and install it from the command line + +```shell +code --install-extension vsc-material-theme-*.*.*.vsix +``` + +or from within VS Code by launching *Quick Open* and running the *Install from VSIX...* command. + +##### GitHub Repository Clone + +Change to your `.vscode/extensions` [VS Code extensions directory](https://code.visualstudio.com/docs/extensions/install-extension#_side-loading). +Depending on your platform it is located in the following folders: + + - **Linux** `~/.vscode/extensions` + - **macOs** `~/.vscode/extensions` + - **Windows** `%USERPROFILE%\.vscode\extensions` + +Clone the Material Theme repository as `Equinusocio.vsc-material-theme`: + +```shell +git clone https://github.com/equinusocio/vsc-material-theme.git Equinusocio.vsc-material-theme +``` + + +## Activate theme + +Launch *Quick Open*, + + - Linux `Ctrl + Shift + P` + - macOS `āŒ˜ + Shift + P` + - Windows `Ctrl + Shift + P` + +Type `theme` and choose `Preferences: Color Theme`, then select Material Theme from the list. + +This theme provides different color variants, to change the active theme variant type `Material Theme` and choose `Material Theme: Settings`, then select `Change color variant` and pick one theme from the list. + +## Activate File Icons + +Launch *Quick Open*, + + - Linux `Ctrl + Shift + P` + - macOS `āŒ˜ + Shift + P` + - Windows `Ctrl + Shift + P` + +type `icon theme` and select `Material Theme Icons` from the drop-down menu. + +## Set the accent color + +Launch *Quick Open*, + + - Linux `Ctrl + Shift + P` + - macOS `āŒ˜ + Shift + P` + - Windows `Ctrl + Shift + P` + +Type `Material Theme` and choose `Material Theme: Settings`, then select `Change accent color` and pick one color from the list. + +## Override theme colors +You can override the material theme ui and schemes colors by adding these theme-specific settings to your configuration. + +```js +"editor.tokenColorCustomizations": { + "[Material Theme]": { + "comments": "#229977" + }, + "..." +}, +"workbench.colorCustomizations": { + "[Material Theme]": { + "sideBar.background": "#347890" + }, + "..." +} +``` + +# Recommended settings for a better experience + +```js +{ + // Controls the font family. + "editor.fontFamily": "Operator Mono", + // Controls the line height. Use 0 to compute the lineHeight from the fontSize. + "editor.lineHeight": 24, + // Enables font ligatures + "editor.fontLigatures": true, + // Controls if file decorations should use badges. + "explorer.decorations.badges": false +} +``` + +# Other resources +- **AppIcon:** [Download](https://github.com/equinusocio/vsc-material-theme/files/989048/vsc-material-theme-appicon.zip) the official Material Theme app icon for Visual Studio code + + +## Contributors + +This project exists thanks to all the people who contribute. [[Contribute]](CONTRIBUTING.md). + + + +## Backers + +Thank you to all our backers! šŸ™ [[Become a backer](https://opencollective.com/vsc-material-theme#backer)] + + + + +## Sponsors + +Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/vsc-material-theme#sponsor)] + + + + + + + + + + + + +--- + +

Copyright © 2017 Mattia Astorino

+ +

diff --git a/assets/header.jpg b/assets/header.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8a957427390936b7a6761e8926c6c9a94cb13c85 GIT binary patch literal 150460 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 AA^-pY literal 0 HcmV?d00001 diff --git a/assets/screen.jpg b/assets/screen.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e43f02d92e63ea86d9c5b22074e69719b35de25d GIT binary patch literal 619994 zcmeEv30RU@`!_ANt8HdwYT06GX<2HyQJGnpnk(f-WoBw>YN)utl$oWamARYdzMxPU zE~t>1nJc-VDK5DpqM`yK2>3nLyfgE@|7NoJzcce)-}T{DJUl$lIrsWI_qp$L9%ety zeg>^RbMo{_(1HaZ&?(>#G}{9@s^jf&6$H}P2g!jzpk<&1K@OnBz!7i>XfyB+1X}of z;lIuZt$)7gU&o6|=DwUA1sy(j&Gn|M$2Hd*TMsJi2OU0sT7U6e3&88k@y;)YtD7Ys zw1t6QEvEjoJbGmMIAZoKXw9-kB|_^LEm#9uxMsnkH4A3nfuw<+g%*5yeYp(;TC{NS z0wK_nrOTGDSP5KEz8bV(5pZtN;w6ihE?K;6iN}J4phasIuiYkeV4ckBCC7}E)?ael zzVz1C$H&Ezj1Rutae4oSGWQ1UCx>n?>oGaH(^g!0JlrGs+=*8K6T3`Rt~|Z@_G06m zl#MrfWpz~T^2}hV5#@oCO(#8n>eDs9`g-|_O`CV`kvn`u?bPWrkn)qKY<@vu5$?^qiuaWts;WOWlUiCowY7il9~h(zQHL2! z))af1!=2-D0cg=zCV~II@HxlCVxeET1VpkB;B(Q!MM4XO7A{^Kv;dINqSb4+E#7+I z*gB#8GD=44k1jd5{nBwUH{(OM&h2=dr2TTk(#y&w;|)76mYwKvpAf%ot8!zPj_DKG z4@wf@|oa5=IfIER-`3ip;@s+id)SsDqmG}B* z{@#}Vi^HaWvDn-9Gn13Qa7hMf1BUj$d(8rk{O?)-?w)N2ty=U&d}{#X;`4GXu#O~@ z`Tyl_Vt*}#CO;sA@YAV{j`Dx0z)Va`^wLaQ=BE>pKz)bY6_1U6fQ28|xLlNO##5ht za`U=VUp0MwJzi(pmFk*SDq7AFeXkW&PcRaknF6QIbf20M6wE_hb+a>$k61err4GTu5axwGk+wc0Bz$#+E|cjtWjo`>1!qv~+`Sz7*r z6POgo;6gdB6lxF4yVPeV?2sVjd-rF{$(x!uKF4UL!-iZF_oPEI`JTRJ9w@)DMQOv> zGZ6};E{A9n-TiB9rll5l4ScV;AHV^~7Tx$6DZ>))Ep_LAV3kJLjgMO;R^lTFneY1!B(6*f+F zP(1~LArVgrh+(~+O03axPZ`7+#OjC-m%LPhaJrvQbwVXS_6!aGPUG{i`EOi;!Q7&? zJGIHbLOCic+_#2#z4qDpdnT>3Fa}Z$<9(V2XWaC|x4se>F{IY8XF*_^6l5}}3Yscl zoo*YRuhcAZ97Z>mug%J_u70nObZ%w2Tzb^Wq&IG`V`*kbe{%jIqv8e=P-k9dm|B>9 zvv-{pF=qSxyr6Ya&sdS4d^G7594UL276e8S9O#(^S#zEAePG|b^BX4(Xhw2Q#>2Z! zEzlXJKF$X6rbiF#bBwh+^@HZ&?A(8!#6`7STj3y13n35`tOwBRRowyIs?YI?4ovd$hXY7z> z3|R+V2VwX_PpUwTRKT&DSam+ghfkb_!A^Qtp;qP;D_C>^k*oMx0l(R#;f9N$&ctA0 z>;&$2y8niS{=k)DOzEt_bCe8G3R`f$^$pe^>IxYgID$^VWeehI4YX|38BP6f2+rtK zx*4%`5p*?#fwJMX`79<#qlbTHIP;sF|L^Gh7a&3mt!TR=5=_+0G}4t(kRk}P%qGM7 zp_NH+?0=4c*?SHJ2TSfpyO&Jiw_+$yaJyBquMLy3ZoGL;WLC4KxMQ`~S&c-9h?cl> zpR}S2Wx0?1jR^tnb#wRI`UE@F#Oc+UkZN1keQRl&74GAcjAsnxNj0e5|zM zFgf{KHy{Mnb^KZ6ia@4xJk!eq}^bIXiX`#c(Q6 zd<%6I{`LG1xBtJp;Vd}IFm{A(swsTIB-r{FG|47d<}#rf;_!A2|*h^`11e+&qI9$aj1L^Cd4P2Szx*~hr#w}J{ zhZd)>y0ZdS1S9Hr-Cx1WuWh#M?c_>%g~A0G|7SFBLT%@1+Qvk)D!dU*cctXYed1gb z4xX5DZi?k^_#2+mSrDrVI0y{ijK_5YzB}C@VLxWU?8Z@LOsD8#?%QqWga3Yjkg!TB4S-qs7%nKV481bF@Faldfw+c55>r`OygW}D) zVySds)ypGxX8Tu7XKI_H4$F0@0Bx+lwea$;U~OgRKlbczN@T}z@f6gBf1E3rdB{m3*)IOf3-DwkD#@ zxe}U!8%-h(k@Apk9v_LbLWJ2{3tupz!sf<1+C$6%%mBG*oPSd4o&1^UvQTu;UAmul z_n9twB#~Y7YLE&`cRr{gzd|ych6Gv(?D%BXne?sHG5<5R}h_S?x zvWl%$pSu)uM`CEqtG+zxhDsVW<29w=wnJDn9)YTBtD=RqZKBOQtQ=yqn$56kX)Vu9 zHd9ddFuO5>iU500MK{^9lEWTv{5vTAPcJ|nby^mzuaKM^eg>F};0Gx*KE99XFNGT} z%D9PZUV%Y-7M__rBe3%ai`19ON!jSnMJ2{r$|$1?i_wpiPpcS4Of7oU)~3g$kz7xN$@}E`Ef(ELi_r+1{sdEs=B5@Y#}!%qbzQjvFag0HagJS){LH? zzEYA=asDoe#2TMTe9V=te+E6kZ0+=IEsZmVPv1Z&4hS%uj0{FMwwnp9>Tj~+keP>A zz@SJm7u`9Y_;H^WVVu5klHd6^xXBl}p~0F0T6qTBBQCE=J`aV1>*XHJ=2GNuW42)i zU7N<=Tm$Cq|0&_-%w1~#dG4=s0yhqwZ7vBej_*u}vwmjXRBi1j1Zh2DB?cEp9z-PG z?dUe$E#!x<1bpflP~Ec0shV=JXD|sQxRh^(bfSAJ^_)f)IzG%gJk)$5SM<~2f~xjy zn|z$0hic(9|AV)`h>tlr5C1G@r*Fu4RCwx4*j`LrG~k;iwo>{q_4zXR})A4QTsbweSKJ%bWS?5uYo>Z9w?)By$T zLKH0?y`tnUA%0m|`z8Jsb^cGfe(BZ<;maohAV*QPPj9vVEy!s@ zYr8Xg*yreSpP(uS010O7P+9uReSeo9{S4b^OHIKb;7;}cY<aXJK^wPWhtJaIyU+R|_KgZ`XSAt^{k{qQv!F2;)7^IIk%`YCBhSqFM#9UyDN6?s34{O<=Wh;+g% z2zIGyrl_usiftoxY5?IRkVAiCfa{h`P)~>cwaXz zCH$ON-wX1Sp_&jbbZGX{E${aE)&kH?1eTXEJxUH5ri79lp(y2ulU$s{N2u1 zBRs-$s&{FE2jLyIkA>5+nFU27Xp_=z9K!~6g5nSlIV2GOsNtH4jN~a|7?FPXfLbPo z+FM*;cNTi{(RwyJ-Ds{K>n zZb?{>J!EjkidG?eF=@Tj;7v!pgjkD zdzDuFN}2Jk)0?r5=k{y|zRB+>-}dlNS-_m-e8=X6cTIsbKE*B2Q(%dCP9~Hoc^{aXCw6C}o~C)RNdBS$OhFTWEEQ zMP7(JkK7joKC`SEE^LCcmRvj-zzLyHm*;BRx9xb*y?=yo+LIG6{bDzRjAkC_^$Sfr z!!=le*)3jE6;y_JbEP$5WHJlqz1b<~(xC5%=OCe6lAG? zVS3Br#n~5VazWI<3}Mk-{kaL z58-$y1cF<~Q6s9iU!{KFB7`czwmCjlOR~G8lKYwG?EH!S@rrRHZff?-Q)V7?ZJf`F zZsjFoe9Y2R?mnlIEgIVI*uTln|C zizDEZoKj56yFn=g>4}4Pl|ez=HGEWDqtZ<{A-iTGy|v+4f>-#>;rG76W`n_1D+egl z0|O4@v!I-I4_0YSdO%*yjaZUvMJrs;XMKc*r3@YMm-4{WIj3uaMRT6>*!EGM;9UbY zJecn!p~h=Z+DTsI5f_==Tpqa|s{4@XXHY<7bx}SZG-h)6qOxgXgIbg-FT7!+By_27 zLJ7g^F|4lJF6eyBk^1gE)km6q3^3sA&#bpK06r)aS`eND)s_is5B4FI>W&G~dyI>n z;xBvhXd}Z-0dF;=;bvb$hkuhVVEo@5We{zmzUwwm`+u!YWy=W;U2eX;%xubfbGT4# zxeWw9RyTP9rd5*^TEZ}3bf!l;Hq$lRr~xCmO-@9Vsd3pc(Sx1E{Xn8NmS1F*Udt>u z8Nsd9*4!W4Ow+uN)_$Dn{3mhvckugrQ>6u^XGPU_27Yz?Qqjgq{}7;fZ{RTKFAFUj zJLIP!J3I?gV=8VRnlV)E8c;v1Zm8aFN7%d$x|<8W!%|!{s&K?#!MFGwt%UA-pIIXB zf~ag8t!8sH6-Be^r{JkST>vhSTH4BqJBur|rD)M=5CJ{>mG8M|>85cJiP+JJoC7rK zG#^n=%YFo@5F|3jW~#WJ8AtqFiZl&mn>Z6r&!mS4LEcf}OaQF@Q)6?O_GeFi$D!{2 zJVOK8&z?ABpm}E1lWd`*sa5iGw)1qwr31H>ft~@C{)ViqOOGJtxq8A99?cH5yNCaq z)H;$XDTL1RHw9xJe;g0{ncZ`?rr9_55iWAkj%1#<^lkAj=p}V^YAlh|}m^e!XkzH0=5$tyeRJD)P{zGMX zS2`K5D$%q!e2R;D7vjCaVNvJ+rpR9bMVvbCT%WnWX=%*OSmk!c39SE?XR_isqzUJA zdEvS#xIZO=sbii=?YYJ|-}iCJdPzJa$-CRou%W^s%>D?u|9EM>rYDbI!iGG%&`{Y5 z?`q$)_vLWbQ14}q=?qwzichTPQ7eap?*6E*NNSo{4xU@ag z^{@O`5-+ce2R1cGs}DHI+)|r#l#lUoEc!{T=rY{PVCLgwp$!@}Rzh=gTTyBDvZv3k ze5jiT9o`3(*YJsTAeuG2ryd#xibNjIXpHq9xPI1Qy55`o@_b6v$DHnnMh9Swku0*r z9o9Eb56Y_>^5&}{LRV{f`IQP>NBsyWZ|RHWRvT#n`-;?Dq-_dZT-B!#kb+6U-5Qaa zRXE4|{^Svc8WG$sQ!EU(bP5qZGU7&iQJHkNqhWKmC54U;>ece;r?2^qWqup*{?mQF zH{bp_sW>MzuTvQ^=sEF$Z|y$XX66vxa1nO(y0S&tEXYuKmnKL^?o?R|%H@VVvDIMT zxsw@idX`dJ#Oke{^vK+=&=opJjZ5Il*-y!8k z4|^qy9x6A_xG>Us*7?Ycyw?CJNvuI3r+afSsbS?am0W{v)trda*s1t8mFQ@T=MN1S z-KN?m)(39H7We@)&fRU2Gv$=7hE*e8#a*UrwmSe;l)7XpS>Mwn*>0* zN#0qBlvVE&bv-Wot~0>jcS4#~OTIXFqL}B~7-@)i6*97`>J>L#ezIRcX-F*bNH~_4 zO>{XOw6z?k?QD~&7#lLJs|#+?@ZURABUw-F*V`Bq5pI1!>A!ZN=`gXQJ@%aE#4Fhh+^)pKdLx=+{k|L0+xXE^pDGP?rA;~V~ zur`F7Wkav`S^xX38I&fnvL(pxu_)1o7}(|S_;G^i)gcXra>B+)RyM6p6kliQxH3c@ z19N5qpZJ=gDUfZLC{8@szLH{zMmUV|?9->Aw$61!O)!qNYuwlkDFV^PovY%_oDhTs zHr?Qs(Crh>f!fFnpDofD1|+^z@VJNXnlJ<1M}|X>z2hbHGYb&ni`6o*gCNEJmmO(w9x+zE%We7%)L% zD|Yr5LV8QV3B!e&1s6uBhg^)qF+oXvOcaaajFFG$f<7#L-zw5l7olq?Oi*<%kJr&h zsr0*|h4k0zUMQp8seMh!9qJ1nI$U~^d-+OhBz* z^Z8+&1$KS`fbQ)FpMac#XDYW>F+%@SA>BQ3Xcn|PaH^%AvpHD9QWSCpLxgT`0^8ON z(Mr)L!QfYXsXLoR{8Fr#6Yoo78nlREx*3l8Zlt)gv4oi7yuMe{&}P~J+6b>3p3+m{ zLr^EdyU0&l!ZG#8Fl)AKQoSd~`SsiGsE>J-=%@^0@c`42d$`fKFAATR5~>YxuJRyu z8a9+Kh<5#;tMpjgj+E8q zd#Fi#S&tnsOI6diz#A~y(t(0Rw$759u|>o)b)09r9zr!Oo>B7j4>S)Pa^c{JS24jU zV$Z{G#@f}}<@|W|8Ujw}_Om6>T_m->S=;#<5gGn8nV*Yi!% zNjU=H%DiC&UA3@}R<8k*u2(xEAf4d6N2VFYY$+kzjlJkj87iNIip+va_=YRX@bN-7 zhx`qkti~WwR|}=hdpPx?6Tr#fS^Gs(q{)O9IwK{Z%D+3@2SbMA*`nQj&>r$fceY3I z1cQ)+)Yx9eb&X@H{i4_3w~c?lB$Gj=*XHvl%TvCY8hSGaeP7y&zME{Vyel26Gq;e` zBu+Ko0=?`?&c}xqC|%tPXw$b@`oP*f8`s)F5e=gEPnl|G)<8|)?Tc>)QcEWw5^}eW zU3j2v+H7R@z9tE!dmJ!l6G>soh4K$0w<)hN+r3__;hy8MmCOHb7ej~n zib`xPJyMDE%Z%<&q6pgZ55Lcj}7>I7Dk%ty)sOvf?8UMPDByqO7BWO#8W1H z6c4sC(l`IRBIo<*du7G18qe&Pi(7;;Ms-!O;_J-Y;06{YAOkULv~Z6F=6VgO_Sr!W zO%f43Hp$CqaM2FJq%z?no;HTW?w4bIBS(0^(ydw0C+8QVuLnnyX`fG@+{}P!XuYxA zHIl#SW{Y#BbphCUMEL{SjU#OYi20iQL&=i$Jhng(G}A>$NNh~*Sw9I_WU>n2O26N z-pGf6{W-$25hL)FhyOC-`3fob%MJ4!tmoXr$Y8fvR`ce{Im@*$xs6@%_8`u|0;?79 zOeuqCdw8v+5oGh{RRtK}>%;o69oft7?cE=v?5O6rw8kjvXuc12lhsZG+=9uuwoXD; zZtnn+5%qQ-_a&sH|K!JVRJtZ!OU*uWKit$L|2XQ!SMq+$OXfF_8V2W(s@sd-8-(q{ zKfg5m0bNk@#+|xCcF!xHUTK?^<40TDJJsrnxM(d*y`*7xyNrj8R}?}v>By+=9wt(g zj(k4ZXp4#BwR&j}F<6ptxa-@*6C6VRr3o;K@l2p=igzSLs6t~Y zA_*BGpEzE0@D^avRRmw6WKt0J0Uy#cL)=b<+L3^C(Z;K<%d^lW!Pas4ew3tM7{axb z$l`PqB=!0tYk-(hv2D=4niAeXnb8o~65c7%Nt~{_7Rh`bU!XU}v!;WQfFVKr62fA9 zfxOQ3{Ncm?F626PNozaD#sgD3Rzma#dvVO{b%Q30od1Ne%ul#q8aCFyDr_}}qmICa zomjJ7SbZI68QoBJPfc64z8DHc?F}_N!IR3VJh^p1d6Utr6Uw$1FWyf^1wIPyyYkqP zv?Nw;XnR8LmXjL}nP=sQ+|AVyk%`3~3q~tNf08`^(-h}AS#I4Qga*Is0`n_0YplQe zW_awG+5;6jKD=)fu8G{mQEZ_x`|}L&9!TkSt(r-dEi;YYNQ36st$r_quzE!KtCC9L zb(^o$ZRQ)Qv9|7o)u75v)NHm-Un<>x1&ryFXzGscYt5yXM>4p3z3SOS#(6*2;Vm`x zPDHX9L3}&a`x#gi)i~~}LHCLP6iYbJIiO|@%%^nUP`&+wmZMS|^6U*s#07h|6-zX94!i=~P=iVs* zpRT0tv9Wa^l62YzGlsP`QDhAt#Wl)*Tz>WT{p^ScDtrlR>Yzvg7)-&$aQCQu*8%4@ zci9qXauFt%o~!(puBi8V0(tCM$mWL{f^{9d;d87)S5jf1)|JZFkyMLW(Ahrm40ErB zh+wC3P-o@oa5(#<4WTaO;X$WJ{5iG*-khNGxzUxZTbFzHUVf24*nj^tjIf+LYTz@~ zW&ct2x;Gd)h@-1^y2lxL!o$X?L(_Z%TSArNw3Ua?hEJYN%p0APK8N@=H`l?chFX|z zA{KQVSC0P*EsU1gC)W?OeKU%xodcz!8_Gp+Qbg6%UKSid--eE6`ANNG46BtcwSS8B z6@c~AiQb&~-!olB`zJjG9%#hvm6_-Eq&kK)PG}FY z+FAC#HD$nfQO95Z{gFS@TC2Al#a0Y2{!YAt)l65;b~1`OyIW@W^*a!WUAZT%7q$({ z6t*cl$`!_}iWOpzP^P90VjoRuDfS<-`>r%!X>A`w&$y~~WDEn- zP{?C{#W&o;#6p822m2?)1kJTW8!Vhq!;VfB+a5(X9$kC%7jd>txE* z9G^(wEwK8I!ROV~o|x^Au5&!Q3jJjDiI&Ve@8z}~ASq|d8#R#e9-A^#g>T1bhvT#4y>3g1XfIbYtg{Z zxv|h=7i+(dX8)$J-eEwh}T)%^Dvnm4fgcfEH0Mldh`mRh{+xwEzXTHl~L`+68S-dEL{(m}U`#mk_c zAN0&_@8xfpe~8IP~{J}>{TEBcmK~{gEaYjbS^FEeb zL7!{7=u7H(A3kUA3)*##IsHS=A>SyyKo}}n*2MUmKQW!0Qiwm)y9p6`Usn%F$~8HYIyVgJ>j2ew;Hfjok5&WA zT!JrbJPqtd%35;y32tuI3ltDHrzZoq$uxW^&I6O!Rcn9%o#^{*^1KAB?Rt++pS@{W`*w+=vMV+`3qMN82zkuozxr^5p$0Wq3_*J;} z#pIgDf+1zg(yJT~%`SZ+*gko>+wg-ITvJxn;pONAG?T~1O$q{VlUm{7Oh4ZT zYH_PynCpqZ$>w=weCA4rv9@G*1qbQX8|qbP#eK#{PGg#Bo|S-xQ9g%@6Xl2CXacxO z5Z>e8*N;4N{S%Xi$cUc-A21=vCUK+Wwo8SIfAVxk1U>Z4 z*Luh%Jn+*Vm>C7KPd_4JBl%G@fwa(E1w>8yyQ0n{HD)P`WtqmB>FDdrM4U=C zHTuBBhf43Gj0MLAT=Mj{65daP_w!c-6zWT8DVR8{uRuqqW{JJ8+FEP1D>qSguAICz z5S9AS#9-Y?Vr1?)hb4~N4%|DjOYM13%*{hhn{J%C(htVk z^WrHpbuEwyeF;D*8RHk-w7Rawxay<1`M^f?ZS4ieh1@i%mS)^p)G$eDXv1G;T)E?f z?{L)EQ9OwVNu1OQEp{=3fLkeAHNIBrtKv48+gXp>b=+uHd{r+tFn-(yyi0#O>o3)Y#pHFdL zO5G9L#uGT6)(W8%8Q3CrbvcwNmRmFEre{)rnZ+uGzTZYvkj)lZbkWtDuWqG&1X!ghMG0%pugs{{3g|6Pl%@KFDncJHOGLth zT5*H)-csl@k1$If+ciVkfEU@($ty_dVI{a0={J>|G?jJ3!TR+qj!Ts31$<4xQ>Mm_ zrV*SPUeuw{wVaF8bO9`hp7FviO4Og?%dJiF4>n2WhbD*;N!gWw~An4H#7vO?E(%%HDm z6Cvu;MIJJB<-B(?j z%OH)%`)3a0Ru^Z84KSyqGL%)T?Ti@6W4@fkv3S?4&qdaowXBF<;UC?7G%4Xss~}`t z8%Karl{&yAB(l4pAK6mi#z~u~`(DKMDu!{8Ua6t(%J_nQf3PTFQY$WUbYdV7qv{pR zS1scooRH3GajmTNf{V?#vu&Us8IlS1k$lm2GZ|HgCvB6%-u{L_{l%cz#Z`M!E14bE z*i&k_FsPt{29$jTnvt6vo6Z*16OIr7R1WJ9=uSvSjH$xDYX@KTHK(3=g&{w;7oDl{ zplmHLIEEP=Pd-P5DX+JnwWnwsoJ{`cV0smLsyn;}KC^+jFI%YH^Txr!5m-NeVfh#E zT<4H>*CBnGoL#fZObrOJE3-s zHD`A{4_w~jzY0r<{t&roRS=C4KoAvG`AsbRT|Vb!N;=z2K`>bDGX-@|DRxbphY#K! zi0RCz?gp>~URCDkKcmZL7&cLg zh@O}T1P@p({xDJYG#1ej<(KeG)IM^F9@=G)Yv(}x)E2&J$`W3HolGcZbUOoUAp@=V z_>|DPpl9-I^zbh1BXl4ioQeS=sYB1KR0=(JTXoyVH1K6B-0@zh%2&hR716Jz@HK}r zKWvpd^=hff&{|D#sL+@e2Jnt-YJx&Xt8PdYU$vinkaifxmh*nv5`cAjHsE^IHMRjMzsk^)xZw=_wiv=9Q}sx(JqAqfXT~Ga%z3#I>+1bjmoRF!KqG#645~lE}C*(oIf>V%BHomV_YP z%HfYNIIDDvd3@)an<;$h@pe(!j>(|^l+X7CI`62|6euxU%mtjv0Lq%0Hh|D}3u zo_h{R;TxI!26%sog|g+GzQU*omLz ziA5oam=8D%ip7}0`;9 zZk>3#4`cb`_r5}mbMmX6TjD*m<&IV_J!yCD=KAZLLhJpzkKU^ zzaoQ6mI+lac{f^K_E7m3+xs5d^TgZZi(&I_^2hz}51XEsK8|cF6RU3jFZcXCm;4$m z0i)YmJQ+xf7yNNr{GTEY5H2t&!2=U5#2-$yvikNo7X6bsXFonNpZABwEYp_EABiRY zs}ctsg~1Y#C;qTFqqFsO^V~kfd0WnZ^U8TqXmIL=j(h$;B}HHm;{aiT^Ys74)frcy zI@A5f)fvy~v23${NXv5rQ~^-kbp7M%rd;w|KJ0tw|JPh%?O*gQ0weliyc#Y-@_o_s z5V%EbkyOLu67yA$I>ef`+N?gMapfw`agW8*M!HpO%2Sk>&yGeuLlPp-RpFKRI2lEj zN)?F|`Q;a0=R2XosyN&Z6J`6c03oXI?x$UfpVf3cimoTCJv-1h+5JOP*Iy*?^2*H< zMjsYil@;bbgLh!B8QP{R4{M8`IA@=hmjO;Fi0vKG+1l^s&AgywiTA@>b~?m0retj0 zTYGDnSNEz%9KSqSVNak3sl4@RD?^z&9jaXYLb>PotNc|- ztA0XR;LK1(cG*Nd`?{@Fi_?=r_MK~JgQS8^J>1{}rN$}m3-AH!DvCw|4;~|nNJ|do zHP(fb)ZiMeA}L~*L-RM-!48Dng47Dm=QysyKG}Q0(TMe@RF0C>Jpqxo(Sij}osH;8 zT%(t83yrb58huw|&pO>Shjn_RN*G{0x=I#fp04>|CV4Okh@bxwv%O&Y^{YnVMEG8W@L!2 z`OV%aiy-~s{7m^LXq6&4O7^R`bF_a>c*!R1h3MGg6(dfWsBHg}Kx+P6R+)|h3c{MGk@ffwl?BnWsWy1rxV|9EEbSK>(j565*4}>fbS~v^JutA|v zRsEB2jRZs4@W1`wnYA^t`_?{VQ0)ZXM_N-fA&96=Nn(8D4EZs&{@*=u`O5wbD7!RRC{ zIdIy#vmt+~$6pEMXRL}iZdy4rvd^w=r{vR^4wr;A<5MiJ4?*GfubrpXy4q}N^E*D0 zlj})?vYS(Pow%2>C`w}gacHq6{_L^i%hs+k+LN|zo6-Apnfr1Fp1)kY?cSwRXAf+h z{AjxE-nzxI{Am#t#?5#6Pbz0<3dUnsQrdUavpQVPkq`HuXeg}~^tR~ZxR!zXy|mpf z_7kC1LM2^C#(8Vy-YwV0S(9GiHhAuSZHixC4@Y38gkl7_p7IZ0^}UhsuOlS} zKnjX9mR`EC&u?R#hude(SA*m$?O<&k{$lbhC@li^m%Mx{QrWi7 zZ{-_0KiXy~a^&r}I&h`Fj=}p<1t{Ha=XU2@V;N ziP73|f6XjN&rd=vw*=C&(z?Cxy_Q&EX90B6v^n1kv3p$RQetI-1U8Wi?Fq50!&KU= z!M^&>P6V}ziwIMfyd`Hre@M*#zwX;g`upWFCU~K-8g;@OQ|{^nAW4HTCQM_)V(59T zWvl!zd2a&rDEbETi}|(l40}4qj%GkvZu`z4t;O@&{UP46Z?h&0dipRz+C6Tp3oQMD zX`&;yV%(l7@y=3|^f0t1&&6EHIWA~sJos=eV&L3f>7t7}^3J-=;7k;8CmS4#cIX5@ z#aq;bwp>^^x*2IAu`o@rqzWHjT9p=H|dkjoEBk z$$fzpm+5Z3j^(0({kQkLM1{MiqbiCsf_IGTwjl3mtQ5V^)5lF0d$l88dX1(yC%|1Y zWnB$y|9);N_CyvWWiT@9-m zWyLg1EzV&Ny588a$Jpvo-O9*K&rJrZY5;hStbWUOPZ(|)e1Bs_*ibGBeMH8}tqMqG z>$v3H7In=|G0bs-Tgd^yoE>8Fv^WBcb^s4WaEYGT=efmk)TgLk=iAZ7zly6RyZBcH$ zD>LpzO6F~oB(^M^qH0*rg0^pVzP?ZN!B2Pn1NazcEk$lQpqhRGM2=_Sl>3$Pzeqm{0VVkPF?WF>!OE}_Imm4I|?_@{_RG99iS1`VW4R^zi zMp>3lv0mF;S8bJA&^1CToOX35hbxp7YrFZr=xpzBQHPB+0c(i1Yfw^#Kg@z^kG?d) zn%viygTZD&#!n{g&SvGh*cDe0a#_fCOX;b1vUM06rgB>tcKEP&k1UVb7AjP%nV!1# z0C`?KOTUHh@8!^ADCr`#9{Z`}3`TTJf^rXd@PqYq%KPx?gvM6C*m5Vskd!CB$kn<_ zno8*6>LeoX0b8n)lr#&v&kF9$?$C3vTygOQ;7Mx$PogaE)od-F1wj&|Ur(ssck$EB z_f9N#9EaTXv+N5A+dOSsk+7_Ae2UboxK{pMoB{i#Ua-v`@3h{izvRst8-qJI+ITd= z*=zaPIQ`laBYE~a?=BB=h`d(+>E$YO)r0B6*<-!ejVo}?;FDb*>lQ}IOwm5HkrkRY zkejhR;v4~YfNFgddE)bGzdMb^MnD-XWcFQ zgRwDT5^-i``~+b_^mx0TG%@Q##-T7?e`?Jev(RMc&$ zPHdI8ZeW9(sB^OXa<&5O>HG4_i5?R>69Y7a@ZNz)v#xCg?Uf{<2VMI@h8r8-R(B7_ zxfB*nfCH1-_R{efzr%64v!LM_Tk>8NMU*uK*{+h9y|2B`x6|3^5>9rw+{?TIa1Q6t znnI{<(df+HsjzYh!vNX#68#=gROd6rvKif=0%hGEOm=ZvX`WMuY8)B5Vmg#vaC;|! zyt%jzyR#r&bdXhzR3%C5PYtju^3;bu)cbV=28j-4S~(7 zU0Wtv=s+Y9mV;Rbbyo7fJ{>%D8vj}m{jl=kV_2Sx^o8Pw{QMqPQsLMJ!pPf>2C=A? z_w?&1a+V?n+?Lq8AP@P0oIj>=U^J?Du*0*}!553NpO6mQ$M%*EEIBP3WCgyU9=y}7 zX0NlDC^%Q-_HmQd;`WmkIPUz3B}KpPQ@scSoccQy={6IM+)tB?v?Cqw65_e?L?ys z_^7ze9|Aacsh&*sVwfA z#PVH2w)Z7&RySPb?=hxsLn(1BD0dw(jyI$<@La$75amm{8zwWJRgJbyhqWkG2 z$E)?{wv*92z$psXoS%yCB73Y!cyDQc+hVKIs(%sCBx1ifPk8mkREO6V@0WY;{2X=L z<}ZJ{@K9)S+l}drcliwfN|z~eVSVR-tVGvgZJ zJ>eB(V!yN63~9>>`b@6FR9MDKbl;mYTz?%RVHm6`;ZFuu3LrO_q_>YP-#Zeuq0eP? zZsX!2bdJKR0#BuKx=LnI0WR;w+L^Fz5`}uIQ-Yx#x^nWLOzc$#u49wO7I@}1>#dJV zLpyZtTkJ``V=%>SG}9^Cx%wE6yyO{qSw@GmxPxF81ndb6JU=~rWV316OhrzSIelm9 zLBWjRJcfgnm)@ei{h|KOFkHqqkKFDW=0OCD?5$Vw~ zY^tr$x%l?zn9S0Po$Fp%lC7+(ozX%CywEu3Sk;xCm3C}B)t*EYeeE=k=*CT&K(}6; z+82IfLW(M=0!x+lIh1}X(3%Ae4(9kdxo!{C7YZx1h)?U-GbYd7g!KJfBO$@>E~AaN z2D|bch^2r7I_LYIw`bEN@nF=bpr%|(VZ5|5Kx1jih>hBK-B_ofb`~TG?Lg+qmPJkZ zg75Jb^q|5Ey^ZPD4VhrX_!Om2dWrWK<@$tbKz_G05EGlfovfruzgNG?=s_-UF(>PW zAYS`9znpHY5$GCNPa(D*5Kbara8VVkpNJYF_#>9=4_ob95Y+tu4sBFPTz@h~Rk%)d zs(WzCp-fm2>5IuZ6P<#0}=G{H*yg8o=-m42_Vrv!J-Q&3+D7t&8t} zr6_?i6N7~F-WqOv5b4#5aTmXda>*E?;j8u?r<0{udIxI;L#gj4AKsp!NxUn5NMb)^^WRSFNb=2S zQ4A?KT`&t;?JBh!AMoC?ln|6QQPhQIcMi|Ivn24s#HI1GAXVga-QLc;f74|TW}|+O z@1`qH9JHq7GI%eF!@7}i1m4w1m$r9}mF_KrUWOk0T0)87(u#$OoJ(H6*Ul_xuW=u{ zdyqa0+LRWT?{?^A2e#;06YwKE9*T4gMd7sftX>HTOCVt(?u_rt=XXJMc`u5#Kd}sB zz|VyDIjLUnb+9dR@=(tx5)4ASEP;5~%}M;O*2`R;eJ|EKeHJv9u9J$aSvd~jT_G3~ z7$zhC&WSfqwlJOOm>5o+d9C>|@WV@c?<}Fxve1?Av9yHcqjspfo6vR=TBCIE-=CL7#QGeaC)t1Dk{OL3|bQxWI-f7pBPxF(afVU%6F z2&f3C5wfD#5LhgUZh$-%L>3V%h@n_eL{bDK2^$~^(uF7}s9DJ>VnaG4KmvIn6cK?H zmXc0FlaeNogoMO%ySvZ(zR$kv`#a~KbH3mCKFV)$%{_C?%$=FJ>Rgk-umGocrOj=3 znl}?e2%+Jrqu1omWsz;1OLF2(sG(;;Q|?+pp^UZ~9laAJvK+<9pQ?y!>>Iq60~1;I zwYfkUpSS%rNq@$&MaFCw>UVnlW%ziHdJBQW5y~kp1Mz%pCL)q50bh4L^VwiHffuWt z;{&0)c9mm0Hf6)IX*+8O6zL`1=x-g_h(!rlgznLG6wKjP-N(E8;GY_#@EAS%vw`A~ zFFp8Q+eD{ohkj~2DU7?laHP7Nb5a~ynArAD3O1=~KDhuv2IU@Ub_l1dYzu7Zo1O3T zzr4=F^fr&ex(O;aMD( z28`~mVGtLRJ_3BB`;DmGE!6)ucWs+p1Z#v+h65Ad-Na2wS4mz($&o~FA6)K|W10?T z+BLx&D8`slz?Rk(ou;Ey!qeW|bmi!IiyqajOOH&J+qqbg8nbCGE7KYReG$w=T&Tmh zo5X{xzTT;V211eOa;-q1Hx;`VVehMbA|6OV3{Y<0ZYdjC#jpY5$vc=gk}KUU>&7BQ z=`HBxG9RvM%h+xds4}r}`+ei#$Z}qKv%sz$;o9^Rny@c))k4d-kEWG8{k?KhNaEl$ zlI&S16)vNdO=6R-S8&jmI6mjiC(zh7^mQ^SnTwi)?ukBGiBzx~$q0aQu{U3>C=+CK zTc2ZZKkxae(5`4Wvsb(agS@CSwv)EpreaK5FjT>0&Re-G>7-qe>T+80Z9+5_R^Zt?dTGD?2EI``4`x}I-c-o& z*4|Jslk`aq!cXgwh&Ld})QnkpTIZX;PHW=J`9XDODRy4jFWOEHzxwpsyC3~)o0^^t zhVd3K`QD;f`uQmA1KlTuRx${sgqgHZ7s4KlF$KM7XXiD#LnV@GUSP2 za5Uqxa+>+C9H9K~1#b%jxBTn#Un>23_Rg5-!2g0#J2T@9wEZWR-)jn1*^i7Ih7awp z(y3~-ZfXkDqF4VdcB1}v>tqSJAcn{VL1 z_z33FPU*js>qZkX%wNL%@%snITN)R8cg|p;^iwebLWhuQO*tb@8d%^tw$ptkn4X7J zVB!YkElF6gArF(SP|pkZZl&Y5y;EV+#v5iLiZ(tU#A>QJ=Mv!shCN=FLRV?)W@bWy zE7iGu{0w~K~HiQpz4gO>Dhu_{`CBNkMh?}vK59&QoW=8PxG@lRH~b`RFP z7M@eA3OptFj)L{M8EggSx)g7RyPu6YqJFNFtCycq!y5!^cuxNGemn?W1MGf#X#G%! zg11L!O?s^6YTt1Lp>1i!#_F?xtl`Zr6+U+`E<6#4-*0;?8ixCJ(T!FrBLU{Ph`V#M=?kcnCRQbbDv&N)*cV>vzzB`y{45f0DyglgK*n zHnbBgxPhFO!r@44>bltnPdw$8q-g|YGUQRE0bSvfDBVz@kbI+qC zk{-e0P1O(0`&N27nIb$t8(8zd!YS=>!ic$eG`a{AtiRasBlm+ibO|nWugtnCi`7c4 z7C;dmwyx+TBwYuJC>3}_l;wkZWnol55798sui$z-vV?buk+^#j=F-~A$F|q)+e>5j zmDL9?$elP(JU<>>xcvf7e%%&3mhid2`m!mlON5YKbxgx(71RX@VC%+5~Vp=&!DQ_|LH1 zk-#y#*7VK@lj-cC=F#eSjn8$H>F1+fU5G55O*Q=A62}^J2>cms6V&ja>KEEe}rYfKfZOd>~7 ze*Fd4=4G-k@=CO0jMPG4NiX3;{9i$}xx(@mLNG@30~*4e4~6W+yM`a2sr}xkw_zw( zYptwmhgk!U8%8{cMxSt51Cn8EPQYpgHA%Bq`s?O;dgg~<5vpUFt-kPSb|o^CTOTEQ zgY$r!JfNKvrFU+1a*VPXz>I;IPmn$KaWJOro%^Tw07<;)EfFQTe(n=ss=7L@d-p>i|N7Fp228 zQXHtTp>4v0SQ!T|1h3pjRhKu@^g9Ar;#W$K-7)8+SJ|g$a-solpG}I+ZyAJ55SOY$ zV<{|HKhMc>bs8~Shz`7sGvgIBs!r|{BYIFOD?3K6iluFCp$S>Fk||V(0>Vp6hBA#2 ztr23+I8@zKBg|&{BagAyxW{Fxbnl#hiFk?k-! zEL4)yYrM=QS$>`lNgMCr1;5${nxn!6d5wf^+tIjUBfhKddv?=rxtrOWe%#o9te|uG zWKJlhiHzcby9w9w@oB7gj#8}w*KE+T>b|C(nt{YJU&S(*aU2@%H7)e$%{Qjx*Oh|LPai*<8f6&$Cs>Yd++*Q9PLr_<7;WW-%m z@TI6Kz85MC6;X|XJ#PyO3yru!y=CvpLv#kiLqQ;ZhXe+Z7VJK-&Bh?N-;R5hC-8){ zGZ1Wj25;Fa`y|FOFW8Xh+l)2OuVlEddiHARP}@7%I@9;L&1-HsixLqje%HKq#10#+ z`@TKGwyKO#zRKpoWB2#&Groab-`+Ckyki zB$RBvDc>`SCX`IwdPh~zwO=2o3uy7pLxc**;f`<%88y+5C^B>$w}iDuZR%|qDC zHBYp6>v!?1O+UE|n_Lk+I`(BG93In4;>|0jr; zW=0sG8#Rw`#|7XeF;{FuY4Xt?=TFL+)lT-&AQyfG5B)Z$9!KsOB1eOLtPD@RRBTg9 z9)c#n$M3URu6bK6uN|hu#f)kkql1n%)r1$}?)kY#(woz%LNuTD`1w|eGYdry838Xs z<18R`+iyQZkv)ZWAQhs3$4fU`X!;X2^&^vBoh5~s$u6%Y* z9ou1790JIg+_gw5Eas)~b!SLTb?!#j^HprgD{kH`w?R+Jg$mLYo^rOkL>+=va(iBp zrq5UOZ`d!1-n;vqq~n7D7xLMF5NGsy@i0yP*5Z4=1EDxt>*kbS?)qpK4lkTef3B=I z#iur(`A*(DXv~h;z5`vRyEwUqcz|Y?F?F>}!=!PB6T5yb9+%;0az7t!WbqBLV%M+u z%U<8$E%ZB0<^@QycitycmLh*9MRJNTznp%X>17Ctf~JpjwV`stRZ9R1yB~6@4OdD4 zrweE{c3~&~EaW1B(plT!$#?IR{+X!nR?5M=PW8vHSu|jllTBWeA~Q zm$lTW;8HDvgyG&7Y13(;P;zAYTq5du|70TQWHp;D3Fis==Oe8^Nf&h+LMtb6(CeyB zlh#XAJ*A|wu7+04M!}y7Hk9wj#oT){`N^_KV}fH_^J=?U`P--r4x}181UBWOsAo0= z_cxyKm5j!?K2rMBAcO@CE_+7^s;|$}8Kb7ACg8+e#~EROBnL2oV#2fqd{qeYc#ZU~ ztL7q}_#Bs{3C252Hv{_cqq3+M1VJXi@uFqFXB@$p{E^E3Ofg0X!E~PHA}%;e;I4CI zz`H@Le^0zswOjNL1mLlBk^bQy$)C`FNgj*-RpfzSjX?FK#ecQ*XX=UB^Pfe2NA^Il zR^{Jyc!*i|s4JA5MyXxUs4Nc<3W58nblgb(Sz6)nk3d%(YccDAnyUr0dz5ZMw+>qS z&F{m6CjDE2eLNB6uG`6QWXKHuTSGv5{1-n7P89!_(e3=3vHttW0cbad&_(((^8Xks zFuJD;rx-RKXNLp7{xvbz?mYGnN2R>^EoFsF?;>x{xfKoQ3s9t+GKN7>thPjIwT|u; zkMsK275j4TNI^UxAO0rwfn>4yQl^jAs&4`F7IlNzmRJBNe|h-OtAL~3k5co`2B!pD z9%f z++yidIX`0x6;ZND2t2=+&8^5?#T)qX&8X-7=JwXgoQA7a3`%gSU4HCxT2gr6E!A~E zI9z)=KU+xUNh1*W0F69A?RLF{>z2^B(Or&}U-n6o<+=7H^k|NHEk!GiM(?bi4_+#D zdP_Z%!6k^eT0>i=@oPgvk|7#$%@2voE|KV0@nyqV4dhItmV^-xeG)o$8geF!>R#3w z99n~nI8gWELQzwdddE2InHq#UJ0uU7S%oF9sp5#`J@30;{FBa()7FzS_~7Y)t+e!V zWE{@n*7{VvU0gllgS?PO_+IX!zU-E?9au2>gz_qOw0nt!%Ef4BzD_RI&IY+3)V0+r zKTTcn>HR^N%s3Dwj$t7c?fQ06wVp~#c<)jjeW=N2t%_?~B!of%p zWvM!Iw1M0t>n+j|qQYjfs`!)Kh4R99e5t0js^kG)If*RL2nBcXlsC&R?~e=0n%E%| zD1~oaQA=}L=(UYjTNU}T)N`*QWb}YBk;8H{*Q{3uPLX~f=r%q;v6^uTFN~N@4zZ|v zK7q<=)Ls@whSVa-r!vum`P?6!yhN3P1LDFW!{kl!Tt}I9HJ|FRVv?|Hhg1N{31%pa z+i)9WcW}Ds?Vk-U(YX>;dR(uP+eo(j`9KqS7vPEt5n^i2;ET^y`Uy7nOSfYf?qva_ zvF!dll=yMcyKaqFnTXjN>cBmk0AuIRCyNzJo;NV8Wudi0NC<#C-AzADmc1zec0PvWXrC znCi<5OxB*IcbcJKaXw=I3{OD(lk@07ucPSl~>+82W0oK$VI72kEk3v z${PVsR<%=O%5|ErvrV{dCpJ9vp>{_Ug>1vEwpOK37)NyCV43OOL!$Yyik-h_OlHLp z92~uN)03r=%_Cct#NMWk&6{-hmt-C++Q+!|TX z=^+QowcpXf@el8ztzFw9)($~SelFg-C41cUb?7Zy!KN>bJp8#?$L`1e>F^Nu9Yr&k7muKb)^?ts*qa{%G<)1`0IvC+0r}`>*c)zn=NXcQ12f zsM5B%_b;k{trECh;E;P7wVnxHhKY4nMCa~RY_GGAM{8a)xRYpEY$-}<>#su7kW zY^z}YadX=rol&=hoUXu9K>WK3#kb`9_ z?Hc?CHO@0d4@?KWR5K1TcsonKlkgXN7!i6c!5v)lUe_Be&16PC)V}HD+r&=nRQXbB ze$;jONHeP>LyPXccz3dd&chZ|x3~Ys%Xc|J*?NR~M&>-T}` z7z&nyHjSy<9Cma}yle9`GleonG9Agpr38-s zt1ts_A@%sT=k2i0)aAr4dD(x~`J;hHG>YlV|G@JlkCt+l=Cz{GQCer6b{*241&r>G zmvi~gm-G7@`~N<(ec8{#sql1nMde>j!!C1I+TCxj*5WT-)Mv^B&hlDjJi{w=z|~LE zM?4*{z4DQ2ydzR(ieHO&+8~C1E7O~o%iR*5D!f0E76ZzF50x>e)Gz(;@qms9NjBhD<;1;S*4B%0P&ea z|M;JHnX4-=z%o5(3LPIXffg73vv@h`vwrJEwqj&;(eZ=3-UOGP5L|-^4_V5(6ocE*O&P4UO zSZ6AO@I`?!I=k=78Gu=8S)X7tTV=iqRhB(wfAD zDdwpPXp-k-tTp>wHfH(cNl7=p;8Im4aRn0hlBzJS557uTfe*Kl&^!7nB?>(0Dz&7x zRzBR+!4{`8Lld=4AW!9Q6f?;R>5qcwJ@ms)`$TP_k$C#00C6?dsZb@!;GMz0z;MO! zOacN$tAuA8ETQ+nE>F-L!m~>N_O8cy~*9({{uC7TdH>mkgz2X~%(?#ccbE1Bq5S zGhz@A#w^3Q%cX$-La`aq)5(pheIR$45_v7CudA;>k~@=&VmiDEItx+d4X{X3k2kj* z?E{0f3ZV6EkApH-DCHaP&7nK~^FKPZycb)CGeu0Xg zew?3k%QS42H`z0Pgk4T%Gn~r-{Yj~7Z$A?9xR*@`XnUj-nh>(NC>v%P z$^D?hm;Lw)dwOW<6Nt7!1vbSV4nG=%g)ZU?K$0ODe z)`b&3DN(Qeo6r10rJvI8?LYM@+7fX1v;Uf7$Sh}36fUxgf9wb2->w_SSI%n$J^<+! zCBO3;yO?+s1I~+`B#$WUxmL4`CX?x;SYnsmoT=DujyYxwgl2uF-_Y)|QL%K1!dM^p z`%}x=&jyEaqq_A%%AasSWA1ui{T)nuzy`&)ozw9EivL>Z5BN)=v&?6(Dg7N;r{(|? z{s;O$;e7zS@Jn<5{W;M367atv{L)9S<@5jAjW6&>?Nn6uUYuuh3{$7~`ib6achCom>>pX&;M8(>F? zF~8<+mLJrcv7HPD2+TET;;-NpmgMH#Wu@|1p@_23Q;aGaZ6Flp){D~b;FF@=;&8Aw zEwMmo>W_-hdE;v=8}#obsw{PE3rbF%5plQRxZwE$KM=+c-FFPU@J4mCLltZ3-1l}$ zcJ$VZI4ot^z8a1n{-?u`HsN9c0-cG!h`nXsF#?07Q?f#!w~B1&e@W2Gs zgHgT{)Hyv@Nb?7TcXjaf8qd*NDuNMRvvY^Y>lUpnuSB}lvn4?acQ0mv-k-E((Vwnm z*wL4KDE(|uNXrHD-XM#eob4)a>(}t@)>pAH5<8`AnN<7enY?2RR3on(TJN%g-**k` z63|=w2yqw}^T@+)3^xCDKP_;fkQ3lGP&y)#?%}i)!x{oy8_4s{w(Tj@M2950fRj za*3nm&F^0Qc=D(ymK=)uq=e<;8{4jv*7!Bi+6FzyDbl%PblnG7g2t{0XQ*wIZ{U>!$zgQ!=e!{qg?lE&S7(1Y8r&CMZdYwPe74|xK zimHu25h8HfTBFWr?rZF=+gVkSInmhXLqC;kUsXkqZ>Cq)3ddT9IelVJ3Z}Z0uSDga z2vGkN^TcJnynP(BJ=}FJS0M2U$M`AQ1lQI%9ovIJhZZBm(>ceu);cS zgnYP=U-a2Pq}{`OrZszK=j3r7Rl@-ew3L$50Uwz@Z>ZqAe#|!tY)83C3YCn&jF}{L zNpN0E&vGa$@K?vMFg-uGmLsFP7CskMtBGMpg>@38i6*%66F^{d*+8KvpI&-SLLpWA z*}!xXk)AtBM_Fipw%~q?t-!x-wr#?{2pI{$)6qP;=K|$Hv{KuWU`LvM*M3yh1hOAo zm%Cm*M=xw2P3-7_-iC0=75Em^LDo;)6;ywG0m`pcaVZsN(nUrkw$U+!Z*ynDXndKW z;*>?KC2)A*R7efCuHpqp6$Q9P*ix3Li<`UDxvcYa&dJJF@#7}Mj%dI0)%`TxOFS@X zJVNeKMs%2Wiu-?Mh2cN@S2l)d1P&}y$q_;0w$@_XhME}JTN(jfnF z6f-Z8!;RwGLE5uXAC4V@w58XbsC^@``i{T3Y@58bng*%>LE5TYV~jbq@xdHP#{?CX zUDi>^Y-qVejYr1mTY}g{xDbecDeQDldUZ984Y6w$fiAais*fn2bkSCD{E9|A^H8Mo zj*>A(DHpp&CVf+Q0dO~aB5$PMuVab0^bb;6>}vAW{zIP)sQc_#Q0nwLL1dt1Jo{!2++na)bCIDcUt*7Jn%2%|7xsHj9GD*_zX7jUpmm4!Z-*V zcmIMY2K>qX?}w#TDAzw{kMK| z!rYEDC1IOAM<{ZU= zW-l7eDWBj4e>*=u8)R=Of*+$O9{kl=R>nz%x}r(t;9#cGB93~&ml zbAYmP-#}s4V10znSDhieqQE5D$RDew!`}riMCX3XpTum}zjE@#g}`sn+Ax4sk+|mh zD50MQHx{%EIJ09d6yP3AiqcurH(tw%z>EI2mBfGHM&J z)seyl%21gJTKJ(K#jqoa5L;CJPNoFs_k=AJl-0`YkRm6@T_>1R1gaZ<)b?SPD6ngJ zyNIjC76=zhm1NR%=ubbk7rw2m;?x2ru?E;(Mov(!-5d2by>nB*Izd)g6&|hZXn5Bw z3#&?FA$sbozG+zx3!J%VLb@BjS(j&1k7vyiwjUYsrBaQm#`j z@KJBGglVI%3ql%cG{Hb<+&frb64-+ti^gRl5=OxA930pACGM$DH9G5bMYqxR|+0 z?bB5Eo#OJGlZV)_wl74$05LEi|KikhiVumOJjYuRYoqsp#|n%_LrZg}YvYudZm!FF zq=Pc%afD}y-{f2VoGnCTl1#lankZy>B*1bT3IR&XZEm9O=HbsH%tj<7yiSu;$gcK? z8f2yfiwm$UqnGmMptN7q@fR6!Cd*NBnRo04`Nyg%{v0e4IB6@es$QaSX%4CsD${KD z)#88J$o9h@>adaO*D}nx0o3=UK&cd42qo8n=<|(jCRl<1Cd%F6ozwmNYZ)WywugN z(ZSrjCtz&Ct(Qv6!0=l-0XQP(JNWf)&&<~e?2~41EP=l_aMxc*q+E}4k(tzdbG*qF zF5~;fK7kK@|5tx|;f*Z?D=$h!>1}8Z6u9FHaDG<=rYK1!NYj|pe6>l4IsEL0ZAPP4 zICB>89;#@7WQ_MAd{GNaK{I_x5Q5h?=-6dEsDDRi1CHyEn)E~ScuUMETI+Tr+9<{; zV1ayD?n+I+{6!+e(WJ+ljjMLs9FLrwvm*|8E$;VIr(KqN)=iy9g+vS(el{?~Lz@6= z24m3-!DcjtVJI>p*9UrQV{%8uTB0dFF6OCo&AY*daHRK%TB^XgMmmAYFe)M#dK6Aw z$W@^fw|6+8x#yBDW)V4(I|c4k=TeaIOsOwdMqYW5`}h`C>Af7;t0ec_&j4M|Cfko} zSFWghLEz+(!Vj@%t2lVvg;Sq6XC^I#A8O+~V4a5CR&;Gn_WJ%g*sko{HD!t8eJpaY zy(%QNxAR*6Ed8AXIky)VSw49U5IQiJqq1GFE6~{0{n-zcF)z@SJ=@R!yZ~JH8=G&HR#BMv0ym9g6Y{4abccX3X#+;_#lv7-% zeKnIG&dLz?@8?XX;fP(%BW3u!nEPKifW+wIb+6Y%pRDVsjy}xmbRqgL>2)2r7Tbv(8K_B zlbT?XnxtgajW2y_g8%;iJH`bqV$}H7LZ<_aGxd7iS2oD$%^Ti1&%w+5@mW!d;#*Qc z72upRuAjIjfBe~?M>!K39$PebnLMlpMY|<9*@)OqK6S1$xIuT?*60P|#nBG6_=_=e zdB4+oF?>}5-nQ{A7e`v)zHo#B7`0cs{qfO8wSMoPvsdi);^;4R@fazCn;rcSN$rd( zC9(QWp2=gu;tmFw^UN?+>R=o_q+jM7smZ(+&U9LXRn6tEuV-Xp|G{W5F6|=a% zMHHN;n_I+M36O!)M0_}sP~i=!Gvnv;Bv`xNS>`0lg$6Os2KhQhc0kIy30e z=rxeB{DRjl#=+{(22TVw4PM6nzXTv*>AAAaN!FPj>4~8mH#b0k%=KD~{=Tu;=xu?S zddDtl2|g$gAFBIo@b~PER#CXcsc}9wPE7DE0vu*-k{UtQPHUqvqG)QM)ua}hOngQT z(woaOw2Kl|68c2A?finKY>PUuqJ=c+bh<))vJr8VwMgqYCBF{$rTZt2Rm7lBbnj^j zmQw*p+iHAp9$YScEa%!lf)4%Q$pnRPk&T#}Wk8%|HsV(t7TGl^4}6_pfpi9BCA zQO1{2@*!LM=Ig;a%g9D)nNdI$F!dwV9+R8qDJUyjVz2|8Vb8pJu>dXr>`#~!aVWka>}GVEKnu7rM!U_(nEnY3y7+J&*183Ke}mE;*TME zo!Q?q>@n(ZQ*V3(C=UzCQGKC2@mCaXsoR}S573DP?Ng1hD;4u|V!^Z;;dk=7_gI+B zP>m5fIPDDvr)+of9jJ0CjxBZa7~m^g#tE0@Lvl&LqNE@>r59VjD9OooCb9${98pUC zr;9O{VL6jG6IG%HqcypyXWnbQRnI?UX3mQ?h)t}3 z+0ZS<&%trTnbTndmPIC}`v$<@HdP0xVJOmg_qY&M#*ao=q^M?<2oD&dHV4~J)h6)p z#1J}@$wdXT9kBf>Bj8+>ZHeN@kFdz}%I7WiI+`yFIO1J`x;shks1HHaA-9k)glKam z)tkQ2oIH~)Fs&>`vS}gPsozlRYb8tK!`+gQ?iKQm7VG@7a=AnyFKR3ZWf~&dLhaw4 zkAoYle+rqLa|pKVDNcmwPwP94?twB`?LxEQ5D~pCJuN743Bxfcz4tI=++Xb$baq2O zwZLe+?;OWWr0cv|Sy53XXVVp@xB-J0k@g_+gMZtC`}ccV60jf-L(*dW`S8wC)NvW@ zd!x1xp9JjTXOxCIiv%C;)}*TfEVIi5ncJ%kPeO85h$__>%!+*#sIe<4u;3)97Us3M zt+d%%^Y;FhgG^cb-!mRlvs>2P|406!lY;!IOZDMx8(uAQw?28|tapV=&^_C;6qndb zoheXqfpc3#od9a~w)*t@%($qoDgPsxTOle_&QazXS*HI=kM^hq0HP!J0=Qzk?vRW= z0uMP!dcqBj;ZJq)T-8iq?c{M!ktZMaGezB87HP;usKo%l+0yv&t^QlBT_Irj#V%E#WK%^PV_{h^G^4!5q3P1xL zMb&y{>PH5#Y@AWHxa}$rwg}AJc8xH8i}2zquc}{Jt9700MS#z_KgR>+gSM zFZ}J^irtGsL&@Z=QklJM#4B0Vh}zsl&ewI#A*k(<7Po(iN9D9^c{DQENQJ^0qFw9q zLih~VI!vqFr`NLOro?O}r|dbaxo#K7$s<@qT>XNTjU%3YE<2}b)_ib*SIC2tse#7s z(A!ksNsLQ5wxX6cu@g;wu>GlrWRyiG-KO#dEY^5V^Fq`kuN9I-5nNnh4*D*r={5{I zT!TV=}!t>P3Gp_OUrsZFt9Do@hU7h36XO+KyN1~@Zq zjx6CpoZmFnBCm0z7A}^IY&K%i#{%MVq_Pb(@|IR1Rl;Jq#iOWV%de7^3;ij<6K*UT%$TxRrsWW2eFNm&`0`$LrhYX>ZT4!DaP2Y1^sAT7}j5i z>`Yabb!bc4s`E5^HQS{i=ORg{*eIiQhm>H{^rlUIZyadejJ_GiUEe>XGjg)pB}6&x zt0OY=!!*FMzuoZPj`rKb$1}h`F+c72ik3@m^P~57d9*|a>|;7np`R_oXEj-YM^MC5 z^rTxoF;V5}4J>kT+6ad_IO9LS-2*jQh1Q$9>{UQUD`b?(O3jA~VKvd)8+LgZ<|qHXV?!xHMFo+0!*|Il;~4uS|01nR`RnNkGo-L>Z`;8&w_fv2DZLv z(m}N?eRObY#7sa&!7|!0 zw3aG7kz7j#1sVazCJC2mi5SDPZq-FXOv6MycgJ0Dl9FsG=CZi%a{X}S88+8bR2;21 zrM)adi6#zX@x>OQG&ZkOWS7~|Fj$|v&cBgs{#&|I%7!KW#$1XlX@lQ#+W8HW?JNut zD4zusqi7tOZFMy4lKop0GNb~T3{Y=s0ZMpDXxClBoAj2q%%oYLNP!FE{$BMs>e}>A zk`Qx-!7wuQTzRar`I$iQBw#AyR*r?~p8V`3%gSX+-`2Cq_J& zjh4RKP*an5G$`GIR$9ULx5h+OHy{dL-8+>JBQ8f{wck}$x$EGJ*yK8)%9#~fSyNqF zoz+Zer0sq4WXIv86JW^xN44dRu*45$)Y&S|8RB7_h0cZ_L2g1cv0OIreyhY&BK;Zq zEqwH|tS0hrZ}3@>OZ9i84w~bPV1Q)K11J|DLlF;-jvICyj8?!1hUIU{wn6!rjOw1oJa?a z7d>9LksqS@X||w|@U&lH^)Wlzwc0{wD>$+hz;z?qy=E&wR#i}-qalk@Rb+3{3iNSG zw@Osph`5&kAOk{uJOjnYH+TIjU7hz;oiKB4W_%|=`LoUc zp6=?;JpFsT%*8fm0sHJ%b=c!TyojE!>>V*%-+uD(nmzwDt&hvx)%}MbEdCNc;qOJG z|3UNHu;kd0OW?0*eq-c^BjKM|f6u3*bZgiimIwU*jyeb9TU-wBDS;mvaX{k)Lsv)KuUs-9+sKs^fy z7l^{S`BBuN zv1=WQ2(K>N6&tQs?XT5^xaf9LuqX0er(fPc=lB8#dD^nDjQh5{5yYXf@LTDTKXUjNajwKlOfg!6GVZ_q0%^=L~RH#8@9WX}_^ZXIdl}K4t@Z*6N~U;$f-xw|5nZ zPh}>!)ttL1KwsDp{s7*UnezNWM**D`#S!SPZJ?}A3{AP5Yt($@gyhBPiZZ|ZjpF;) z3Z|Rb*@M>}4LD${?i2H$zjN-D?rG=cJ6z?}*8Aw!r-#9(h!s_VDUx|K-)lK|E%QoHmGP4!7o9dPM#S6how!#;z3pkqTJAo^nC@G$aOqng0j=Kkwszm=BI3 zR7ze0d0tXOfE8A-T>gP@hLsPundFb$ICW>i3(E;xh)W>fh8nN437(`G61>@H4~ zgmWBz`@ z$h;Nbz`yxyPL@&4r?(z0&nkPOh=a8P-tJDL#u8d#2et4*8xpQM@2o z-VRdSndC)N1jW3Lc#+;g%X-q8EAL#k^WymCW%1j?-(OsL^S0yU&q4c&E^d(ytOg?H zgu!%;r2D$AS>q&eEcp4DakTEc2~9>pVN2F7=jzLCNmk2NKglxTy@#RY4~pP3z7$ASNXuW<3F;JgkupN#_j_oIJaR=FPoqG%d$7Z z4Po<|?ha zSmqF+dq;HGkQFwlcObzttMm|JlauH{*MSE16%{A3u`yL(9fwqMuv~!2x}6L z@Li(A9xlW;qbZx5l2*N)KX~_hW|iU8uh%WXP17;(mN}wl+Ovt@l#yZUk8WY)KwQ`s?LIwC!@UsQNG#MV zW+^kD4Fp4b=c60dpAH%ki{ciSzIEAkFZq{6l)!y~kBKGnW}o_E^Tl#E?bIAx_HGoD zb!{QDT#DinNA4{t;A~v>GN50lwbh3G+@v^uMF3p{F!7vpb@5+V~~2q$ ztgZ~hZYNCD>~&F7_J_*lQf;1tBAB%P|6=dG!W~-Z6Nn9kA+78Bk%fl4!TEmtNc#hPBcMPr zUk1`ml>7WeYW2O;2C$ApRb5Ru3P5?pEo6cgu`hlIe8n&CRDKyG({o*szY|aIQWG1T z%F6n5{E73>!=HiW+~YdO_uW`W&7SJJ9KV#ea-{(PRnYbz?-v~%60bZtu5ST?wDz&Y zk_}#VJf#k5Y%hgS7x@#Ds0+8_6U(bz&HQtT=%HABHTX`=V-`(NMuCtP+nj7V=XTl- z8($P&tkB4J4%GiyS9uv`e<`?eZ)YGgJWD=c;-vEBG{fxOnWBW5 zc~*~DIvJPk4Ycig=stIX_}x`aS86c5;Hmbl@S&KJx&V5%TvMqas(q;ANmqb>&@H-_ zX(03NYihR+X|%{BAQO*H)3Nt?s65+|U6rE&qDKc)Gs*l{Hku?t@g~~n5O7dqEia-l z3W6qkBa-pq#&GZivYqL$UYIqlN|1G5kbaP7&*b zw$4vw8o@*x*F7DdJ&uYqurHx;pVEat$y4_$NB>UbjGPqR9maUhBvMNCqgVu?Pas1` z9Nyl1XSHeZ#<&35vt73mG6YmTwV)0M=}dblZ>DV|qs|R%$FFk}k|!RX(+w{Q58U_I z%Z$XeJ#2nac;iR&;p@_7$t{a=RbrEH-X2OsBo@Fl_~M_l>$WMH8^sojY|80+uIFCOyaDh>}}BffKNjQt|@-1>{uUz5NF2=KkZjr#LZQ}(E}!(XJX0TSF4 zYP1KpYD`|o6@%J~MHRh6twC2tKx5J+90bK_P_l@cCW1dwh0`v3k`VVgp=PH- z44uK5ulRq);9leY1T6t(6|}x&9vQkK4G4ft@P@zGuR+3;%uv?A8joLqO>lJJ|JS&e zE#UBQH9~NIPmM|XC0hdA1i64j!=UR6rn)}ICL3RXcsypm%nB!j)SaOzFv*kIX0{40 z3+fSNv*yz{o+>h$w`S}iSx_piWZC_&$!gXi1np#m=Bbur>fhPU(+fL8@8&5+PS#2F zU-$n;G`xwDCK@TKc9E-S=Fww}w%U1p{c}{4QwCwGIm>yvKQsT#NB4@WE^cWD38(73 zZ4G2#^50UkwZg;fua+E?DN#Rk>TKa7eRq2dPm~UAK{;$euz^OnyydFl1zt0UR6)yd zKwSX4PO0nK!qLWP`>Cih7XqP5quaS)Am%>m_`vq0vg;j$-IW4aWNB5$o^hg*hJ0X3 z+i7Q|)ADVKBQ)^YOPN?~5hpBktXu;hIt!`hh13ZN*W0TTUR$pp)-~G#NJ*#7l;;gK(#mAO= zYelCQsePRFQmXz=V&?(L6MM!@(!~cU%Q`_$fC1U;S&~sEFUop;IoQ4q zNe(#=Q#Jn#{qq7z=YzrrquGHyG_mg~Rkp+A6gkYDtYfpW1IkoV>AX^;siyKpoif7I zcC%t6eMt1X(>C)bYA(T5P)Z2A)UB6GxPEb?)qlm#)b^2Xv^*jCy!GdDv!_yuqjk(9 zkwFB?zVBNDBXr5zS9LuMb8U$QzycIh2VXaed9&+H=quD`W88>j&0C|hryDLC64N6E z=}nJwBX-_O)wF*v{RX-`uxk^HvE-p^)8GaI4gW4cnU@M~F)9U#aj-Tm5fWZ@;P-jf z1=I92PQZo={AZ+T2D^e%5_Rw|1m*-XeLMNU1=8W#M3b{7{z0Z8`m8ahlEhLR4v6CaFQ$?6yn4v*i9^JTyleiqS|cn{+)1 zDv{VcZBs-0_d7N&P6p0y;|_n~RCTVD&acP%^dDCoO<|PEWcZ|9Gj(uhc`m#>0onNHN+*EMY ziNu2TLC}SKV!=R&T8;FyB6Q}7mq?%5EeuWWlCEFQa)H~Z+|VglX!d&HXAS3EV+?Qm zB#Jfc2qF76ufEfsrjrnx^BsX)jSa7m{mUiEb>9$sx2@Vg#(KX?Hb2ful6Z|J$&F=v zp6d4R7*aeR**9lJY*x~P!M)51=Bw6yz?F@{`1=x>OPN75lQ*&I?Uso4B81|CR=3l5 zda!&_364Zem}MotApg-$e8P&NT5COIBECq~5>iDE^5s^`Z8Q7TWGypwzev3;T1hm8 z>J6eFv7K{lH9SwLSw-Ol+( zlQR2o_AJ2tZGptv5S2U*KD7Jf-O(WZ_{krt3D9YX>6BJdaHD5fu7Sts zA9YKi4`j)bx(y0fLI<#TUMu*G-6N-Mza_ zL3cA5?VJ6S9b!5vym8U}LoRG^<{bj96IQt@s=rRV6S6OvQLkjBC(kL#MJXUUD*2xi z`r0%P{AgFQJ?3WBl~yHf?6Fb&=u+J_?wPb{>sUB7dtYKwnITma$9W~t&kELZPIgP zOwB-UjSQZ3&;=}XJjP!nR<9&-UY<%uISmwdWBZiGLf(<|#Qf@W?)#pZmVq;WjagN)nzIS1W{Jj=b3E0J8 zOw17NXDs4IU*W8Pu6hA^=Ld2hC_|w@h$K5?3-$TZ|GtkMD%odiz?T*#pk|9ojZI-#!NTyBq+%1L030{AZ`m-Jgq%KD}1qSt?QM<2J8RXk+T06Mk*MHYvwy5(?P#C zK?f5Fw0)7{*@*V_KPz|_k1E*>M#-Qp+Vl5>gPfn}#1Zm8C_80eq|!*Z7i+8~&`)AY zQh!VM4VMl&pA%E|n`?^=xR5w98oCCZLFN4cAlHz#TcAxN^46NDb3i}4?dJw8jwE7G z)9m)Uzi_~HgLI=`B;LnrTiRia1s5@Y33OyABXQ8#zYQs-MG^xc8s@I$qfYedboq80A3q_Yp0*NuLjc;X~dw_W?H-@}R_@cCiKt&G)<=hCNN*9dx=)!w#^)yS;nHn0s zyIqWoSM@JKr^BaS6f99r4{WQJu!NZWclH9^NKuKkR%8ysV@-t+Y<0-fxhGfVXKUQV znJ-ciq6Ji9VmW@HZNHCY?0s|3L{kaWyYMO`f>8f1+f1<@@S!Oz(6n-Ut{SRCTrR4s z1G6}ec@LHqAke8_*t`a;3*c!7Sc#bO9WYQ}^)1>gNS#Qi3!;ULPs+PUDfIM=2+!vn z|1LlbxKO5k)NTvU4*&y(6b4`^EuMNY73XgwE%|=;Qwjr#o8YwXfMH@Wc_p&Unet$F z5Y8LeIqid7GyR?3rq*%H5sKS14-*oq9$(D%~<3gdKi z3z-W>3YWeHj@|YJf;%<5qZ*)KW_eBXa&D3P)Okt?-|0cO?tQW^xLVBj4BrxaBg5Bw zjm0Ak?{O4QTumije7Z15OkMC_Y7y@odiJ zHKcK%?KiMTUn`~mS>J2_qcM;Zb0-C=&|=XoVImfa<}2L&sues88bOUvyn}nWCBa0j zqR9N|&)4cl$XrH_c6l2meCe{|8$N6cpcKsP5=fyweg~B4$noVqH{p~8RI$nI3@!yr zCxMY!*)O;?Q11c!p~=W4;cMVJo5KelzQ+B*;CepQe98xNqjXT=5T7&UJ;n?BmlxX! z{cW_Ql3Bb-ruc+U10>D-RU~l-Et~YamD`(-s2hRcxaw$Y$rVCQ27)N00ei}1ECUEt zJEv@0`+gJK#)z1ufP98$&@?$HtCr9v;VS>aJ==@PWU}h0-w_!JWhPVal~&;LnFd%B zuqS(hXApArJ%gw;nzz&A7R1{%_s|+lXWOM)dU7(UBvU1JYvaopf#+SHmUm{TE>&(r z*r$wNa@=E<96Hl-z8lo32_hE6AKx87DLL`1C-neP7iQ6+RX4_aE9=wko#X#$QI1gN z8iQTVoJbEmgjGRLMG|?|#|gn>>T^4qOR18Fh~OAc#UO|02`*mAHA@icKKCPWy*`_f z{x`A;Gw-Sw=|iF%qxAA4WCZ$_y8b!ww>B^rm%hfj%Azh1%b6@Sv)8C9Jv2_#XgX+# zOp)(Q9w^LGB?KrGW=iMlke^bAL=P?Kcq8qW^`-8}U_wZrL4dogmDFls(8+FZRE*~d zFzxX(cy=0?S_HEks=H!Ng8??{_nJ#JUxVrm;A1Ti^|$7>0i$MTX*20nIvCX6AfJzi z&OqxH#Hgi%%En+x-|N3G=lGFu?ok2mbu`eW>!v}LqjS{aa+OZ=qfX(NTDF1r?BjC; zZ?y7%Jr#KOO$2q7#=#z@;q?ejsR)P36yio)@PzA=^kh@jLrMyh{pYkNR(UU7W!;E8 z({yLhut1RtvNpS<6sld~ySCyVpJbAjRO@!5K56QQme#^_VBW;P>|Ic0A@{VM36)qT ztZ4T|9OsIhe6A+GL0ZAf*P%YiEPi8-wA0|N@h~AzR5O@iltO8Xq?(?gnRjVLQ9tKV zWv|c>4dh10_Z9T(O$PHj!MAOR8?c-+ppKXx3)<;sM0s0|3)DQc9?Kf(!>&h{DWBeC zQN3J6qL*P}-q^-lL<)6LTF3snah~~&dBl9OjdGkWGC!+A5(2aB59wPtbWc3*j#~BW zel`fsWIXrp*;N)zHmx(+5e!+6anvz)LaMAK;elRXh(hNn;{iuRBJ$be6|Z>iS@ugV zf=PU;eX&97<&F#kjVzw&$k7ao%DHTrS#KVLzBOw+K$${)y`Bc+mcY;6kf0oP{hbxr zc`yOGU>iX4E?7q+=zTH4_5f=J6>q@Yn1o~w+GoUI*TyXY^6=ko0237D2mei!lcE0L zNWsrlq8!?U^CvVmlR~VoR3MQBkEzXwT6*=nmT`y>#2w75I(F`l8RF)cgw0cMl!EAw zj~Hq@7iTQYoMSgDYI}w9m0gFG@QCF^@8Q@87SioL-X5OS>wxrhTveGa^e{NivcnCB zWbA?yBWOR&tLei7%6$)NkzdKBF!^aDlP)51Em|2}D(jS{OVu0dEOtG#H2T}!*J~7e zDG%tcv;w6=OolYcG{WtgMJ`~=s@5tB+{vkd7&SdPGb@>8Z(!HT3xmN1v%phZ!mXv{ zW_KpSxb8&6O5$r{j=?Ee*|^<`oeH}gF4D2j7k9v9VazHd74Yqg#N8rHcV_rzOE9f} zytUMX?M%p*bXlRIET2(LvZXptS!K-J>fsQrzX1?K{BL**YoZuy#Ze3BD`!ssE_F+> z?&Xbci^X%t7`vYxS&&bI8XF4~;Rg}nvmCBv92%_SVSMbk?LUOeQt;i@I zrs$$7N~Q(N8Z(hDe&Ot9Y{k9^?ld$XVb>EtY8ebKi+h`l#I3qSh#qAdP4E@Q?n!+> zt;K^%=I@IPy=Skyt~?fng>FeaMhqYGiSiyd`tP_!-Ei<=9J-xOs8h1yn5XTUF&;XpCb)A6Vz1%GY3$MMCS+S$c=AM&;Rv;g1MD^;YKT4CbFE#iG zk3!a2qnBp({!YEQxANvV>($d|n=cM;x|qlpUsTiWr5QP2P}ldoE8n@tC`FoDAYWF_ zf+mBB!=_({o^>yCa~dW&F^f;^6MP^&IP|9=!T~|2Yj!;tju;t zEg9sa^WBYwGb}soy=0fm8tIlGNWiHw?De&rU$^lJqKC?X2BA8TI4<9r0Np#_^n?{1 zpz~3OWOHG-qap=xT}do> z=tSI>9O|?4sxfXIih0RiNax0{2Qfgs5w3Hi^EwdpGbV>r$r75Xu$nJ>ci^>G3E}w( zg-fuga(8lbf>E$-&qO6!G%sT zCCd(T-%E#Nyi>bKgAm)GpL?!B9!c-eIWkHGFFHoHNA0GFPqbYx!X?$%#O zs&LwR;tdMrI@L@xZW}qD{3d&&y#n+NUa@dFUvV)onGE7pw(@YIB38KwNb!X08el;2GK<*pT>&va`Dca?8@E}B>PWN z3Od#)ul?mVC0;Oc6`w&`wiELmWqsi>tv}k2!BpZc$JJlz*zB4mi?UFSqX1O23~XWC zms`m(ipf_Xv2~)*03wwm31=&alGAS6%J6@S@-Gl5Cdc(-@bo}dx2Z!2o$C)%BHhWb zmxOseMeI#}?Q&)8fj>$4v}jC38N$S`xYA%`KzUlzuY@y{_ZbQK<~;g#yy{}wsM zd$VEQmf94BGXE?TcpZvX!Hxx`XXQ=YdTZml)s$i){0H1)Rc7Rs5uC9pVwzs3Opg=r z^YYw4#oUS?J+1H8Np*?}?%$5DXl_MI3x^`-37^MA@ZHzoyCSV7snsHUD%emusNafs zW7Eyxj`76QE}a`hQ>J}7{YKXAV*$ZQnKZ3*H{xeWi!0x~#s#_1>x}*3FLjgA{c)Po zZ{$|*=KnGv*x4I@U=?)h+aAZ|_|K|x=O{Mgq(;L(BS{8*Ykk2G`R><}S90^#8w(Z9 zyn`T9=T}_KB}xr>M@yYhLKmMZOquk5SLi_Ld0*2kQ2;W#bia9XN|(GadLTl|ZDcG` zHwWb~<@+{@YLcZBxvDakI_{r&cY4Wi=jlZix#_^c)tzeMvZ9!{Ron6X0oBfRdiZ$% z9HON&lRP94HCr?@@q-OPYlKMjlSg8N>u<%)d;|h@wX8SV$W_E zPq|(&kgNY0kcM_J#{X>Vn(T}g61huQr`XA;SG*IHC8o5yw3d-nq{_wR@5l7)=zr43 zf4eevQ`Qlx>r)#O+2cQZlsI`T1ajV?XRh9PWEzoTpBsnOafVT1Rb&*MtE^tB7XF%9 zaxaH1%9QPNv-~|&6g6F-^;B;EbWGoBy3LizK`|;q)^Rs>x@G-?ReEjjnc^p|4C4B2 z`I+0u8CMz2bpSU|BlOP}*9>lLJ6fv4IvpP3+KU%dY8ZSgN-yQOCgkwHw@dU z59oDWg!j3nN^V3-eoE<5Y^+*yOC8?c5;>>tME1Hw)0t~Iv#Z^j@7C;n8dqs8`+Yie z>`R2Fx6*A9*R%j&W^eEFz|1Z2;Nr2&qWJ4Ywn4ITQ14+6n!b;)jr3&l)vq0&*j3&s zVtB8iy7$p+}?JF)Px zM}$+BI~8~Xv!M63o{z0piQ`H(i7HnW+dkv^Sjo?*gpN?^1-$w6&cq9qqvq&W_D9w6 z#vW}bDy4}XKz`Wu;S}W7 z!~=*3W&wg3S$YA-(_dnrDbj!+O(mv5*7PvXh_|p((?H%S3*Ii(PWPe#hi@!tEi#d7 zMXYTHtk%civ-ARcikE>adH&{Zr*$P$sIBE&Z}zR8%mvzQpNN~f*U}wU@blJLZ}%aN z#VNTzcMYBMBsg-Rt0>0oyL?-jTav$U!4as52`p|cQA|P?AXvA+xZ`QZoyhVq(r03u z(jgb4r3M|RY(4dz&7Koi!eat)-;r;y6BUcA21B~a6EjUa1kON4o#>a-VvuA8%v*PR zmjxo+ywrD}DRe6gR-g0EopThbwg;0HE#}#VMLOLk^W~l`sp&9$Tuameu|u7j&T*Lw z>vMFXwQ0idI1))K>P?S^c0p#DXN6rMaxlnkw}Vfw6(K~yB_dai@X)!!q};heuU#e{ zCRqd1T&b)tQmWuo;HF_a;j4a$xYvIP%*fU3W}ON-_o4EFYTCEdGJmbx*P2lnS)Vk* zJXPEmaA`yG2E|e5lGQg5iBB-)mr*kC@@z!_`gA7>gX@XeU`HwE(F$yM7yCS(jekoY zoY82;Na84m<{5Y5`GW8Pa-jhAK2)M0P-@&pjuu`MIt?vI%-Zd8iS?_iYP%gH&2G|1 zwtcrW${!|WFyab7$ks&J6?Ew+&pBJAbfDgR&mx=+B`1k6=ezq&GD^sGWW8a zZy!`Bi*LwUq^8X?ty;E6AEKMg?kvI`Jy(A_n5XT3X=96pbDTaV)uVA`ua@K})OpHGr0LLbZhuHP5c&+IlYZF%=l*jkmmk%U2JlEWWO&&OF+p z^~zI7H(C}(DaMzeR-zX*A7~AZdM#g7?b_+SRO_l+Ox%GfH>-5fY9Vg<^3UJrmA#^3 zKYORt?w|!9N-~_1YCE0PA#cL!P7X^W(<&UUdr>}Fu?pI@$R?J25-GPZ- z)N^7tM$yikBi5IGE(puj(3o8oVipn2e*CPQ|0f6Rv)hm$RX9`2{B8LRquAp z+94|*cAKlZuw8aI=K#=8&R1Mg;WgYcKhr9vh@g$o_3TS%1UJS|*&Yvs(YM1JZ-rHY( zq_Ic50DOFXZ!s0QOW!#wKnhCHaW636Z&?367&e_oi>ot-y!I-%`xvBvx@57G9OI>vI?(R zne(D9;I;am_j`+i&pywHe|fzOJPyM?lA$;6a;DtA&Wb9{)9CgI)(C^=g#GOO$>|5C zf!?>ICR3jWP&Hel1S9_pkO~_$vq~@sU0*2Fwdy}$axKSq%dvPa`EPUaRIO1SpUelPh+HUBy35eQ5q67R_^O?D7+Y@GYBLj)NHrG@@3e@Z%Wt2i$%L6^acVN8U@fAP& zkL7O0-%k!mzJ~BZQeq4YP;X7oLQ}TvgRm?fbm%=27L^uFq}v!4`$Y}1*LJrCu_m17*$iKdmoisU{uwF%jE?AT30 zCh+*F4%8#He#cIKQm66UJs(D<*M$cQh0i!GK23xOG>s%14cT1UK z<9wWD0;ae8snx!Xlh(UO9phOsm*gc=ls7|qpyNt3zhXgHvoCB_bAX zw|#C%eV9h7hGTrXzV%yai6nEkm~32*7EMck1yvGpow(^~UJr;3JO7*Xjk@~O*DnIU{u8zVz4>X1TdsYsy#O^gwZ^TUUU1z^ z{$*s7yN(t)qWQbrrD-+mE3r!%)KBIc^ib5q08$@SBPR(2!ue+`^6siGmdP%`1h;Xc z#4*ZWz=$LqeQD%KFd~yWV&pJE?r03#n7=qj`OHB&24|d=pe%v!JR*;RIE-RC9u<+{ zSz!p>jpO{N3ah4BDosZPsUM#7*^u|3+6U40R=o>ee09Zt$9HL!G1xa0r>b#1y%O|( ze@-!?JajouygrsZX?{*#e(O~fJHzeN<vU>ub;>p*k-vo&I>`;khSa_)kHH7#B?19a;}9X;ihT2S-bT5f@56MUY$*+d@KuAmjvMY<@Kq$r_P|( z#D`;WZ*5$_hP=S5x?F;1rE{Q4us%k<)7MzIixILQamxfAyQF-PQb0n)cqigB2N~gW z_=;S4F+)H}nHL|yy;P*M(>YF8L2lzjdN8D9mzp8p%@|Z6TgiR6@GU(a7TSi214Y2b zK9W6JtGWNUzO`xUeCpz_*{ETO%ickJEAiI%JlSVgE%hu@S)?Ui!h=h=7{ z>PMw6EqBZ(D&9ZeY?^#Uftx!`c}(~sRSFH~lMVvZ9g1-Uq0I?&@4V7=YMv~=WK^@) zXEc`vuTk&#ZU)i)(*rxyi?Fr$N!?xhVTW9z2*D=I-M)qzB`&I#s%m8^)y_ScY2V8_ zJ4ZQsg3Q$nb&aJ%E)Yex^o4JyH5lu?XKEXrCql!X9jH3}f$R5Ezujes6;S&4-AAsb z6oB>^ygOFkmoJrJaguE9D3vcIfnE?=ZR&u`*poVs9U$yq1pZHpV8vG{#>RiC=cgQn z9t{v;Nl)04wSgJh5SCm;{}{4U(ejBEAr&2~4i@htzuBEH@pkyjGw^t(-*^ z_av$SrPU5cnm=UVDs$qu>)3|{PEX2hgL9-oW9u_}C{yrB;p0?k1-qFtq*E&E*-^== zn!&}IDM_}@hPUzVnDVh5?_o1BJSfCsI!K2zim;LIClmXYf+sdPA8sHF| zgWzAJ_D%DTwx`)#AS<693@pc1RMQnTESQ>g!S9MrXl$H7)|Y`K%O|Ex)97;hJPVov zU2E3N5b~zD*8m%ttNTUj3$cGTuzK0=0<0V60yZW)bz!k(DTU?jk9d` z+}{)axH%4kc)GZ#z}1Vh#-xvp8h$^n?ocrr{zIf}cTG`XHfwbnav z4W?)5Iabo`Wv(^q1TgPGgPe#kvPz!=qpSqNL&w4(hk%p#7kqL7zg>D$dp|ZeI4{HM z-ZAGziy5||RH$U5eKBx=dB-|;C(VS z5T!uuxxpm}-ZLUZ`*`71yXb7){t)wyUFp<`Ni%Ee%~Gat+yB6(zhQwjl(?MuqTU>x z}nWgjRT`$Ev7jDK(_~GGtxe1H{k+i;iu0Seq7SxJAST+QL*3ALL>} zqfn2y5WRt5a1C6y13xEfso|OS{Le15;sv+m=gT`ki9c|o)#Jg zGRAe|#aRcmJBlZBd_8*{4~k$7tNTz-YCPsZN@bUl><=G!Xc*TRX(x-i(Up!ZN{EZc zv*9IF@=k2uMT=AdCQA`wiMd9{QIQjNHN)X!yph(TW3R}sWUq`K2++(h^)8=Wha4Y2 zZ(jWl0jPZQxiFlDbT`PKom9`TB(1vBchHW*U=mpOUJA>8S3TtP^ zbB=Y^rWjtu(}aXJx&u*iO^&`pzqUD-Vq;+F`RMP3(Nc}}A*P~1@L@zZY` zuf!Z?*KGm48N=McH}D(TvTpv3`mQ>YqNEo#&0txTOq$SqP<})f z+dmz?Uc69r3K;nWE0TUAQLGi--)bjuaglYu7({YphJsG+3N`1d0*z6wa@%ah4WZD> z$6++kX1-VV@~_(hII&P5Ha3En>Mgt2yF@~af$g==j`s(Emg8XQ%?ndslt+=Qc2Gn) zxw0E(kE*8Wys)+k>cIanBy)=zH?BdZXy5#XcE`1nm6#ACYgyA`qzIPa)pnSzEl3v6 zu&tyNbY=;LVC7PYl!jBaHuk4ph#SqGY0z5hz1*$YF2pbeX~s?7I}iGqwyIa%+okap zjAW>Hc?i;1iEQu5G>=C52GGtKMD8{$_m;hdqgpfMyyauCLssY*&Df^4ByzO=BO`|YNoy>NU0)zNS@Fu_*Qs%3qL<(t9(iO?kKra?u2?O5S!DK5ovPX_BUdH4yoFgp zZ?qaay^va$Tk%IpnVbD*B@k4iZYlmIISF@4Fw#O0`f|fnEdZRPKhpw~g2wNSh ziUUO&&dMZypARyrqP<`SfW2T0ir3!FcM#=HD&c=`7qun+yc{7Wp38nfI*z0qxX@C) zyb+5KmW1IOh9pfXSl78|FrLM3(&gOK7VM%o&Pr^~eZ-i1e{k{5LFQ_Ry`XoO*JJVp zSMFWfn58TFG+(IO7DM_%HQDiB!n$E?Jf$ud7ZW2W9f z5(Pz`wX=wh86;9Wtd+|ByaXXTt{;-LBd(6z%!mjJ6AlRVI*&qoGvIft~EAp`4o-|WbW7~!L*>vM>T@yej%P5EO z)qGk=JD8?Gi~dp~Eh=}+wXzC6=;;;?@IxLM@6} zL@<9eCOJXiiGnJ0nAS6(tXG8Sb{HNkLJP8;HE-x70LC^vs&{<_Ul~MbZ;2Zv{RpIS zxa%O-)kyk1h$6e9PI9o7+m9o=P{q7junfudqtFDiU$H3;bCJ468;SWM^`a1vn_z8* z5KoI*i7(#0Crrw;w%ty4<^5TkbV4J@CA4u)Z}p=;f%JC!zPTgTYCh_kgekz_47YHV z%Zab?avaL(O-q2oAMMp>aPd1ISTJuDAU83llw;s8{esUS+FU`oZ=ep^mEp9v&Pt{Q zimhhS8})3%(nl!mL2=c|w7Eok2is*KZWx>4f0%e=6YPlpFroDU%sg!w-P^}?P^Mm! z$gL?KABk-NP@g)6#8}*km><{AH$rntfNS>J{`pwAe-=BlujJgFK@eVKzu{38Jd#2PUn zCkMHLX8&n)&T|T7LR^-37MgeA7p@J@qF$FI_T{l~m*M55+(=_&;NX0^&?hEx z3PF7@t^!fbjf9OE$yCRBd}4`570F{GKEo8ZM~NcSXO~K5E)2UaD0}HfGHfL`;EdJl z_$?cZYe&rF0XE8eKztp8nx4es%54FZv2Vc>$pm9yZ8-vSWNF|ORvhhNY8klf(Dn>^ zJ|Zc9=b;-Oy$KeRYOhZkL4RFI1aUOOk1=2a35N`vCizJ!e~Nrme6gJ?JyxbrWFGfo z#e&`)I%$zRnVq`fCwFpdT6<$!d!3Kcp_3W_>Zu@nEwmGZ?-MJq;IaOD%rbG!HfYiV z;4@2@I$ZXWzIu&npAtYm?K8hiGPRtDhy@R)WImOQ2+FLwHnp|dJm&3YhnD!C@7o8% z$P;`4Ce#_;cT>irx<`Lk>khqg*=`Ku?~Q-FY=^CpJ3j33j75DD;}gly*zbj26;(M( z6(Xv#`w%x-)~7fAQ9kq`)z)zaxx{jK(i_BWRf6tJ@n7Q<)+gb8u=Q9{4a;JV4cIKe zO9fyx7;TZJ9w9P(OT;s&uAYo zcpBF)oVs1{L=w&dJjK3UIdE;$SHa_hAsJZEph*QQd`p@9JrO-+610rmGmljU%OVdi zBx;o)10T~jiz|k?+Hx0_3JkX9`PD$FOmkKYzy3#kL*hh6psB6#UH%8M+{poqYhR3? zQ6veZ6C|POnPU6sn3owiJPUQ4{5w7Sp@z`jSNJ&qVHu;-Q{;I2-!4n26i8+(a~g_+Z_*^fIm6B7N?GW_qB1#jN>e`Ocn@lbMrT`T?xEIGSx4L4yH zA?8cykeei)N;Oy}bfn{nz8_ljUjMpbsjSA*C!AA@eAA+;#w%AXLcfK)Oziywbm|-` z)^3cs90lg9_6~Dx6JLON`ehFrRx^PD5jrL+`a`uGe#AsjhdiE4D=ZKmhUA~Sueym- z9_CV7DSD!gO>JxQTs|sC+x1<{Iv>D?0w?62k$4xoV?lje9L@NH-Q2{~_GJeaJi&Wt z4brWoWbgWz4P1P|svsJp&Epo3{^rZAjBGX% zX{6D7g(P>O2+>&=&^0)xJ0D3!nv?nh^uW1u7c~rs{W~xezoA%ubZipVk-lJ8UO&Gc z11ufiRA)s8L!rt^Q`8U491SjV_P6qE6ndS~+N#_+%d(7V0@)h2}WqHTzLibKT@>%?yAtnkHCRhs!PDy;g&3~6ClCgcS2qXU0-ki*k!Ohd%f5igm4?x8E}Jit11 z45yOhw=}w==47TtqdwPlkK6E*wTw1Bfm^r{(kj*9_zT=e&~a#+2Rk23OX@jPFl+Y5 z7pZaNf822WAKlPDaRp3rj)GYG4s@*phzP|!Pe7vw=_vN2!5PxIC9YZrVX65UkC4oe zr5qscIMlKdZv+>`$4uH=_3}b;v?AaAFr9tNTYD+)4?5YOm037q}{<{IPo>Ee*O_ip(9DDdP+U1zML6he8Wd76KB1+}(>0*&)OxeeyI zEAwG~ahG5M`ct;T%$fOxZ7GoGy@h(QLYcDx-HiXQA=mud2mPmm2a~0rur2>SX5vnr zKsmRJP&L9G$lE#;o9tY9<4j%D7+8hB3uySCe0IyfP0YV8?7zO`B6l)e>;krn*dl+C z%BTEK{+PA@HY+&45!`>W5dZqV|JX=h7vj7af5rLuO7np3_qyEV9Esw|+-hJ$-V&K~Hqf8~(x&T%3pHBLJ_r`x6 zC^#|y^2VktwsE$(_n}xwMEH(nNFLoDIU{ZSmubdX>T49l4FfiEVlpB7~l^?oazd0Wqq}DxeY<|obaZ_$h9}&4Q$@otEt}WTYAq=Ky z>A5;N6x?MC?I1W`1t)B7)fOvAGuc$m%vW@ij({6np+zD#9VZ-Yb~U3oPLRYq-AaC7 zFK3bDye?{z5dbgm8J37_G=Fn(Nm);ARxLwH#^AFmna5iD9&U6-z1CD(*4gbuQ9Ua&BZ% zjcl`A9OJoM3;1+nif-Zq%nJSm6jy({k#32qLgd8N9XU%@E=e_p+<9(iM zU+?9wB@t`gS?j*<@Aq>u-hY}KUYrM)_~hO=@SD%DDXlxwE|+h)(S7WPD2AVD(yw{O zqu2Ug|0>fpH`qGVbx-it!<$nQT)%cF*)n+RE%&}2bV|PvGk1fa{D|NOL+TBisxFzD zIAgi`EQ(o9BHXwXCO)qkZR3y0)>sn@mo?w7Erij-(w>C%Ut9=SHaEGg2m6%W*yE|j z>WvJhMSowdea=?@E3aLOHUgLy4{^S5)!XYd-=Z=(!P-zqHt#WQeCZXclhL0$`dg2L_M5M*VsS&a2uNg)$Wkel&=qKgr~j zV%sl9MW*JS+;hCCNqp==`9nL(1H6t9Xju#2U89B8A3VO2#t(ZKbIi!fb!OGRyW(PT zoBZ_LvJ2%@?$_{d-W~X2fWf`%0^yMQ^VyAAF<#sn+ zY5-6uH9H_8Xu3+V+)axQEx+ebZ3) zQ5{dhI`~p%xrm#7(9?yIvu^&2QtQr?>uk_8M?a|OI%_TyzBK$ z0_VElezCvY#@FZVi-)CiGdI7pqhz;zW(V3IJmZw3@RRFxjQSz0k~$e6Bgya6+} zCviJ{j?go%?-0K84G1m%Mc3X@Y!|xFa`cD7Jrrw82~<0Q(xTooeftn!U-oOa_{urz zTF)u%%BI{0L*+MA`W1F=zB9JHo`^m6IbL4rTEsc<{!=+$GWttG(r`QKN=2Be`sYih zsjkTJ-hUS&Kj-d~@T7m1sp*+Gg)6CtZ|#ryQTSfyn|t6~n6c@3qW|Ha6a+p{XX86{ zCD;`gM!^y*n0p*vb_5N5k(hUb-J;uo-meO9K3&Y2@Ye%{sKZX+A6P@|h1v6EPswQ2 z(~R)AotGIhSeK)?FSBXONYb7?SvK94qZ{nkd&4$z zAj7=4|8{G`v15z=uBoIpWUi;hAmW36(ZTHb6M%db4`-}S>@9>1)D&4@VX2ZdPd*fV_Ts6XHF(5JPwT=Jmqtk_($Ci2ftXdT zK;PwAK(L)7QJ?o&8mxxJ)mm`&L%i4^CqEqi6{b(KFw>D$wUUl36q$?=vt+m$g{zUD z-{VZoX<~*ha_rtdM9~D@E4|1>H^{uKhE4ma*jbw^Gk*wcb;F4_)U%>N1ie~ex#%cT zwvS>NXNG;A8o1;V>7Qi#^SH$`9J+z15*cr*q{ZthVUwClVLE9PPx@X0@eHf`eF^BR zXU3f%)Lnj$FJ(=>TvAU_zc{)P{RUI(=3FdTdvEt|01;=3DL|MDh*zI2yM!YG4eg~5 ztZc`kxK?Gxy`I4-d#g3;hjRM3BcO)RD{hkM?949Mtrb$M5|iC+MSr%E&XFd(OSh^v z3iOK}?}Yl2c1!`7C3~qtoOz9 zJ(O{kUkMl>-S-0{3pxF_g1Vx+Bt`mc?~UMORSbr{?6OXiPvzJz+u(;+l7x^p_h+Jd zlvP;SBfvPoc~e;K>FZzO&4%vxvD9v$UYk>QDqNW$+Yf}GOxU)z68el8j-V zlHz2(KeF?_(WS*d-Z@v!uiTvN?DjWh#=MCc_xKU7JE$tna z8uuo0;#R1uuT8HXR7}VKD5DEIKrs3BKEtAJ-PW&|p!OM}Q`k>fN~2~&YF@WAs1WE; zU4uNQ9$&09%&BJ^&(p=k)Rb0|PuV=tk=Y?hRVHsD;iH{G7O-UU#unWi(ZfDaViqj8 z$RXshz%umY%kry@8Euo^MrbkPszlCOZ9g$ii0>g5Jq65=oRrkciaIK=f^$p-KXO|^9Y!L6;}6nMM4m|iOE8iv(U{%^oVW+twZ=T z4jam`@5>>)i}sQKLLHv*^@7)`Kd{FZ)wqrYwz`vXWDqA}wbfdA`+&gwN$hsfidU!V zc`Ig}GYmsFXPhH=^Wm#nGZ<6?qT^@}ocMRx%nv1Y`|0_Q5s3GFT7S z5CE}@iHzF*^dwWen}3Y9Ur(Rp<5^&G1#HT)NtwD0#JS#Gb}0|)sNlF?3o+1DHya#? zVnZSk!fX9yFX%F`P+3QTnJK65h&Y|&(MCG{R?pmim13sC7LLJ(dAdoxD)fIGGb`P* zre1KcJ|d1wR(FpI6;O&Qa3DqPct)uTQZ8xeNPk#D1Sjk162M|x+~YLEz3rSHau3C? zIJo!pumfMaj+D388tUI>bttAiQ&y1A^IpFy^SH}cgS7#+M!!k)I zYP~nx>k?8*F>g8wg5@Y;0b_uo`9#9?z#>6{SeCvtcUP3S8+Aa;m3wv?oACfMj^DFn z-^~dCDp!jdgf8nGk5tfZYc>XGy6F`R2cy5Vj6S3!EW?Yez1N60qD2u$@2Z2TYQAf# zIaA%CK-AV8?EFBu7DmlHa%Oy1;ft-~4CBb0`GKq_*|yjv<~XHrU}Sr*b@Om146SQ7 zP-beoNt1zyIBBr*UJB_bsFK+|9?b!oGyzsGlqXcx&H~D#5ud8!O`q8|_s<&Qu+5!e zTJt{@?ZAfdH#w9B4jwCa)>hU?Ase%_%VOz+*bQQ}kt@*72U#(%xedu!mJj^E*Yvx^ zaaz#VG9M@~U(|1BTK|9~FS&RVr341hxFx#}tLl2u$9<7Tw+!l|2VD7x?;lv!&$0`H z()nZ2QxnThS3yzTi~CNt+gs(En6qXUV)@|fgFBVZkU5<= z&f9Wi6QfEI(r&cLFnPaFDyQ95K+AMcj9PY4E!{gy=#gVNB3B4#OUkxeq^CI~+!Pzb zESH6lnp`kD;~l&2h*&1szwE^_%T}`0Jr;LQ^fH3G7RdosB&aXtV3ORAdjb2n`f*YQ z(MgJIX+0iKl?QESUUESe12~Zl0uj9EGy^oLnZ>NwR=?N;;PR6R`Tx6L$Owk4Dh65RYO zFN)ZoTy2ZvqG)&3{VNHCKiW4rx-@kpx z+_n9%YtpfW{Y0=#AKb@#YChi{JRGr-4yGE#cZ93aXi(+v-E;@P%BP%7*h2#rG{>MT zd0vZ)2>Dnqo!}f9CC)+_vn)+RXyBFfLGmL7sO9*N_zUz7n)olRBCe#F=(;^6VtI6z6Sd9rgw|kxBQkot962 zwb_R=tW6`oim`frn(=y|H+4dYa>_weB5Zzv9=Peu?Q!CnKBA>0#Yb^IgFbc*Uix;y zt-d07U$1nFqnoWX3_-6QF-CUV>G3hYZg^|&VNWKxAD}L&o9)g9n?U^3ZCJ=(TCt;Z zi5i!E{-1vtzv-&yL3Md5p}+$`Z@g)Mwf9>afl<_@2P(Bl*a0$l2c(Z)KZYxFNVH#6gdv%u#+NYgfm zC7Gx*IjMHihKi7^+Le0zaCvgZ`<+*v-`_~|5!1G36zZ4%mGSrg@H)3N63qY0;{zJx~i&FKDcC%l*fjyEAqfEx6udAo44^DX|It zIY%;c^U@yUPsfalzJHwkB+et)Sbyc!PLJZV*1~`EDu6WEv>Ks zAx5+!BhNTONC&z3Zm2&Ez^`G;iMi3`*Mqb3>`Qw0{Il-ZTwIQemSMm&^>R|)^BdIo zwNkFFO`N!Ht0r}44!)*)+;GhX;+NszOBoFIOZsi{buaWwyWZ&V4|Xf2fF3G$HEfWy z6>E-@Gb;#A4L-3mKdw7fIp38H230zFdcI=!c*oV;h~_PZU!t)0T`-uRtJ=>^r96jq zT1BQFo97*W`^7SRFc~bjx2jf)u+l>%BLCmkrtQC(j6>pHzbq{eDDh2#M&iWfS(~<; z^{A;YHCEqd&2(goc&x$E|;^rM-@?QXEmk?3;;Sn26U@!G5ke z349W6B1!MJL)y7}$BOrq0GoR|{+QQ60<_VDd%sRSNaRUSuw)y%$ek!_1HQki(!S&( zc~@~_p}bcpo*4KCGXJ>f$~)WLTaGO!B{3yI@!G3Leed}0HEFuxdSueL>-H`w5VP|+ zDw(vD^hsmAeXKW^VtYDqbI`l*G0`IsQ{4)CJsc1xnXKIoj z;oR|ys+0RqdBHmt)K;o=j8J(R{5r-vT03ppA|t8g&{yHUzQ4pfUak4V5ke$()4ouq zoeP>*&{!UQ#;bH#yy2P-H00t@$%38zA(c?u8|u6xFvRjcB71i4Iv?mX*=6pvZ#x|< zvqkH^zKr=~ufCoX-$9#bc!PpkUd=Q&v@3tq@*zQX-0>eLe|dlDJD8ppIR3Z=O=1gJ zhBai9OxljUSjudJc$|B&q@OrfwR88P=9cUqkIfAjXZM>%Wp^OsOtL%sak&|&sC6;j zDg1i;p_b;Of*W-&Uv4q;7NHD2pwn7F}z2JdWda`gWbL%Virpk%DmDPr-x@~=Zn;S zW-c-hx5+SJrLDoOXixIj0|F8Dc7W4n3?(MX=kpZEf_H*{;;q4?-(2)nN-X0~BORYL zT|2h;%gx^Cg30+3_t=KMkdR)%=H4~RX)T*2+ejxWWZ_++AP3$+h|Y0_ctq#r9dbOO z?)+(&rl^-X)%yixH^}>KJ$emhWb^ITe>ea<>`O%T*jf16?6T7DAs*s_rW!e{N(N{r zm7f-bxNax3!>Ua&vn(-h_eRc8$c4SI?ri`&d#-i}!PJOctQdmyB{ZpiOqwv!^3z_t zeK@Dx`aJxb5`}>ChhGnADxS8S9>=WiLtt=$?^WjP1shtAXBhA8uj)NLUZ-%0P-)F> z`&{P->veLsP(gsXxIi0W9QPys`L$e{4qKOG;qv^Dh?Pgk*$W5cM(7iBcRN-SkNxn? zb7UK7?~n@5^2?fI4Hh9~G|UHStEUs*4*9iG18|f|kVg!g?cBd=eV(Mpx$n%(zqXpB zuf;~Ln|DUby@=~`OBz(=lB4t!i#CFKC}Xu%R#9?X70mm=mAYhnRe|*5Mn)krllG^m z9hktbv*MUSA_~k_(S1H_lZ@2-VQBu5ZYdwhW?Na{`GJ60ANk;lowU9JiO(b1*9?@c zJ;2Cbi-icC-J*Tq3bwAAw4!kbnx1!LE>9zR5~OY?+lG>);%NO;4!If7Gz&;3qvA zK98|Z>-G^UF(ouMP;tE|W71L9xWAG4U!E^j4Y>^n!uOOF?<0_jHRG zyE`N?z-37vz0y=gN@`hE2Po^~TVnj9Zizb1iBecTXge}Tdudiso~B#HI{O&D zD|`PIf86Lupf3M#e9p4j7z%twNo_QLJIfhSU0 zxkrQ}&wK!Q=9UjUi4{iItf`!$hs){Z{@wJNrQ}Gbq{#A0-KcjLIk`MT(?khxHxrNj zT9nTC^w0T}NQxX{`S3c(KDYEMSl*#e9f}Unjc_T5@ zSlIW<_V?RJpw16Mu_GBjj1b5o!KQr=afLUES6d+p?LND`2~N-RJnMl$?G8wcth=J+ z&eC@CaTTFzG^ztsD-B!xf${W4PDra&SVgAmzt$+~H*GuCNye)SfQuqv4R3@%%9z{l z6^5Cl&Xi5Xeym(Vf5F|5+vDZYAK2IbED7i=bXr`S>kK~^*mi|2o0v;XQR`r`=8_^9 z-S`F(!d^R_2)OouPHY>Y0^m71&h+LJ+rgD5gyrIWuax!bHF>{#H5ome!ncCbVEuC< z;A+8apwmZKKMyLZ`@+7$JDK`LP#kWeH`@BmH%91ndRI!O1BhNDf1|KvJ9guidG$jF zR268l2seZ$)fFe*w4j!RjS6l#UBB>K)&i*=X~aMTr-bSRj!Dzfp+y2<@!FbOihj@5 zIWx+uUCPzqmIuQaHJrjk4&qsifBDP7jk|lwWUuFxQ;g>#4Z3or?LtZ@`YLcUjz`F+ zM+v0B&99Z^t@}ct9UYK!2J?n?G8@mJnanl|fqGm1#ztO)pFUbvty$m}nV)fWb98Sv zSOzO!f2HpK1b1~yXxdIFM#y_tom35KvD}{goNARNR60k=D>q0+w8t`!~ zO!Seq2^;3={vZ01yUQGYiemg(Wzb2kM>hn zQYVx1N5+NaOp4wz7BxvV06Ew1irzX83_3c2z@Oki1RsO69xy2dsFt-bOH(yGYN)EF(U&6WA~An@|(rffCF5I zPkl?dUS})6xxuVbOO}*~ET(+bMuEmwcQTkgIGP~3Sil1p=bYb?ocL8iZT#u8#jYon z*Dh=)x>y%=W*zp0nT?bKRE15fBO02|XJ909KM=!K))3RVfB$8vJP|8e4N1)ZtrNJf z>bD#Xn!=-wW-m^_9^~jqmPas4zkvz)tltAo}k%P1){C6Fc9_7 zEoXqG8Iko6AZoIYTR^s0BQ++l;WIo^FFW(Sf= zM$^*T;}6@J1qtT9@Ql*3WLP1mfXA)}@vZyg6?E{1`XmcV7lN#5>JZl6;cYk5biao^ zz)W)3GV_Wzmj0*V<4Enn(_YYg8Sl}O1S`s<6)v+Z2-m#<4jrqMkk(mNz0?RidgomW zyDgpB0W|Z=r5S*~d=vVoJZJ(@g>Q8{uk>Ra;Y4;QV_Qv+nY@Q!JLtQDwH)tr0elK! z@jq+_JuiMeBDQnla5PixI-}ca9S(uflfn2K!NA-$h6QlUJ?nonQ4aP-H|-K9v7VZ%XZ_3tqOmg3Xtn=W-z=v%z4rnaBm zj`Wdg08@*6LAq}HL>7Qoim!M3$~?)&a&yF3Q5(nm-DOu26Rw5O-9j$*LT0m8UP? zx{rG}tX+_VZ`Ee$s;?Ya03Zdz)4>=`BerFF(ScZF!rgnfTtTd|e$ z02ffS+dieRst%BCU=_L&N&~Uzh`(wY$E1Egf)EM{6aPgZxzm|yPhzbFBlN>O)vwX& zyB&$A-i`#XHl`y!oTsg^PmD6{El0Gt*q!yR(?BGLGd9O2_E!Tl@>d5C9#Nj&Uh1C2 zde0wkBAyK+f;4H{L;HsHMO_Z;>40Fg_a_*GFuXpFV0}-)%H4vk%@&z~&kDAIe zjIrTZ7L=f`=9QB_{b68~9atpG=pm)?0N>x}72WDZsD;0Drt~kZC}m#ATm9pgzq`8| zZ~PJa+RQU|G3AC?(_UhB*=IMn!8^ox&o9X4g};mzq8DbDSpAvTIS>%d9N35XuM3-F z)R%OY67VhBZtan$x%*b^Rd$lda?;TuK~G|aZMm-i*Ic&smljBW0Cz(A z^N%iZEIAQxup=&i94milq51gV#GOFo*MI(~ zn17e@e>?jwE=k{R0|d=+>5XkSn0JX&dPOaG%O;#_S=4QqX2)KmFzJS~P@?GUS%gu; zM0@Nj@dS&?AIrE-G#ZWnm49@j&+bkfrIK|laZ>lXCnm@LrInqu;3dh;fxQW602d;L zaGVj`O2o)uD3F!|GE|?YZPrIGXY#Oy^C4*KKa0W_H!57i!txQip;iR7t0ZD2k!S5) zk~jgXJZ#y}QFI)xu3?`vqf{Vf2=z;iXy(AUdo{<3&gA5Sh>vZ|L59t;a)ZsN-(Obv zQ*nl9yHDS;1i)gx?d%C+JQ*mn?RFI$cD-2QPKG+ia7xcUpUW}uIZ?Ws*>o@UTIYYB zV-o&efj@HK!+j0z!*6J905q;~;JQ}v zz+Azr;*PWTdE-m%BSc#%$B=z&Mh(?FqWeUuKF2WFOiyvT!l~6B-wHIr7{>{a1i|u# zrn0KS%Ya?eAx0l*&91P+%4`RZR$>WeN9#Y008+2ZCpxP;=&tn<1Ayw@;#`ao5^bc| z^7--KX}XBjB3Dn>2Rc5Z6(ykwodwc_Ws_m_(+O1#fbQ}fT=!wb!g_3Z7peQs{kdI- zUJtLHvv#JQ9!3qefFVx}D+Bv$kmXsNj4Qlt2uMK|kS`~%bvqdhkFIz|O0 zmX9I-_RjN=)>`R;c?Z;};n+pJyOi$;H%?)j-cSBq*|cGq@A^-KJ)Vy`zpAMOg&=D> zXwN#tZ#$<%4Pt{WK|4F&B>Rm z66|x$w+d#Om2s6-PJ+=H?ycaLk<0bEFKwJ%VkOgLSF6{NTv&@C`;Z}Zkii@nTkIT` zeq;hp8Frl@U8kPadr86qs%rx6dDStk^n!G!d3qoOFL`HI-q5ED-*cnS`OaMrY_S=n zlz;9xg77YZvtP)z;2F-DALz>SOe|>XGfg;Scndi-`QK!$Ye*NDdjwRN%Xy8YL-6%3 z`>#hEWFmov+{dXom(_ut!r!dp<-DY>=8-tt{pBQU&r2G8N%2 zRkZse0&3pbZ8w|I!*hI*2P8vkt8dMTq|w#J0?a!K=G0bb;GdGxmt3988zjhv5psZl z3LL`&i+hUFwK*}RG(q5YBw!>`Vf73O&=MT|DVG|z?Q%jco?>5>G$#|+iJQ{Ym#QmY zGTtDc$zu<)fyXaa17y``u1-_^4HJ2#s}=i!P?tMf6%bD&r;k4YJ#b{Hny(;~YEJC} z!IaJ{Y@=W!V!57BjpVm6_l4!Z=m3?$0zk#vrr{!1Z2PkN8+UEbnHhOIRe>3acKf^9 zzOp9(40_=dp3$cvx;~?gqE4VUC8mH3APAv zR{6489iQ7q2K4?20IqNwTaepIhH|XO!$tc5Lt(d;bo=3ZySJj=!Dlpkp@8TqYs=sf zaKsvu{NU2TDG9fhqDy!P6DyCJeUw z0&&HS^sZducEsEIU$B<18N0mQHk(eX;_a3k6Gk|lvwPL8@=YObM6<@71!xTB-BL%o z0C5^$A?rcyj^fIR>7j`sj1FWN8ykhtT9tuS_!8p##_C{yOg2CjuulCX_D$3j#tM6VJY zJ0ld}buj%6~+SCAGAhy+`S8>=_4$yq&UAVTbiF`bf(Ol)$0K?Xm&1Oc5F5urKa5vQ`di zf6=+|;LH+mLus%8za);K<3oP}voYCJqu4hkavN&7;CQG_cD=xWn$`pBq8pj_5YQZ- zDjotjTi_9Ws_q2>kf~vXMqodi&g$hyyPaf^eU3rfDx0asuxGalvep7=;;CDhmV0iR z{3^Lp;XR1bL1h7HOZS(ex7@EeoyKn}Fge^|Y51;vr;{{|6?D^LDk2ltLoiukxrUP1 zDimPal_W2cs1FCJuFD){B$fS!LiGUj{Vr}30bJy0@Al)pHR_PoMqalRX^C)`k->f8 z>IqTA7{M`k1mm40cp0vaA>Aplx&?!kfxiE^u|A>f%s0Ntk)@msm`8$#1?ovR8{oU6 z4VrD>s%ecQy3=k&vJbnwiM;O8NOkZM=pPe>_OPQ?+2TdZo90aRu!?zR_a38?V@(#N zBU%IqcOmZmLdAZK1ZXyfq6gfq|2PexQ3axOSBSvm^%GHJX|MaqIsprOhtWrvJ`cXL z#4;aBZ!7tI}^eL%tL4Fh&>7@@ld zk*rp08TyQ5OM}||u$kg!$X6t#dNFk$flGFybp7L>J3VOex#vuXXWjSTxTjlup0%`EbV;j+@-}4 zeESo5JAEZ$lkW;(cGmY`N6Vhe8?$PbbXopm3*0iOtKjLtQ2*k9fv2R>$YA)>9D%U~@h+)ZGR z5dzJ>NLI^Saf#n!#;nI2aYnVsxq;1`s; z42Mvn{Nb|e+sG&C75O?vt_syzsV5NQ^E-Cg!+15SMM*l3i=F~AMT;pQO@hX~ zu68p=F}6=vREI)3KlEUA1#T@}v>!HMIvb(jGb8xm_EuzCdIepm+$yUo-@r5UMpBMQ zV6ZXnap#CnW81d$-jt79nH4=&#W?D)`zYZj&h7wkx+Y~0S!sy5qS-VMm#X!Tcz}!=!B6KsIxiZIUR*xo&GEX)W9K$3gn%2~0P?{23lKYFoioXu|xXx0ZdGSL9oXzgqMVV*rIl+*an z`R3g|mEH8Z6_-S1U2*47c&A~Itt#*b%L2BmjghNz^&|5}DHU-A_RlemC_~YZlA8XP zR<;}vM!JLmo79vC$ol(6xXXb+_%|kcK8>aQ@QbafPJyT_8h3SfjxFmUoEOM<^)vGN!gX)7I-X-fcT0gwJb& zAa^(0kLz|-+PP@z#1z1ylfIR9Nb?>+`V6KkA|P)Gb-;dA%MV_+ywkro+$&@Bv}^u0 z>5T@hA!6VFO3MfEVYC17aVz5g`1jb&_U|AEQ1gg$c6o>LjILkW4=*?)OEs3G`v{Lr z8AXai-VLPCu_Sbn>Jp)@&m#{d)Oejc-toWRNob#9SfpvT6i1QLR$!z8cSru~zy<#I zar_@0{^y_<+dK4^(UeSFAldr-SV|@) zU}WJYyNn4i%oH!@dkCFYmiNpKbSZmIXYV-(KlrydRnM_X1FH6ELoFS^kE*rlzqKkp z)!o(6{E~3m{2WD>oHrOCyLJPumuHZB)ArON_9pZU?N6F1m9O^ny?9sU)P>E8Z`N3i z6e$XuJ%SK>zCU=(Yoba24~enmO`x;&`%t@$Ej@3aDbV@ab2yQG*z4E19`6NeA0k@y z!mR0w=$SwVw>K9xQ*o7623_fW$B#w~WDf1S*z5aBOZUZNZ&TFzUFeWVy(ZW_n*J33 z351qe`kKklEaaMoUYQ=tAmc<0vBi12$bD)0kv#q?z|FZ`&}jb;p=58tE$z%!P1{Ex z%M|h;Q3j-rhE$ro3ik%gCINv}oNI`e>7{4OA*qd+wMdT~_Y}jc*+N1b#bal~y1;Yf zEO5rZOcr*`(ZADH75cE|8zs((PP+xuUyvGm z_bnAczHF#mFIU=-kCu}0LvEg+*H&?rHKN5*A1S%I?iZ-*N4F-SY#`3wc>lCx@(Rec zH6&?nf>tF$UT#S!Zg9VL`bW?)@T(usRS{D+5mzOi{%`GcOT$g=r_rj(G&?V@)mu{0 zs*tkdnZf+yblJa?g%NbO`#G&2qnyZ-GbdaK{%&v-YQI zS2#t?8J+FP9BH2vWjAy8d|@l#xTeAPHVx*ei&JT#ucwSW-I{G<*x4wixf8d@(y_;& zZ8AxwrAjO~sx#>Y?n_~q3YnEM}Z+5VZ90A9@Dt0MESioq$e^vY1TL6j% z&yiA=HSXdJfuh# z-#T~%D10sefYi5o@*t@lHQYsnZ$+)RP=c-xk}72q!Oh-;E{c9Jt7g@f3R^rtTvFYT z_mj*(wSuJb2Vn0_(nGSp)Aoj3-1uC*&#EDHbCym1ObY_+C#D__9?kC0Y;RUr^W$C% z5P?tRA?m<0)`iPSsIP#qfY>0VYojeiCt!3t6nXxJpkjsQKf*(zO(1&3W3VhadL4Y< zO((b@VoAAoECp#h7Fkg4LZZs~!z&E}4)D=kZWZ_4Dfb#9Co=v;h<}GylTe%OW@{;k zLBBd!r$&tT=fXy}+wDIr=u~yMRv*RD9*L|SubLS2B$pV(vBim5G7Evi`d=dDdWrlg zo^j&C;*y_V(bHvbH?;d0kRg3l@^Q1`R)RWCT;skk^qz~epPf14y<@oglZaKpkkOyf zxl#s9-My(NvYlCRQ*ce~QqowdJ`Q0(>h)Fi@1Mjsso$zD@9$BJRCaX$8t^6o|)4Y&Q$TZFQ3H=qW(V0t$X44%E6G~q+%G`e!*`S}%LM55;Xn?N_ zzFQKPkBBYZAz-eK5J=@|Wr~z8d@ zOt}EaCKPT1pQfxr}<@6e7{gs$PU-no3egM~bWi)ol1M z>gj;8g08c!E65kHDxR5F8_eDgu38fsY({e^>Iq#l2$UwXpI3_Tce||$Ky^p@anqK~ z;Kr;O<;~&kPv$hJ;k^cu4GnkXJaESKixYQ_JW{`3Y4eDppC4C+`aA~|`-04=N(cR| zOxzFII38I5FJe-F8HaswMF(Z1NStfGcGVNjUu{JK{0+D3y{bSq?}d>=h|!UN(HMFt zlvcZV1jAqgDv3p%a}lcPwlHaZrhH@YEz)GSYEAVjE+6ptAQ*vB8`F@@*7&{@zQ;U3 z!ycFNPsm#PLoJhcGf|gE-x(d>Gt70O2*hEZdhy5>9WW4K@WU2)VhN$cxymf$&j#f4qh3WX_m;_!b={k3n(qL0gk>ujji{Y>xfcV3$L7z~WBY9S zx0{uNbS9E|;h-DBb%-Z+|7ibuH(%HQYO!`7iBW`+1&bxl8Xv*S6bS3frU)_GV!-l( zEqje*x7i6fxcfv)n9|;aG<%OnPC+!NS#_?@6PkY`^0Mm#%k(#VD_HVL6sjLkT0OAk z8KSJtaa1+YHU&o3V(SaUD=^q5%wj-rvIAa#aP)DC-SRZER{MY^ha5%dBenhtH-88qPeU-f%> zrySzsE_CJ?Y+OnbPFZ0l4QvR3>mDvDBMf@0y(JTkqJ5tdgd6fral@xONA95fVxsr7 zm?pEI+4P$Iqesh;EF%dy^3_(H&nO|DtpcX=S%BAyLo;9=sDOTR!^*E-uivoiF*a*! z`Z~%-X8)*rT(hMjv}HUppG}M?fwq_`DMk*ug^F?{%oS-48xr=~?*^PolveE6-cJPx ztxg9nArsot{S`;mrbz^n|7NDe+vF%`m(_MX%KQo&Wf4(f)Ks6J4e&coCi^IYUeE7? zJMQL8yXgikW+8i0n(b1I%+D)<&cVPsmNO=#I+a(*&XWytAW`h~-l$XXQ%AGy^hPy{ zs%mhtoOYX{Bvz9gv{@jgPMb@b0J0g*bIp3zF@o!I@s8wJYQzS6ZX;HGCA~+4$m_}g zwO|utG%jtmejC9Xm9~G)5Go5@>h2Fn#;*pf`Uh$uYF$k-ysdc-Npk zfrz!uhK~_~1|Z?IUi{)y?m7XvthAgq8DBD+KN-g09GBDUe!(ZDIL(t)`J`spu(0^WQSD#ElcqYCcWV%*1f?M%#hfIM=f zX32&KxGmZN=7}k8fq$e^B;27M=lT>Usx!XggTHP;GxV_@9J@8$(u6o#DW}%L`th0g zHne~h*ChQ|If`F$q%s~-UHLI#k24%&b}ID>zaqk9`i@+JA@Krk z`4I!qlmtFsdIT!emrKC6`KpT7FBtx}gIE=;R8}s&>E-O;>2C4D!5(jznP!%a0q`O; z3c-A~0;C(HBPoD#!pI6iV-A%4E;1jbRtnPdQtV5JWF}xsX}=xn39Zl;l=#M6$lg(* z#9j(e<%{e#KcjfGM6QHoSc}Eh>)z1HI-aY4m)WS#qYlH&?ONm*evw4C z9#nxj1ho61bl&am%}Yo-w8sFLIS`udKUg;UGa@S9D`|Z4FNr~{?i@C>W+WOyUm2nIPq0^_p=dDULdOLswF5m>{ zOP|Smo6+ow^Y@Gv5i@4cO8HA<_JihQrhuT{l+6eu*_*U|ambWvxuN^mI2`WsRVGM$ z-1i6Wy}i!mh4%EhyT@^=pU!!DqJ}w$8{nmzo;VH%B5>5K3AN4{UZy(nqka}p2f z14N6U-jFDZd_<;pjLL=^!^w{RM$O6C-Rtqj z4_fjL+Le4%_Y+TjWt-t{?eEVq{J7W#U9ha@t9re#clt8s#fG;s))_0C503Pvq$=Zz z4v3hyfZh2h4ro&}!$+sR$LE$Q5&4Jr-p;7ZJ*{s^U>F9=`<)Svi)73J!0O(yX1P9v zA7*jWs#fP}*5`?`Cy@Q!B}S*aDY(v()UIf7lKpN!W@lpwb$NLEE~Ag_=)E-!-|fE5 z0#j|(*ZVRs&)81f7X@^mpzK7!T;e{=z}-sd-x(~wR4)_#QroPb8tHHWLGyEY@^HA@ z9wUTrnnc(|YDER+8!wxze_ZyxUS!l_0jibN$ug|F@yH|OCkodv0Ni1GJ-$t@TEdNO z^N;v^K-U@RR#~-7bPuDQvo|SD0><$n{j%`SM0Z)`j0WY{#dSoDgNkN-|I$K9*pHT! z)WQoKC*E=BlWmMS<0i#fU!OH>Jy|~^?{sCD z6}hIrs1r8q9rNcEStepBu{};Mgdp}|XrpXeMsoC*I7?LVS8y9@ROt9zvF4QEiF%>m)YSJ02d@T`< zu`l+4C!!9bk*WQxp5VBy*=(nt`1seC3^A>+qgfGbWXU16WEw0fpf9yKjf1llx)`$| zKUyftcG>21%-y3n>YRzb?0`n4I_|rGo7H>han5$Qt)RsIs;2=)O0Kw9_BaoTWs zkPTLZg^Tq^#MybplwS3c+&@dON2J`^gng+rP{sFa$dAaqGo2CzmR==Vh}g6RJf~83 zc26&M09oCg*R^srYC?=|J>7j6uv6PV7)(ZuNR1#OfO!a@3*eGvmr60AykYkqAmtPp zM~E|mSV0*ECbT@jz-vX0E|jmTEd^Un>C`q1419Mv0pAYW%Xlm&-giT?@mHhAg_=t- z;J|V*bp3)YkO)0Tn?}>r$Zi30id`%J2@eAjLg7l_-M+R2d>4xVdC3;C-A6lP0UZE$ zxV-IsU2=+7w0cMVxi~#2LQZ6Y&(j_&h*{6%LnHXbhsz17*TLlH+zthD6kD7um2Y+l z2DRW(9uaQ=4TE(y-G5VkC7wDk8m)K(5DC_=KkEKNS}KtykWmz@;(3ORht$aq!>3R3 zRU`T@vFfd*gn8Kpqlk?hQGw4Jwd$}-J7MC*01#8KlSjBI9Mq#-h;EtuS8gt>nFBD@ zAucb-HGsjGtw28X0ZOjw9-#!i#3?}4Mq$KSK6}f5*)Kj_o2`)C_+O;G2~?BUzW0yf z6*z|y0V_!jL_~-lDWjD^NK_~hK_XHMT+zsED`gA?^F1yZD}(#f#GQiEm$kSt9@YJ~6C17o zB#Fvkq1I zRp@I{PZ-BIV}0aJrFPy<8Y?nwL)RtC5qz=CdMt?g_vC08K~ZA*6*$qyg4O9?@0zF< z!OQ&Jaigi0OZXLSIIL@4ZbqWiGJ|kt-<~BSQpxI>AydB>7sn%7|5V#g=b+FW=cl<8 zaU>*%YmFZT5N5wPAaq|RH9~yzA4@^DP!vA2&yFe)ob>o)5^=IiKDn95uz0$-F!H$? zC1q4pR;{KV4yJX7^6D{0*pcNffn>`AAy~+tBrl%j7w_0pxqsaIXZ>nJ1)wVeBA7Ri??U! zJecR2jP+X>(S?;&E$>xPbKQhQVPec%criHKDN;@jn0DjlAb)2mw+S>FtAgAD0~sqI zx94tq>ji3efG)FfIS}en-H%An{NS~**njAn=CTA@h7r+Qn3Dy_3=f0uA*(_gZS6pd z$FF}f5j;Ix2k9YgDG)taj(}A3gd3}P3%6JKB0WZgG0H0u&LqoR<&^VK-KL*PkW`J87g5!5j^4`Ilcr+dPlEoVGbQ0HR?7WVXOxvn#hba%a{ zZ-lRZToE{jIAROAB+PG;UZR)z%rUDz!{Zi@LKKvXY4PME6YvzQ_t>9mwfC+2p!I>h zdFQjYSlBIk^9$7>g`Ll+g3=>=u{03^zJkJ(Jv@?~oj-_M?jH@~sxUj`LrzJ~kJ-m9 zV|5EZJR?tS-Q5Kuqkrof4}p?f7{x+EgJyw%%g~-P9K(JFQWUm-6iQdVeg(#Qx!bhV zHA9X3x}E#n3&E3>^kC&}F|xrFfs3Zwqzs&uk3 z5dCKX=J-#}Uq?u5yVYw7T*KFMu^V2_4Tt=^#u&^~(4iIXc;!+gMR_pE)ja zwmTcQ%q5+uvz9`Fk?yjxDS^j(aTWCA-0yuVv^al31}Wx|Zp28@Ip7Op79kiE7$UyS z31W@I%b>;-?WIx+f6R1_HE0~Tj!kg%1XA^=3|7{?H5sYYz@Kl; zwE};5k z8}DzMJZYN$^Rx7bv5J7^h>Tlz)bkIxAIj(CVI^3k^4LG!Q+;TgJqeIB?a}&~HV~OfdwPIoa{8M8ypFr#_Nm<&l~M$NP=5IF zjM2GR4TcIQ;@1oRcyMaw}bTtncqFBL}T<1U4MpZR|+hm_l@>%9fNy^-HX{p6_$}HT^ zc14_0=3pa-hL4ABFC3BkS$~4rhJ4T&IB%0t=>A9tp;&L(JO3g#q(%5|eug(@)@s~a8U-w+) zE*yU2FUXZxcl#Ubn{@U3NFcInDBnjf8CrNYw$o~@it3#tl`u{R{Er6zm^aY{^I8SL z_WA9G#a3awxFD`9!rxW|tAQs*2c|WI_UE}((v0lYj|^clx)0>#1bK#N7PwPy&1b5+ z>aL!er(q!H#^ZH)$kg2d&$w2qnn#89FiZ`%b0KTC4>QjMSf4LO+4$F@PnDNyhwq;I zYL^83lId8|`#qtyBL8}!@;JO4dcN^L@t=#|06QI|UA2EKt89ok`3`K7D8Sm#V<=-<6G@a8EaimscXou`n4YFPE& zMTvS|iU!D^l(JJ1KIRU=V__AZevQRv0{im;aEWGgcFJK9b|BVO?<#V?!sSY7HP3NC z0!$w|UNsL{Ul&IQ-l_=5-+I31=aR2>4GT3CANs3##uN>2Cs^f}$fnMA((^KDI&+Yk`Sz9(syGmaUr+&%XWpMrI7>2VQ3!?Tjo ztV4=3b9TDzVcm{Z2bW4V*P~y$o&SwrVD2}gzaLTj%$)2UENe)+X9DX!pHoL&3^u;1 z8z@P zqFi=IrsGVrlSnA%D@TMYPrB4hoyrgQnQXkV&N1^7|HWAGr`o*_;+9PM{6RVZ0_1E+a|7Ts~p5)RhX~3h&jnug|Io$lJr*5g%L7`abJ`zhc@Diydc+ z84;4W#YRMe&KVAqfzF7^w0q;&N~%>Ejq6KqCP%xskExs9*E|d(()Ey7PP)U;9wfd}Ymescdc1UN zfZdU55s+%+*$w3n`9P!Dg%K}r+#=07Sr_^bJ!ir_dp~H6A+aFEF{GbjVV>e;TU1lF zaF~fY%qct)(s4x1=45CZzr^iznd$y#C&%%xTp2%zQg{1|2D5ZZkrxi66vx8?0Zgfn zwA-D{bm&HT24SmT5=fObP%olGbatgSA-imed01QNv~(DQ`ucTpag})-HP&r0R7)-K znP(IB=4L? z-KuOT)roPXxr*nAs@`dqg1(rZXzS`3d8^PVm-@QkTxV|2=E(hP!*$25;j&QwBE!+Q zUq*+$zG}PJo3_+NtL?Tqecr(;Y=3=NI&UV+ob)jc5y3Q(aVcPOXNdILDQ14c7Z9KE zez<44PK9l{ZRrt2DzrBruKn{DV;N1L1nN|&1H1$J73ThI__IO>4;^Amf9hd9wX&r8 zvkuk+DUE4q_s=+gUMw4ffcpCLVkvL|vj6+x`4$0`2y6Du;RkyechR?bLyDWS{*RP7^a$f<(%06Qq9sPI1(!fvaQ=opj=ljc3RWCw}emT15iSxa`w1&hGN)UQH zr5sJsXtW$H`~IL^Jwny22keG~c?(IlaZqO*g9$V z74`WUUCY>5y|lmUo~FENlK40us_(;fR!qZo`<#$Jo&LqUwsZRG@v*-syiCNGx?>{?3)hE z(N4Z5@GiDpu+B;MRC+~R*^x_S{Q*x$-_}2Vip1mII=I{L@YHtZ$xtQP|41gYd*eqx zujya(kTzOHx1RMswAND#Rk@laLjP2oFcPC9HzK_|t)zOHGin&*;TL<%don*6rC*s| z#g2u`mD{s(|JqWm$8zwWGLNzUal7p98(SFqcU1p2`)_)7?bW1>#)3{rbTBY7<_Db& z0SF39K7v!M9lVaTeEIsz@Eg}Y)pjSQG_p?Ad(14W=FK$Zvcxa(#!YkbHbi}q@ZIxQ zpWcfnw$@dpbKB3Ab6Me*UIz&qvw_|YUXf)dW7hXeB8$HxH?f2Ue$9$b?=e<9Ab8o;AeK`eg9R;OrvB~LP_IHI!RIGOW)fQZ> zL_yg-H~LpDyU>4^+x12*QiX#}f7z&>@aG0`9E3{uF#^bqm9pTpfxyHqH`w1m5KrNS zgJ$0_tW5AfJ`nw)nnoLZOeTrNQ9~rdqIGiZjpSdH;7*3&=^PmY_u*mI zSsU7p;I1E?xGa4s^no!Vn|0d~EJ(HRn2tQ`$}nCvB)c z#+L&iR3$e?aU-fg{Vw1G9>RWy#$*KLu!`|EWhPmVcAwAaHL}XCd7_*EQg@S4VgP%X zI7CEzJ;vcW`VkAwow2wepp z^5!vO6mY-mN$GR&a+D{y)~i^-ZWcFwlBn)nm{Pn{JPkl!EYw4DX3*HSPraSd!eZ40 zM6(en7myQ3N1t@?OBkyBhy8qK@UOwji@t_9QP>9Tnie0ORmvtyE6>HCL9?^Uhp) zjbx*uC;;oSDM9%>WXeUO_=a?NijGr>bv)Xzbe>W666qH_zLX~00_h^5uy{nu(l0S% zpt_u8;6Fm5&o?NJBj}QWwy(2lp|PjY`&A!anHjY`lHAg>;jAIwB@cHM-PIqoc+@r0 zBb?L0h{>1UYC&i`)cMcOyNs}+-g&MyYi}bE^`@KH2Ni08jpmS|-g+m~R`P;Oj6YB5 zQmrNXsVtXF<>j;*sEvZ`KaP3GZSx|9TSPPzUTG9!%o&NqcBWSR>65S3f)pgkj8n?@ zo=GIMm>hYf4TKZnUkC!3#V%qWgufBRA|_hGACE_)2vHGbC#*TWX&<@m8V@=)QxHrA z)`wE7tK>+%@;R-f#ORd*S=3CKVU&D~@r8taWX=Z?$Jy#kk!xUx(lwRkVz}VT5hCV| zs>z_6_#B%y=%65?3^-euM_e?BF60u3jqTbq2H#pdPjQg`0IvKw+rbmsd2a&dn&%)& zv1Qyn39zl4+Nx&>{9;M;>Mo1aI_21^X&U~0Rf9A3ED1MP7K4|wwMT6}>|o!OfVGim zxsE5fA^xg~$F=y$XgS=dx6%Yqk=*O2T(uDO zh1UIdxzCmjqdYdtJ<+Wwtn!6GN*Jz~$3Rpl+1!;;PCtx@GH>G3Aq7AEsTLmO(CSg!odiRUtgjeq zll3=WL5756{ZU|h-ZHdwA12a$$BETR_{6)m#3DcBaEQ&?l1|oBdM60N^7~vxDW)}- zK01a}$IT>yC5|g8L+=1`Y($~dJO$(ZPWVCwM^Cp^cN0i8V)8v+c-H;2nqrY|Zu|N& z^YEh5IoP^HIm1=y;7m5HKokk5vLHUOtz}E`fR9~hScJwU-xM+{nfYK>I61WuZ=?HA z%l|;?2yhKe2ur|mOq{ICm7!Wh&Ty11`vx)1%kpMfjIS^K0oN)lJpyRW3*v1C;lu5e zhwWpL)>he`etbN=4Ok!y(H*Qk((L@-Bm*foEJ_bK(tcLj`OET0F#JKhMIxjmOOt3xqS_jpQSgJ2`{0lCXjWfyn{Xv{hNs zrf}J1-{HU_^uNfPhl3TrMBnF|fvE9iE6TYs zyq~N^x59jwcf+#>k}vt#Ar2N}MQ(<^fRLL<2L@Th<*{X{CLUanj0;PmF-BH#Ubglz z184c3_=f#)Z@$5ZvFKByB!NC(so^~=dk#VK>c^FT$j|@fEIG0-6 z7d_vtax8&jvYa9Yof*o8A5-jJQXUW-^8!1NA)>ms`V^lI$!X9HHM< z{ENGe#B%FBEc4*K=IZ)7S>o$PklTfbI}%mRXO1aL^s;iq#SS|T$>1%$!_Qfcd68!? zhw}&vdSqX4OMophG9J^_>V%gg)@!`!y91mN9l=t>`ubh`i+W+XwxgB^@kqiQh=&r& z>4vh0SNq?(R5=G`e2CM=On0QYSe{cd5wqA?9U6caIH)j>fdoz*b+4Q3E7J@?Z1}Bh zuC%x9<>OyD0TsYV7}LRJnpgE{Kz^Jpc}i7c);VaGO^W#YB-AmWI8mTh1bVAlJS#=F zl$>}Km~C3p_$%3Pd)XO$4Qyr+Q_XEPr~xY#y_*EMXCx+j9-Og_@~e9Jm6pw08r8}} z){$KFcc8v*@>qF@_JKf-W*)1$04kOEl}`q!vYYS(`Wm8NDo1(vql+^4%o^hx{2sqqtG^b&z5q zy3nOlCsK=dsm=~4xk)|cj66@misM9d=Tx@raZ;m7B0?OMJ@!UhQ=Y6n6HcN`O0oqgDAlKUsI2AutuBhVxmr3$;}RY_+kK19 zS=)_W-x^ckuy?|jvSSGm=>4TNeFQX(nQC$7Q^6@f4PHdK;?YO=V_aEV9;Jt9$DChn z^}WX<1lYG)-jg_8J|5tFe$6J3o2?n%fqD=hR%yPKu8B?fK%Nfi-B3{aLI)g8%xAoQ zP;D$p266^VQE?MXs*i)P;QrF6fHODy5lc{EhqSmdi-lc}qP^sfhA6Lmm~5L;Vdf)%i;~(`azQ|Dx*%msm3!iomR%Yth-wRLM@#!mM*lgPCe8m_&LH0x+9C%LaRl?I; zUEo!S>z{T%KuO+BHrJS`DQDk#Z|FV`JJe0?mET(*KT}YdlboBS=e&N`o0<@+Yikne z*oEMHbn-mwD)+CCJh6nK-XJHTXCNH(+yFv$@s>2ezY(s>4Q%@&RB!vxE;~=Ac9SMM zN8#Z9YK}5J|I?wH#)9agrm{JAb69L~XoYP-e~q;&R6F^`=}T2RG$T19$3#;~)+}pe zPHNXKr&s;b_CWv$E6;7A! ze8zyc(Oq$^|1G9&khb>;f=8kswq;#nkmHEYhaNb#A5rm$%r0P)YzqQ; zjwHG$R`Nqfl*e14KJTCnNDndjkWMP#@SHQ)U02@UG^wEvDdyIn`wJ0T6N(!+aLpWk zmFoyZX?=Kl^Ng3Oh!g!OooI+SH}M8h!yMPdzu%@^n{d`(D#EaZL$(UQ9%U(e`RApU zxoM8tbX`9BSopY6qa}u)5>Yv6fS^2}Es%73b5riy+qaC#U zK$h4O#NT3)9Z<8SY%lv%e!1)O{<(tPp8n4R?}agFX*?SdT0@?BGo&M{vaHoZT=WE5 z^O4DEm>0KV4mD_gDnseBjb%DqpbFF@ANmzQ3k_jLE6q4KEQa>mKxP#2TIH^U2{kYEQPsqkO8FSqq!}8XIuJ z9Iaiu+yFbVA{ojdw!~J{?2|0>8Zxmp%&{PreyN$(Y3PpbB-X?-+Ln*AbwdAzphe=v z7uUlL?L4$=I41H60{BE53Q|zUw1-g4B?JibwLEV^3!z}g=r1%XC2bU`zi<+WLpEO> zj~XW}5{r6+3Zn6b#~jJmAJR7VnfnPMI@Ds55p}E9aV<=#@5JX(~5I-%hXPnckH(eC*(1ExDh%Jgjts8q}OR(&1I63HsDh2W{Q zyU3p;Oq-Z_)d+Rh0PyCNWIbyMSO8$c4pB~*QS-jlvP8}(bed|)9Ig3K@(t5eOL2M>bz9(3?R+(-OO`obfz6?Oxa!=yS4eMmAZgTbfxTGr zGQ6l`1%YtD=ODgDJxO%r3hN!J5aSikmb->KB4{sP$T5=1U5v<5HUnJ@e7|08P&8t* z9N81b+gfQi;VZ*8XctE(=@-IvQ<3L}IZ$w%YO@@J;YS^?fBbq?5!Imx_t}awM7JxB zIX)ydwS%ny2-I9*GqQ{1mB=$7%|>zD+~1VnVRv~VnY6A0;J?CH)T}Wr=^@eb6e4}_ zT}PFqJ%{v(RoR|}eCF6LZ_g4x!r&QBlv!I9&wi1R=`!W~_3NI~vvm(TWFYCwsO|GO zJMV~_u4u0A9StgS8OKLURTT*2IKDVWLB=|`gt5n{CVSmrL&1B!qtvut^Xlv=_P4D*x&p# zHx{@`vO~YxRD!=`0d=utagR#G_tg|y^j{G(Z4b6%7fX6iAPq3UGHf~B zB5_qA?}MXIj^y#2sgwS;iJT>{ZxSKw;MMzG9kDrGV|Zv>IwiT z5ie_W;a?%XrQMSZWv$2t3=uw>MyU@fP<3@G?wTi3puWT?W*uV;WrVC5D>B%-zH*LY zx}h1$U8k1q7-y@(&sLy702oJtxee#K@Y}58P|k~CWlE|6{Wv*IK3o=FV=_Bz0jCZHkGfy%O(xq#Hzt_@9l(~ zdqHBk-ddy4F~0_&TICv^1kaZw8yP*P{cR|Z5HWLr;-ko?usG&gR36>^GCJ~A%+Q|*NA=zQ0fGukDeBST!TU9CKv{nVJph{?PBJt@O; z=^?z0LRCUKX~1EhZJ8la=Qp?diY|xw@YV0~S`U=rD!ZeD`a-iFb8DX4%PQ{MtFS2Z zlC;N*y~g|*bdSi7Opslvd7ykR*%(&@Fi^$#Jjv`G_Ib7YzD@h+frh zoBxO>n=Rc3JwFJf?tdi{9G$GCQFnMG7o(_xRq_iI^4=f_^aK>N?+8PHkT5@h%n9bP zv-hx+kBir8cVhPbtcOkr3+2;a(P8`)hgXrI%IQ zk`jH&yuN=_EhVEP@n(-5eN?p`D2)JF<%$Db<s{1LP40YLb(gGFwvEF11#9MB*fwozCkdMfLD?l2Rr@XSm9BlOV;l%e9 z;r|-9 zPGD##<8!ydl)5y`cu55ij~~asI+K}wG}{XEE#Dc4Un2+NRLcbzU%HUq61(cC53p$W z9nhE&#qJ-pi}}m_#@Z?2otR_y#+lMfn>RgC2I53~3i8rhA-IOrd3sOT!_2u_DcCbe zd9)4m6{fNP9B;ru`*3_o%8Rm`nZtRfEXXuT+xCKlkC@rGGdRY)E4@7Py;04A72YR} zQ5GXny}$>f#iT2h?E1bK+BtzZ>Zi3zVbct{!PuHp)@LbLFvk^anI1UsfEH>>_(ZKu~Qcl_Ic+BDp(17Rv$`xp+ z@K(TQLl`PzZwi4r14|3@EP2%vs`PDx#qUw;ul)txJRw6>PR=N2NiKEhFByNT_1Iy; z{~)SLXT>xR?#GC!?RU}t=uMAm2HIiBmYN!3UQJEo?q1YGHK{?5i40nriOAK+!K4XO zU_A1_60Xoi6qfHN7ZHLI&aWfS%biq4PBAk&6reo8)&cOsFs~tUZoEU=qyij!_kFw@ zRmj`_c#9`2vBARtKX7-zD+BKdO`RGvrU-eis1_>ew#91SGcQFqzWDW?^e-UYlP*;d zpQ?5d=2Tv^Qt91O2y4OHFH)6DZ#OZ@r`SQocxFLs_)=!B4N~6!8z(;m@QeoA=5V&a zn@lVGQ|)!pC4fqr+n$$hM2D*6Qu62cL3#h<>Ek<~TN~sMH4O=rC>~;;xVMF~)bjqB zmbZ55;a_r8=-OkrjikRV@MCa>@XZ4!`i zEj^(WZK1a$Qk+6l)TSs0PyQ4PDirX|?{tm=A8&GN>va_w@inka zSTq4TeS>tatc+R(p5e$>4J41>8c$Q?_5?NbpsMXZ{L~vbhpo6mE|JxL7FQy*c&_l3 zw@J}+xNrWs!5dFYK0kZkpK9}%|1S^!58d9sLW+&Gr4JHY9uV^dmw&1_s+=`SRkGjx z|7(9ZX#Y{rexuLr|Mxfc3wUF+e|uy9h0bpSoj)hh`yZW;1DzkG(2D=>o&WjyLFa!S zHvhZM|EC{b0~&bxfZ|<$?vCf`U=+!N!@fh)*)d23QW^DM?a2TAgD9o#>N~b@UpHLP zvsMY#uJs+r=$C+SI(3ERe|WE-N7Fwy=<{fb`k$leA704k2E7BL3G~y>%b!OR;qgm` z;)P>&^YO?g^jRC7Qaj%wq)$-|>?F($wp_535u&E`(IlZx>8v$Peq8Iu5`6&cqgslZ z(7`ad;WRkNr1puIu6$;8etSjd`erQI8Ll&bTbi2oIH?1}ruS9#$Cb`do zxcr?V)`4j;ug~H#K4t7=)vct?^Ho8@83WA7h9S~pOjv0)W<9o$Zn$jsd;it_8I8Vx z@A__)P*KCSssNa5@cT25LxM6xh<9mKXDr9giDIP1zE#FDyGUN%@z0ZV!?}lZ!8pC`qzh^y7`c2UGF-m4v~eJZ zE+1#iy*M*{OO^1@KotV!eYfpR>C+v10x|hyH)+#rMRGp;M027T+MB*eW>`j{a4ebY|l7BKNBrWSh)U`#=55|F};5-xpfEVq*x}ja+UG=-&Sv zvSIPO^2KzWRP_KSXBztA-ief`E3_wTvh~IXyaO>ST*i~ehb(}**wTK{uvCUba1U1` zZGn&Qzx{Vu&0cNCYqe;#d7XuSv{Utw!B*n)uY^G|R$L@!snogE?jL`in7)VD8oFfS zBFDw3U%MZb?yVMl@bskxSj=F+w*vbE{Wm@wy7{;GquQhe2Xf|-?#h9o0eivvl*)4J z_>5FTF;Ba0j&32#s^f}}!>q^wvmS6GlNn;w^Ys(vS&CciSdbhGNe3|T{M85-zY3QD$1CS`ApH?!GlVU?U zV3&c5u6P9ov3`Q#e9=QYWxk2rs!&Vl)+nDcJKlG(DO1fo^Kt(6e5fxFZl3(xq3J4R zG2iXGYq=eH^&$3E7BOmZo}JzH8;9zd)BC(^kDQL*8FJ&zg=6XxlL>iS1mlOGM&PQV zKbmqzZH98U zU`I~Lu6LUQrt6n~s>VfbeEO-?WQYe8XO%Z+UHu08_YTo<)6TZ>64R{O+O1^M{eP;( zsc%m{JNikF&v=C7d#hyPVLMMTDJ z>y*jknt{Eabn{$OUK>7V)fK{5_7P*!(brLlOWEgEK5$q2{9`_5GGk2Ii)XecMO^~F z70PVRZXElOYPXh=I`nPtpW3{^LH_El!@HNJ^+56UNv#0%WLp4wN6&t9{{SLCv!q5xUum+p51v zx`MOj*Y^ti31t^n8(8KxSDn#5l$!Fh_6- zH+*LdmjENufQ!Drs2Y5Qvue1uOLSjEII?M5bm^IP>_A-5tzS-u1lcP4r2**KB*!vf zaTpc0?Ii@3{?$CRs9>#tQ%tOQOZi?jJ!3`84~B)Aj%CV+na}R@ACAbCyFO)I+>GJ2qUU37m4e`cb(itQ)w^!f zI9SDbuF48)1nRGk*0!iG`GQ>p+_hpv^qDYa5B;LRfnZ5lbHrY+9zB+ODA-anT4ur;fa zX;f6hf~R~(_OxB(MfV@8nmCKvKFrpIiqDS8b4M4XxH3sgo5M(`>Z8P~juRs~-)jz) z5#K{xekVQ-ALDFW6^nez@q$5zH`dlUx!VJ6v8W#nBQ4TpCZ%@0A(DX$G@r!SP$s{a zbTup+8>J|!OW;0h55a z#xorQE;<=3-XSc*`RS-`BFhAWd zx~i-o5^Iu#cFL0x?ML+Iub z5A8cqlDufo&Lh3^9&@vgD4~*H(CsYh9&v40Y?e}SU*BV`35M2kkXYE81boVx~s<-7}`MH*6ERr-F)mR%Xm@xFC#9Xw#Gh)(fot=qqq~hLPL5ZeU&i`YK)v+G!h5se_ha&NmbyMB-@i&l zGy{mEt(f*(QIGKQ6>NGJb&<(edKa#($*vS$4m-2N4PF=OrzdG^>|OZP|HcOOs-|<) zdQ&eRVTjIUp)#nttFb^|Z&5?W@n5uh8LcomYtJHdyNs&8xnvVsXlsu-76Vfww9O<1 zN}kXy4u%WflPu8A0wt_x7b7ZbP4?K(uB$_5hx!rGB^#Zl$1SN-U?)QV^z2HF*lx+u z9C2hKzC?8b#AP~TRvS5V?>rY|52?`bJBGIUJ}vtAX$O-#82k2AkwLmc@2*$a^%Wcd z(i=r=t+FTLSE`*YJ34B`t>I=C4JTxgcZK%BwzPfMKG}EscN|j=gxP20Saz$H6dOH2 zmFMAPC25&KnZu~4;JHBZ8Vu(a1n(7|BhA2|b3}%Tb92H`LfXe|Qf!MVA zH&EKe32pt3RI`sA)twqs=5Kb#Frg|V^JmKGwwr6DaJydoWg}7+2f_qg(x+sE&$>%B zFRlzD#f1Ai;N{Wy(J$>c3Oyy%U65YYqNrF#1=w4q9Zsjx@{O>qS{VSrjmDEL`O#~9 zRTJV5%04(u+wo;^S$O^wm+$6ZTWbHO+O(r|;N>CXaRs(s7IFD|i|3cGToabNIW_Y5 zpW2V$JC5|;Nr8C7>wB||X6kcn(%4AkI)t@I!5vX$7^R8iF{%d}YkWl*RAhJ~GF5sa zHmLn}OmEWCSU++`JErgq7P?AKpk3U2Px!55i&!%V(8*Ng^lJUtJxUB$wUNJO8wD3i znijY*v zy58cS_OxpcPbKN#B4MW5#~Byr-4)%h}1n+WOsY{=|ff zvZUl@n~cb5lO8E#8l5j`F{xc^#msNcE8Q&U$8qn%3J5=hIfocq+{HYwp@KM9)XpHY zl!fPymUQLxF|fKITFAOI&ZZDbf>iPt14#sFaz4wbv?e{O)z3PEYI5VFwDPYV82~Ek z?}yOc1nTXgB?di*)x4mBJm5KIH$GaeVP5M?l59{R8|*lF%YiYOK53(0Qk0E&fiB?#6pp&hX}zhJbRc? z*2*c#$QEB>QS(?jOR+pp@N|ap+7j+NQp*(msPFUd-}c{$eO*Zr>bnWs-e*R2nF*Gu?4 z!GnmtuoIQ`1bNc8Iht}!E4y|y*ZUt&VS@p4|0d#Q8kHBiIRqP-7WzkxpIKyP(ax&x zJ=46bw7(Vs5~`nlUpKyzKp*}jY1zw_~58cNQdKJg&zE@}IaYyuRfA=DPD5hXbtJ60=Dxa|& zQtnS z*t{+K0cuf8{=6qQ49DKD8aG|b4hnjmbI7k!zkM%O@`WzDteBkxEq|SC4_wEM2=CH| zyICc$mGbj>?DKBAvK_^^1eA}KWtG6z8dx^f`K6Kn`(o+i8dhK=M+=$|&@3f}L z52~`cy%9P;ZXmZnFa>I1+|8txlCfmf>r|inB>3w|GtE95Y=~D`c!7MEiG#M z#~>F|0xj02lC@X+aGv|}+Nb76szH@6$=TvhwclEI?Q+lTatP@%Ue+sX@FFkhIfN%a zO+9(%%jX71({2D%&l2UEq7P+DJI@^SMicLSou+kiMAZ1#LgnaON=Q?**Lst2f8G^z zqwO}qS8s-gdLIGD#FWQf%1|3tSi^M=sW+_EU%b>T>1{TDUY2L(#@V$9k%?uR@N(CcqGQa9F!rDpJlV^k+Z);r?PO~Qxw5I@ zr*ScjA#`fjVS1cJM2THc&Y)!!F(t#p$jaoC-0h%#aZZ70bBx*Gcd8RcCwDb0Rc71A zX;PzU-q|o6zszo{onIbI>Uvh32Z~f4PX3PBb^AO^;yC&y`+j(1AO5$ZKkoRO-1d)I z%yjx`ril+7nCVz_9IDjlt$5_;c;#uG)Er?timmQNRU2B6@@oLJu7Jv4aL{-;Mn1k@ zt&^@x%k4NRL#`f1#IFzsu zjauD!lj56EmIJDdc!UlL@sKI-?>4G@#3LBJP(*pqz)9y_7!xG)(x#+6^C0H0KHHJ% zU`o|*ARUEl(AGO;ALopL$NnPQ3 z-3+EqGvcC8wlwO{D-?MK5(Si{W#qp_3zacEke-6*5?ZavS}QKu;r-)i#bqfs52XC| zVi(`zP)&F{6JVSXb8RN_-aPU#62=U^DJctPx1s@eF2CE+E8k2LoHgQM})un6uhmLnVqA)R{m^GWAF5uvbRdNa;3CGQ?sq@ir^?Ysb zV^^Mv>lO$tspi$m#ImVC_NM#m@e6*v!?1&LmzT2=Y=E2a4%jm!nYwGevK0q6Dm z-V`fcpeRgc=+Ku{KFds>Em$nEGZq9Qd(sU@T|mCt5q60Vh>8COQtIG%T^ShneYr zs$G(m=cTXyG>@^{NN5)!_9L=cqwz_u3^Il5IC~#wNDY(fl+IVF?sgOhD;JnqdtK4L z{Ce5Rn$xFMxZ0Niw%o}igD14_(dQ=cd26jEkT)Q#hZyDz#L`tG{nZ&_FzUBXVs{bD z{n*Y;hx?H)TU~V#b92;|N!zQu#uYkvsxzV8Q58X2+cC+!%I*|JFY4qImOHTmG(+g73`S^D)Wp(yn=G9g9dNI zOiUDu5!gfbPhvL`);D}VE=si#Cg%R(e9Usgykxxy;j>jt()*IHwDd9A@{hU7+-4iP zG9vak30W38L zdO-8NRUjz#WmCj;i;mi8b7Lj9^fzhcTU9g1R%jpY(D5`Ac9&qUP>|3TV-76sE#YL< zowyg0pNW(q(uRWWG1>uELvJ92LAc*We3Qy%M4*lHt5;)^4N>NN+K{R+Hr<|0<7r^w zqC1HA+t^ML0O@qFYI|vQ($*&_SgxJNlU2t60cBOd>CZTgo69)>3n`p;-%A>X93sC+ z9Zq(3JJRu_fN^X5B!|ZA(A>joJ*v?eCbkL$X;G9%bgnGXL&xih1MOU%zw<5K114ht zC1K}5nOEitbirs!s6njH{i0d}1YM&-2U+%Ap+BfvkW@t|Ee@|SplXczMsEt9tH8<= z6dGb`tB=q*VvDotn0-5%H6}9jLPR}g(jmU)F6fN_L7;<-xb-FwPJx?A8z#XtL zL!wlHDhGN${WzlFK)i_^vrkzZZ_NX60T@$0LW{I0I&KfYU{{>+HloCQu7@NiqI-ov znN`PSOqZL7^CxYCoFM`R(DOOTBKANr8;83_7AhQOBT}>pz4Ks_^V}?aRBsaM5@D(x5=_l@79%UA{$N=H? z_&MW3=kM2_vSr@%shCdZw&+ z6rx)7NizNZ**y2wY;30DLCU1)Wh}sEH3aKBgcl@E=`AXkl;a)wbx;-JzmfOmQB7rO z+cyd=&_ywbB}o~G7-VQELco$iNK}-dAStA(fL9P93^hp$SM#n2KOAL_r3{ z7J+Jo2t;KFF+gNek(n?BWD0@Isc&0PcR$_hdDi!R|G#UwTq}B#bI#uT?6dcM-`DT5 zPSs@@opa{pz)dh`>3~Pcs}(TcoeOS_Teb~nyX61em1Egqy|)N>IOoB|`Z3x#GvW4V z+`Q{a@Ln_+7-#v?=k0oaBJ;WpsP;nT=~#D^nwyDM$>VGe%L?89muofhv5j~sWy)TLu5e22FQ{8; z$JNlf@k+3xR$j3T>9t>1^2-B#ckV)7rrCHM|Dh-E=_6_M1c7CkGwY08ZztCP)(`xP zH*7t(0k4SVNWh9Ig-s!?R3&_8U+Xlq;&!;x0=Fn`a!xs|94*%^xI;cUJR>P*+$UdT z@KJ;-$mls{YqG^q2PSx!E6z*{q=e*0*b0Oq$&12v?lD`UO!2MmlQiJ!(eK6&*)-k{ zU!y=86v6Dy`NGEv!Uk~@4`QMYtb)nq!{upSo%i1jCH@`le^e6 zOq23p=x((AohgQSRGN`5e9|K^mpg*H&jru@q7w!8lBvoQ4f3>2uyG8&lg z1LzV*ZTD-k(g?%8VQpXpcQ+jdY*F4}e24R(p4MC57t~I>>)%NV>%r4q9%L#@+^q@f zt24Cshi&3K6MEFHV+JdqgEV+5sgpD{CGJsHe@T$kM3Imu(g+5Ze^#- zI!4^_>z-ifa=(vCH?&>8$1L*tkULHBOJHyU{KE}?894zzY!yTKI$~BI!}*}R9;8BYCR@B zKiMG7e3JX+JP5okQ$R`m;t(!=*qcXJRER zP9#Mwb{zr9`;!H*+STKcyFwYeayg3p!Cr7E`T-k;((8;=N0W~T4`S2K|Ix`!OoK8RUA$> z_X>#R?ho`Wa%mQ7yC(}zx!Y&Veg~KdsKWF5XN-`ZbnR~Y%Y9i3T{@CXuatvv(;VVt zRH)l}S3b2julXEx@JHHE7=V0y2v=gBeIQnbDH+!yTRzBH=@X-3c@isf;+vjKM1Cxr zy0>)E@})jV$2j#2;~~^=tGybbPG+y4BvYMuCSGxwUU7vM+S%?grQV~b{@{2V@^QIg zIrN_+AaKIw5@QUy5&kkhggqQ8#yegsLx&_cxy2l42!p*0?X0`;$4Kb9ks<^gyKgIk z>&WlQ*%w)0?v?)~1fOxmx0Gf;Icc_`Zhh^r<+(j}8I*8nU^w*jaOJ_2z1jOt&Y67j zpQrR43WJ0U!=PAPf!U^;Q${y*z8hg(e79i3(+uHwE=J?kAs;ifGk=`6Z*X2v1p&0} z%cTvWJjgs{#wvtIb&3h!9ax$Y>+OW8{B?-x|wqz zl$nk1)Y3HL-?T$@YpeC2aPJHL<79!Z$Gj_TTp+gLypp3Cv7uesbKD|qXDt7^{cZG( zgY@tI^IEu7Tph>M+tUEjQCsAHnP=%0+UIh>bqUXyDQ&oxD^@dO6Qa5Q-ApzN3!i+) zm=I3M(GNhQg)={!tCK}Js8i*$$NlF!+8d5z@GsemeWX@WYg|Va7dY%nHp0tI3h}Pq z{-@&D*CQBDvlfc^5N^Q-z#TyT7PtDbF(Mxg1v4gsSGH7=H0Ex1&8YgQtfEmr&F?q9 z+xTHgT5}nFD0%B!(j;jWGgb1jA!FviVm(sCk(m5q@RQ)fi>f;qQ&&_+o{$z--;3%9O`uSi=^ObQmgC^9$!*d6DB1t!rk9}Br7siN+ z)Jd<((2f5Kb@W@@)j;pv$8SNpRejAnP=nt_dydUdv|r5NPyd98I+C7sDsa^N0PFVU zyrJ?+OnGY7e3!w{G%ep7U6B%Y;?P|hWYZ6U8p3gUbk&E7ZzMsdIad6l#)I5f5I(w*5KCpK>Oh4Cz zZKfa6l(HLJt3JMzJ&rJWWPX9VLP;wfcy_B;cw$08Vx(Jv`m_&OTpe2{#3>(6+P5BA ztDn)51({BZ^k-0P%-w50qcpbFsw3#g22&f$o{XaF(o;A(2z0XyL&D!Z+Pf)D3z{5JeN0@&gTZ|bzg`IBtbWs}MTwbhx z?MEGEAlqW@vg<@iwz~8>$#db9kpedqlKa=6elA`~eV8(jK0=7W3&I<*-Dktq-aUNI zo}?bKu#{KASWR{gQRp9|Zo$!d48O%EjEqiAM{0Do!fi7QWPVkZ<18oFRsI)KE=1#c zP8eV;@(0|kbx`u$9Ss&PSN?Zvgs!!3m(}Yjd#BJb_1HXMBj}BOl3aBITeB>C^e83n zlGDrNw9@3q+9`z^c)gCl*iZZx6fcX4m8?CpXefZLgkvIWUeGLy9Qm1EX=aCY++rrM zHbMNK=Eu-h%S`GW-4fBja;4+t4&;ksH{@1YYcW;ta=N9~?N^PJ?FvRBI|$<8?dCgzN-=xGEZWrc?%$n==Oz@Y@Hf>H3&kN+fUf4 z!a}#xu7^g5Nj5=$C50f_)V#?SLv0YTAW-R}(L?1ADb8$E>j@ zxtQ~Y63ik!W1#4I&p{lqevsmtgrilNomNDj$*E-ot$GIl^#R-$j;~>SLxVTu5b&`r zdYO{sD5**10>FBQU4yq`pyc^T(?MO}mS_!1{7Wpp!B7FE+XAv2{&c@Tks81(817kR zL*>7`5n~aS$-c1` zP)dTn4p)vWr>@cONr(?(Bva|HoXhKBRl=!N?l7TSOHqh+Lw?hU64;#z0KU#W&fh1z zEh3cORx5QzPU%fx@`1q3q{QN70_(sVm@Ba36_x4rxK%D^dbsVkskB^*bu)WB!!B7B zxVz+Mgu9<6xG&RT7W@-&`Ax2sW+IYimwo6^xPE}ba zW?HV))lcbBJ3t&y6Q_gubU-n6aSLt_8%?#A#EL9t8@CLq=UTHC{;cZgm4CdibCy_){Ug6~dH)I-0(Sj2OP8Rx~&GQN z93prJ=dL(gCRA3vznn_Vja;sX!K=RNKFc@{#828ZzO&685!{eIa~C<@TQe8AIxlr8 z!}b!u6tdWpPl<%oFjOo)eLK3oMK5l+l zrc+rhd9jt|B7+Sq>s{DmQ*U$@Ti`ZE+wHeqO`?n=Oe%Z?tPu^!qTQ6v*yFM$r$ectgb)RaU zFR*1le35>i_m=%&r=7S5y~rBiSw2jQ^l|wrKPNbC ztuP9D%YL-8IHVx^7z_fRNAV@?!~oSN@Nb5vUyNue?k{ih`&hN0D8p86`wpKcVCt6q zO%go;Av~8*OYRBUuLhuTM%Xu^WP4IVqCe3dypHYz7_1@Brt;{F>6A-6SIx6 z8#OQmN_gri(s8(jyko1(!4sY*0kC(ec7lB;Ub#L9qS*o!oR8vvxekgrSh_ksZ1{}m z0_K<7gy5Hqbme`blPzQ`jA%uQ`bobVlA$TA!PPvL&sNMj9Bf-|+iYT1@D2W&HaN5VO8N}FsI*!w$8 z<$uvvOPAjtQVDQ(1T$|EFc5r6o%9oWFR@rrjxLdN?+9eyE%YUy4s*6ve$BT$g=&_+ zR%s#TiT1MqHTvV-6?b^%GV$WQzKsB8)C8C?v4Cs<9^djNO~5`|*;-g(dm^tG`}vHB zg7)KvPbIc%y!9C*Bn8MPwu1aPp%N#z`@o&5P8^YpWrr`R+yk7K7}w?y==vIg9f2&U zDRhH#76nNj@F%`(waD~}7X!rYNC7K}l@vm+kp{*|%7MxZ&~HZ)lnzb9AVHFah4%#e znUu#qPlX-d3Q<~z-3Ewa)!H`W^HebVIJ-!RN&B4F(klg<3z?VdtFwx9 zNEUArB#jXn%&7dO$B9nYRW?0o({A@9YXzDY!D&2&EofhzM!WzFY2Se`$$%*pJ<37R zFhJQnS}2Qp7Ea4D9%mgGf!$_}J4v*X+g;5*2*SfEl_hp z;M`wdvsC$pH=E&Y34AG#$zIzAfRS$u7_V!j2D(Y~P06Lg`4!^-F?{hhToAuq2E$yW z?|1Q8ZrHY`j{Bcg9-YaL(T6O80#gc^OEBt6WPP^js=2n#7EQQcc~&b4G=_8d46JU= z9zvTnt94Uxj}(B+?_(YNFa+@V>3XMa;or$GXw1^P2{g`j8Gu$)EN>9k3EyI<$^iiy z)NBRkNKNYC0eb5utlGkwq1kdG(|4IU4rz*H)4rTxyH38&UIMIl7ISMJShh`fF(zZ> z?1HP7i6rRTnG9BQD(OZhOqeTZjNIwgd(A$Et`>G2r8=sC81zEF6T&849AWq3P|Rxq zyKPlf4N;EjO!YzcaKdg4-wRD1`?Q(A8Kaz)l(LKfr9jkX(IjkE;f{t6h^A_;_YH?G z2}M%7MB5^Cjb+cF$n=E8p>k{!x8}H4@u`&u?K`)38B9a-|9I zz0&raZMU!Ma>9503iOFzNC9zB2m5HH&Wyjh*ZEP&$A>QUQ7M2Hn+LmY1j7dsV>&W} zu;wfI_IAr%r+mHyycyQ9o{SkZu39;@ z1nh)TFFjoZUfGW%3QX;CY+}%9JHod*hAXm184=5Ewb#myGJDIA=j=R>R{hq!2maY+ z8LmUMkr-?`L@;q_nU{0GOvl8$c5~?5o^awa?k>#;^`)>BW^?3m?Ai31rPN2%GzZFK z^U6(rHH|}1#6+o<;Z;ScUk-K5#+T#81m!v@v=-JZAQJd_aE;d&17F zmrK~W#@e{{Zl`T3Nc?P#B^oDa8UdAygM5xSWO!x*&QsPgF$}q10tvJ8Xh}s{4H^Jy zl=sgnrN68FJqf!7Hmz&4Mb*g1BkMobjmXCS?Z0?=00Wr(Uw;&}V0}b-9#o?QuDI{L zY#vcZwLdXA4A)4RONEQCCwYt>!{w8vG3)SEkY)r&0yV(3mheO%G0M688)qGVN zqPBg^?-Jq!8|8HP)213n_TTk>IOYH3)C2VRb=xtC2VaI=R7Dt2Ot&ycAe~y>D5>sa zcT`qw_rY*AAb3zyoBlItjJyC$aK%9G^-*hQuNo&EZyHl6q-iCcKpBv{{Y&d^4c4us z(=^P&$75OlI@Au6g1&ml2Yy^QYp>=-O5SG0XvVO>kKN+QyDY>7ixh9k>_vV>;=G(j&x3PrCE$N|@Z zNaznaV5G7c4fH#tf2mL~s~uaxTk?NsxPVIJ3jCvPadNH8l3;-!vDCAfBkHpoU_%CaR;3=-)ZsNE6k*8xMv7x z;-)rj@G1)Z??(Jx?O&}(jQ;;<#gac-@t?}ZkIjhrALHX6cekke^*@^RkAME}W@P|f z=*OG>ms0SLn_l_1F8$+TkpGZ1<+J{yOG}h|WesSDDbNnV|IvXz{j=s9U=qI#R9ST1Lkoa@ld{T~TQ~A&H{#OHh?Dc;P>i?Ji zcmYPW?4P5W&Li}`pa2DKI8+_#9&Gx?dPf|jVWdm`Dy=Siuv!^@&Erk`hV4tc+1y|%DRknL@*t^ zb6%0AzS#N(WV3!()0DHNZ3(42pVY}Kf&A+fir?ElyJtXrV5U^#wC;4$OS{=y{zg4^ z+1W*_zn#4+&f=!;diLI-J8VvU-c&} z)y_vI&q)qqP zN4{o+QSi#!VxnXC;V!*4O+B@!@{lb8fbttL+rPlw$G=&`7EH&lq6!6!F|CwYNCFH2#I5UUV(5 z9hwxj6XO;O@)?PSPCv0B>kAiD89xh2oW4SSr!M3&*Ho705()oGcWS}S0AcO%J~pb+ zqmnD@ElG9qtVSs>d7OCT;SEWe9Lue=(nn^k!qN|(fhMNh9oEsT-n$3dn2qmaS^PaC z)(SuRxsy4bYA}A~!t7EJFuQ+~AU!;Qtzs8x8tmsyq> z5ZJyWqF}ubp&iP3;X6H_C*U3C39M)+B;Vn=18t+H4$RQ@qrMo856hZ>WCQC$!5sWk zP{V;5*bcJh(`Pn830lGgFr$L|4ZS2C874$AOM@IU`L9EB1#P{Jh1GUAn*qy?Y!yEW zthRaARZ7WycpljkLxgH`)3=S`xRGJzB^@e`6n#c9AnQ3Xr#k<^SPzI|2!*n>VlW z5meo#Dv2aQCCso*ECV&g=ERb!rA8dgoiK{XF*{avJv`&?A&lV&aZN#X+e}7ZeCUew zBtIzk5S1OfbVv8u14wH6;6k}cIf_0?J{n;cU22Zd26klkO=|eglLZ!7vdzIb1=(|O zyUg4r0JTsQ==u}2gmR(0_qJAjL}HP7Mul~N@~t3T&K)AIhc3@Qtq|NT5Yy}PGML01 zi?cU_{Q9`N)JPV0x-p){3y~H9)DxeVhR!SBELROKNCTnH-X;8=F5qp733`i%Tj`Nk z(5GBA-Gs*9>Lj=K?&Z)S<-V)=8bbcd*Z~l4Wdml&3{l;PBievlZKfGrM7IZ^76n!G z+ROl)$YkoNj1uSgyV~%(h1mJR(^Ynsns=427{DOIiwXRj#-|WD3rtdu;A3cohaJ;T(dj8z7ZbKIPk!_B-p2m_+nB-{y;29ia9V}IJT0hRaczEn zc_o%#4qfPa8qWKWR~Zc52#S6M*j^7)oNWp!1mUn0*?Rs8Dj~=$-rJBvtH}_ijWQ{@ z8S^m5ko;>W3p4N>0V%FM`XP{3NU*0ON2p|LXQ#wwc5u!;sm%jd_!%Ko7TlFn!5j8A zfJXJY`)~orkdF{fwSe)s!RPl!4w$K`!w;@a=&*)GLs-_*wlL4mh+&)`m}%U zFPmM9N;Zh11Lq*Lk&Q{U>n?!E-AZ)*)*2YAOv2KTETOSx=cg>*PW53LB+sDv)+oE} zrl#gvbnmvY3Azze!CnJpO|M){E;Z_}@P`yN7xidMsl8=3L)Jky#2PcacE3+gh+-g% ze;-a&4lSqB@+AHA`ekQtnr4tN&5wPB{tXox7Y?HR)l19|#x@d981p`^R=v{j5H!o~ z=q|mJa)yxf7f_n7BZKhCoNdNuL--Zv@gNK+g)FmiN`zMfxh29TC4nDP35z&!>$N;e z^+8eJRA9@_^kEMukbx(99ZE5nA_(yqO5+o*OM$wzwz^)yAs7p^lU4eh9U;QIa<&ox z>yHuZ=jLS+6=T*`B+Rg56!c$4WL^}W(x+msO%z`5YVYETG4q>YE0rUjd>IUwrUI|e ziD=+mA%l(DCv2`bCnp4O@>T#%s)@~jr6z}=Cp|nZo+enx|85ULnwle`6vW$Yu%8l+ z5|8iKEkIj0-$f3IQfw234usH+F4-lTCEDJ0Y+#2U7!S@>zL(mhJFsWk3+h$dTy)7@ z?q=E7&f`#7YrxDbKS~Ge62-%+C+c8<3jd@JP(^#i(*oh##23FUC`YB%#_;a#cvn+K?={U?725a& zM;LSkU1Qb|(nqe&@JhQsN1cq*xxs%1(Qpl36ZeSPzC~xkYXGSuSs2C{B%ou3EwbPr zPC22reU|w7j>6{*CaUP<=Z7w6=%bH_4Hs3xHLmVjqBPe;CmCjFTZt1mvxXC-&IG4e zITUsKGzF+mZ&dvzZ>ij?)&$>qx57I!L?}$9-Qv7n1P@k0EidP9Y|L7#@@qKw!spAfp>Cy?3z5c81*%aD(m)uA@!2%C5MwSl2j?0`a%Khn>IJYy(P;b9n?U0zgsQR# z;k4NB)HuM{Z%t*xm}%FW)4Vu@Lvjh^ZwAA9ogc6z{P z3r4MA9-v!cF?~*=EeNN}fEruwQc!L=-D8f(ohSd?%>JA5jTB&nniWrdbxSWlq6Tbq z)KX;qH{l3sK&npJ6*Wwr?jwU%QbJa#wI@V6`uEws?uIL|d zKO6ts9GSt2Jgb@!2j~?`cr@vy`a7BMJZMdpDA@F7fb4EY+PhRliQZG2dsjLNI}WOg zq#E_fw#F7~>&xxx52d_y92FFToqfXxtE@A_3!^3GD#ioeiwaGj0?}BiHzQhh4^|*H zUHzH~&sxH?L~g;6!(bk@shL9&lDbrkefD8o>x=P(ngCGzXJ1mY^w`tH05adfs#`XN zCup5BBQ7VvCrL)HL6u*k6N(_l0>#>=1vQcsTwQPKqZ;Hn+wHRbm!4@ZE&E62JEbY! zHHM58S%f^nH0Scjb=(0(E3>Uhy1w?IxgF`Wl-e5nY;$6mSGQ96tG~)Q?b~ri1=}%F zd^*I*+m^dqL0)5>d9A>{B$T!X1Ml;AaucmyQaW)A7G%Taz4gR^$lYL(R#74}em4xY<8>s+%4}mF^41u?#6_z#E^D=a=^P z-1gS5&>+Ri2rT1|8HFLmoHLcqk5_a9e-U(sit09tr*v#joLsKI!*~U|0f+9&c>wL7 zYQ3U|eVgcH4>(%i(DtRS6^y-dZ5wzol8{n`#G}6et8hePvfWGfOK-kgYkBE&{%eZ^ zqxr}0hThUXx0gbeY?Ov;%dTYC!PhU-)D^oxpBenFMj}lib}sy`){c1r!aze$%sOPN zMc?x^yIsoM;dpEEVse*S@*bWYFckRv7ypDQ_ zh&pMovq<@*(P5z|-jdrJ7KvnD8a z+sG+4eP7!VlkYy{&OZD(V(%}-hWOmS*d2;_Mf^~ahCVy@Ws06Bl&yd8t1MN-S=>+2 zrP*IT$3iywqHgnD+vtU;77**X5#Rw|`^q({xKrI8$r`6}(w{qa)>w9|zIUHk%oD={ z;NB!ULLA;@2?@^~{{b>j4y%-e9lm+djPQE4Mc2!xG+Y;NcoR~4ZsiK0?PS?2)rZ^h zUfjW2wIjEUI}4N*(F#>?5s0a?3~lJToWvN;fDUnPC$x`T321unl$nq^n|`(NCB z^2Sh4iwi)Zb6`yPa`w^|zp&~o64UJ@Tx_zM zr&^N|zc!`Cj==?19{qkv2&oz*0o8RgrmN^HPElw|JS91)pVjpE`7GtcEK0vtm||9_ zAf&ZIHW&MDLM+x!pAP+He!}WnzI}H}%d1M`$3~JfF{%F0M8m@B@Znji_5rmH7~XQV z`-J?8Z}}<0I{LaA<~*aaD?bQkIDJ<5@0@D6Yk=0X0{L z&crr2cB91>W-&)RQcXWwvab<7w4G*?a$*~@=O<9&=f4^8f*!8j5jBgqJB?17rJdBJ zS@;UUaLkM%uHhm(6Sl^N7zL`Ga{pe1$YBA9^egRe+7{`0YlR)NQwbF&xI9U4arR0q zp}vz?K=OlUu`LypR2_)(rQF1zqagCuZ%v%k*}c~l*|c`WE_YAP08vC-QV>m^ipn(o zXy(C1lBptz!cMXU^6ZmMeA$&69p~axq*e=y3u*m#=BXx?wT=iIUF$p;PE4E8d%g|- zlg^Z->Dw^sm1hsRn*+;ni~Y`w5n`p@`4Vw{kdfQ4H|a_sNQBYMy{=V+Y0N32xhjDO zNTC!DP2Yy{Hd*l11pgRxSGz;7?UNS|M!h)`vB z&lA^7V}dtWhX=tT-K1`sd_JeD2$@~v4=gb}!ZJ+?jyf|YO9vdEbB}Y3TR8O#Kn1%1 zV)~7iWGjJittfzfRnoJX(fKF%&W0rV z^{n8>I;EHMCGuT*4=JHzk~5%4dPSoPY_DNfdz_P3mv;eA;z)C^$X<^{0J}^EcSOY1 z3F1m!y-mn9Qj_}mMnbUI-DSezA`oTGpr1Mf6d>2(EL6!@1|kQxiSM|19MwH9vG88CjMazGa?+`Hlm2`O!QA}r&Vw>h?^8!IgK!Ton!V71WE{kL>?m;nJW$@A^Q<#N84QE%X8kNW2KD+W^Q^F2_8VCyf|j;wn&# zOyz=vktI>p&GP)VT!VqScJIm&QRE$vABpSuz&+~BqABME!d`C_xg`hljCvs>@;6*w zx|l5{!i`<_!cCQnx*&7!MfwXGY1G0ndaj_KeQKLbnuREa2;RC z1E<>HyBM?NZX7&-nP$q5Uwn5Y`%WxUX2u4MhrQYPpbnP*Cq>Wc{8>e#(SSmdP z?;nyjF#Cw-uhP{##x2Z9~Wv}psWpIDuU*dW2ys@DU=JOH=2+D#=lGq5c&mezA<)TQ!2}$E^4!BK!JN%N$Z{aX}MDd$25q_L*9@UKM zX1eT2Zb*>ZM%g)LGdhVI1VHpBaTTQVZxs(`gpwzoHo<>gny26EiCGjhf;MKc+$Sp? z&JHgMYV1i|j+7cp6e+N0H%UMYw}+H3z@7v(OoyCr69Q9v^H-SKrNvt_T_Z$cm>?B- zH9}ULkc`sdf5;o_5MsavYy@cg+R>yV8?Ils4UOPtnR-!)PVqdV*Y$AaTu*9DIEm9? zN?V&tYfzuX5M+8}0jMLF)#om^mDf82tZ$R_a?A-W@!KThH@JyXQi|y_DdRv^Fn_Gz ziyrRxv>ug|;MYSyN$`Mrzv*ej4&~5|x=+)@)nQOuoF*1C>6DOmRG6o#E3!V$yj_qV z$5aEd1~lfEWpuDkYOgVllTaWa{@~bt>?^h~!nY$garalsMJkEL)1Ll0g9&?ADS34C zd-}TG+ORCTSYVM}-$z?;E=}_eEb}`H#GH@0)fE1K*0!N?c`sLHpC1Wp(k?ARln@XQ zYKfR3j;>l#9jWXZ3`5MwBnrlPIhm4vp6Zq!glNb;rhT zW^Y^M+FKu*MR%f5QjE0_%#4Ju=$#q9%$9RZ7{{Cz`Vea$GLzX^yb;Ozly^G6VfqE_ zfmB=cZi7HOPd5^K#dy|s2{8xJ=aPm+tk!p_6lhGMfjTHQGPgsG$LW;h3=tKI$TP_8 zqcUY4k8xDfceAGM)gEF!+;4SmIi9!$8-0RNE@pP~g$*M0s)Z9!k5gX`6SoN_(R9vMapj1JVOqck9@AoHQubc`qAQdH{gpfR zs;!8z5z)lKoyWziY*KHjH?Cy~lZr<0iTf1ZI=}?$s}5na^OXlAsLnMMq1$qH#dJ8~ z9V=PW^9?sjQ?QljAIGi2Bp?tvi315`U&n6;n~umy50^7-7$&f|DRSk~V{hUcl-%JU zRrB1BbN+J&DqLc`aI(QY7P1>I>63rTGw7vVcd}5ZbAast6T{atM`LGUU|MHAzo8|x zoT6$W(qC+A;yguwD9+9!6>lq^X&cP_3ezRoeW$mPe*%6Rx$I23CYq{!A!A6$;#j%L zfuxz#A|bAKNK!U?qAracsJlA0&>ECdH!BA|FGE~w{bgHE7bH<@fo(l7CV3jV*Zx+p zgTbXo@NIXmcd6HSbbyfAhCHSvnd@BCb)z3OW%@TzF8B6_qVx}BKe`4yF&X1Kv0;6y zq2+}3;lr5dJELAnDP!Kp1@#q2G8aIhy} z(KpAk3lQQ?-iR-HGc zNpiiz(xSk*y)YC!H=xed#kE%xt<&rtMS#a^bF?Ur@9VW6sO(wH`@X9XpNXd(?8x`c zbgAA8sd2gH?csJfs_>45@n*L9@yg~;jH+QyOiJ?xC>@LB6#x65eSYxm99H_f+EDs` zJYR($*K1Rz+naM#Qq_-+>uTyx*D~s5+G$gZsPR23w@L~<_Px5+Y5j*L!|cynM}GNg zH!APA=Gf=^_8h_#+JN2FTwJ)t(Edy5V=trS7aPkS?_T!ndaULK{_=ca_BdbXaz|K0NUt~M!#UY_qZ*d|tnuQamG@_ch`C%X$f6MP zm~l1KhjYVz!7w9cn||>8=~8UOb36Zu>34??q*X-6qWg!G&1LywchCE2-C0@JA-x`Z z@B6^J{fB6PB>^_)Q5%cOZNtG#abr-bz!jh03Ii;%8r<~X$ z#5w#ODR9Y?SJ|NXVjr6eIN#jtU3(EO=BH+?U`Mx9VIi%4bYm5fTuQbv87_hMAG<$v8v}neHRjONNb4};|T%;U&x2x2d zU?*ruVgHJ?@hR?)aGzI0`R9Fh^8(}OCtr`$%CWfmZW>sUy*jo_W0it^^j%r| z!xKBEHc5e@NpW!`Yr|hH(jRlv4YgMDX4zRkIkm5|VbI8-3BUHk6ff|yj&Q4Xs=C?o z45dMJj*7vU$~h(P4S6snn$vBo#9{P?0%PV73E@ZX1_mt3W-|bT!!$UWwYdohu&mqWm+ZNp=BSw^i+iBz=Ui;#E|7oS=8uPCQoKDTEYxq~z1h=SbRb`7cO9Cr@J zgmXW1n0!da6nw&HalCe08lXFv4Xn9M$>cB>ZNRcetW{;4W5dbgi|;}vz_*HlJ(L&RK}sWdHCJYwcK5F48H*EY8lFx)SAkr zjqQmraPk6l^aO1Z0V z1FM{8E%pk=ns|*JJScKK{g_&S48pulgj)?27sdDcQr`-EHJxt@s+S{tvn8aqV;MZ?2g3W)ebt-a%tyfwewCw6FTzZP~?j3 ztN~Z+hWcAYk|%i{?37S$MjeE5lM;R;067k92T!C~oGt9AMj%fPVKF|sO%DZ6J;5xn zpIEuyYf{lLS9-!aCPG4*=nXQ5#nJmzQm&qGTCa^fjY{0@YNKZaRlMyvjf>u4dKVZg zTk`ZMT|#~3aNd%=n>dN@EJzrT>J)Ts27e(J6o)9oWFK-19YhkeihPgKh=qahH00Gq zdk>RJK4M70SZ8!6r0Km(@V8UwI1}P&euJWbN?{weOW{o@)AY2deAJ<;=3q{CJ|)-w}(y^Z2~Y1?SbUO)TbkWmgo0W);iGlrZml~ zMl12exrZkOG7Omw3>S=T=+j#Y8@)*+g(Fk}50IS5ldpMV-+Q!RAsk)+{|1VyQ-0qE z3viAezP)WWoAK$df_7*4I&Q_e^&Q}nd?Soq+Jb;O8LF3!BHb2>dN;2Ah-cBXB-1U~f%*2)Ra_$Q%Z;&j88F__FYNhA`7t})l zI#(W-aTR%`;xZZo3K`?@BRE|mS$x&aA~?vSZGvbV`z|BD&&dW|cG_NJ^nM9%{CO!AlF0g#yhN9!*AXI+ktRJNq$cGc$Pg+ zfn8t7^BFcMOuRsKjNGj`&erPg4yH&jbisnN33-MYUC;;YK+=$BhY}{-(Ip1UfNPn$ zYcuG~w(D7nb1Uof)V>yBxcUP&)GPR2JA4|XwI&}1VSvFB8qE-GF0}{O@dmdU(4lK2 z?R2E?z^s7O`Z&=X)ZSbk(aGx#PaNBnJ&MPGu_ zef`(v)c$((E_q*09UC?pff6N$zgc6WOH9zTcY<*0g`)q%U?;SsBBzj9tW4$GC1B+d zVx8u9UT6%$g%icHaW{Ey;+8ZZoZjQU=YY9a{7;;MXs;9KsSbrj*KAjboDGypweVu8 z2NA?x{CcK2j9KD7kq@}jI!S98#y>P}k>kRic1kb|jb@BRFV7y&2DPjV`kR99Rb z*b2tQ5yJIlK%Na-k-bok6dX-`1d1}4AA+Hq1A=*ah4Nb~Po!UI$qq>5J-X>?(GLiT z(G$ESe|ytREVFe8t9m*${FpC+htjtXpqfWjdF@KxcKzIdoCZ7#B8s>#~lDV zFQ1)MbbC;wn@;jpc_Vu2dD!(AIY_R^aWm1eDX}bp>|^uPsA+JPrxVMuK8-aup=n~} zn;XG@8YEZ*+7j5<5t05%{ADg3*-b2Y=+u;;^uF{I1}vk#=TKcSO$Fv2(Sn{unDA|Fb*c&)gg#(aZ-z0$H`Rr-jlMD77!z0nS>fMck2ngGvvyhP}5>Q zdZr_%N`N7ydIcGE5|> zdPlXjL3$Q!tb8kMkoG8CSht0IlfVF30GI;d3_Uin=5DFV6W)venLQF#gc?j}PDSQH zt6-bGvED25%)mwQMe!+;>90;R0}E2*+YU`mf-5dKy=p~PPEE6popJp(Alp;JV)c1P zq&NPl!;@X=V$WL1C5AY+gZ~&*p9jBGJoN;=4l-L(tDPvwL$K*)0}U0#;+Jbahz6bR z=~TMpPS9duu_&9sR)1+jF^tk4cD~kyyF$Wx9Y0xm2TEv~Dvy7!RaE0ja8jg_F{N?UtI7zh$I7 z^p&h-8ryjJux~~fHWkbQz_xwl3wn*9UDq{9ob(l7*ut3Ki-K@pIoDGQm1~Szsdr8d z!&jF9FgPV9#HU)Q@mRJQGb(u$4^nYSzpIVW#5wl_b_s^d&i&7(S&2-S7SuxDz&!VJ z>7^%5w(~q{tfZZ8DsYZ^w-ruXcCP)2YZYq7m(czSTrn4r1B9cjtIiY#B(=UonT)X- z-j+J67hui^Pj8q1uEtK7n!L!2dQ3i(3E9wz7bh7nRxe?$Zp;+negQUStr!P5?Psap zE$VlkcLhz?SSVRa!Up^8In;8zNRo;i=65m72dwQ;nSpP3d{S(uJzr_Gwi@XgE5`c3 zlXN$Q2li;|)=BXuz3`fSR}DXXa@8*gIxC@#m$MwsZ#46|6O~`LV=G>ah+1MoUkq;t z!(~xYA_g8zw`eIx*bo-A8jAL$@c(>QNIF2fuiTX4iljC)eyl>XtGsS8E=)2yQx2yu z(SjNBdXuvvsVvL$k(63HE2uI2&>JeYu-4aKK1jJI<^-EXkku8Jl zs*l4PlQV*d5?c5CwTya{_PvlMuy`YhBOYYHLg>a@sAo{$VSFh_(_+5-d< zXL^b3JFK`0Yf{coFIDcd6Jh^G#*S!v-+8Yn^Z(NutN?u3Ew&ZP_Q|*q<@L!Dm zx*564D)nh18tOWJAXPBWeM_J{Ekf`3i^?=Go;mk_ndOcwievk);SnWs@d=>mzmpoe zOaxbuj6a?W64P>$@v7&*Z(SBe0Gn5L9QlHJ1 zZiDm(j3D7hnT5qU^d)9WVp;UMj{PD7w>mFS>lj|_w40VFT4HYVd9?i=rMFSoaaXi* zQ>phV~&(!BGT ze3#mY%)oT%bj1}r4Id4-k7_`vc}CVDgjaRQ1S!i;epho;mcO-QiK9PkN|M*eY>^{K zWi`vZY**}}r-r-Xee{-#YktZH2UaI8TO~CRks;brAYg?cBq~Tmkw~cpu0n(`*tZrLWiTWtlz_y9sRRUxiinC8g;pjZ zLVyqgL?#sh84{)-LqZ@48T#Ayd+%L+@4dfa{g(f+%sFR2d+&4h^E{v733wy?0k{FA zq^kWVaEHWQ-{lq3q~tTb_b!$@yn%~JU`wW}NsPZh<28S30MPh|qHhJ`q=+Uk8$T_KYtJWXT4`t?zwx&#(Eise{1q_3=U4|B$eP8!hHO%1`2Qth|1V?F{~u%d zZ%^`((eU5q?teVU|CqXuK}Ej+)$Uk|gbyPR1%LyD4M5rWZ5_ADkapFTcTeCZO#aj;kG${~ME&^IX5fl(A#bc z?WTyA-t#u(aq=$1Z&Y3Ks8T6wj@_AH%wPfJUhy=!`(zd4EX|gFcb2KHx#V)UnAyI|7_`O!7h8(gOn)KQ} zub@urt{X;Dyww8bqP)C%DkVmwy3`#X^!b+hUOWjt7`7-n-x<6{_e0Kfu1-I7kVscL z80`X;aCE%{1tlc<=FYGSWRaiOh4t)pX!kW+VAJl?eNs7C%a-nd3EebzMT?>vm6Cd% z=0(?z_7U;2@tfiGW7NPEw6MffJf^w);g@Wj?wse|hOXH4ubw*KJD*!9zI%~2Li_#r zmStKB&GLNKx3#_;yEz}@L!W)AK=A^1ORB54xfj!-s#GP4T&cw}V|nkIo0d^2_jD|O8E&T)Gj7qBZ*cn?T5HWRB#U2`t|Rg^SN9gW zc@XmU*mPVq^g-mldGGTI-MNGFDRX(W%V*)UJm$q)Q{%)BWYd!}KTgx*)Yfv+Omb3} zo>$BGM}MuIj^%EDYK#`%{^wC0MKJJCSZ5WTHQ)c)?W}yg5BSfwE4q~ket~-J)Rij3 zgGc_<$i_ExoQUi=QnA!`^1^|i;(xNds)(V8nIis>u_Jevq5-k|Yo6NX(ZT?Qycym+ zvFY}7d$&XJD#bh1=`iF|l*QMN?txt&0@fL9+DupCnzCm+Hms(0ThbIL#WZyIoS0w3 zw`9nRjvk)brgjpfluc~YXV%b8X#%~$f=bo^##PKn*+v}a=S#zs&%gKZsQgMFTfl~d zm`ug84_G*>#^B$Ks?upY9kz2yp^aSX%=xd&lQ?3xgXkoZLvXKSPlx_E`9Af-TT!p7 zwhaBdtA6rSl_2Y_K8(5H94*L1QtwWeZaX(nWI?UR%CC51X~9UNrM3QOBQ$4v>f{YlaMv@)hYt*YGnnlG~HJG>p~b98AAB-h%~I9zk# zxE8E0!36l1yWy~8xc`8%2u*2Azl+p%>90bWm0Ih1%v+zHu&t2i(*b_0=)|{}DRg|w zYME-HQ*5#>VN5#60|`Gagb#-dTU5;D|e+M$;xnuT(v!?^|cSdkEIFMjPlb;;vqtCUbB)d>xFpaNZy9+E+ zE>X)eC*wBI=EH2)wXRL|P5WD^Q;p16m&Yn1kv6?9kxviwz)VXYEdiu*W#=2hJa&*+ zG3$cP)>#qW8SM7idv&kj4o=~fTpgzsWemZNMaW%B`7sSmDvipyUmyW7_`FN^#N?^#MYE+p?qWqE&P)SY2Vnu86K$CvU^lPd5 z$0Jz9F$K{#JkO!+6jhAdK=O4q<=k69GA4borXrm+7?#XGS*QYB@zL;wY31Aa@A^|I zkl8DhM@d=7m64qrOuJz-`W-f;-?@r$Ks?(Cj9Jjw>n;5i4~20(Ceb083+V-xFDLeO zoV%yF$c#tf9s_82xM;LXPu}Eh%m&+HvQXGWEK3O7x|C(@u3*{PX#3y|H6Wh5DT2Kz zljAjI3n*I>qTFpe&@KTgWEBQMWIMl{UEjHQ;gK#ee%X{1_4Qg zr@Q`f_N+@k8QrH$6RuAKJ-3-wV?Q>T56;eFjhOi*c=MiYYf;3aM@&grJ!}QT@yW6Cpww?a*2u=@~LyGGq4Uj{=C}w)5!aKg6MsSb@qK z>KsF`CXB9c1c*X9bELqrMpVafl;Le66HgxpJmR!OSqg7_6}wrgzcNLiERF}tKHyVs zlef4=r9UW)j(}L|a$IB57>%E@6wlGk=%f^7OQP3J+-G`c5z54%!HvCf^q?VtUb=bE z!7PJ~7CTNEPZs~Y_iAgMG;%h@fT~^>nh#wuQbB~#eBo2UQi`rJ6Mf}29XIHqXt7Co zLAt!dp7goL=85yb8>Th5bY_cKVN`_6>jY}bKh34MyPlW8OaXPswshulXiXxJ!*ith zjpSJ9n^jdFI@V1EsqE~QE7+6?z|2v&Cl{aSJKFSDL6bz(r(7 zr{UN8H*1pk4^@*O->v{%&bw|XWCB|UtdEU=NbzXQhP`9kFzGViQFtf)z)xf4#}D&} zjwU9(A1U(j#JJho1m~xcHBh&B$||r#`PoT-L@EGaWw`2< zoPwD}{Hf7`cJfmOYGdD8=d&@r;pq-!^?`I;GTy{S3VCeSJL)|J>i+6uNW zOjt39=ZFH~^xIr<(7^y@&B?9cx_gVjC+&}_^__Y(}nn|nElf|a)?sM5ZFmHp@>&>|nv5R`ze?XKtwyk2XnvH##bH^6mBz4A8T6J8k3eTB zqfqq%ivgeAdeP99Bb~0!v8!DDo5or{_U;MWYmqSXGKTnJo}*xnC_gl<(iUl$Hz)5f zj*M&=wv9mez$v-#a{p0ZVRm~6xuOU`w{PsY`X%}s#SO6=+@H3qi@S>hz$-Phh3Kq= z)B{c9K{%XfZRr_*sVS*gP4TgKSdI*PKrzwx&NTC}8;8Bu8wJKF6R}+`1UDbs8U?RP z1v`_26!Kw%8&KAPX%x9SGax#Kt5=`;hed(ZLYl6-)bH(P6aLEV`C56s2Jf{yKZflT zRLXxAtgbUSl^Me+u+-R%eW%CYr~k3c;?LqQ9p)7XQ2qiDA#z1}B+WfB$Yu{uuvJ$2 zB7WjPI9c1;N^^^nKlx2@tut6vtysG=jQeEYH329f5?XKpC|m{FbddX~2RN4=jB0W$ z(j1xXQ#PExS^{5bN$bU^SgY^-(ruHc7oL{Et9LBc5y)6t^~8YLb7TcndpsKr8&Q1! zlTCC_^dTE+z4X(0;vr~ULLjj zsqq}wvQByd2v|xQcF=vw#d{)vD^6}A#0o8P%#bQJw96)`Rlyx*6H(+%B!9To4okk6@j*7Lg&|zbCI?`IGTQsS` zR)ex%Kc@+%$063ia{-*))6{H=j0l&y zKUh+IxE1LO%-54h@d~8*s|Y!?#e*1|jA19hsum-xa_({T9J%xd9Q5pGxtp{3G1>AR zBTDqDf&UuXoTiK5jYwKxXRd)UZ=lV>^=t0;HMIh2G8c_?zR_sEaziio;8&-|(VvGe z&yr;&+W4$L|pNq@L27|-Q~-z77dVc^Hzkhvoxi@6879lpmnTfc8YGDTpQl8 z2kB65Q~H$|`U^-b@$EIQ>OHAld(oF=&@^^&mM3w%(n6I7WrWq_*`3h7+AkFC$c>WZ zu}tM2=q_haZ)(thoj!`ph@3j^(P3tZcV3}%kUA~iY>@>nt@XPCMJm`avs}RvK#v!0 zF|UMK46v(y#k^HKA&S=7x^i8!$CC2#-m3^lqw=ABeB)oWV7n_#RvgB>!8i^ zuknlM;q^}C!;VXnO}MNx{xr$)zgOwPzac$+1Cr=jHQRkq!nPM0VACfl^%V86+kge_ zorCo2%d0=h6G`dIBK}mJgrOt8W!D4r%=I5jM$HQ(qaijXaVPcHhpyBvhLgXEmxnp> zvx;}mIGyvp%1~rG@ZKoj_>B;klrY}`qG)E3+@}m=1luP}0N|!I!Iab*$319v86WN%>jE1nPF z$T8xIkRcSj@pdX__1V|jChKTQ=Bd)!5qu^xE2LA?T#s#E^c75)TmowfP|}vTv^$wL zqYmvyYfswrTIGD6RTLFoZ`)Q7o`3mxx9^xN$$}rE7r@Wi&n`0cNU12pv*Y?qurTKb zc#3v}M~I;|sm94JXOV*F5~mwnxRS?p=I&va2Vvgt_3$e45;#4dicFd{w!l;x_Awr3 zY>T>oI+vwYr-ylm>YIU=)n!dG_LOCu()`^pL=;3Mz^n@FSpx~9t+-v>_(QSk>YdPu zkIp$AjwkHdOfz?~rNdQCbD9-9S4&Z?;DY|V(+uWZZ2ZKfBkQEe!9`KLR!zH0-T;vd z($PoijfMItdpO+0BH!Uo>k+P))O-umc3u`-ZPmOe;8ZN-6-{xe(tXyR&!Hk`O zq?Sa)LN6k|Iozx?EG#U%N&C}9CIPj(3ON5&PmY8MQ5by`uzV6Bfe$SBf~DW39T|%E zlXU|oTxkvYR65k{@vX$>f~3j4Uh`Gx#yObjP(l! zNFgF2M!uX5Ab-JXo2T8eCgTT>E7I+_#HBEq9!#sgI>Uv~=<+z|f^1wYw0J$oO4son zxe}}5ZyL1Fs~cea4e1S;jXs-vHKwL7?cgY&!NNeVML}{rezuMf*N`^-KDIlDWbIgvV6ReRC?EZUTYm_(Voq2_(|d*q{Sd`{q8@ zsYgP11rHZvHp)LZ+$vcOOKr+p0L=sD5_r~xU z(v^VrR1cz#wv}UMsLsRwe^&fs5q%{^pFRgzAIuj-cROhpG9G;1RJ^SV_yy?<{nU`8 z1>>dY%z3a#ItDdCNQOEQ&rLS-%=b!Qt?1@}+LDB-S(j&IG#A+P3`ZdjtBhF9L?fpwPNz*~8s}wzVLq?gaEi2_D7NSy868 zUe|$=k}_O=evAIKJn5@gWlZk3^);$RnSL$We3|_KC@a!C;wL{Ho@I*yV;O_-m^&)# z?nsq@qgn8|i(XQ1wY+qG|M(;F>LiP69aZ5P7a?Sxd6N(XjIT=gv}5Re*<;v_*P7R1 zFZQ|}F4r%GiWD7+xQWBp4uXB%0tltAfJEy+JOqG7rnlY~)UfFfWiJ@!$oa)P`+Q9B z!)lR9ys6U<4&EDXXpD(x;?WFu^#r;(_esGvo44vuB|*3&^yx^EBUkV3)=K@Z?hQ!z z8&bVK>IsB>W@w6zbq&L4+wE|!xSt4-8JTdl*Ined!S4&4ryK9>>@?@Ve1@`&X&@@OSdSE91#43X-M z7Awk~MKd}N+Y$Z1o!ru!)~N=tKvPteHE^gQ6>ve_Ne&tXn1kNTpsk8Y!Pn*C0b|%?8V)R!Tv`P;s`DI;4QiU zO+aZ0S`SspUWh=Bj-feq&G%hHo8EMGfZbS(i!T;Q-kK{qbqPf10CzQleA2HxI?^WN zM1^?rkO*cjE+OJ7u8&<17_dIT1g3@uK{>Va6=lvHmtisng(vc5{jOg7lr=1w@bLq1PVJ?4h5OO1lRL~R zPz0pfn|R;tpfVK)-pZ61-Zs1ZP9WpUeD7UiKhupm5$mkoi+A4oI zf&0HEl!c6(d{neulDg~6fLYc?v4~|8uFsGb;+NL8AD%TydEw`TgT*k~LAG58P;klQeHoe52XZQ{!B&9qgu9;OC>X-wFS^OPWOLlbLd$>Y1 z7_O+>2o%p2HZ@}Hq=uQRpe;+t*3?z6EmLAJb9ER)*l1hYaqjAb7~RVFO#BuAo=8mk zecmu%SUW}Q2<-^mJLKpQ1Z1z7enI%!i!c>l&DCNq;Oin21}GwOa6-CVyR6o0IGP zsqwW~o8W0v+jn!G#!opVM}_WiMmgRu>~h>6A+4L|lzaH3^?_)&V9$tJNWQ~LYH;11 zUWeIM@ee@&*jPrN@N5 zBE&3`FvG0Jo2^c8--7$S#K>K%)~MFh)2bgXU@d#^*jSrTzbSr+UIz6(wcRX`ca~o& zWy4B@b+f>*x{ns3w^(c2=6Q!H_7Ju7V9Ztk-rliqf4|>@ES7ZW4w(}w z4|%$HeWK^mtAb64|s4iPjTJhTMC(%_cL3xKq@?&x=!V#OE?A7+}y<{mpQT=n6y<<_^X*Ey&3r;d|wt8?eYZTIvR45j} z%3{McP8{C4@e&*Mgqy><-8gS~g}6XHO#0NcJNoM2iLt0u8^# ztQ1z}&X!dc@Ydn`qp}_hJi2pSk=pl%L2TgMK@ZGW`4z`^n6fL`xt(8UHDcQC7}V{0 z?iywMr-tU(?;p$%UAXJMSz3wcS4ygW{l+BZwImf~TO}!0y94x_OWxq08o#nD4GSY; z!nd`Q1l(Ed7K3JO$S@Z4E)S?U`WNx#0ioFl$sr%4q3+#S-YX9+(QSSid>Cs^_ceP2 zY7g+J=;XZ2i8@Lfq6nG#hwOq_S?~UOb^#nr0}ykW7aQs#g>eZ8*1j-WP);?+F7jP2 zXXV4KpUbpu{(-`7S)`_<=v4mNe~uKX5~Kgwr5_N+&4M;O<&E{xVUx6-r@GAEpUZ9F zm#^WUM>ve@5w7W+XB7q1Mu18v>v{m6ZWCgW^Lg#cW<|lC-61xm@a1g7$meIHZk*g1 z;J(v~&(TZHsLYJbsL*?s(T^KU9TBCPw#)< z-GBaPN)_gO-nO%+g1%(atOGB0Qj;UUD;ke3^7=W=p=8YP)X_aXn2u1r8yY_O?0iJV z?Dj6Crt|E+9z^%v%ia9EFAxwdWBmE!CgsO21D{H2az&0gi+VcKyWQCN8P9e#Y6s`6 zIe5-mhdsQo=joom7rEvd7K-|fxTZ47^gc>%ovDnY;j{ZLzUiRTC$?=`0eDVs9u0`q zv*8b3zACoa_ zvZKj2IN)sQyG+upUtJFU<%Znq^o<+ryf}7& z*+2nQRB{x#7ry;47uw0POw?@J0qqLqn|H%&4a);rA89|{`4j{{!+RdtyG$|H9k1Mf z{HjTZvDY2$zMgHqh2fB+p2n1`lnUpYg<%GWLhLqpE}_cWdD)nwTb4hnxxdRguHu_q z9nr~)VV9{Fc1*>nH|H@*FA|fnny0|_hkbNn#1&LJQZGy?lRzV$W>kjprGF8(0(6DW z6))Wy_*^|5E+f%Y6Y`5ji)zPeVD48Z#hTd`RCDd{4*(-jb+~WD;3pKcvDV$p{bryv zZ##FQ*Py05bdfX`H{S|cRp{xa$0Q@g(E2BVl{X#a`iz;DVs@q6#(^G04f3w|UGj>X zV@4ppcMgVxIdIJf;~9s3w4MVnA2W1oB zz|X`nKX+K6x%sZ8ptEE)leYE|GEioE%}85-i<9^xcp>UjDQPY?A(@{KfYEmJMR=*c z&vg^4;hDuPrFbFECw6n*?)R|8HO!3K-)=F*TOOl)kD}{zOPJf9-`cr(wV&7zZPC&eN{CgIStDWTQWd6_}ZM8Shr zi{S|2lgfX-+nvq{@a3R2Uzn+%0R!pM|q$ED^>_a*>6Q>E4-w`t`(sj8*)aqH6 z$A64m!R*ha2k!s4efA`z>Y|%rEpB$0K|ol~0s6z4IND~b`%YICi7he3^;7gmjiAx&*<_&)Y zt10q6&7#W+yz}A7+$3rT%o5d6Ir_q1Ddp+*@>v8vA6?e&Z=C{oY~|WzvEy z&2%RFzK&v(qfpc!A4o*eMQi-eI5ZH<@Wf6m>Z$CyV3Y+H*!vej1{};|*l!DJEP$5< z+L2{ys*y0ekM=P8Du*IzOq2{EE6Y4JXz4Oyu9DpmB7f0hnS#z=SWkFsp_(R}xeji+ zFkVT3hwb$+B?+jDJFm@A@#KT9aTC##+nJCx6&U*yI!@8JW!*x~pA6`Fl`dZE{9SR$gIp+D-1n|7313;@4Rn6G%9c4{riEb1|VyfW$a zhJXzk4q*+&Pny2gOP?j;`Axx$IhU*Z<_e?Tx1m=-v6gH@iNO*Nao5oLsNHa&_0<50vXB}%Jz8)%*MeP{JR`oft3$t_ zQZ*!}q+;0^!5!Q5`|{v20xxhNKDraoriVj~A0s^w5o1WfJNSyXM?B--0FS(2F;1e| z)!Clx!WgIJ$<64nAZUOKmbL^m0~KmR$W}A?)GEfHC5NznzN|ubd0bOHFGH$V!a!R> z0{ap#F32S1E;+h8`M#0B=Q1^j{|IP3%)8$=7=N2>haDyagGN2H1T>T*td_tI4NI7S zVP8uaUx;ee68Q@pWJtpN8i?Q$FsDT7)%HlaS#40H?-uFJ2H(u!b=0DM(rk|g`{{9l zo!1Bnh$>4|m^LMx#kFfAkbQKpZ&-Rw!4(f=jqdk8?r2mn9vsoWPr1Q& z4Q8U%%iX-Y3s!b37Uy##G)L)tY&NbCxgw>BS$RibQ}_uI_Hw=M+@fy#gcB4$4k@(V+RTlisphS@$7 z$>4jthq4u#!Ai}^5oO{L5z~BSYGR$_h-w~RQae7Tbz?sVIw^NlKNv*nJ=NO=p<#xJ zcagK-Oc~Tk<8)StxWb~h38s-)8oyQmC?z?PTPTC!awgw?#u<$n@#qJ+PjwzeY+!WA z+hfUK<;_aX8FAc`Qcz!Ma-5MpHuZ2J-UTcjz0v6rHvDW(HN7|f6=*&$he+Z1ZiKpo z*wL+&TZS%CbyD|fk(xF`I`vA)!wnI5-A8?a?4`;&xMn8PwgK;UzO3?fC2gIB_2taOj_uM(fn;oLFdag705r8r4(=E zJ)Ss{%b_M8JCW4bHLDt5h*8h0D{N4QV0|HNuQq~o0$CKwt^DSptzvu|eZ0v5X_3@*Y4g1ted8l&1>G!Cr%SO?EL?gYbr<*E*;{?t4b~lB zmSD`l?RX2N#8k<8DbEUFe` zX8T?+TxxNAt*N^ z+jaG%`rs%kOs@p>#?SVFsa)0HluyCp?`jl^55?2OS`lnncw9CL4Fdt~#|xE~)LRmYN{IxFHDT1I&nQ z3vBgi0+-+nO5SEIp%uxilzqr_8a(+M3;Jqz%$)TqAMDuL4RlMA!?X;-t>P_9NKQ;O zkq2ou7qL z&_KPg(MXJhVHK==6VK!bYEt|a=657)ovz|}2fZ3N&b(Cvv6oW@6QWYhHu2ndpbrcz zibvvQm05&KI1{dvj94NaYsEdGY^~B5IIZi!uaWN7h@AT@MI-PUQj4LC-Gv0~89S=# zJ^D*4)x-&$#=T7MlG$Z~(@C3K5lISp1?{&@1Z8NOgPXp=l_^quEun*G9}mp6 z&$&E#LHSc-x1Jnj@rW%dCIb(lwK(t~EWB zG*}H^zw3DNbDxuD*9RUcII zJ2<%nY0s6C%;N%vPz*U9&Wy`X8sEO_%ROIyu|$*BNK1FF{xsj}XD0d%ArxnycIsFq zAUCdR%Uq)Y6db<#Z|dc>!s4$wEEO0E~z&xt(IG=U<)}+-PzWcohTc!5a=~ z^0mLJ5e--d>teKYBagg_Sv5nlEK!#P70$;`7^}SdPPnFfvUOfvL*FGOGn4LlSFV$+ zy|XRLYre@(wpmFwBPogW*I%S`)g0+P`Yj2>8HA6B z0pUY0bN^+6(LnnCUqed!+n|6a6X;|AYmh(Ma7=$HYlX{}!I^{~jLF@3BM)Xyz1s0J%l%A-sOd<1$a9F_W}?8hgJ=10D!o|G6$1 zc^}v1e>~z}vkoX4%>O;^aA}n^x7~!+Phiwjy4zuoIEVY|&0GuI3%a5Ifd1zd|8u4P z6$mRpC$e`55x01f@@N>wM`f-Tb$w9e<}xG%lG^-I6m!5M47Jcflh(VSXHKe=;DkXN z#ln_8E?uyAH(GxJ@lvS4S>%`91Al55<5uTC3eO+=11wE2kg^ysLu)$9ef=~U*kL5} zq=otm*neew`$4f^_pdb%jxK5b=ntg#?y7b5C7Ex_f9`taSE&E`>E?GI@AmQEWqA#7 z5T-4u*A8$H)I+p64Ooe*raF#oQ`de-Ls8!qt9;<;Y0*bS>Ry#!y0KMZ=@S?V&2y`t zf<5h#*91Lvn(?DmAU|k~jEi2T#O24NtuHtQs6moNbB)+XPx%)+aveWSr$W3KECJh_^2f>)Mrk98I{5V(G|VL3w7Fg;sUSM<_1KO7tTC0#Y_=rJCVM-Ve=dAH9un4` zCMeYz8q1|RX9GoMo7hlm)WO*zJcM*3HgEnq?89Z4U^r{jZEGr(jc$3tkiie6nb`r6 z>)5QBQKS#Nx7Isg&Y@fPK+>~_g^n*9Rw}yoT{%6L7zX>osx*&sr@SG zzGd4<*FhC(+E+sApey7btz5Z7N(QLhwqy2V1$I|0Zjfrd8FS#9IeZgqY!3b_v ztlRM}EAuu=_SHF?aAj&cbswJrUCHzc%ThNpf3^5sOW+G9tLWR;mA#FKu04U))}QRr zjGY7^{cBfgusK&)b5@y!4O~?Kc3S9JT2@x~iQcS-pH&TZcpnv z<#rIjxDy_L>*a??D{;^n&9J)JXyhnG8+_tN6W_PNC@f#UtBWp5>eW^3PK=A2XtwXR zGT4K8rwHdY#*WF7nZNUTL-siQJm8r)J<-JS7>@It+ksjiv;O4J8v})IoSE!ru|+>daAaVck;;4ur52 zYWW_;gcmRig;q4Q{67>QeOvV{DbahuppHzV4; zk~I=pektxj_TqH9SxB-A?ULDr_T=c3)^-g56v^P}wM0QANr2;&sHgLY2kguYK%;yk zphZm|TXIZr-io@t5kM*((r4KE-Gs$|;|8X09|17`^~rEQ6xH+$>8qe0T=56iwC2aD z`?u$*_pdLcFvu!6OX-iJ13*R4I%J)DS0>|YGj6nd>TcBix?(I$nUJ}h3x!W)LK~e7 zeuw_40iNY++a^#q$x~e>(sp6Uf?3xVJFj#dK1VCfEy8yDkQu_o~ZO8)$I^a<^Kk zex@kW(3NBZEOh>XmMU-vV(?SEMJe>YMy@riY2t^d^qJTxIJ{f=d&>JJ)6c0;lN4O~ z;=vi%*RK^_Qld9ZiZ=7q8ujk6=f1p)=-O~4(if5bD$Tu|d5m3ylIRBsBXIu@V zpvRv0;3n+eLxUnuy@FB8eX6S2rFPgYg38G+GimF`55h{@>TMTq9YhRzUlgjwpQ>CN zxV0>r6klx$<0Yi}1T$b#Gs8$4@RByG4NRep#0TiTlHQ}E9I0LbV(u)`Y@ml z;Z*O2l%S_v^iMFiAG|-oSYvCAvKOY^P;+t$0$6wVxoL`|#p&dTMBc=UbMh;= z-$s@U^u$FJc^&OtYfoB(TygVwHb%F1lgD*!WSG7xwHo1Ok6Jl!e6i zyIg!Gq}oW(q=wIvrHMui-f+ZD2=@;PVE2zoWUp!S%S;#aQ3 zb*4X3`};3%?=f{cgDUsv@;!k63UI~9>Nz>JdS)%0`s^H)N~7v`T2{1C`J3W1-H)pSS;+ z3L&8%6f%e3)+&;{iFm2SY%3~t{~`h_NC|#S@N`8+mzn*kv4lE%mpu})SR0?TMQQQe zUBb=TcJ38hPd!lfPZ?W5Q}odfJjKhD$yR3Nrl-pQGm}ck7U+97Mt23I+!-M<5Yn}9 z);@d>C`HZ$xa>qL>SvN^mnToK3GH`!gglkop8Q`((bU4{ktD{T|X4 zdpkI1YJP-(_7&Hb`yw|c>^ccfUgTZPrL#l~0^&jmn9-&GF&N)*()##z*p-8NXQVfQ z&Bid-=8$^@_Hq>aD|bgoP`vlxSQTAXs}zrBI0T6DxBP3{bBKw{?0y*v?J7oABl z%#^s9zMHU}huaDsvFK(#RTZ7X82B;Q;;mx+Qn)X4-JS#bsddmyuVv~tW7Daa74)i| zS0>;H4}`R3CfoC+u>^Womm&Rh7~+axgCtDq@qHUv8Ww^)>WC;zb5L=GV!|Ys;Di~8 z7t=c=Fi>*)t#2qkctNFaTQ`yps6PZ9AL+X2AdZnD~}`nL#C0g(n>C1z4$;0Izyu^hTM?6{q65 z;;&e`ya-qelLzO(gNAzCe())Gb2>{kiSa?sz7p`3BStgQksZ*=a=35Wl zQ<1#L4;Sh-OznF3kSfMQ?x1^R-w*(vr0%?w_<5Gw4<`5`$L;MNC(B?>k$dEilUwop ztzhOHXS*~g47agZF{)wz(!QVO%m-ub#6aFs~ za896pOfX)IIWLR@KBq$oC0j3&B56AvhtBhCT<0jMy)O^TcTFX%3tQpybxLr;%7n0O ziD2;~W~DKLB^Qf*8@FtaY8Y{LY!7SOSK^K`+N&=!(N(>gm^u7`3llk3 z3JC1yFs^S8RyMFH{p^L|_Pw({0o!MskK9i2l5{MibKqwR9u>;z6Vk9T+|Tly_~I$}zGP^DWBxbIHyIaQ# zfEG)}_q8YdZY53bhZyVJp1&H&reA{a36Y-wjgKDZS*j(>_xZVwEg9-zUgPnYy(xR$ zegbaXQ}e?hmR~CmecfA@yMscWc3>@wWTAkOWRy#T`k!ffBK5d6NqT26f%G@#Ff4z{ zZV!|~K2xqx7h#7lcelU1e^`}&<5FjV*#+G6B=zXwlPd04??`v}MW-`CB5NVyceW{` z$M&zX_v(*Eb`K!OzS~Fx+vK;wCr;kuv*)zFf@-kV zBG`7?JQRe~DE2huX5x8=EL;P1c7|_HJJ<&_e11b40qJ}H!IKr7SD}j*%{IW1M(2!; z#!5DuydO1^cDy7T{iE5ZcGnw1$imM;yJE(ltrQ*NttxIgy?4uIQ+&~>p&1tagWf3@ zE2`;!HhimellB0NSVU@0nrALI{#@ksVIsGyvQr~vKam<_6Zd^B*RpQTS$fj4w#Tpg z@@iJLWg2oXBI`!dYR?3sf<~d|% zAmrVahL-~JFp~X_Q}Fp6d;RI{E6_B96-Iyj#4fh-$0f1*9UwIK9tHZrsb=18{@;0G zX@KSjr1F9PKu64+RF7W_i#5`^Y#erZUdT*LVP5SNnfi00gf6z#PXN^GNhjcKJI}zZ zN~^f9Lxm}R*YFSc+r}NK=RCLhe>2i=P^RMbiGk%S=}c|}Z_O0wuipl0Zn>LHGVaWp z^3o~WQnTQjk#{)DGcPi@4>I{ph%b0p#mHJfN_qVQ&WN6@R&vXL9nak53bR6I)7VOq z*H&<;0SAbtc~=Q)-6^dy#z{IrGl7+@JKd&uRsd{t%_`=o7O;F3#{Z3bg*?`3KtM6K zWx$T&fyQxwZjZ0F3LurrlOxVKqFHx^G<-i3gO>+nQL(DM#1EIZai>UdNTjNHG$Iii`$YOtI zuNY6eRmQ8?L0~=yI4vgVOk?}-`c^P{2Q)OOM{^YQE2<6z5Jw`O&UMnJ%xB@{Y5u(R zj4{phD}f>hABw_4Ey)3ET381_T_EX#b>QISLC&jsK`^y8+ZfRlwZq~W*Wtf1kMgsf zoh>0)^`8>n)mR=1bSTId*47o|0>%0$v8#HF&jkVj6*V**qy+#Z4>alf0~YWIS6bw~ z%S7@JNlc7P;ES40pH*;g_phV2tm2f`4!MuHBbP*poCYV+C3hVYXe8<~_gj_iE81qA z&o5dbzx-S8A5u#v#ZarDGPhdn?g6uWm+Z!Z6(ZV7$j{ffWxG+BKce~|H}>uyz#+l2 z&W!6&b0uv6qS;G)NeVP(AzLdMot=Dik0uW`4174ZEX~f0%$rL&d;9?oa@Wh*KI2l) z34eph?Y3O5EMzM*VM9Uo zvoDGdN|1sW5ahyFJG5zNL!62Bnp zVy$iHvwDt&UYCaQ`M=JJ(Pzd;h3S|T0qSa$M~M#ekV^0{sPa4-K-+Lb-KFAh(^no( z3IEn}ykuauN`7Tj&ht;50pd7t;f}Y3$=$MMY^NbHQkJRBKN_r=nhr6 zV)mPl*GneRt7a=xrY4l?L354Kg6=|o2~yvF>ophOX&1n#RT5$MKO%s?r^FpHhEETEZ3m;4RK$&KM1*O5 zBm?|S#Z=5Xlht+wB(-_|B;xjlE5a!Ate5GIeF80}TVvD}AHKl)>5_hp7(fP)#%WC$ zhm%*bmg0MyBdu$+GYU{z=LK<-QFb8f#x8{B`U7)DC?OxD)u49S2Xu@Q@sayIOIUuX zthmeBuvSAxsachluOPyen!9m*DtggoXAm1Mot}5k zcGIBglb+uD+pQg&U*rQTW&_M?EIAa@OOgnbFL^!=xyH`PZFX-~I%rjk=>M`df~K9K z&c86-94^*jOd!*=8=b3j(>FcCF8i7eQXVXZuSPJs!WAINENQ_x*#bApG2)KmI?J}X z^&dSc$U6-ZcLp>t-%;K28`OTPreUT1GFTpDwUtWL$ef6Lq3p@$nhE63#6J7d>McxI zz&|OQM)&*WRdT%MIiv`jF6Z)qX+sphfvA-l)QW1Q@%@xXjML$gd!5E>k(IXsirPMK z?4P}P&irkWj7J{3udK+7?q`?{yuy#VN`vP!s=CL)$?u|*H9v~&VE-b*IeA;#LMh~D zSZydUO z)I^bUDn+cvccUTsqHRA3wG(f)Ve)_wp8S0N2Z!9q>m2?4@4rth%7%L)G<(If2TU9&`S^inT@o+`AQ`h+k!WpTDoEt0gT!WwG& zfHY^w>rT2^faC)bUCkYhx_PZo{opuoFE!j$`U8TluAzmRIvbNSYB$j?+}JN6%kh<@ps5S)Y;$4O?_idonK?(ioDX9IoT zynU~M=n}~VcJ8PQv66n=^WPpxe_bvl6WCYhr99M|xdFnY7ShAHx8VNd8O$1}N{XWT z^NEbWaUCFWw6_{38hh@R;-|%asggIxq+1RN7LhxMas9-UQ$Rma3v-mF5~ix^`iF_k z^J7-D8hIif_}b_;Px-}{+#jdKyv1{>U+E0ga~p`@Xrmx0`}-WXCDu(w82!Iz zEYUYK#c&nBfU7_u7p;u+H8uugkY(RBT1e0xt3MaRzLm_=);9G{>3wnPh~A!4NFd3@ z+_MUOcI-MeC)@V8_oO%3lmWX;t3P581v^1v&uP?p&IjPz&e`Yz6>qBEmOdck6)-Ek z)3%a-)$7gfvN(CiG~3pjskbGPzMyBf5MXrzHnV&9Q5E*?zW|V|r-GQIB|FL);ne&8 z34o)DZsg1tbj%m@>X=LTs<{_dFs|V!(^Z{g3v1VrxDs7 zL-rmI+5m~L)1c6RW&`nnph`cH{-?G8^jSYsrv3h(j+&NM`yJ@gN_26{Ch4fD^SbsH z>%%_xFR##$WhvV?QGae;QDe4_OL~hkvrx@fKKR&;O&+JsRwkHcn||8iF(H_>UEk?A zEq^-mf}SLTUwgVK9!MYPL?U3zzcuEq97tF;vjpJwG>!ktqb`yrJ@T1hPI|%Se11eu z{xQGV#L}|{ur;Uc6%+cdAGr-dW2cq#D+Vc=uQ*oQjvw+fUG9HeWC#`5T9Bp}m-rop z0S38!kO8y9s0aNAkeWnMwv*i|r}&t_=*IoxD-iZadRA&P8RF3< z`H}})GMqNg_K+xiapZp+!t)M;y+=xkcPFCn#oNY_Kdb8Q-INQ4C^7qYpg0JZJ%2Pp{S#fagi_W;vOe4Zlacn$%r*2qZdQu9J8N3Be z@nHqQ>auXrCFk_7pr2qDVw`;G##z0Dxf}U(qf)B358O_#Vq#a5Js%`=+HtpKc?9=m z8s!&Uc*e#NPTt=qE!Nxjw6raeQuR<%CBD!sw)_BL3QK>`z7RSi0E% z_2m-(P%A@UdQg$~#8=Oe@<7;9r`?6^V9Hn$mJr6`m99z_n&y*=pK)6Jjk;#ahM;Y5c7kz#b5aLek+d;uCbia9B;M7zOB+-JANixKkU;V zi|S@hTR7uQ`^SCEUvVsEh9V;l@v|nfXLptq5AxFsdVcD6mB+eQ)NYTIo1ES19A5k( z%Dl-}?K1uC)4xc)b6YzLd=Nsq-TAz9khBC7C*VZS4gc+SoSN=eLsI@zcX=W}KkxEb zqJZMN%s;|k%%SOAJRcfZw5_-Q(8M=$C^)6|a}eNr-)fFk zEetC$Png@+Zx1IE!m~a^G1t>yHrnD6nk=;MPLc6F9w1~RK&-0QAIGCmk~TApaTf5$ z?d%^G<^_9et7OlBjhm}&+(L`bJj@x@tww6a3R*tOY}i{vS;eeUx@0AUyr!ch#!-Ko zjonD{2qhr@RkDRN*`<4#T=*t1hm-B^)R42l_dvCKZo^Ej+`)cJfpmig0L(TnUmFI+ z)_1IOYI)n8(etGt?dG*0(^MuWlQ~lXtlR!=H;e@khdA zt?TNxR9wFy1_pR0Ns*nyGUq0!rN6#OZe9J*-m7O7#%?4>RKIS0zO$)DJI$p-x;J>< zRrzyD&3ZqCDvH^^8I7_u$25osNF(mSk`Nr(5(MTfJfRK*nhf9L*!v%SlL1eP^A;GI~hKGp+>CK#i{n||vwnq{j_AVeDYZq8g zTFrqy5oUn|QI@I-#&pFQEeKE7w7C0HTJp_*Tn#S+PXl~BM%@H?8_DDlyL49A!)l&N z1ohl=rK!$b#r~~(lyCh&bP&`)>#H3=AMK@@ed*x>8%W(#YRB>Of_6PkTtFcreoo=X zJp2y!vzawKJfsAIBR2vd6W+H-z7( z9qFHH8S>n%&xD<-h61jsl;_$T)9)f_b8KFT>>hdT#vkjf@3x33J}KM>u9ju#5JokI zwYKP7=3I!dL7640+oa(kw;~kNqxoB}2mivkE2iI?Y2WSw`a?G1!HF5GxUQ`U?=Uwu zqja+dT^iTdQN{M5R#wca#e`^aQ`BHlGIq;Yq~c*k$ff@0>&c0A*Z6TRn=^lQs$12K zg`tjU#=Sh_yGO|J?s*N5bW(AO47=Ph7B12S)eh#RrI)+SSd@CtY)Zp>ji#ShSux~Z zpnBDCQ$+He(fOof1BZ2MLNG>f_5Dq*XQTz9cE`HKHN3J>7NA(buhUorgqOn!k2I1b zWf-*TPH2B5JjtjL-y;DrBRJYX@|0m!8z>eJ#lfEyyW1=53S*`y0fm9qc74X}3*D+< z&UEV{(hLFu2#w0_X(#*E-BcRXuCX~~)%#?ZPSExbHb8aoMJ)T0%8_3NFkbLN^zSaT z79%e__O^Cfiy0!)LdS>>)U-rj zJ4~(}J9XCCFMCKhjEAwN_p3SU+WiIw-O1Kq1YT_v44TxmlOKz4bhriO;~0cDnIyJJ zOiK52KQo`^`i^L~q5+8%q%iX&nHx~V6PPzdx?`0hLVe`o)2ObKS`pQAfWi~ojqw4? ziFEJHfza5KbNlidLGutopEUT)Q&cZ?W|V#g&M0~x@C7Aq;0#>@NhAF zEL``~gf(C)RQ~RFF{ez};4lJBb8jeG)aF%9ftDqra?EhvIm=!F z=vZ8gY01A2eS$MxI@hpYNbgs@%@8W%Lcgv!3>wc2aSX`K9!3O0Om;koK4}u4y-Etpr*v>{v3hH9$l- ziMbC46#9VHn6|^wVi!#I1`~@VC%Vr_Cy4Oq|N!j3>r^f>vh4a+n7Jw9^O?Z_mUs8Pl#Zgq4BqpeD8^*vJ8RhW@0!4i)7eD zsi>o!*~z%eavzlNbbQen@99u=^V*tH#~^!+6S3Wzm>$d=DlJ~f8Rv_JOc?cj&;Z5c z-K!Vde8Qy379V5d8Ds^#VyjNb&d-;8S)F&qQ*~J zW471G8${x9d{2yt-~2{n_Xx+TFMR-oCtsbZFlW*7fKa@tCJ1o^qGFjx74}!$M^^#|uikFZb%CP3hgH%n|P%2l3 zoGIs^DHhZR2|Wk8QbHKLnjM`I6g$+QQ-h2RMOrn_)(*?ul4Jo}T!s38Q&1w&su)%D3s=)GeWe|A-cwu}Yg(BzVog7qtg+B|?jzSdw zG=qTqSl4sQj-dX%U!Q%rlj=>}gZ*u>Jy3u|J?L_0gJ6^ez@s6#I-YsE!TjdEpj>wW zCU1BHs%3lMMf7JJg%yfX0m#<6znnMP^hDY!qPfQPhqp7@Pf8%EVZ{Ps%>rujI0w{V z(c_;N!2Kfhd9Zo;Y9xYMNz(>WuACH#afb!nh59vlsMuZ&XXX7Xy#7r1TOuY%`V1t% z1B5~CR@DR^b*NWLBfN+5i!dH6=z;x4-g_Fj&tnFh$Kn z0pH>Os**pVYHNieUGvfdBYg|K6T45WdA%dX`M&4Y_Ki_T`bU85LJ0B{F7@uGf1Emq zWI7y}Alb_A3Qn0*EPf zS?rPew3FPUxtQrRlbz>rmdg4%?-0$LA0UwQfz_gI`lY8o_gX_HpK3nSLqhRAU&0Go zfH81*sq+gG9~uD%My%stOZDRJuvp@)OHi!l8fX*VX6S${{0at`>$1yXitUO9T>yB@ zI+_|!TmjnS-$6$ebSX|q$~54%_pCzGB%BTMNBSIj*3Lkuj|BHqM4pOMClPt(x`sU? zv7FDhLRS{3{$-~c2M3#j>cRCySBHk(v@e8`X*26rm3<2hH(qHn9H+R68BFr2@an zra;M5-0B31_UT)IENG`?A+HXwFKi!aJWNi}M9)IVu*S-X`T3CoAskE>#upH zlIcCxUkk3l?$-whuo=3}&)4-F-15gZHgDPtq*}OZzrxBM0h7mi!hwKAxQ|y?6}Vvw z$eQVJFc`gB<>x!DfO-N>CwiMvWU)OK{NHj% zs2U(2`C1YCD~25{eSmO2Uiuj;u&UrAms`G?L`MES3JRgf>L5LYAA%U2w%xRa89?X7#uO^ zEzo|IpB`KGx8Bdd$?zRO{RETO_DZmtD)82gfhRIaOiukZV;9y^62W)0&ZBh5tRM|w zioJpbQk(3@sQ)vF{`(V{F5nZ~P-_+vl;%EjDz5Ci^f2o`&a(3qOY3fIB-3;TMfni%%jN3 zJwNv7AC921$1c9!Sx|I|^r3%6&-c~mK|VFrusb&3BlywmNj|LoIMrS-UgpSY?Xhn? z!wwwydLOXb-Mzn3rMs{GVg36SfJ6s=kk6O;zize$e7oZyx$EEm`^()>*Vw6qkT{V_ z5m7u@uninI3*hpE{@nw91jpxSXtm|*YH!-s#?N1#WYVzvjOph$ET^htkNY?G-9AS` zT!|~wzbuygVmpB55W`0P^O!b#{=He)b`n}y_0s2YF8GQg7&`X{fl9(vU~em}n&wo8i79<^ zd8E8+Dd7~%$i{Q)Z`Gbd^lipfyJ;41BWl`#C}=^xjg!9BbgW@4rFqMa1Mp5z1N#yA zVQJeDZ=>u_1-eqOVf{wNRNBY8<~zW`nr)z667J!B_T2k{GX^;_gih5e^+F!290 zf7A9ukIe_o9ZAMNCoeOJEQ6+zoi^=o_UF;mf}-+i|w z>f2`;8*d!yFZHVO+N)!+aoxLK^_T70D_E8vY)&?bY91OEK0P|2PfYnz@`rDDQMCeR z>heeFdEX4Kq1h_LVC!=~tL@nWu>IC-_BObnI;ZS!$i4kNUP*9o$Cnw8qp%aVVIJ}S z=~-s~^;e|9+&`wK2i8c#F)C8z>G>VVg)3I6&Q$MeQwMJsn3$q z4i@hHk4}?TO^N-_K=Wx-oE~^6KbM%G?pWK$#D9ca|M6qPFDoyWTPF=Q3rTF<_LW`j zTmAkqWK-eVwIgcpq&>ML{p}QLJ4kpdN_ov!WGT|$K6U-ly0fqR(mx7~xp%S-ndb;@ z>w_5%w`gBTO+RI>TB&vIm8Cl%=@udaf)DUpjPuR#;;>>*zoYo64k{aZDX#9fB*!%! z8ya3R$6;(;yLLh1=RHs^U!syG=Pk;!Z2rk8ke?Oyzq{rpnX53K8mqL3EKhHt?#+e` zd@K|OMe?V<8D{{o)T!?y5;FZ$)m_^QnZA%Dj|kUm%*YdasavBCmGpQwE~exxi<;E= z<`3fOSuUGRKIgJRIgZWE%lX!%PiWd3@?mPYNa|xiK0joiX7XykhC7F`!R5zVTXHTJ z6feYYu_31>J1PAv4FX2OIk^wJ$LB<>nthsgiE6qeIYKELdu%B-C z#D-96Vb!9Uw;D=_q(%CRixRe?s|dkNAi^nUMr8=SEMuiJQ^+JGnBF6hCz;Ga?WzT! zr^il1Xb<|C27&MJC3)fRpkaL?Y58<*`N3TKBo5+@ds^pmR!B6wCrbTD+Niifn>P@} zjL2HnFJ-~UH#+Ncx*4^d7SMD3yHF{Pf#yBt&4M25!}D3t=$*x69%RZNz|&bC>|IQm zWh5*6Ql{PL+_v<6ym5XX-Q=g)4rDQGK)j!6dpMk<>APVPLUirppe~G}tBZ;3y`vQk zPqa2`vJwy(3D2w^!=QZW4*FT9ecP4$3j=b#`#OIg5%|NK?XlZH?3&*aNpKd5l;|w%|Hcl2q1cAjWcovR6%BQY>EFchtNl`#BZ%VSf&5BC?<cA=2<5*^cP1-0`S=q9{PO7*4p=YZ5(=(`CEH=G-x!l_mF}N z0&W3R^J-)t<*!YZAH1&ucQ8A{=y*WeA1PtHKT@u+KAykUaO+X~Va7`BstK~HMwCdr z;uneu%5@E(nOx*Kc$BQ+XPpPj9#Pjh8|IBY3AX7eB8o>+M+XqKj*oHcIFwoE^1F_K zD!<`k63x_N6R+GFz9Msy<38so79tYjy4_;B4-Mo{_&SqxEPCBCCBWnEQB)rZK$fPhpwCM9FPMqfl7s_4^qbh*hE3*}BFK1l>Qh;$>ko9kb6(X$4%1EVr%A>*6ZRK$>YKbg5Ihnn_` z>-d~-Q6Y)!GHA)a@il=9zQ80SO{{aZh106U1Wlm@A+`~OQ-maZT0DpdA1pkO?r`yi zWWIx>L-<|ko@0N+&XdQ>+L6Ik5=pm1gDp|(U>uxBDoHL$xYp7HCMjfCvDXohL0plv zOW_C%aVhOFu%21vPk0OViLwt9MbN~)=7$9o-@^1G(S*mrg!(Q{%^=-4Vg9x;2<%G1 zgHV9)fYKM7c!ro87Vdnb0*0#(q1+QOn7hZ1QpGq=J3I)vYHJC7o{VUjFgY0Ny7GP? zdA-qeCf_-O@-=&nfO6DByRbqt7|<5zp{EM>YeBfbY9W+A9Z?;5^#z zVo7h;EElNvdS*<)Cb&qM$99yGP`jT+bsPR7s$|v==F^vZ%)56L8B_z@&6B5iPR)X| zz%pbpYiCrhdBbl`mLxxl!%1Uv!l}s2q!{k<3^k88cl<_%JZX+lDwA{!LmL&H``^dp zkr*4P2hB^Dv_B2G`_YR|xXn-?lk% z4-NRBTCuJU^qNKXi9;K0Vg5`jXcG{FG`zDgq1&cLa-nw}OzL{VI055cCdPlp_o5w7 zsdLr=Y&{oH=W2B;jPoup1Y965rfqfh+T-^@b>bb`A*t2IvpoJ7>v~E!&+v^`jRIA) z=#G5Uu%J4X?CI!}NO~~ScQdWgYqz&FigD7J)G(20bI@bB!#-f|6LRb$0m-^XM6#P{ z52{{Fl$}+EB)>?E=pQk;6Y3iHmQ)m-Y2!}S>8u@U8ikL2zTcCOTe*g9)usTj4CDTS zwmc1vzl#Y$B!}Q`?sbnn*Y}6TuuCuQ*%9MQn3m$;wbyBS+Ce3e`IVMG8e!@0=ZSp- zS_{6puBWU=IUuBgUSDxB#Coh>_E93Uunivu3m&buNPgOmN@kH?A{z0CMon}GP6;hZ zz%vI#T|#87l^@Twg*s>9ep%+$2%rj);&6&p>hbb($QE)EsQe_G6E3nX4n=aobd-m# zUtnXFE)^e&?595hnIZA7e35!4v1`+-pC(94u0#OW4;Uwc^cd#87)gO*ARQa99wO~b zP)so@Z!iK7-}5a5ye1RFIDKU7iz=fZAJcf;GEdhZ#%XzCPms%%TdVk#-Z+-r;xhe= zK+5OJ5OBd?SAmidY`Z63-o&Zt>S5&l^drcxllp1fkaf#qg7vLnXRhs`$nG(dstEP1Q#YZh18lQPyEJi!JgEfjGyBA#fZ<)K)-2K_I-u3*;fDkxYSvlv0V+QY zWL-|Wu~SygYJ<4*;`o`aL_DXq3y!JHLsT@w0_nSfZ)=(XZEM+3d)p=D=Ss1y*uxU0 z3+!e&JlXPUSnWoelPHPLwW^7!W1OLKBC9=)NzsaQZ+J{5X{qGCP&?Mis8^C0v$_;M zVWn!;Ajo$_{wh^U)RC5NPw;2Qdo@@G5Ive&hSKg~F%Kh(3%ylxG{MUL4c?tDi2I@26^?J&UeShm! z*x@k>@9WmmeP(YV#}7ezNnR@Q<5#~FhghW#Q%UESsJi#_+Q(8C$qU1-*g2m7-t|wn zO%DtDtegA#p$UE6@6}%)Lv`CstypL$aD_InvilQq)B{3#+Fuxbi)>T3c_=e}SL^Pa zbmbD{XLzRe#ae=(8!F+P6PS~al`I?34s<8l-AefVLsGVkT z+myU++kYskIM6;K6WtQw;+$FAv+$-*Ut;y3zhLZ|d`p)>>xIM}DPggf65N)jdnB*) z6ZWnAF6a@s@tz+e&GfM)BvtmL-u(5W!s&n8(LOLevP(HOi4cr%2!+SYW>(LAzoo;f z!QhSNp4K)n znHYuiHE{BHjfI>dEWNgn{uIZ^2yE zY^Gxnq+pRnBu8Nqk=7%7@s#+7H8r`EWsw}r8oGo1%5jYRO_ly`$=qviVdB<* zdXiV|R>sM5;rx9CNF@V0Y%# zUA@k8cW*5c8hArZ0%Xh++J)f_C#6IFClFnh0fMzlSQiE1JH<&HNOz}MunRN^M2A(p z$BYR2OWwFima{Ff>bNMyYKFp!DW}(Vyxo|9gi3ip6xhEa)?ps!XT?hN?>EF%F5pZU z5AyuI+m!#3gKWmkzI7h<91_cCx43Bjjp0pV_m1IFp5S*hpUtxmwgwluwNd8HxAd0c zZbyoxLS90tHEKvV&lQrePiW`uUy#r>m zV*MCmy988%fOD?W(o0lun=Yu$}O{`w88u zG=FTrGxZAET;YeR5+@M3KFFXNrI!@pK7nT<>=82-vx6BmT9}+PiL*-eKi3b<3bCe# z>v``6>e)0Uq)^NsgQlWV-BI}>61jF-s;sttAJaKboi=0Iy{6uEZ5o@M+CQeNamj3} zkGBWc#Dz#EW#try;#tq3l&x)T3`!N-S$38Y&}M#a(jq0FOWghOT?plecTe0wdhmhR#mf!e1$Q#meDpmD`y9p zJPDE9FzQ{Nj8RXk8*&9PW9Y}U01(aWzz`xGmzA*wR+ot;kYD?AA2(!kRn!RcW_~d$ z+J{Wt()pHHyVBqV%BRC7k0S>qOnB}*ZY)k2-09fsV~O-AdkW!6(P!N7pU`G6V~i|0 z_TqBbOXfe8Vis6Kt+jo_$uaVK$zHXbb((V)S4bsbRVyyNj8y}=&A%E71G z6Y71DK-SG{G%W84poFR!x$~;HDPzRE@ds85vEoY6obsn|Mjz>+<&So`Htk=eRgL7R zUk5u|MCO~Yjm>j>oW+>_ySvp^b8@wXmh5qWJU1uV=%o~T}sVrCqAc5#4Y1`H9H zlsz7b1e|#yC$7*W0{jKx6oTH{t6# zUn?s{bf9?$2ktHu(~=i^_O2dWC2i_fqiDXgM}xzWmN4Hk1I!&u*WO66Q&isw(eboGcb$)t_r9{j*{Mvf*A{ zz;)`nB8|_@EFYBvGmnM!m5DD9i(u13G6O@mdcmE`m;gQq#|MiP0Mi0ZZ2=2IrS8w= zbvyEwcs|IgD<07XGQ`t}UXznEy4NJE{H#ufmRHG8L$p8>_6EnX-@Jlt6%2az+|4QW zC^cb1mEI~(*C}8)3G5}7g*D1RBC}FKPm3iUbW5H{it2uk$5t0RG}SX!K8fv2ieqfU z%3!_@#RgMFN$T4#WR@{2lkH}+NS7)lW<*AYj70%WQ9f#F0xc%g<447bq!OZ)^EO@a zPEpnB)R*e&JHIcGe%_75fz1GW73p|qVpztuq{D!DKbjgogme!Z>muX` zIM#Uya@6jVj=oZME6^sWpq`Mva7!2`8T&GXbvfCM6qY8;op1lfpywK>?kcjqQhb-x zQ-Xwdzf4UHB!dQ3Gp)x|QW_@aEaJ#~lnopZ#HA-f`gxLbcg;+I26S~MyytW;m1zg3k*uA6FLPWzu zaV^v>-0|n?%m{BIu$xUGViR3E(D#tT_ zTq|MGX;#M*IhJ=D&ZtM%V6dB(1{_(cwWQ7U4AjyV`49zXJfsTWC5OfZlp!x`j)c=E zndg`J9OG2}E%W<+wTM0#o4MPwO7(=I{GM$vnAGEhn&EPQc)EcpiVJwBTlAeJ+3{Id zSZ+x~*YotpB33y^*u<{@jCNn_Mzm0q0)TGzJDP_g~RYU$p{YWcXhrPTD zdxNf0lA3G8WM7&s}YAZa_U41! zE$z3uSn88dUV2iui38K2ak#qkre)A7Q2Y7EfaTDQ0HKKp3q77cx+AHYbX~&{gC^u7 z+X&B!bY`kLqmH}g35ue+47+~3L^1tqMN>P(O+)?7{g)z*h>kM@~<{|3aiVznr6_=FU04hC`p_AK7nwuIPXv&*S-j;J-5EPycUcd}Cfc z&xxxr04j8;FS-I^mAdAUq)g%<*-O`6*}UCKf29{D4C~R4@5EgHM*p8Y|Ugk9aD1JdWzzx6y*0hMb_lz%#) z?#{6)-S*ZjHS~(wHT}8kzxH_KoIHuETLyhshgcvV&(}L}U>|xpr=dHB&X`3el3y~x zMv?*R=_i>Un(ww(5YlF|E|vhCVwUmRLOUgewV~Q-A89AL z$AFJ_g9l|_C0`|(+4-)4#KvQF;`LcZub_YQ?nL!yiC|Z`4`RT_spLDV6-cX-N0VFA zSi0s}RbF8lEAH;1JFS56<|K``N(W0No#H!8TH)% z@H(vz#A`=Grm+PID)!4VfY2rLCWtjwlv(5z{ko246u=*zcC-(18b~D2XfI0-9L!5i z@3l%Kx(-EZXP8(kHh_!TI7ehwj^Pk%pDN7fHY;himM{&%XpgNgjenWlVS!}QW<8)t9d zYO4haeX{#bik{oVCS8z!aL1{mA#-lR@^=ffouiSak{Da!i}`5UHaIYclj>11fez?q z)y&1ysoEQkquK&>PXBY~qMD;6k?McE$~n)mf2HOs%(304 zwE3|KM}7Ewo@w1xIXYkDsJ0_^g>Uc7S+-7?v6~zmU!|1H@(zdC!Wkj#-A`_89{Ael z1_;r+z02|E2h`>O(Dgf2XwVEBlhLp9=u3GLb1w^~p1Lb4vX zYVnBv4niw<4c^SJLHY#~m3JU`hGw(HCfACx@@t%UUz$^KxW4wc{5ShyEY#A1)Xr#m z>x$FX9}YMdLz9k$Gm!Ry*0g8Q**q;XiF$$E)Xq7gVPG$LodXT@8CT1CV zDN~~;4;3%?JAT!+kDbblD~MjAr@2IN%ARc2B+YHAUgo*5zy|iP5bHo{-q$?hD)(u(fdmLDQV_@^lH)j27c=yVW39pZDpZ-~@ zMSAccUQ&y-PmEBL=Gg?3N0ukEVTE0W9Jjlz(RK%pKQ$I?sg<8Jc_eSQ#GH!*<Gr63XJnYga?F%9K+(tNE1etc4`n59nX)>C2*>n&7dxP5!OBSv>{k6pi(JnOuC#dVDhV}#wi&Ead>to2gYEDLEPF6_ zcAhDSdcTos=K|G@_sj0PxrwE3P*;Ov%-6#V`H%p0v&2cu6R}z}*pN{{KUnu$+enaN z%K2jQ6!W0e6HmC(JWB|pyQ(VE*k@Lf&H2|?J3XR9PQLaw;F6ZXj+{$c-M9t%Xf@FK6R5T{nqd+mlwA)N1UB@wdldqBf5=D4Knn_CH@nqO=xDp9;^(m{X*qfGd z7xKHJ7Rbq*Q1JGhE7DCSDf3?JYCjJf*(fY$GxA>`4XPJVAo?>37(>B60i=OH2YdH0|L8YS6Dpx-LKuo?GB_%t8-309X z=uE#uEv#3UTL-4|`I$V+HgBid9_ukdf95aZ{YB`ym*4C8&gvj@WLAQVXV=WUuOQ1I z{$VW3tA4n85h<{~`)x8H-9W>;taEJ@F*hu-jz=B-<$(2l?O&8Gug4s1-@D|yaUpBi zw#LsP!egCvi%&ODFR^A6ekB!WrTbQUFjDTGnlr~q+V;Q(N&dvo5VohlUVrLm@JRTTe_q*2tv~4YS%`=5#k#8 z-{c=gxKH|<>lFj$xGlpQN~d1koxnwBuG64=Ir|;~#)I*eTH-MRv(-CzE{kNuBQ`oEECSJ1krf5aO;c>W&Fx)NH9X z1|zYn7pwB>WLV2}t(jMb6Q|@_X*HcM74{eJxZe4VJmGs&y%yvb!3pFS84|MTTKYx) zD8~RZlKi52JlRETf}$&k&lJ4EUEPRJIep`&gCEs>guPTJ%)?gLD?=CCP(B3v61&kD z?Q2i$j{x|ijYdsfJgZyl^a!+uoq;Cao~^KK%6x3`%K^9ug?BghBzJC*4@$7#I#fLb z+kgsgSxpx5d9)|mcOBu5qH^EQif|6ikRDyxUveovUv3jaJJfh!gUo{MK?hnj@bdyt zMcSDKmX6KW1s=uFwBy~9P@ANUG}ku(;%-%wSk%TX(AgeR@1PQX>q-XXfQ)+!?R!G) zR;DkkpIvMu2Ay{-)yAA7VDiQ8Q%v6An%2Q8>zMmbUPr1&`bi%XxUNv;b<@Uh#Hnch}qJmhO_)mj+%4rDCIz4Db z{tCAM@`kdIO?9AFk;eLr+PDitj{(W%{@hrM8vlAn1)u3bsN+(j4J~MPUIoLf3SyeA05K%*%EEkdg zKv~um#w=Q1xtJuw8od9+19M8bnTuoJvfTE{la4!W*qGp2)J^zx_zY)S(lS{9b?720OB7MN@ts`Om`Av zR<{|O>+EEWN+!?oj#x#`U5t5mr9&Ee#C^ca;FML9!I}4`LxY+iBf2WRMfW6B($?l{ ziQuiH{R(opr7*kq8geM*p@l9E0vfOEsZdOS`cL}(u7htQ`bS?IEFnyE4XA$q1EEgH zv8MCHH`eYfZe(qFY zZ(g;xbdh}(5~`k-PPhZ1RX>xD=4g%AUbFHDmu;4?J{j(b7+!+@sXQLXK|V`W zP>&Z~&-rRJLSby7GxKm4Y0Br{;mK1l%driFyH(j9#Il?`UiGkV)ywL8>mD~WfRkqb z)-87W41puRxM5N&zhdclLbov;b6<--KQg1VDsx;t*$wiJW2;s=GHm>!XfUs)8vQ-J zKc?u9>x8-$yrSI!;7C&qfNEbSl-z|+JkOn39dgPJtjcve4XK! zvZ0Qm?e_%mtp7pO`^PiA|Ns9gFLI9jNT;^bSSZUmjv1%?-YPOhmO350`mvZFopT(T zA7N&zIDTYp!tvvfRVw-^bWS0bhWWjOBxV?9n8atEYd7&6azGpTh#Zu*N-8-+AshxM1?_gPVsxw=&j=`icLIEZ)utTkpJ83F z7`qHpzs)KxTf%BgLc<@(=?zo$Rev&0*%m%1v(1nO0If>8yK&dMxSWE>8yUx>;{{0q z5f#@TIpXk=2Gj=)&w6am;y4l`cHi{VjK_uTGY~MPyF{;#&QnezPi1~Z-y5e6z+Enm z`-Wj=BhdM+tD_4rZ@hVEOvsG5d4l&2t z7}w@p&@ZM*tW+7F0T^2eEphISY=CkR$f_7}O3Cd`mnG^nI{AsH>1d$hcc%4#hvVwB zQy2WmGi;F-iJBqvrYuN`?KRm?*yvR0mr4NQoeF=H6iG$(#n(-U)xKy@;6l4Xhu^Y6 z4(Q#>roJx4e&;9Mm^?hq6nSJhs6Mh$mqUFK;X}vlVLrIQT-ppwU5hU&IRk6*OQjGy z$?$|3bF;{DuK*Y!m*x&OF~>EohEgGCjoHvh4O$9T4;G$X?$@l%svq~u(GA-v6?eFU zhv4Rly}?Gk_A{EFVrZ#0)9KrYYacW_rODF!pl%OHGE{z@<~ukhweqF}zJ&qrOnqO> zzFSH?*bfQGIL*+WNPXCDZc|JY?@+hEc}O0gAuBy=Yf$nirwf4p;5kk8AgE>yQ4R#* zL5k658Cb>>&Y+ibJyBe2;1rCA=jxR#C#?!)V_<8`^)CwT>L+v_)SUu-|5%YYvHlEfBO5GpyfH;TQilkIHsSVI zTkl>p0+we2AJ4JyP!lz)(wL&s2wM;ON$DQLnB+Zq>d}1UFC7}8Wr76!#h!X-%%KAx z@?-q$bskDLZW-D^pt~jVzPIQ7!0CQG{8>wHg~}b)$XC@Vn2$uw7AoJpi41Bw{}Fwj z>^5+afjC``y?p}@*>b@p-yP(J1zWC zIWOD&;YG;PVl@U|0_6B*<$RI2YrESA($n($9Shw82l|oo9kl7uivoM8sQx*{s4sM+y9_Y+>)kmCGMg={uZ|Ey!u+G!Z79hRYOTx#iYWo))qh@ zVlI}RNOy`q>t)Nl1S?y2_PNi=bwcc&62^_=jLj^*H*kvktYw)!{jAMy{+Ylj{Ujtb z9dHc|$}75{YijSds6c>kaDT8h_-9a`go8Dm@m9`~9+u%SOl5@ueqAVkq7ky*DKmO; zi_8qETYx~V^B)O39ma2Dx(?`Xa`b;UWooGvpiR)CgGPhKS*zDP}9SF5UNdx}7iaBx=* z>hev!$emFyox$XSj(*qyYxIiBwzE2J&lmu7yTeQ{R-<`v%o8cmPNb$G~! zXUZ=0GPI-MW_wPx;xp7QHK$dSjD8J_uO|{{OvlQYg-ZOoNZz9n&XK6GHx{Y!WNe+M zKTuP9)Mt*bwgVex6!K3q#M@Y*dX}Z90Sw1c)wSMdg&nuH7h&jueRD28f;G3pq0N8;(xqGp@91X61ZyKMvz{F^*&N zY!ZxUbd(9#+-6uC)38n}-v8R~yq@o&jh>$jzYNGo5DB$V@&_67=6d?#ga(vFpYt8R z-H%+UTA!AuXoL-Y%EE@xFPBBhYU8WDL4 zVTKQ$oJXYq5Pj)@7jU?%(4Vg2Gea@A>awU8ygSv{Y2YkCY8KbdfYJvE^G2*Olvao} zp%g$}KgPiv*&1@*8{8V&Z}8W&>6cAwGy`O~zx<0L|NmVoGc#7v^_}rISpbPHoVxobk%kY|rFB4%kb%Z5U(|DM<`sm*(*S#(< zvt+4@9u@Wl`mvyMI#3-_N}HeuKzb{THrK+(@I~np`i(H{w&4XCHJuJl9ogT3e_m2O z2BS*G|Czuk$2Ro79@91uWBDB2B6#+L^T zYPi)-v-C04U2i+4;w~$xDI^3{7DYd#<+TxSy!_56Qw&KJON`vLZn;~7N1s_zLp|9a zl<^!V4QL7CXcqDm8^ARk%~;SdnZQc*Y^RssH5PI)`j09Jt6?4_Lqr$I4XS1odSrZi zC>wQQiRqm#G1~5M%6iHlPmD71yR;gK%#Vv}Ws@TTiE-iE*|pYeSvt z8CG*a7ItMfEclSR{VOL>(=N?EaiL?Cy!A^e59?U7KZvcg_g~w(PF@}yAmw7VHqMb=7azs z$PDo#fb$cn=xszkWt310^cGreM>LV?4J#FnTp@LBfi%GM zc_&~Tn=tb7ZIf+(YpO`7;ooETBj1xeVAk zC;UvKTS8bXZL#qUEy|y!e}}-j%DlnWPg)5}KXXDfi!<yr=M(Bqer&v$hNVV_SzpQgsD{QWA)LpVd(ci^@ z%t8dpSUcv-%}`<5lHiK1i*%zuk?F9urZ%w=(!E z2z0^Q?8j%-osjA+6_s2j`eV9Tnf;C*3iEc~rW;$GiD%YhzV8PDYE>03Jte|pXw7{` zfZH-e%(>e&6z}YE<}BLZrY#)(iO80C8HuDbbY}ReQ*rn9v*@3)kk%!Z)g?nCoz4UU^5h;O?)cUO^$8MXKX4FI#^Fiw@L( zK@UPr7C3c#A3bzE-gHOMJKT2LihJBtTXG6lu6_ke$utE5BaE{V4|#Dg}VHr zVjSs<;EJ(!8OMe~AtdTRaMvJ(ac?e#R;M0KB+=R+Z6^#iPq`YLe11bSj7MNfW+|Jr ztIHZ5$zH+tU2HA(UF6s$QJ&8xnMq|f$u$n*HEMZ~h86fIG!MHx>(#xzU zpj6$JTgRDVIU(+DD+C$^jWJhb&M;0cL|B;^o1%dRZ|2Z!OB@xnrkIV{U+?iE$c=|#KT_w9{mMtCM>}9vh`JmRFtLD!!a6@Zyl%VX~eN)7V zOUY-?p-X;z*0mcLHwb!SlRWK;rC`2suG>|L>jWiWTD>af8ALrawQ-a<6aIl*^vW_@ zB-e1R=^QYvcHp}xLsEzokQx*rs`sni(HehJRR8Iv-CCX2AJfcJITIor2sLKI{qtdo z4%2CN(?uhCdBQ1BC_=}Ajp#A;G@#x^zwZrHoOY^7mRq1q7*KZJE`Croq$MX50rlbl z0EFu_QF0T1So|SI^;qLzumKSACN>L1O?W${~Pw1=)(dA`dJnM43nl0uX zw6MT;$O$h55ynuck0e)lF*DU7F-Nx<@NdRVqcC&~v`|uKhkLN@KK7UReCrRz_VFjA zjZHKHa~L(q)i1ZVG!NaxkVXq@X6BbYChJ+TlP?T!n9ztG<#t)c^vJp}n1695kG?TH zi6AA6ZbqI`)(yq6pknv9iCh5tegwGXH_dDaHWiRbQOtO${X|zj4tav~q*`#sL)Egw8#O&Do>;pU%Tk;Y$l*o+(cJqC@D21qleNw^{485Pbcjtz%65DE;!Qe}7S z$^t`gT&WbBNIQ*oSie4sZ=gErr|A5mqWGsytpvCBNp>!mF|E#sdD*a9jx{IM=9YeA z)1AN?tv$qTzdZu`3QgYh3K==eIr*Ldt=ZHc!FJo)oNC^RzB^qCY99vT=Vn!FtF@3K zy`#G()o;}^K=~f1fj_Xk!!5i&@93igSetAUn;UaFzR#Qv81KuCzee8d_cQV#;QiMF zRK6lBc7VJ{c?1BofEen9Vk>ar)JIaTAN9D)tuQ?p_P(*1BuXFvY=`<%);`8~)43qc zj>mI$#cPx$tfDgBWW+5;SuNyj=$}frDIq-Vq}v|q*ckdz`n zsEf0osjvHkY5GZuyV|{*22}8_wGf2ew<}j?)ZR&+gj^%R7sjz%Y#**lIaa-&kS4xXUiCx7Dn-;WF_b!Ss#3m}D zeR9@ik%8bO7sW^%dh$MW6H<-3^(Qjm{w!x_Vsbbnt26<-yL@4QaZFje(iqV^qaJT& zY^#Tv9&EOYolO5V9XiwTmtEjpVBf6FRje6z+%pq`znnt|%<%B0y_5W#4997rAJvkf)vX z-ObK5Op%y$k;@hyWIk*_0d#)(NZAVRbhJ8X~2bHtV0VstVJM0?PW z?r0YBV~ZqqJBh;56`%V(8E~9U;EIovQNinkvT`Y5nxGaA#NC7k4U(f<0mT>@1ke^i zH~N29dvcH1$U))lfi!i1hHw&1de-#r8tEfv%~Acc9dT}^5r+$m<`n+sxgOhkKc!%g zeYdHywQvj9(8#_tEd6x&*Sr1&Y4_W@F>&SV$3@e!@C{S=O1D&^8)NN%sp-}`G~(%} zQCx6Z4aP6Q<_@3_uR>#ILp<+L+0YHoJoDA|?^Fv-F1Lgf^uVNa*&1%N)O?E1?T zcVrNIzZDjUfW9#iT?!a(7|oB^YgVFe>1EuOMWz@YSx%Z5iaWcbOND5QcSd`1D_WPC zKfGr@EG4}%YggmigVUWt=+u9<{yBrm6gX2yPXc6A9yf1NgT2Q=jumNEHoa9nMo9wG z&<1cL7q_H6?;;=gnQ4ML(PO?R%Jf3^hm!bwM)o`_$z|zg;o_9yjC%lkN;Uyv%)5lL z?$tRV7#yH~oJFk(DmyT2W(DMSsvXU}XGI6AtO7Gwfa0^(yAX9WFU4CswBVCvMZw%I zZ`c8kUzCZePi5Hx7el%fJG-}emM>P8Psu(WKqbId(-%9)Uc zf=e%O5cOf_5cNd%%%c(2EbT2cZ88dls2T=F+q6*oC2_Joy>sJu$Zkq=2tMjqpV^|v zOqxQ3h*w#P2IOK>dkd5-8=xe~x_Te5=io2s8xlw@m>juZRWU74S z#9SDJY*YTdMzO_A7pNGp>i$-5n!8F-uzbJ z4rROs31ut;OKW|O6aCPB^{rGfevh&cgv0nNqI02pQl-F(oG_t?6izL{Pxh@jS5qI= z)9{=0LPe~Tc?mE2*JMH3B=Hx95Vo(*pChrEi zKR9M#O2*Hc7sneziPJLB)0yklKW%9fSi{~uWj~dvOsiPMH{^h3`)93!S;ZI=)?`x7 z7U!}DrscHiIg-AqEu~;*Shn;xJ@#Pa9Kt%>Rh(<7x@@a)oWUe$wyi;$FjJ&oKxi9? z>0>q|=dT2t_Q&Tc=uKVyMr)?8V=;#?0ilIw4psHgrZ zM;3txt6yF<6n_)f721k^Y6QF``oy&&0t_M^H{#?{8M~*gyB20^G@lq*b4@1G=#x58 z>C`>QKWA6sw#uKD0Onb0za~F~yF}I@yPtzcL=+J^pjk%|OS|Hzjd;C2+}(MUga>Q# zS^H1LYQ+J=_bBJ~QI_H%4&!Pw_@YT(#T==sKR6wPsh&yvZFe;xzvizmNR!KRhKC1) zayUJmdKF6IW?yMtbruWdC&g3%-G zcHiOOH#Mu!s!mji}^sROe+EhPn4H2-KR@W86gi1`7nqW#iF<%qMY)IJ=G&sTR_J9#73qq;g^sKpNL}+VPfyS(d`_|H7BVmyCjfSUI zK@-9h2){X%03+U~s%U{{%l#f2%WbIphNc*2v!6B(341c6(YgoSWWsbvM2d9**|St0 z=~ez@cvHD5?SBAcl0!60;|y=N)%P8~83eG7JM_HA~Z+A%YrnyZF{O!+COlB{HB+-Ltn0Jx9V)NLyK($IibSETJ&YdoIz&Cn zc^|)Zz9KhhWqKa43Kmrm z!Ia`{A(K#0cijX$ZY8W1eF6$#>K2zy0W9d+u;w?!sS=@!rsSzQip;XqYdfohE{7j* zp*d0G)7?t2$Ehb!rNj`t@~5{Be&W^OQ6cT_#Rg%!{-&AzDAUpF~Fvi0DmIdQxH^7FGtq> z1vs^LUCty<07ro(SXItzr$sDwE%6M>;fFJx%%Ty}hWoP`#N&cvJhOAm>D8$Mx1u&{ zESk6sk#-9*Y4_-mKN2%ZhJUKZW~Y@;-uq0soM9rA)q8`}y{Tk&`Mk?!NlJ8Junj^= z3A!jbCk)z4tL}132K9&+prf8dLEN5I;OX2I_)g|sjyQ?pSZT*zDO24;7I&>eNM)t* z)P@xNF_UXaDGw&NsWvgkJD`(AR~R@Dl~ANb$K{Lahq0COF=dY)Vr*SX`{wHFBu36^ zCa*n28Vud+E4ZAN`SOj$qetLjKjp-<1CF<I=F+}EV4YaAueQCj^17*RA7 zU^OM0yCq>7Q3M&Jtl|M+rkZnXOD8ygd2QN7Ben^YVzIHQC-u}@-)j@n?F{F@neYltr^Jf5L(5GbB$lbj}^+l^NZMKCpWk4 zJW@0khW{;{T3;<=<;j9nWyn5>dz4|WZ1fJ*hE$gKxVbM(w991}jN0T}Jz=plZ@qeL zI7H_|yBsl1*>PLWxY{B9thG-(jD|~NE8ML>lHRe^#2QKLTy-d;JAS2uF^??<&9m&-kH_-uJNH@m?`#9yJ@*Mxpy%e;4gF7rSX8OG2FU@ zeLCmjs~IydfYcmKjMbBOtTG#TSe&xiMjh>An6I9kb9vl|ZwG;wgzaO6yI-vFcWw?> zf1E>@Wkc!6L0S+oe7>=<&YojR0PtF=>%)x2bsP0hF%vSkO?SJloek(}bEh7Sm7ERt zhK8s=aNJCorv|B8wTEzqQH>qRw^ZE4mZoUOuCAv#P&A@a_V_Gh4t*4CfK0K+n77yK z&ob+8qyvz~>Nky_j~DqjsCN!_?S5oKcCyL0k&j=l5#+UYL8;Si>q^h zC6Vd~V>-UYBwBF|7UVYmwwdN7KRXbtpLi!h|M)OVJ?bjVP5NGG5!+!20SN#fd5yzG&*m9FQNrsy9JzzHzO<2=y-(G)H`Z$LUuu6)YnMGQVP;rm6cmg{C3e&_lZLpzcugQncRX zv0rQ6I#^yH<$CGgcchF~8nz;ztDm9s&=v=NOfk%G7eI*wl~a8X_x|k`q2fmNB@{mK zqn2fyd}mcbh?9bq!!c2nCV$s+W$(;fbWVFwS_HzcHgtTK`>p8gWFjb{0 zpGdWL>V*|eI*$>-lvA4adkxM=y8rAM>b;?1*%eH8euSBqH(}PL>7hq<8m9Q_#&0Yw z^?WYAv@0(DQEM2guF28-!U$qkAXLFG%#3`4%@8>zL~Y~le}Xi@a;G<*8*Hd|dkUOF zgYm=>BYV%mq1)4Lle6m-n;R|2YpiJV0-M|)wbOa;+P&L-FP-X4I{>xoJh9Ood$`1g z*vZP$JE~*MdtThl{^ZuFb2FprFgmi2?^n(Lxhka=1g{vgSxWF(_|sXfg?YAWZ(LfQMxhmRcfl$$t``Z zRll%*=$nc{eLS2u5ak|lvZi)JVTIiv>f!Q|{eie(MxOu68!g^-XCf^uoJo&S1*+pF zJ$jUrQjqke@pwS1a4)?s>lV!XoK&_s$hfNvA~bLN;O(tJek#qSUCbiEF3UFp%ue$V zWjPK~{}|PA4Q~8CG#%b#mnM$CsgEjZv(H$b^gYbi=I2o#%^5`1cCSF;>eAB!naxF=sQ6q-w$ebddiRW)1) zEJkc}*oK6aTT{%b*81)NhsDhAZ7ke>nQt=KwAa~!pwC3~bF7?FUc+LbRvRo%mw#Vx z!HT^+k0Aq?))5{PByY`994kckx?RrYN!(#-?r$v>D?1xSQ#r2Hn?tfjHX2~E)%+f1 zhxlxuEIJ1B{VJvjvx9ki&Sf}4v=Yz!Hq5rUp{;;)I5d&C&{ zyD%AlOyvxu<}~J>KJFw~CpzLygXOl_6;5OhM7XZOR@Smnj|mlOGiJRA?N6uAVyjc2zIAZFQ) zJhz}wbI#%zNJz*7oidWcWK-U_Rj|0o<>p-p-gV$8QTDWCm&(B%LTkc4Hs0w;I{saa zmj-#C-A@LJNEPFR3xy?BR*9A+?%`)k6oBnM#Fm)i`Rg8tuJ~muhd&Mb~Fd>rvWq&Z}2=szG~&6OsK&pQ+2WP;5?5c20`dml>V z>>;GPb}UnMS7T(4Q}8~(t=gx;DKn^*^ThZFGxVdoa@vP_gL3Wql+^8dUQiuxiGO|# ztgzv#)-3B1N`*f>kflPj$MYi2E>mBfleY8%5n;u{jDx`cPa$?!FuF|CO;YzgKv1x>r+hU*_hK^bkF2kBZQ$|I-S&T+i(U*ZsZ&eRZ; zmkWSrp^C#?{~!W3C6ngWTv_DJfTf5z>R3rXGbcx?ajj^E!S8WO^trR$il)2MYAk=D zZJ)_o%Cu%F-fWEWVxkEvsNtFghRV+HElcA~oichtWTP017_NS7B-k$%LxhIE1}z^A z#MOQW=cx@B`5k1=(sr0G91B41ZH8AwBpS0)ib0ElhvSk|jyl;`1`p;b=XS7Zi9zd1q=-O_u z7IwHfKpUIvu_OO#R#qur3`EQ-z;^R2+Sff|(Z*%0Qbp?~b>kaN4IAGR)+=b(d+Rj; z)i$yAH3xV9o(VR^u@qN$z;Yw9U6s(SuZ}*rnp6`fZhg;`;CxnAW;Od$;z;L8kf+~~ zo7G%94&zp=n>abSRlOKYb z*Y&p!V*Z;5D>}ddA(W0o9poKHfc=|oP$Es9Mqh}3+2rt$*~Na?>w>(|@qVpo9iIhC z*MSJwNlt#L&IxYeW2s9dvnzAAVV?RURFfdAAA2-`_IZ?X1en3}2FVd`CZ*sYOsjaO z0&oqF?c}pgJtgoK8b<=66Bn0^q}|ja-zLX9APOBhhAUwslXc(3<9XDEXT8DsTw#50 zQK%+(Q+V_`pY1jr+rFh{t~%~@-%X(C|84x@8gu7L2}#9+FChb#1Dh=GgW^%e6bc|X zD65&1kLF0Fraw`S^n2`51qsZd#<-Kpn{NqndMyn7{Ua`LMd)TvH(@5~4H_Q6tyfXZ zb1tXn%!k(A&TBCH^-nn0_vXQ|)3*1e0^LvrX_SHEku{mJ8GBbs^?x5MDj!UJ+3Bt=F&NUJrvWqPSM@-ePab7N4GtTb{Ymoa1xf6#W%{uy^Y;2-KWXV0bJ( zBeOO2$-IkUmRxfUZkoRqn##C8?;;+O7;XhaTkGbcqkr9`3?^)909&mKQqRij&}=lP95(fd1M&DU zPXb!zrEHB{J>5J=m>+kEOtFo;!94aBbUq93&M7j(vfs-2@nY(+x?taBvK;flZw&Z^;q=%HYy;pV6mx-v+7ZzNb!=; z=@%S*QkkW^*AETVEY8;uEFYv1sicTZ4w?>sl|(<8L*OIHWIuf`?M%T~*w(QBC|g*^ z#P}u_Tns=*X8ePzjRrQR7u49FNsFNW@1pLzzBc7azT`p&G82#b7R3z;g*qXY$XIbi z6?{=7y0;47DRvT*(_zCkYmL|-Cb&1=g%$p7R+jR!HFj*Sz8EKQMRko{rfney-~jz$ z2m}S<`lsdSJgLup89xm~3OI7u)9#B^RrB_2uz^T&P?2lb#BIdJCv3^oqN31LoaXl#r8qVh-D;DbzXh zp?#xK*8m~SDy)$Cj!fhzi$O)JO@(h;V?XIo&!SIHkZ@P#Koc6?77uJYUVyf$`TCMu zid)UJYfXF*id$L8-^`hyCJ@PvJ;n4?M30cMSgJ|T@k@QsJQzINV83vE(F=m z@Z5CYM3>Z5-NX7BiR`Pok9szH*_8#GfB>LHPRq=!J(=NCBDe?2kR8~`XCWXnxI7<= zdrQW1rr1LV;&P$H_?5YG=EFH!(m)`uW#RSCR z^o}nyd#bdDFJWQk6`JU2wHp<;OgV?UwnBAxivlYzCz55Mn+?lm?1Jw)>M_IsWqZad zQDb0qY4NFJW*dI|%8g7-X>Y)}==_vhSJV%nU5c)EfKO4rkRhuc-@S3OTdMGjn76D} zP)}*7WDkZHo-`=evApU`ih6`OW=+Vi?j=~a?oBQcUfT+KZSePhd~Njy)9R1E#1Y`r zC4SaIX~{F)_`A%g=#&(sdi=TWrQ7a$Gv>x9R~t%+3;g4iA{KYOS6XU4%y_}3|pJG4H*E5qtVek(!_Y^MjAVBL*43d~c5P?%)4%(y zm70851}_DVpysp{E&(Bp{8ALGmEry2H4PRq; zm=;V8rWWkjUL^D;H-RXNKIH(mQQaptTky#;j9qh`^T^sV%0PlBvBFVp^jnU{sz`|H_mPkO2QoZN#8*Bdm^) zDZaVJTRSl6vR|fhGA6c`)^D<~ROcKqUW=iut9s8db&uqzLcvKjDJGjo6fV*=6Z%&=ALjZH!=QRSq1LbC`RFq6Ebml54hwp zxLoSM#txN=wa~FbomAo1sS`kH@j(S&Uea*ZF|BJ=xb+2jt#ha|$uig9uE0YKH;OsB zRpp-#JUK7h@E^5ve#_xVOQwVMi^|m_u%O>~9C(^6P|)>!H06UKV`0N5Pme z3TZlfnRL22<|2XdMrGG#Po?j2*>Z=h+2t6MG|gDTcfTQa=-@Zwhzt4}$6JKt(C})>clM-7nX!>=RUi%Ro`Qx(>J7iAB6Lpx70U#npEtl?HC3OObgDM$8yaclXvYZjh) zUeQd+PH)u_n13<9?7Dn#WwW;beS9Mv=~lKjEnew1m?*%1z5K3o_pw}iv$XE5M;sGE znTRXO{#C8%9403#V$|UVxWNsGm^KIFx6~i~dKYF+SCxPli=r0nixANJiL5_l(a#6Z zPzT_@Jhcgcq15y8%DlZ(vjj^h!3txzJc$LJz-@Y_KzhDjK6&o;fBy6iQc%eQamjy_ zH;4n(TDl2O9BQGCvzGCy-UuakW%&D1jA`y2)OBzUSgx(~96j$Cr*j(` z3!z&iZTz5FBR_ZV0f2&~O|S-v$wc{LiyZpfEzNoKo#ZE&S1fB}3)=piAx3vOBPTLR zCK%7fP93pUi{<^Pj>l{owX5UJUUQ+~Vs`N|e8X&++gj?k?#b4li6Nw2G3t|B&=83C8tJhoTQ%9Cis(k3*Ky@{b8w#?dMo(*Gd zLv4C%OxJyHSINYSK!nNnAjg)k+DJw|;j3KL2}eI`y&(@%N6M#FQ8I-iL0LHQXmOP~ zXAnKKN{Z&gZ_duI)sggnw9ibYZdqQ2^hU<8a}!%!Aeo^B*1bA}JZPttz`_7C7X9a& zgkWHDw=~&ggV$YtITeg--54wuTiL@PGBoQgMNH1D=ZGy@zm*wY-Hx%;tSw^K#F`z5 zCCAR0f=_&2UD&AxWV6cl$nmwhHSM7_mKO%xnucukh?$lW3@M?7x>+FL7;D;>-7!^Q z+WE8nlkCyWMa(EhH>Ng%s997#UWx9YoPON1dRAZK_=MqOR=8W>%()GY0Swuv+>eJ} z3ui$pq~qWDTZ*fdCH4YkxZyVp7%G`EYPliXn0?K{GJLO*rK)o9&}rR&_Izuh-I4^> z_y74>^6*P-YRrV!|NiF&b*Z2Z_^yYH*fd;T}D1G8)>Wpt?p z4EzEJ7FMy$HFd&%&9>FZo5fv=Sf(2;SfD%&poh;fpz%;Goj9O=ZQO8U5|$!V#A@Jf0X8)YH(2bQ zwR4vyo%ft8-NKrfhK6|W47a(`ec{X>oFSzLNBON+qH%pi`&Pz??2dP)CHHX#*n<@! z>un!We&cM6Pj(0AvcJQh%FNcBRw55vgA1;PxDCGDt??LIh3+D}gzw71Jpc7mfbcwH znGrC?k;|%Z;_A}NARxtaD;2EM4oldTo9e$!Sww!aH?W_;mr0kEU-QS5RMOy9qPNy~SvsQ>3vD1P1LLM^{RDLQ(b4n)ESgBscDBnJF z7DnvjjM-`_hP6qg>_<}(Sy~G>jiKkp_P4(+lpz^X0qjOT?J%DgFnM~*QPyj!3(JzB zPwW2Y(94~)d!ezfH$GynF28OcTh_j^yhVJ7vBuh`8Qkp&g==l4cGK_RuN~h6eV9{- zNKl@@Ja>1FaQ0enG0lRXXX{f9A9lMTs zLJqw4<@11xI(t0jA3YYj%sIv9Im4LRl)=|PJtk2+=$%*dT10ppBS1@&OQ zciT(t_M__k>_kb`x^+j7XVlBy(;18!R+U7!B3MnC9df;*bh5}A+w!}RGlJarTBt}~ zex!VOWw#+a#!jeM{6-_UZ02e?j~eobPrW*M)bZ-cMcLb&4ZGi(J+&#f1%x>4dsbVa zS;cD&6Fkz%8&8bb5L8K!&stY+J5v`x?00j!_CEu!+IA0p)CYGGb6z7p7v!7u#+5Ss zfk(Mx|L2C!TG}helHdcGex9B7#@d_np65O9)O5giW~_k)Yjc=&l+ooK&%2AyZa7bh zIf78}7gF9j<$GhI6jOxJ3qhJDW`A+O;|S{m?OI{=#Er8lb^6Yj@$J+Pmb-gAH!mU( z`!7KRPY=g-@khKM^&w4S&&b z?gCtN*!h+gBH@WxcImHzC0O>dBaxfI1K`q!u1yQ9-`QDOR9689aYdanORam_K62)& z&eC$?l)vLFkB5i9tID37*KB-q!pc7<6E%{2WET|w0VnHw`rBKE+2fi8Xb)9;BW84H z3pkoQ2RmXg*EZDLKAoT#}qnoOQdhuWkO_m#9_uTLuJ3$e%ya!om5gF z4;T@F)*IgC=;=$JwdyLsaJO*4aYN9u0+}*W>VDi4gUAgtKg4PVcIJfL>X(a;ly?ke zdf;&NZ?LSFsAG%tI`@SbjfOhc5|szQ6}WRm)0A4s%Ua%jgs1sEoxXIyhOtAKEujbR z^*UwQaG{c6kK*m+^n9A(UXk-Rb4~v_D6zjqXe@D3yG_u><2|CzWd~f zk<-5(AbFc%-uM4^c30GF^G5&CVR&(a=sa_kdc`=C{`xyij;5-1r*4@xLDZfxu~x0V zG$_+lRU5uM(==P8xTybvWVq{!Ctvd7-2=fMm1TRj0b1volUTOq5CT6FbR$tD~LeVVM zI{nb&g64c|$-Y(wJ~E0IqdJrvy)gE#C^7Z@(<&z1GdDVW`! zUro*rWPh3LUp-RK*b%-FW_G$MvNY6j-3zMnH>eF>(-!;vcPIX_VCI(6CSxrxmm0Z# z)-sYhE|m+DSY1lQGSdh2VkfeuI=xO;5$}+HfB58Y?23jpzAiY$RU$zmPKjArQ&sJ^ zBlXFNm3-q76zU8mq^|bG6?p^J?QDD3Uq2p86ez%&x(TAa)6Hl1<;g2uvPKNrKYiC# z%TmCf#Y941Rn5h2S$1#X>JNn{!|hRv-HjX$KIPbHF>t}!$BxZOM!saq{IXW zo0b9z6#|9?ff57+ky_ysWeJN~1Olk62?}MAn6Nzrgc1=ItP29IfXKdtJt`<7J7JN1 zhmg(RWuNz%`F%6rAMnmM&x9Fba(gG-_jz6CcAUq7pwORq?UYh%D3$ZHiHeI9Zn3_a zrlz^=4bL!QpR$~oCwjvep3XekMd~Cj5qpSZ3j3^D`5Fn5h=`2|2XCJGVz+I2wYv-GIErYAo&?_eX#8ds( z&|ENZ#sTNdK_pp!G3{AI!S&`->(yr(ikQM0BYrlm{RBrE;s0HAV+9rLbE~fnCJp~kyamPC$A7J zY-r*T#wf>H>d?;k#So+LYI_7F=d&V~yEn%hL&J z)v&=o9ugYf{=CD%XF3&Wos8n}`a!_Jce)NMq&C}^^?(fk1nFMlly=`ECafu$m16PT zfY@)clfR=8Kf!G%sv~3#`Rc)hX;+?r*-_s^Ge2W%@5TEV6kH!$crk5#Pi|OU=~%kz zs2{3!H6yzQ@U){QK0`c(o}`s@Ou5?5I{a(nr+-)7@N~zoe}beykq`(iJ~YFd5p|%c zm^)2M9@-v9|ByU#d8aWGa`&sDZG>QbdTWhPv0d5L9Z{tkIWa!t8Cu|a?Dy`Vs<^5~ zlj)2$iBa|WH_ou!S^zdllo-t(^@XL zWHln#=fE-8R&D|?2Bg#%K0_YE?2PI7b`7am{%44p za56_zD=J-e_@!2S4i{NK%ViKhR4^vYwNld2y-eiqD*Mho$-6QX@Jaz5txUX1OR$!D z{6z`kse~Vwa%H%emM^-<&6fr42=U?Lkp_Km^NDIm_OKSIQN%(1AmH1skF3odY<5LQtJ6FCpxX|~S&LL@FuKr< zN)W%eGyI+dJTGIdSAQdVJUAf;qT)snAqLbkX52E zL^SvFy3k^b{TQ%|74y~unhaTbCz#_o2J4;q#@#m~i*X#iVcfJzU2|Z_>h;yL=ho`Z zy1a?NJr`y*S`^g0OmWn{)~&tXg2dTH?nyl9vwoMSWP$-|V54HM?AE+sZweOXG|kC@ zRw{=p_UIV+4GkR`k*ZY3RGyWj?fVRQuO|+?cy!)xZV7q}ZK>S&m6`lov!$6Uz$3`t%GmE%ZJ!+YRX zT_qe20NKOXy9rk9w`o?i57OcMDv^}R^B zh4)EN|4?qfAT@9y`pNT_!wLwP&O86^C7dzI0?nF{Xt& zcHDfbQ-!uauIF^(3x_AInMUbSGeBjAUEIWcI8U*WRm2Q4_kU%F=JHQyXB}3@YGh+Sy5j`J0Ca8eroxqanfr=n zy!{Wovk#`l(!kGLdypdAK%XCnn=|T>tO!is-#Rnq8Ty+4AWJ zro4ju5387}>IJTys&LtHiWR@nHB;LoNa+a)w2~3Dq<-G+=o$}Km3Lo+Z~bxBv2xpz;E9~5j(Ki8^3{2-(sFV~xwkuDRN#p~8TcE8q2XgWD{@}2OH>a4*B`*8)=RAC^T*QsEeq3@S?FLqr+e*UHX z7Dv19#9S}yVkb+3gL6BLKA2L{TStG*}3QOJc8N4-NyN$RPM*W2(t11~#QlsTIo2IaB;N&Oa2Rin7 zF*9E9^glyxGj%m0r{E{b_gsSK<%3_QKC_pBd+xGb|6*EOa>JSHQM~1{?LB0?$0&ll zUyl}{Wx8A}!P}zcdsejey&A&q3+>#8>s|?YW?rD9p0a-EVSxA7HK>NryWJ}pe`Nf) z*TR%(%@UOP$|a)17w>#Yj{gGozeX!7ar;rcALFf#rN>Xt zGMxQIliAQ85^1a@RSc*3eCys4Q+ zP$XRtknBX6V1Eo0J*lo(#-f!pY|Go-y0htZ${wtlm%&vjzKPM7zAsQL58}KdJ(^z) z-m@|9W%AEyT0V?&*$8a~!<6r@=1I(c!f;?smP2>Ln$P|A=X@CT$cWK*@C??&;Q|L6 znKD_YyHg9!BC4p$w@uZuE`wEr3i;0HG7~zkcnUc)0&p|JPcS6g0OL#Spocj`iJk4g z-IO(V8C@ZvHZ;>x@^Yt95p!;AS610BcPKGqC)Lvj){ItBskh9O@kK*JQ?xto9CBKp z?()BNjBKT5O_**JRtPE8yj|td<<{KxPqgObz0Z(bR%--*CJhl5$URI#3U?+nq_Xcz z$$H(=!j#W)_c2#?x&C|Pd^xu?gvn%lhh7R)fj9cs2;jNSb}F98(1`tdPTWS@JxF!j zHJTC7Ztw}o_j=z+n9AqhZ_@w)JH`5t?L*@TzOhgD%~>*FC(MbGSLew$@1FP!2_4-1 zAdyg4lyiFD+T2@=4z4ufZ1XV=r@_ALnuateHgXQ!1w#{ooFB8WIfqx1=5N5+EU{$q zrB~L1MR3}KdH=UtQFAwGrEsMS_uTz_vQtUgcCZy0o29(F+98d6Nd*f1dh3sCxZIY< zO-vm96(@35Z*%yEgNtV+8KQ=#pCQl7c5``&>!98PYDvsprqLtR3P@pb8^m5ROF&By zhra|)|0AtM(k5znRJH?J3IJ=+uxbJJe_G3)m#~e!%N9=Qeuhjx|4w@anAwzt-R$|EWZ@)n6_n|ehiPmO3b^btci4bUP$;R^fG$q3 z*P;an|3O&na63hTCpW5Pm5L*-byM-V9cr8-_kO-9kM6P8c)ezYo~l3ifS)qGjN?b@4;L|ZH9?Ty&X%Up=^c-ihZM8E(H*i@b^R$gsDZCILW_Dibn;;skI+djZe zEMNjTSxA>)x4gFWpw4gKrkeb23z`~>u`VmuTY%hMGAGm0)SPSTR5J^Jd1u{n>c&b+ zbLnV<%wgCKn6(N=o}4J-i^>#p`0UKZl0iqKGyOmc35=8J(8;~TW&7a72e&-%T%YNY zco~+gA^;$tC&(*ChLRZur;up*Z_81O%6eJTo05$GIAh?CsWec-3j~*g!xgLwXB$3% z*UpJ~U|$3J@&K2yVSIlWj^G%7mb5)OUwXl`Lg4e+u86DL=wxy zF&pvJs#ri9)BsBD#gZLh&hNLxh99Q$%mXisyWCRk9q_B;EVa-bH4nhmEL2iZ5efZQ zBcq>6#`s*Qv?1cdTr%OuW?sX0_U-2ajQrY~Bd&G4k**Z;7!liL7jWBi9Ms^OfBtq^ z_G*6F;u+eadqWpzmN@AUS-ki6yd?DMo)QbSK-nHI?jBHkJNGGkX1;{@&Ub!O$<%us z5mmmDy?ZOi-Ep`8ts#F%#>8)db|w?nmxU6Pg^Ut zgQoA(bY!@{k(~WtHwL>WfAtW_-Y?dF$Fj#bFMXVDyO$@Yht)fYmLZOd+VlWUagPf}0B zSnq6?x4oAx=xWSyX1K4XUfnn4B0-%L0$gk@;_hKY)a0OPs zq@u=lG7e%1+20X+#=2SKFM%b^@F)9ox7B%XxQ|{DdZ;$q1=xZBuKI8W{;+P|JV z(BfxujKkyyyCT^47Q-j$_KkjF5m}@4@RuI>O|0*{;FLa85;gMCK$El>{)xzyyhDHx zK9VP1bvtZt>u@?fei(8>3tIVOx!l_Ax7Z>Zie4viJ_r}K4cAOo)L|LgyiiH00sBn@ zJ~J|R88HV_O zsA@AwE`eKzNHxpCdqoT+VKW?qk_n8;K7@Q^aV;k9F7S&7s1xDU*V zj-%r7cT^w|?*v(}X!vco?Nvx}-4V{Jtw#%aFUkCfYy0&MsR<$RnWZeDMDbxb_%J6S zZi5p=4_ELjLIj{kOsO5=Mql+N8@c2}hFiOD@N$NlFB}J+=cfKm1sRp&W&G2lMrT;} zyH}=$WBi%gx@P3=WQ`}eVWjtPbZcp9bi37?LxGOS$B*E}hrQe2yaEevXM3BEeI~7T zr_;?EIfsGnkNg|i&Uqj&8M;t}ps*LpCpc&=YE#0Kc|jxj!U?tuOkL8Gx*@GR_9R!_ zX~TPYaR$)LJvQK(OJ#bEp~j#iGS}g$zbc1$=!kM{f;2TwB(J)-LggJFv{PEXgDHm? zIz<&57TURolY8BEHtc4^H_e|*L29BU#ir1k7hcC}tS}Ii9{cT_i>-bcdUraMRG~w5 z>PIb5A!w95evEq&TNsNf*`=&APWJ^^^woyY&pWOCDuwX2DyRv+ow-jt;<@-5vdrKC z3u#cjLCwvAb&wF{F0hVoc?|nL+uWAOyjr}}yQ?12J@qT+?-e5=%bSl;CR>y+lN^*i z8S#xSsV7xC3xG7#?j;5mD0~BfyRQ3!7~`2}u5Sw^os4uYfrF7zw4BQ=Bo6?GV)stbvHlY#nJ03>SI4N>_iS z9iW2gC*4x8;$EhPc{kR&8OVFRzDcMf`(6(hJzx+!z{=dKfcVCAV`OfP1 z`t1<7gEz!rfCS0(i-aieKr#$-IU&RJl@3bl?fYs~h-V8ga;H<}M8wSK@Jij2>BG0E zBh}3OVGbhgG5*(2k|2SHwH=o84K$H2y+WUXkwS*KqsGMMZv-yYRxzqMAjP%1BGlum z3TY$vgKwwF38W1mc5cW4o*G>Zx|l^B$1sI2LPY4ziHIr{T2^)AG=pH-Y2`KY6?8&X zO3U^e>9)fBpzElBR8TY&{fX@MPm?2fcMf?&lp9f*r{OCd zJb4%vSB^=|P(9jI#M?x-)siI!G|&zj6sd2G^5rJ$s(9@yMw>hlv7~UhzG>vE<(--` zE@zIzkKAlQ#4tYaWWCbk^%yRw2^SZP)dZR{jGBpJP2&L8;8is7Vd0SD(3A<&ZXi4U15bIwq z)--CBKPY4i%iqTmE)+jq?8D7=CvWlB$hn;rvXp|kOp5Tjn!J3w?k{GlQ4m`7xMcEd z4^_fW0rW9TbwAa+ObKEEvuncR9*fAUak`%MBE9}?Rf(s`WLKDi&EZ5WuS32=hi*q( zk*8Ik*+f-`?Ss~GbTknRkz`7^&Ax5?48RE znLMiBC3n*hfKZMjl`}jgCEj$30+}9;_}9x_Th9J#h4{}9gAO+8Dnwe4VW%$JsVL;A zr}kpNU#ZN3>@EMfyTAyO()J-a!{OBMOO3&>x{4 zXhFP?w(VN6U4snIGJ?X?=4PAjrXY}3MH`5!C zuEn3b;<{cdh(tYREYGTrSdRWpApXI?&Ad9ReWm`02nET|((-9@nY~xF%dPtK6b5qciY3{~`(fj0u z$s4%68cFw)8~&Bt7RVs;$x^*%(;8|!i;z!#Db`oj4(rHI zMN{2p4!p!N)h~Y7F1HOg4=I?XRULK|htvAScRxd%{Uy3CyAqlJDrVi45JgamM4(_e!<&a}^-i46OotLj%3!O%L3Lgv0_%V%C^`s@AdH*~kAcU1@W?@>nMau0m5-n;2mnzH$;ytkld&)LGtCK*dKn zP0PIqoPgZxqIdSK;}hVd*X{6;v!?O>hkuDQBR$H7$PML*NtG+sq>mq?qvq7og(cEE zLOWf_hPI*1L79?#17on_x+0^4Zl2QfVY%i%YKLHpUp#LdlFoB{E#uc|(apdBwrvWy zE>TbZmH#L6XT|ZU`0(lEjXhS?52N16+p;92y}Y71Rv5}SkrJ3~)(z{C5`NpEJR{u@ zl+fTvS=pnDPBLZcL&(I>-Zete-YI(KP`Teb!2 zZ004I$1KaG53BKezXoj@V_}{9bjw%DM+v`4^ep_l6*1!`){PS$m15$A@?tcVy4eOK z4nISTxB~uXh=sfcbRrEkVdypG2k_nimRf`widF^)m?l+_yDv0507mqbd(X)@8pX#T>KOP_mR4{?>MO#`Ekgi2?Eqwfm7J9+M(wT0>U8Iu12cEuSZbRFM zp5?lkLP+|@udZ0)GDZ*gOz$Sqt}n?rk zRa@4*Wgzmf)~oQ_2|2zz*cuHJQX%t9tpFqBJ=#HE7=MY4d1D%E4dsd^Qw|kQ$Tb!T zA{CmS_#{yVl=7LsjjEZ;9bHi*Yns3k6U|T^km-4!TvS+;wtv6RJpDtA%T#?25$!OS(UFcsDjDDZ? zq1OevWX%NyFm!F^_J*V6oMUN7&DXBjYItZ;2#*=IiwxYY=sNeJ8Oyn&{eJu+=aQ-d zy=s*)-c+?xzDQ+B`o(+95@U@#<-f##nNM-2wp6jl?pgl8K9A+?no<<5Xb-I1zO^OS z9DQ+c?Kw%1a11rLc3TJ5bEUwxcn@i_G-Y8Eh^4l;Ldc&(Zltz&5opg8=Rxl|{& z4r=bHwECZf{xInuADZIT7DmWwr$LlYCSi>tk!!#Ke+zD6^W^t-m64p>N!Ho}HPX8M zJ_E^$bGh(*06sIv=~Ox{P)a#WH~e2K8LYpdv82^$h`wk2_tfbkrF$kRoHPwqW#Q>3 z^>afxu;TooZfW`o$9zb}K|2lor1MP#?clqsdZX;KZzl^ck(raM@~l5|+~dj9Tm0u& z=2HE1Z>tcm(IPF%@_?q<0>xK7+K9QQ2oDA7btf6_FIQt7mByagMK!pvWbRs2%TF#u z<=`MvL^I)=0a0L=w6UI@uZw*r843l`^k> zQPr3EVLNM}8s67X!a=BX_NM~1l=n6Yz5V{X6M-{p@ZcQVf4#2G`171)u>c3Rr3 z$MX#?`VOk&33$s9)%2mP;RZP64yM56pa{=qA|6PS#j6N*vIqdm0j2@MUFV7=Kt=2S z+Cu?P)~oO>gLhu2*+Jxq$xcM|eVOWYn2U?hhP8a5?(8|}pbAlhKU-J0bFPV^u`WLE$=`O13 zu(emZD;@*l3a6PHns5KeG}c2(*a%~;e{kZ@Y;7<*8Jmn+cyhBu@n)iy?Ycz4J!P6! z$WeWMa%Q1&Ca?4Gat1VYrx>yCTrj;T(OTCtKWEr%CS6q)yU#Tpla5bS_*x@j8rme+ zoiIVrdpIBcEKT{udEzAlysjePxzXD&t5ku_0&P zMTi5axh|#iN&37T(LF2-8&iktWtcDs#anx{{Dg6a*Ke98zpKvj*-St!VPoV{Pt?i! z?n32W&5ceLB)%y}+wYY*CMMK4M>-|d)^R;-EAHUQbw17IEpKPNAkV}lV#B|aW$IRI z7&KJT6%{tq5mo4vna$ky38Kf+J%2N-{FXEl)2ITr^8H_b=Q4WuOqW;0GtY{}N*5*1 zaA8UQ2ZrZo$WrIT{8EczY208|@QLXRFlEEQmLrvI-gZA?{z?I^&m7|~M?G1%0k1*Pyz$Ih1u1 z0G~BByBUGJZo+*y#QVUY}Ggac>53TXa5Qd zK(>h!B@qoK60pO6b?m<<_+M}hG7Hj`MO+y4AGRgmM>)EU_*;_LJ!}A~*0Ji3}`9Ie9N6k9-%XekZNN9X16NviJ zAIdhrCp56PX?bV4lb|{-Gd2v4XL{}C{A0IY&aL;)xh1q+<~)En{M&ku{pZPl&G`RM zOL-3<5rs?lKJ zS^&9cYVw#C?XDQL@YP5_bO?D2Sp|>d4JMa?E=~9DDo^4|lc!yyp8Ipb?vhUvAX3>3 z{1jcif=0QeJ)_ecjHhq=nRMqMUlaRO($i5j#BbkGS0wY)l~}#==>dxblPN)P{-Xk& zdgNNoG>73e%!%g?aSUaO=+HJI21ruH>2+Oor_~Djo&+p}apm0lCpy_ESH&6~T=z(# zAKIvPm0_*uf1RVZ>%xm>r|^}M?=9jM$SX6Qkn1se1P_1MbtQ#%ozuhZ;&8NC?3H=ma05bBgXuqDj zjFDSQ4U@We@yh;KHP5c(jM=BVNvnDxFTbTV)n$|TM*V|a_A$;2J6<2&Ri&&&KR0+z z@P-9M4Aa#QockF-40{1`q->rio=xQh5!#`nDvmJ5Hoh0$;o9+5d)D!Pz?x}Mdoz)3iKX!yw9v@pqT zF^j{ns@G{TZ+vIhxQjFW;hLL1A1wsq;N7D_(#Z7~ITT-KB~`h*=Qj?&zQC(ixmJ*m zrygsQ7n~AV)6$r=p|eeJn(`>$zaLn4I;TowebI%f+pCpeDqAN^_{JD8w{Xt4JuLtU;UfT zeTpFw_SwPszkfLi2}PDr&>_#UF3=AD2)P=DEAsyP*VpaDAH>7Y_8ISnXgf)9Vy?H| z89g+93EebxrcIausBgaMz(EfJZ9&@q(ek6v+B7hov<_>o`o-nriG2@ts2a9D`qL=|N}t#l;*{RX z|8!hc-ChH#Nn(jNX>(=7#b}8WqhFqFu5^mnlIUxqDq?P~56*$o)+dlVa#MSA!B%S6k&fB>I@<^w;N&|{ye}#JDJuI1< z(j8crK=_gOM@1*YH5L8-Sjy-HHajU$yWF3%Orm@eJfU41vYqXe=OBzXMdq%%{+97K z=;3zv;~GK$=roTKA*OaX2VUgn#2L-MSee4NM+F`!n~taQVC>70#o0bu7gkTcwSKWY zoL{`~@|5BecKGN##&h~NO4|$1j9Og)EVa03Pi_);o|;dsZ8M;0QEj$b_jaoCeChE= zZ@N#p3?ErQkVVC%p9Bp-skVry zxp(bx1T_uQJfT-a<=07{Hajcj&$?#m*xC^_*M~w?&^z9oo9I8&nI)SH8~xYj3cB~@ ztEUQF>~(gzvV@0lL7L>J4J12gPxzoA;KazEuA`N$J9dJ29dkF-eDJ6(IbV+OXDifd1T}&XgIRhNy5|3pX^?tx&=cu z(Wjmfd+!4f`1t+ad*l=1aiHT2J~jX!W#ST`5AR8J42m7l2s8naU^6yD5?^;MhzS3&L5Hnub)8OI zcvZbd!@8=`1ilD~P(nRfLz%69|K_gbj}CIM_eYP;8liNrVR!8_oP_QZHZC*p(E76xFGDt4$Q9; zkDLBBU#(lA`RJ@GaaN->L*sa=metyEgbJxh?k4_bOG$4Qfp7;mw>ndRX@SdPvEAps z`u^$gjY@0AD&nE4n(^cGJdUgInf1BLx~4k2p^8C{{cki{b30&N+Nrj;G(fpwLmsa} z8xt7Pnu#qEzBpfaR2(9{F?g4oT(VFeuwX3wFi8uM3rf*~U+Z4#2<@s+bQ5A>OKh2j zSE1a2z$d3!9jk>Nk{8H{ZZ!i6&dEDGf&;Hy?wiry5}LNF-X|V=N=Lb) zsF1PIUzN4ao(+;X-d%WEJ;OSOFlpJK9W~7V2}4pAB}wty2(5L**R7vnWqcoYAj{;n^yN2E9Hr;`PRKLO3p4I!Bhr(#QfDHu1`&#dQwU_e^pQZ-wR@ZoCT3 zV7a{Y5t>Zl{N(0&>ebHVmAY3j&~_g;WX(|Bp3MtJ+y#th<`&ACpDYUEezGuOjVu)P zE9!~Qx(j0ANy_BX1&WXS_);dmu)(f zpIuaSb@@Qnw1wti#1PhIJGrFIAnK*Ke4Jg{FtbgTsqblch~A^_jt?*!jK+VK*&;vP zGv6ixjyu23x3RQSX0&6vo>tp&ft!R+61J>s%05D0u`!+Ydu#dCz?rp~wp;EL&Z9=1 z0c%_9I84h64-*%Vd-+dm#DvcKdRef zOl4LYcNm^Fmj0+==R14EjiDc`;Shx-l{D?UtY>KN-&udPGYR1yHf<~e@31~-`?tge zdd%D;LTo-p5M_4!rt2=h?*991!8Hlw=bOG0Xrf!cFC=A~I?<-aFUAG5(8=BDp24TM z3QoPV%YiHk4R7 zHYyS9mGn=i&k|-aVZ)xe89gV%h#xv27MGMKXA3X(d3}^qw7AqAgqw&FsSz8R7#0=2 zvO#=ZXPhw7)IWI?e*rAMG+ggr1AgS%0z2Mcxxw0sDZ8?Kf5u34#Y|JSa?6TOL3vM0 z){Z?VBIJ%1*!*J_|8xH-61gwA9C*yl567PU@C9*s0DW+Ul%3%%K5o$J6Z5 zmf`I}jth%(^x7}Y6)YyymU8mHb3?6DM>dCFys#%{U*!ExT7KFPJl^7YCbFdccy^R( zK{0CQ7o8lkuA3t5rk?hcVsH2hbjmH;Yt6=~=|kpzoF6$N(8#Q**e8BPU21o#AHkDGa#dM;xp@6w z0u{)G6AJW692M_TK31rON7pEC1ZWEKkix17ogis4DPx_T)YJdJq%4rEFT;?%{wl_socwbabXGbVPTM8tGO=wc4## zIUWUBA0g_@X*p;LM81^*Z7gckyIw_GdZf@u^K)DprL4tqgQayq0*%>sO~tC95?X6i zb!zNH+bekvyjzMt$-tC0LK{`;lC0W~k+KduoGzF%YQyJg2WEzC_LOMRG$Zr@9o4uw zn9~PdTF6^GD?0266u)W7;&q`}3An8&&{;>&n(16ViBB6xt(9(qHICZl45Gd;Vu2Zg zlob$K(3XCa?Dq+${`;+I${rsShUP$^8^7`;jWIEsBu)m3^lACx5}^2GT^&uAM$X$r_0nx(wfu1_qg4@PxPxmgovdXA z8LUllFgB+s^w>5dr_FjCDXH|}X>CoD?@^(NkJs*WW+C+*bv@JD7{oMP4-OJ1i0jXz zleq{saf#y3DU>!;%-tljCOeZT-SjubZa1<|B9#e0QzN*#_)|Gfl}Y%}gZMlhm^FGc zd)n5Q_y{e2AZaMtp}7kB?zmenohQ~Ye**2cO}``q_v>U6Ot`hJ_0?uT5a7UP(^ za=o-F6lX5IBbtyUtk5exMDxJ=9zv1ctv+(r3KLc!ez8*R%(-tH&A7`PW3bK6tPwR6 zO4{&y4=utK-6ybp=PaJ6<%|TTX29}-B=6jkAM8C#QtbrX@`rsE!l@fU%##Ty#{oZf zM}(#RCyT-o-dZ5cLK9j1ojq^pFJBdghn-qSQ1>&=rWe??J^(qz89f7w(3mH{Q=!Cj>l0^$PnAX zzgI22Lw8ESt9-G^Zc%{Kp@S!wawp%#CVQk!M+g52uQ$2RdF{(Eh`UZ=l^!BF0=eF| zTmw?2C{B4w(F?cRSeP5AgavM|a|CT)yA?cV&u>>R5o35d0i5`v4z7P!BHroKVN9)KVB zG;+UliqnpUSe$TY9Bw`+Yye7DZ9d5WiE*zNk;kdT*Hk*3+I8;P5Zh57o2nHOd&GDF zy}oTpwTyoX{-33`Gbyjot&u2uLJIB&P3hEU?sI$kR{FK773i;i!(L;q0eTt2--BQY zf@iO2&l|vMiw8O6KaaT=)nFNcsN`$2|Ln+@E-f4@6VFIO_^vho`HaPbfSSs6?$h4d z9>60C+L?k@D9BMad4j<^fQPPZhBkQ9>Z7u(Z-BJOC(XNqB;<$jM)yLPvxPePg*y9W ziWk-NNg8q@;{t8sNX1w9LnWy}iHm~)jzdOkj+crTNfj7uI{oJ^TRV*?tZqDNpit#F zB*B}H_Bw&GZ+ByD(ZA{<38cV`m(QE4d7)Dan5`lI1XJ#B`hYT%>T+2KAZy(XHl!b{wufLO{8@ilG~cE@%#F7sCESv2_@2;WU%xz?>htC&GmqB5W|=|=G`@#o)E9%_lO!rs39Mz!ufQ^Vo5s(JC*-b*Y3 z0y$oni4!k<5X7Eq7|N?yXCi3k4%Mi)qVqBQxb?Tf4DoS5+#V>TcI38)o#oedFbiGM zW-Dd^=fG|S300c|!-O1N3FxGb=}W@@^*!>hZe5&Wl3P5ic*Va)d8V0O_xpg+@ytwBC}sv@uJw8q|QIjd=^L2j*|WF#kbh zgUe0WOBezQp16&GZXB=emTG5~cCR&TLb1dgn2AOvO`|o{)iED1307Rc{>C|6g15P&IvX??W%#&pVu(F+D%8Nor- zf>;lexdMt$8{9?r#2?QS(LE2)pX44-yRUg#209K*bJOHpnT8kcSRb;(Im{&ab;wU6 z6LX!EcR_HQn*j~e(rT8w6vjMlg?LB*z__%<({_#xP4dhwTTQ|zQ8?zx z_C37Z)NPE#TyNULwk)D+ChqxUYN1osQJ8Hsd-vvviG7i@XT_$6{ks$WZgk(o&E+2w ze<;qj=VfztY+H57VlDR!4INb-IE1X9PS%KpWi-jXW+2&5=Pl~SA1q+zJ^~a^erZ7- zMIkz_qBFt3H&#u-6|_rS`$sqn#utp8kFS!eW9p0#CdpA%KpAlKc#q1v1x_t1+j-c-wizm2`?=N|ZiaJmdC1s|qId{ln}d(A~!Ks~XAv)2HI4}XKh zMxz1dL)@z>^~@;f&tD?7!^LFzM(!1HKUR1DeKPsx-37y6@?YC#v zpfw;l<1vr2&6WzC?BsM-jztq#2;}MQUgY+$koKcm*hn`)Skf;Vj1g;f$a2G8< zK2Djh;`o(CJb*H^hwON@qlt7eqikDU=P&0|3onC4e~P|L7_TvKubfQkxYd$P(j4{9 zGFe$sNf+B{>RV4>z1v=Ux9ZW?H4%T?-WO5Rc!i9t{-kLocI7lOGTxv$b@X+bxeqY1g;|cGQ)5hc$X&8cfV1 z6!d9dAXEp4ZX};c+loEEFBI{YmGGXSCnG#QI@k&~IY91w_jSWIj+1SDdNa~zpx|^D zo~Gm`^tCsGNfzhQfp#7ukY)Oo(hS|}duDe!SNO9MZ34eN8t6nl_kf%Bh#&h$FfnV7 zS~@o`_z-*Dk(gXK6mgz-elQ|kTF(`qzflkq?q5J;4Fr$b^lw+o^@_^6fG#7$(`%`o z^>pz;5=swf*C#4Qr?oJVUi5h&8mcPB6-EL-A33R>3+UZ1xQvd0)s|m;V_rbbj3ZzM zI{dmfGZ&^TKo?P&nSKZ_Ao_8&qkEdIykX_d=M1H%D{Y?bJ&Wh=*Nui znZY7!Z=e$2WpHoOsOye~4&BDab9+pBcmH&fYk#B2FS^=szaXf#e2J5M9}#2gsMHym zYv|?e%kQbXKrJriypH8|lhMkZ4so6YQ}WYfn@qy^S;P<#38TNka+eNe>cKJD8(TOk z?dbv|DtDWPO4zEiGpz1@$cS}+S)OyqiTv&g=l?MG?$K=Jd;GVS<8mfLRi{m+ksvBe zGYFl!G!iWpN~LN#-WEBGO)Bv7@rEfBMgHgu8mID%@+j+G!B4k?3Wz9YPw~P-!_QA#V zS;N@vSn@4+yc%H>9G8v0A9&EP+~k>%&%KN1Np5uZjS<0~NzsL5|7&xtsmxJl2sw4Af4 zX+-!qvj;NCZ14BsF|bB~=c@Q(i?>A<`GGx0&|1ozPt#VXIAYkEJM%m|m;b2cCh7od z3h#{i4zywQeKAv?vqB9Z&D+rTVnJ#af&FT~><3NEJHWH{hGBHwxKUx#TE94}FQqa` zl=vn>F_Z>%uUbx>bGvK5ML8$Ca1tK!tOsB?lcOZmVTz|E^`6^YF79jw=uBZ(8ah2d z7$z+MmZEP0`Y@$1_jwWbCYCX;-A_1m3mR)Ib|-nyFXC>Z2bGDfs;r=$K%_EPv(Z5v z)O=HEtKr8eD>ISy`-4}aGFG`J%(>hp2l2pU_hmx3t#g>MI#^(_sSvkJ9^Z?O!kt+o zy(|VgC=kmfQTX&oP81w~j=R>4?CwCb_O@vF@~OC+u11->w68uzd4)I@Y|r2f>QG^Y zEK|crnhxASF8KyPYwu^h_RsV*cm5#&EUwyDEyaCr*_&;;SCoOoZzK&&=6Fhmj=0leC{`FTiQoQgLh?wj}XxLO#W% zU|4Fu82G@LdzzyhpQ?Pwx@P(1Yak$2TSPLg6iV(iT`O|3ayEM0OO)Jq#2#8GU93eI zUUI79dgr`uE`8BT7c}4AuD8s#WZmyeIq5YR!jaA(2c1n?EyM~wZ5JuOhXrw8ORE&N zRM|!s87H{627$q!mrjV{(t+tO>E*dH!-A)jt`7C0Sid|7!8u~;{>bqo>eJEya^Q3s zmR%t-1>A=ysX_zi-f?65x=(VjJH^iJh(d}N?g`xbr}g5j(Y5}5BkvlF;868 zw*}jAk_O{e^S8rW83#q07*+DXD$Q%)5tkZppB6Fb_|pQ?wcmfwuny9*S+kGI`v(!{ zVVdow1w2=!Ah8VQ3Wm)J7~~Xr^6X?C#?c z!t<5=m^sP_bR6iuG25QkG0R|l6k8EGq7rZ3{M1(}+6q`~NJuogniqhbv`NQXr2tYq^MQx-XVKv7-dK!C52X}7SZHNAcMOjc4{BIa2{)8h-HiOtKwlJ z9f1~a;o%l9E=}f$B4ErpRe1iQiOTk4YoTRu-gNsA#~^)YC(30>RVYtFTNgkd*d<6Y zac{2o4bE|xPv08P;S2@^EJtwQzCCq)$Fg;B4)%7jc%>tZd)Vz>y;lPro+saJSYrSs z(I5}An*&h`?4_TvsE!z%BjY?&)5)Gj2qsq)UW6!4k|S+@W{U!)OCS3LB)mSiQ4noY z-e)l-k{J9cmu*wtLwT`d?BDt&NX)rlB^2^QD~)e@oE{-`1sx=S8v*tW&q%i_!Fpk2Ilk6t$ZJe2ksG_yaI=2SpGx1quYe zs^n~S#!#V!C3QU7W^kUn0^C6*r}yRQ=gQ~;QyClXsv_2NU!a%g?-GaNe^JSgJueVh z4lw7OWOyLG$wq)s_US_mh~3zOobAB!UQ1!*Fmhl@{xb~0vUGDtvyLlz1DUg=x`Wag2|cTwrF5C1 z)OpBq85D5uCH`O!3}capS54l)-b~IA6GR1RQ+|)33p?C zbFs{6#jH$Hb zR72zyJmVKxl%|U{)N@EU2oh<^LzTE5#jV1xTymwEs;$1DTO2Q3pKdisxV>&ICchL) zV!^BYocZ=7!SiuDLWp+#k<9s)0QH5)2CA!&^4vBYFE$k;;KDlJPBLf{>N0Nw(9Yt& z(2YK-1Q1~sZR)nS z4WPOHZi!o=^{3pm%j&YD=7>SWd7pG|NH|sQ+B*{`pQEd3XNUi`WgWY4XjR?wC=@(b zfU4@Koy~RVQXk#B`}T1OBd=gFAmpMz(YeLqLL z|MKt;o-V7mE6y|Lft8UnUJ&Ywpy78C)c|r8d5_Wxv{b?XGM$mIA>@C{)_)vRUl?~y zKXTk0x^C<%&j>ugKFKDV@+HA6nf5w)5=!29VCk6`BWwthfxs=Zr?$t<4sE7@+LQU8 za{rsQPDD1LF8?)FG4hI9O8d3IP__Kek^2AhMw#$()OG5WRnrlgPgT zs;_^KUB>^?zddu;w#TiKtg#(uOKmeor!rCGi&FSN_>9@rDj*`-nb(NCl7{W|F6p6 z@Y)L_>1-c;xA&DCBSE>t6?}{C1F!VZ z%l@#jDqHo#Znx^-$LaLw^G@-X-SrTfKzx-oIY|R0wbPe33M_AZWGuhd8Mw9v5P-O* zI}TiG$MK`z?K*oO(eLE{G^TTR6`p37oXe3GLp0>IJN7!&PKN&}XPDsLVM(Isb}oFj z`o4^wa7Z>9Gfp23F!OUc83=a1mOoN=(rNxWBIJ+s=;P5wEAavO{={s-01Nypd6V4>*m%q)HH_Q6%Lq6Vh` zTC6|$=({BigM)Y08I<%z^LQ+mc)qFWfKI+*nvuxd3vS)lm|b6`=*wnm_dY z!$KFOLKy2%p-GDbpf>}1;ZeTf@^HekO24$<>1`4`Ta0 z^teTAVY%@gC<$m{htZCm-j#=Rh0bejK=Qw2p9~wAqa4pMxdNO2W;BckT|cPeLjc9* z>5x+&tONT7h%w0K{K99zok*sP{Rc8Gy zh1z6r=g995YecrmRLh|HFoxk(P6d+yR{wIc$K9DbZje~E5y z&6Uv=*aq3EeE}Ng%WDU%Xv+B8cW0QNkJkBvm)-~G!Je$6Bso`1cCQW^uN*IYUC%eF zMyHdH5n}1Hsfr^i6YpJh&~u$WMuNU`CT(C1IC0|&lGL5lv7iMRF7 zPXNkP@i>(<2j`=Hk4DwauOROZaMcm3!6qD*ZY-dqxZ=Z@N zm~E(nHyp1FJ-Y(X^Ji%LlE;musyY_Tadf2lDTIr{Ju(B-=)b#=`)!@PulZ*01^Zth ze#gdPws$>6k1ykb?PsxpU?=#+2Z5->kyss_82`Wj)+Re=2B zZ}7~Inf|E!q{gG^hZ(E*(Zc$1YE)XxKOyPcy4=dFg@EBsb$G*qG>b!1LQO007nZ66 zGE)+HjX8_n9>3i%R*%T`FeCK)i$Xh0cf#j)s%MgT26wu&p&Y$MYulBie=-neGtEY` zaYYP4GvQgE@{~~3+;@@SZpbpujqUVhx(v$bn7iNW8Xv^)dNS>urqwH_q!T#}^oK&p zi4jjeBBRVKY49R=#v6-WsI7p`sXaSH-w!&%wvtkNiqII^PEhvm*zl}YYzn!7a>`; z3uj(R1Sa2RRXL;_==*liK7F(NZnx^o={PSMpiEYci5h6%9NvJ&NFF~{yVc+8;n(0m zW1k=vnH*wQzcC(Hv3+EAeNjSUow_*~IH@nIdAeu`bvYNvP^n+&!R>}9oT0Cz!&cpI zs#9N<>@Vk=%nKW6450S@GLPFYXotGA4$>d;jKrAez%k3@j9}p$c*FTtEuRL2Rl7*} z1BWknJ@4#SZ^uYqMl03*wQ{A8w;RQi__^IgtyJlN<_67bM9FpQb%RsU1c~w@ty|N~ zb;t?NE{ua({Sdpo&UC4%&|Trlw+us4iMxBy$QFZ)=SvOE8LFsH{myPR^Z6WQP}S%T z2yY}3-D(E%3&4T3w*q2X)?j&&7R`9A9tw~Jy~UGIuXA!#i>^~!n7GEZoU^A6>ch~7 zmo}pSdk=lq^4s-xc>ezF(o>Epfg=Njo4FwicD;Lt(fHjclY_+Wyq%3Vp149zL4_0x zV?6I^*7R!#+Mp@>F8Ob4(F~tz;_8b`zRJGkgDC;eUmVSBJ4)z{GH*tzb;7be>~6CR z4Ab0v(K9=g-9m{r#4}btR}19p!qfNb+jR`kaSA_NbuJK?_=qeG%dPZFfa){u8^Yk+xsWUR!w<$11QDVxHzGwA`% z!uCUw&1dPKdD$kp4sFw^LH2?d-&p4z?kxf#T^|mg5SBLa-1Vd$kl)fsWq6 z1#4vG{u@oR|0B*IQhK{KU@>%F*dCf#;Iw4gXM;Oi}%?)Mf+TF7cw2mOjrE;KAd=|{-vvJtVOXzj3IqAt#>nLIdYtW91&SG(Os{lF96lj?J?vp-DY(VEJ zE*-4NElOn1&a0M|vpV>re^H+(BE_GGT!x~4Jn-(dMRvDsRJa!Ik7G|5C$zmH?qKbX z%eJ_eRpyt*IAX&0+V0$?a97%b$cZ6`&;{w-;(8S8i4=D;6O^YFS7>ttSWXSWOGk~Je-z}%ElGUsI|!3IDVKR$ zd!^Ea2UdpUkB8BY1y7}@xdC|mNgdyCyq;mHt^)B}wyvJfqhlD~oaT?@H|DP*J>Y;b z^06IiJiwH3%CY5%MiC}Pn`Ic|$8v!plr`kRMfM9k1Q>sE>k`f)1L^W%d(YCau|gW? znDSd|!3pC76QL>8dm%sfN5>PP2T6VqEj|0^VXRXF3FSfA`wT`|7p}3|`edTJ2@OOHS0x~krMT*-b(+h5HPYzbOZ#_rSPhloWs6u^G!w?q5!AT|(l z!xB5`3bMF+#dK#U8&B8@&&3ToDh8KWkzETD%p5-WC{^~n->#w}hXgsBL@qQoFgA7b z%29B&4?K(sX^t;%Eu3KyhL*WZwX3YkV{L$oIyeD=HDqY-M)M7*#Sj8CFinG}%-5=g zH%U*l%P4}2naS-Mut!_**+N_5-$nLHA-4vc*3hTJ$qyk%j3#h{kuj1N^m0)cKr43m z;Ll^hRJd||jMB_WW$~pzG1&5Tya~5uG+!2E_Zc@4+tM7K;IpHh8UMp!4EOD>srY(_((e`;d5Wdi0eUel@kH3o z%gceh0kM_4P=+`9BiF4V_MJK>P18u^?98q-K|*5y{$E7T?@CH*=fV@1jspi^+*Q_7 zVS~>D52xZyQ%(G3)mkg3(D(p&X=S_;Do{uF3{L%X+yn!L06>ivs*D%ys3t?Fdvi%# zgLdXgZ>23YLas@2&d+1qI$hGNlT-7w`7)0di}wHLFwM!;d|sjD56%A9EVoRz4%ZwX z_3*+}Uz~;gd-xI)HkPk|*tPo}@d(Fhn!(-aXPvwV{|TD1zg<%l%zVrW5Ti0nPW#2J)CH3J@kBV)+ zTo7KNAxpdW(3l4WUiXkt8^PV_I(o|lkDRKvGZ`~X7bFMhy*;OUKKmO_{BN;x>-;Ce zZmcPrtD^c+0HB^F)NyOdRhoO;#Iy2IeUNRs@{~d!`4r;!_iCM_g_%WDKWekhSbN57 z^Uas}>B(J6HbovdClE@`lG;3B(Ix9H50zV)0H$>ucHgJNXpezjoOb{8(x#&xw%nv$ zWxEL~Nhg|jn3yCEi>^cP$JftGCu{$u(S3dk=!pFL=SLa-FPq8XF}+`@{N;=e^8H)CPHiLf1Yt%l8Qj+0 zc4zY2c|^J$ej|vUzV=J6b=aHE2MrD;IsQ>D!V=pUh>`;?nmyU`IRBeS<>NXRlG&pV zv+Wl1qQJct()E$SPJ;gVX#0HI@2PcaeaSZK@!2Mk_yLQ0EDD+*Zjf32v%atJv{ zO@5kdY^Q(Eo-S+>`k7%`%8CwMaz9T16kgNE-48iE4!E$MH~F*@Jqx1IaWmQ_@*QyR zaSrwEy|W>7v)x$JEY_Qd1J>tBl(DeqhAn=WO9!XZKcl(91Ad%kIs5^7Q443ex58ro zDTf<21B_;Usc*k52*N`HL2hfyTu{E%h@DwLohoYGd|ggqH7R*Rr7IMZqSB>fiU#DR zv*7#k-YfKz7R4hsY11Uyr3O_US&CL{VwIsLF0X(Cd)xN6dMKkfXlc# zF-=s@v69Po=9foKLAYUW>g|FUvyq#Zbins#S{O&_ptja>Ta6Fsqjd*2ZaW^_kbQS& zYw3o}uMHk)A42;vIoo6-EZ5+YZv|J+lmg?~Jqt-$(rz$S-1XzF_G!(87Y)BtJXHIK zF*Qt1E`5exj>_gRU~VLoYwBzxt3g4%v3=8GeKxCoIcREoSo$0w`zy6b9!_Qz$x!#s zXP+H1evTc~4aN$>g6GYNj1yr_m(uf(k3zt~N3W;rd0wQ}J}e;WdtJKQ)rlJ)$HaLS z!Y;o22V!ht4YQG87m?;3puucJKtjYCw6}UzW_P&YxQBJ^Mdy{LM~+6*?}DjsyxW-| z<6iTfWXs&Q{wj_?X&t|siRp0J&S|iKuW!5I2q{2L9KD6!aC>7qYaF%7#8v9W5~Yl6 z_r$GCa)v2$bt=iC*p?D9T07SkM-BVsVSoG35$JI8(_!ncygN@{cwRsmsY}+@eB;=v zzWvKhXhi2f<}9u(tP;}aOwAMaN*cBxM;s6G1l?hPNnCnhUE)JAf*x&Od zGXN23{S4v#`D`cuaAn?$=59$XA$Fhn>sqJeEt?*_WCDaJR=%l%l$%^>-K`QU{Zxz@ z-f&c_KillD@_5K5Y{~JLN|}_Q8PC8Ip@+` zP+77*1WGob$;!EG7Ln$V*a7a)QkyoP3GYIGCxqr#`@vUZBf<{cXCY>*In9T8;eD)j zhN6=Nx^q2NNzq(pcY(qn>gn@O+H1RcLg@%S*t;mDVW+qXt>s^t&!Awy#w*JMi!FHcHM%+b-QT; z^RSaaQk?Kt%Yn3OqRlBG0vhuwun3ct<`y4Dvv3@xxgNtx-?d6-_sK*2=bRx}E*^$0 zGLQ2{Zx2guyIXZ98e+Uc!9-jOudv){&eX)d=Yab$Doj-TX=*WUFUn#|jMlU}N^oFR zq@o2Z2XnvFjfZ&~$uzrA*qHNZb==DdSj}@zhH8Qbs#!)y-ei6TI!^f6sj$eD-+;w7 zdM2kNu{a|(r`o=d6)y!S#aY}>hxhq1Hj`k;RKnAtp@73gpurs=axIQzC|J)13n38a zXdOR-2jx7rMlpsk${Pw?YOvsh)DMUuA(6T&mD7FdG>h2Rj?lm_4qn3B#Cg>-eEIjm zoWVoN4SLv;@-Ei-PdV4db}sAH(etFhx0F_K|Ds7kh$t?0JI$@^o(X?wZBbg7a$fs` zK<)|x=GGCmYc=^*=d17pHJ(`WTHm0!37bHEB8&?fE;D?hS_eo#Jj<1y8>fOg_V4*n zXH$0uTTiOu9_)h?sLj`7B^c=s-LI<-*p)l$zCHR~F&kWPhd=yx<%18rS8BEONTc?I z7eIH+kx{w06*+8KH8ihj+b}i~S4s=-p(y^u2yX?=n~rctDKIQCT4Kax^59uK<}4DG zXeNxi9Us?}r|59-*x6-QesuxOJsR{8WBvDWt5Xt@1w0Oj(FeBE8fiEQSACQ7*H8Cyo}J=TP^qSA|Ptf>G^!q)vT`z zV=DFutCQaoToUc%L3=X%iO|BwH~$#m&Y9rN+?T&>Ol9ZlgqarZ>j=%94&3c7Etuxbq%H8QLT~ji0M0xc}u_}Hd>5B}pm6PR* zUn5KE@Z)^i`EW-An$_@htqF=89oHQjw#<7U53l5W4CI&&^;+2lXA-uvGK<|d{5m5t z)y5gHvnRe_&5&%&Jk+vi!5K>5E9(21lU-{nxcBVbrdcqzx%Dm!-AQmJE7ZBOw|{C;f*_` z(+({nVw&tmpf*y1`EonWg*R}`-0#dzrkM(2N@nl()_*Y4y)ABX4ffRIqKM7-O|;=l zgHabgqu=@h%L`1*M#r(q49yNZUe88i069|#Tm`#7iQ??9fS1Ij(3dgP>UX{S)4Sn? zCRMNIm@J!h%^#c|2Y9lP4nuxRuV4kJEy6QJD_nyqD5fdv0oBCrI5#_flM`ecU@`t- zy9GVqyTcxeObi_JGl^nV@^g;L9UBMFzJ4&(331ouKZ3~QD@2ym$3NKg$LEL7^1rPS z&3?JpXQRJDKW8-C5D#b8%gi*9t7|U(eY&NL(k_$8Cc@>FIV)#CasLA$+7P|c0Xc&( z+PUi>;M-B@Um1zn~2uC5>;4>5(cBf3QwSgrkN%IQh$cxux(HeU3+FXrg+24 zK+ zdTrU1(H)aJU|*wS?Ev+3qYDvi?^h?Si<=xMDiFt{B0mB%SU=;UANk1dRaGv9Kfhqj z#j>Cq@6@TpZ{Jas(^IjY=ycOPUKg60*qtTnb-4E1Kqk80u{&M;{6j+GgFN)Wb2cw6PK^bV&`5RnI5p`OwjA;caI@+ zFCAlkzIa5`Z1hrucdRkG+%H(XNO34AVY*ZFK;fxjeabBn&?@I+ss1XnnFmKsT+TmK zb7x>`1brVmfx6IsL!$JWa7&zLd;peoXR5a(Sld3XrWyF9nm9txAac|u{&Qs{i?_2w zHhl*8{$!Lp(l>yqB$_}n+Gov%$wm{e0p%4(dL<`At%XvV6E-JOJRHYjnJ^W5{)v`< zN-(DBr|qQkKYS^_!8!|wgn}%a^P=41VzvjeST|~(bE&;CvmfyRBOe{Q0^HIp!tpdH zPGd7hcAgB4qh;*NmK&O%!kdw7ryqu;hxw*H6`-er1%puR(u8jT?*E zibNM-na|RKpG29j3uxwiHga^Q+8c2aSEFYTapY`OfS2Yb#IoBX_@`~i=2ZKNH;ph< zXzoBQWde8LHd5)iGqvt#;(hJgw9aUeNBz{uqrzq*C6V#;JF;`!q35JsO_^4cwOuVot zQ{LXI-5v*4z9p^Mx7Amn*}TE5`B=7ve@~5sm^Per+3|BBsJj~ABj%eH>H4ox_ZPTY za|gw*)YU<$$8D|AImP)c*$@rW!I0b4`Fb634#FJ+}@z2R@p0$4T9(@3w{m@~B z#~U&=gIV?J^aNUeW0FNRIrv|;vs)iO|9foui8#gdC9U#bhfUdLB#p8H)40RG?v zR3>DTqvsTJ|6l=hE0Jf1o8csw!FP>)Sb(yVOVZQdY4J}iD9=#?_cdrPdGIXf zgfKoxNmnr_vk2G~CfJxkLy+KobaJ6W`o?Qgfu&;R-K8^uG;sW~BiZOqT(!T7oi!Y-Rae=Q9zbypw+`f~ z%%z=``BlxLX-@ZWGw)oJkXxBwa|}_{d}yq8wwp=3d#bKVJ2NP7rMCsN<7`seV-H_n zVi=-ykmv1vHF$IoNPuWGbgesSKAA6Ijw;g}HvTedXaYtJl3Q7!Z_Ar$>MYIuJfL(z z>UaDpXDX}n&(LXqpzHQZEdzGB|Jl~f-i%EBLu;k$as*86 zD(2e0SH@D@nDl1j;GxmQ487ZlPQAcnUC%iP;8wcd^=Zc^6z5`Fy8=zj@=wNw9!6h2 z;3!8~1sgsS5A8d?^WCX~l@M{9q{4z>p|aG9-}k5TAD`kG!)UbQ1i>FP$JStEVi>LjYb z@<&j7-6iswkB*b9hp%axW5n+^^~k3;09A8MCo)CQ(2~=$F@6_h!QS$))n>5y*)|pJ zxrs1Hd|omA1RcDtVi$J$wq`Jje0C#t(|^e%c&{b!MW=s(83FbTYnU=>Tn}~oC)YrP zd{7Fx?`SlJiZ>_rC$MdxkG(|xTW(v4X_3GMmR5OWo*LtAwNilx!UmUeN2D@1Nwt&=*T_Zvxe>!kAC@>HUsn`)WVZ*yj6c zYY&G3{(_{&f;!8789FoRadK(m{1MN!F10KU%jnkN_i+b8Jt;48;Jy4axjz^Ou_(n+`M|8 z^+#??fkAr5#v%P$+_E`xFiP?Gz9+M?$b}(wBAxg8qBd-|ZRdz&3HjyfZu3eVUlqtk z)c&wNLc$;G*-BIlvZxmH(Q&(x)d?iSilS$zrk+95)#LfBIt`<@e*;Vds|;Y(WQD(# z3*)XK@%`WcrYm#IV#9GJ+?lA&J47>vMb&@G`N7{vifSt1D61E2{AaXBH7LX6p6rg?r!|{t>)zb8)Z?`B=|9c*p6NnGA5}f3HLjWcO!E{s zfayLs5AZ`p4ZWqa#!-+e6;(DWkn)7(@nMeIfOtP`oT{B8dvqP*#63B^q(ce>Kt@GR zzhg>;DW_aCHgIKDsA$r!Q>;3}Ujuei0Y1ES%g>)>JovYa7ff4i>B7J~-|&SlIjVCz z)+f!%$c<31FU~L1=bH(+r~mfe?DY?xb%OQnEG}rAyo4sa;15J0pNUK%A8&`Zf9M09 z!MI1KSWufnHapI8AM||&y_(*iXsMtDHSfA_NY6DuOP>}>)P`nSKgH)Y{8mqchH_DP zO@%;Q=-bZ18wRJ_2cyX2INgW@N++q-19x>LvY&Nxjks@49o-`KMqGgy2b?n@3i}p| zt2Krd-dY8a7$-=ljR>r{xcf6p>tc(hu_otO8Ec#;VGK?q0~^WjlDQDBy1X*DQxT2? zI?OzkC~$)YvyyUyq8GIPs!wilj=>fYq3rE(OmzSiL057-d>af&%BeWK>E6iR$HbV< zE=Kgt#jU;s$!v~*0Sj{_kn?L=aHOz|8UY6U_=p&Q02Yr0_}yZ_)q-Vjk66A*4Dh<& z$2{2=&CcUwYn})0A8zuQ)Yw3XvmHFBul7gs)6l3y!i|2hNt$QrJoe}Ph$V!?z?;?4 zl?aQSvarg6M7?T54Bp63OtZrrVG07@cjEXao44`kM7 zREQ{78{t=t2JFJpI@|o@_-1_NnRWmw^4uJOZ8nd~D!|=fog{zK81NT`ZSPB$_gV;b zBT{SLz!jucPRJbqV!sd17R42gJLCEf?NCzq740H)5vkG8NKC$wbjfpm8JsS({E2wb z#9P?u=?@bpCE&dVd_@u&U4P$c{b@C zDFeu&c*SGtl5Il+_6{jC#I?er?hV=#?kM*))fFB}Kb2A`A~#wBq_}TC&h(%jt8E6- zpZ63&l7OVHgNc2Ss%mwKNndd%db>@WcxaR?K0t!s#VD=|Shz9JncOL1)eQ@z#QL zrTgDdg&$&Up0etPE@?Vnt)kZtUb0}<>Xd4ZD3n?MUH&ckaz6lxgF67Y`C;-t9I$%3 zzTdWWS!}q3LkxH${*=4iQVOUgX4C+bQ%ex;kS-MzWt8a9@gI)GAhw5Nm1ILL#fw+H zF852Hfd7=Md=*OE`*}a%CR-q*6u%;0{%||?zV!ST57&WThRQNZff*l`A(OuPQ*P62 z+XH@hahtWfLitlJ>%U*-p%jk)Q|?$IQhMO?r<@>Uu>rT2BE+qYsvUaE=zkr>nJJU5 z14qH_X2-$O@2LSNbXi>zgh>&Qzm%T3{NFnxS{EhGF*s2W7PnR)F{I11B!q(<&YyCf zlK^6SL+Jx~vKGGADn0d|FACuAR>=7O9G=q>?0@aL{qJ36c14tuOtjT0d*2wX?P2|t zefpjMK3K@23?-+D!l(cPWZn*iw?E_Il#c_ z{f~vuPyh91``>R{Ut4T2wwQ_>mJ(3g7%&uGtNWZHs-kKnQMhQXCP|5y6|1z`JhdLE=yNNUJL$L z2Xf>YeamZm%WFvjX!j$YSepf;5)D|pJMszjSnT_&Tb=9guIFy(g8?n?g@67JS@G)W zgwsHj!iiwrAAU|n-vP|ze(G8G3lV_mX6$ZTimApRetaG~W{o3>qBQ^)(=q?$?P1gO z^a+Qx-Q9yoaz3fweEQNY--IqeTFlVacx}5fhEw@P{#*9JEtL_2FKBz6M}K0?2y5Td zT#Gcug(&0JZ)a@U2uT)?m^N*joa6fkg^9$648oj07 z&34JmLnkHgwzy)BxBVR1DMSof6Ax-vFO&pdKl%dW*vV@K`u1wk;ut#s4TNjdQ&y|J zWj7rEr(CaDn3ggqY4}8Ve3;I4^DRHFE!olvQwp6J@0WQ_@R_db>4NuL8s5Q(jIFjOR?Q_YS_kIcX$12+ zE*5qDKGwf3@=v)hANK!x)n#Grz@7)HM}u_R{0gglXt6={L8B{v?OIOlg_%hQyf4Rt z>L;uA$TgDW4}93t2KUxL@L^Nm|DhXvIu)v5uTAty49~}&wCCy{WM#>1%hu_IUKQ%O`cBe!z%zi8^~SpQ z^wUK@`X7u+>VjsT)%_4HF0GU;4Da}ER|6MO2`=?Y|CDhqhGwH(_qk7!P<41c%>ihN z?*%ypQpO*+b+^JZLY|k^x=mf2G`G>~H9W@C(C_l3wA&L+jnAFAouu%Oh z6|8gYq%F~R0dXy`1ZIPZzzG)ji2$Sxy{i}Ib_GI_g+{q42LhMTya|iC#x%Tf6ZKV z7zcA6IK2>NAn6FKadsg6ahk z{*Mnp=YKHy0~dJql<%v|ypD{WD}=G13SR}bGR`?;ViXpZ58e?ATN;}e7Q+)lTvsE< zLoN@BH+h@Jl#7P+a-nHF1YnHs=ZDdXToJ>3TKMk$QDw$W`jf?7@nZv)D8gGPS>BWM zGI0_*QrKV-WvtF+uxak{sPNRX1{kT|r9Nud=lx+w%UR~Ff->f<2Qaj^u+7BrR0Br9 za((4w3r_d_9F+f_zGfj4@rU@oiqzZzQInE8Q=t^_Bg`%lcf?@-)oxlrg2|D_{r-ax zxRJ{i*)PJb6Ize@fVZt+1@?V1ZDJFbI%&jI z4M~4z36c*|0Cx99c6;<;;`&X+L(M8XOY3?#*-(T(=SE4-I@25`D9a0Qq`4xMt=u>qX3?yL_ zKqw8D-rIbKm5pHzvX3QWR!@3nJa7NB{a*Bnnnmrk&-15szpkF3z#tf8!nW^-psR z{DoK`3#c$~d!UsXXl}ASj=xE-l%E_~=BqgjYV00l<(krB+7>OEfArhy6nm%|$X-4Z z`EQH^B1c;lS<6I`{A$PXyq)#F9htf_q4=i|%cd;N^G+>r z`q&bYhS1%zomJ02U8PJ2DyHkseQl17F7M0qvBJ3z%rV_RY!l%w8PGE=zX_|w9@tBW z-1x9QRfxuGP^PY(TWbUEyH&v+eZZ&7lAI-4NORxvrS;8mpDTgxE=AnnwIUjog2mgiaR@`g1hkDEdu9qJ}&d+$u4D#3pfVdIO1rH@=8 zeKm|?POUM0%j7T(9?z!wTX3MHJ}#!3tL&J8u_E+tj~k@-42bVFBv{?NSqH!3agF`IwzhFnjIZwnAIXFiV#PvYoYIJ zhQ_Wnj6K&TyHF;=URV>62q;T0I=4viLPXbfNZBCqm2I5#Js7r+XZO87@nck${gKQG#|t6+a7Zc znQ*cxwIVovh=Obqf$;BH3GI>Rn29%UP|$WH3xcHG`m1inwczO4fV*5ym%-Qzz>L!n zYGsFI!yLHfMKO8P%@3?Ry#kd)_$FSi^+ozsNs2N(JnHXAcsHmCe`A2SH_0gSq=l!& zagwaRq2 z3lJgV6}43kB02*ZdHA2ck}fcj9_!q4UW!r2VKb~G^o<2#&~{qb;sQCK7=C`7UU>c8 znWJZR;qpk{c2bl}YXKn9-_ENR@BlYxm}3R()6D&}>Dn@v+?79MFlFf!P|`?1-he+8 zktfP5sE^MPGxUNo;innTsS<QRiW~pTgD1x;c z@M^bK@&ruB93Oh!rvoczEW=1>q;E1(fKuAB(_EMNnc;ItyOD}oGKL@;a%3gmJUUr_ z3f)O&)%i$mb+EJFe%eX4o!W015_@TYz$UXo5?;+U&tHVbukF0LPmP%aZJKZTG9H zK-;*Fu`i};wL^V0FRg1vIjlov)vlld@*8tXNw$-V+ zG`Ec?%~Mwguef)L>Y^IS`2*Yi?b;YCW8MSzO+Ox0^8h_Ii+>_r64nIp*0`#$g6(_> zAO#3uy5xe_187D+KWm3t6Gh=%JYthPH{4g79%{FS)Um7=tc&pQ<4eU<-_~pwlXnD113rlyXf*Nj zi7Q94`Ka_P{SKE6 z{rhUpx~MQ=>xNKP@UKo!jn`NILT0P-q_Uxn<+Wj@Lrrt%p8?o*siHn#f?r1KGHzh< zeVt7F+Klr%>Xg+&@pouvjxhCjTiUPr8_JmoaDLvyl5o=znD%k<$xfhHc;%*v#pyX6 z{jdGZ;z>n=)Dk6nHgCj=1R_4h$^@Voks-%I&&96=#15+GVG(eBFs9^yo!oeyt zyp`V7|C6?Nk7hFs_lBvC!;Eq4w8=CCQFLk$W)RJxEhDrlRqfDSb&A6r6hZ3HNZK+& zr3qpjN~Nu8lui{hr4&_%h#+;S)~G58l{i%h5lQ+!v-f_#wf497+Izk0{k~OybuI4a zxu5&K?(4p;-$B!{2o&-+igMe~Ftf_0_mQQ#EDJSC%eiWqFZ21eB&IOyodsTdiT=`C zqX&3G0K>QT{E;2sx+o;MX#oz92jLowL~!%aU_O7=@Xj~;uR@GLC39Ey!{;;a*b)@5 zOM&x+cP@n|clG4$uHxKie6W)hoDi`U*E?|;6mQZ|?&E;Ba(wIZ#aBtavyo=LqVnCm z&Z%pt-JvOa^mj%dgU{~r#qDyBeR+VegPq#^d@`YEaj(nukDB7UDQl;9DnZaCU;kdL zQ6|t>OQIa~gijf19}Z7}m8OsEmRFR_Gb~UZEnY8N4;0lt=X^PP7z%ne_fh97_r3VBu0MK~^QX}3>exU|NUzQ0G5dBrD5CX8?`{DtL7?>AW(hn_lwcuYEpjnYYGLt(JX{qBrIOBzinliF0RK z`IyA>3yCg8MjTfm^vB#28c-8__to1=E+eKhMUwZmkIcz0M!B3BsB>YC(ep@-_g(ppuR~d zA7{A+xOGiqL`C$$Q<1}@-r&}I;s%}|T93MWW^}eF7$|ntBz{?%_KZ5Qzfl+VH+2u{ zZ3BecwKjdQRVX1k$R6FL9E9o4o=cmmUl7n{I)`5XzoG{k5aM9&# z$d;x!OJ#DB@uS*WE)#lUbapTcWy2ran3zK*&{Kn+yf}6jcE-E7oAiM5vYVKKFBSmJ zrW3F9Dy^Tv=Qt4mPPiNzl>)4Oh`@MuYpU4#g|sv|j&a08KGg9?o)Y(?I!}VK^JP>s zOuna)ht6FN-A`L6J<-WnS>+zv<2HbGWpVh>v$orMK_OFlJOEMwldI>(5a!DxJ0Jti zzfZk`GPcnysCTZe+$Ub-I5%)aEFYCWD{bp4l-}FmyqhkzZOn6~xZSf+H&pT^hvn1r zNgY5JYOJE}wi4%W$F%Z&qzRUEpSZVG?|UgK{oye6=~h4}b?ruiuA(=VG-6_uA z#r9kJT-^(Lkn~{WDVd08k86BzYe!O)XuIwt6Rq@N{R>RQ_sFCA-36{%$w`VeNZU>8Mj=1U-vN& zQbkYbk-36YPIHd|mzX3a4wv!IH;o>3ujbnth~4N3M3852uH{;UlPYTJ!(NrIqs}f& z>nAm91_Y+p2#KcFa>qBefvUR`(9>|*nSM~@CX>DJ6I1;10M=;)b>@wE&<4v;a>3r8 zYK!gVL4O!Iac`j>=W@=k zRcHp7`TV^-5DAsKOfk@hOhV4+y_L0;``>l*lE7X?Oe#HMpPLDk0M&M*E#PEFC8l<8 zMCvr)6bS&|$+?qCw2xuuFuscs{TFR{b8Z*bY$Ez&#{o23|6c$}rCJU{&vs&~KjdMS z&hb-959^ma5Nq0Irv#RD8Mm=NUJ*AC${U~OjE7CXK0!Xuw=ge`vi0NTDn-*VYqLGN zr>5KY$Mie0-clwLg?hRd5aRmdAh+^cKSC4Xyhf`y(uW=EHTE9m=vc(>!py4cmm@P@ zJf(J$iZCnFzdiuOh`(a|ErOY{t%kuKUFH?5jQqmJBTL-A{S?iKbS|~uMDRvNnb+}* zz&+GFcI=)G$i7VRNp0Nz1aR>>Fp9lHZ5x@V_6oV^>xdTm?Hvd12)}aE4rO@&31C5s z2DjkfJk9UQ-J(1cNs>xiQj=1mM?ys{ziuVWnRuG!v3@}a%I@^JsQI7<&;y$+JXN)oA7Er|V01VIjK<7WjjKBL#xko0&9hJ*@kA3`3xc0uuUNcC`;S7G7=ZkA;)X1qUnA~LvqgEPND=sv@^o9P1GXPI@M7DBi0mG^#rdOJ_AeAqNa?P; z@mZGNh;Y!>gdlb#*Fv0THxt9&y6OLNsvPqdV44!W#W6F3%P@Hy0A243nL_IiC&^lZ z%XYh!k90CL%?${>h%`t6qvJ98E}=XjvO)LxZM2pkVZ$U^-h|m1@#14%CQY!5|1K9M zYA12fx`{mutMgYKfr?6&Hzb8?s8K6skMXOA4w;gK;aQUgfJV))6RLnRE@L;IswbvV zvSYe;s~cFj8tyV9ANd?GsvAxH-!db>LIdP{7QeOXC9V;J(7F{tq0%1Pa7^^Rg+FfaG!!pWwOnL74*9W-B3#KY#RaII{ojENrYo>rt6Cu^}Mf{K?lJf`9$T;hB`AwD*4{ z1f>PDT>J|&?0?lfI9D+&T)tvOeNdwp%&h5BFLuF|?L`>CkR@~4O!H731NHhoRfdu@ zElvsJjZpyGF>}3&RC3>ZA$z&kl~$WtgljMh7R5ui_>4uB{-CO&vQN5i_LJJ74TTiI zF51UUadpWnfis-;W9a#FDqTW{)9+tr3rAOGx6&C2rk~WBRxh8YK3$HTSh={~NSP#m z3tYT6FPEC@Ct4El)8^1b+tpatklFI;!h`nZSLB_FJzX?3(45*IdmeSMXb?TWedFF1Np%>6n~qd^`CeYPBi( z#@p1Til9I`oM{O!pU{LHOEBDW%s;3b-_hd)^16b!4M+vI(u75Z1zO*QK^l6RFXwZd zY&hoBS%bn#n_ld-@FT+guK`#dfp2%NYp*TA2@nj<4AW*fmfz6sPPP09MbeK7p#x65 zTyPJh)LbWuyBtQlr_N)>up2ah^F*irw_EkrP4YBV@Uv8a2{%;gi0`7OCjKMYJ{!rj z^430PXc~$5+E8Px;=3-uS>`CulvUkT5oodRTXl4C zte<~U)A96)wp`QALlAn6E8yns2He)k!peDgY33%g`$_+^{iAk4fpETaOkPheXzHJF zUKlFoV9%j5OJG8ODjaL6=W|TU4sI5m9kE-0fX(mk_NK3PtHWL()&^yD0a|BAi7s+- z<=*r^BbR-hZb!Oy-~6asFU(d9SYjGt4DDZdJgxgP11k}{mYd~#kz)icF{8U88H*g5 zd-(JE=;!rO&t6J?eYO66nhj-D1KUth4u(rli5-)knvV%Yj$K-3kw)~ujqQfmiCp+q z7-a6rS+L*x_P-XJh-u4>Ce!cVYIpEYAA#?_5*?-XG2*j#!@^hl>v#%O$(nEw&~Da= z;M#X-d-R{a?OjbjsfIJX(g={Ghma)=?v}sI*m(KGDqOzqXuYm@^CDs1p*%|_s5ins z#dLiEi7Vd33*`vl?e1HkJR!{o%m70AUn{OalPi{bFm40+6H0 z(<(LdgFg80zpV$GMRF$FU4FEer)}5$i(+w*5}<&{Ddnlq8P(15=B&U_gqc%Bro`Pa zZyK30;OX6q_6dzvhl!dgH^GF6qCh-Xhqt>IIZV6i+5p0uWj|Ttn3YPv1L|z%+Ht`BJrBU0GeI+7Sbn+A zHK)TRQ68jzWh_ z229eiPX)zoFKJGwcBeZ+X`cLOq_rmub z^r}$PC`i}HsO}sSfLmhTw9p(av36jNm1FoXM|_=ia&`lL$kOID5=&!DMFc7~iY%X0 zm&=J+Cz%xom-33KJ2haJg=^vN-ly^o%_(1r6r9D&DX4}6))d=D~yuKh{vpm?sB(uij4@wk&v zo-k|TyNVz50Vl0>ADV5zxbEyei-cIf$#R$LZF5)heiz3ye1UQyY|*?zL*_bX$2R0ZLMAHdE*vL? zzg0l0=Sqd&Y!#BE-}CL$$G!pBOK)CS5jvVuX6HKlERWD!1%eK5GcRibb&+zmHRh-x zqFebld@|#2vuy^L>=_y)2@|nL19!Z80F?X~w54+8nCW(pP9oy@ad_VDCVX`@*j;)q z*<^$sRKoaS^zu3QP?pyVL}ZCEBYFDzu22uZQj9n>`CM1-y9x)gB4g5Z&P+?Pbp*KC z!#bzIx_>7B(ECe3l6savSp?o2Q8ZSw7qeppfRBNbn#TiiP5$?)zA?{E3)I?oV z)h%9#9r?^7sd)(5_I>~9BGELL#O8!oAkzabTnK7`zB8>bp@_8xB6=9Ys!_bC zA(Hh2$P>G*0H`iFMjKQ6K8O|LRW|0~IXy88Y z@ym~SHpbVr)Zr*Jve(MESkf-QRxP?c>;R9=_efZys#j1CAybOP?xLAy7W4#WDs{VQA=z&-!lDKnU9n7a3ti46ufD&_7(LHnjGMF z)mc#r#Eyb(*iFiu$r(y(y|gU}&#b0t2A-&_cru~ z@dBmv<^{W-0hQ2GJgNhe-SA$)uc{*0=Jz*cRg#f0uya+Xa?oruiM#GUB_451?_`J8E1;K2LHSCn+AlgL3T zyph*wS~6QW^9m#YAtYvViyV0^`+0cU!wcX+s^tJ|Sjcx3g6cW&q6weK>@9O;$#KgH zzj4;f(ELU8uO#^pjkM7KXlp+XcTK$9bvw&dT^IUbQ&1FQ>gW|(+1i;_&T>J*3)4CZ zji|@dZMBapijCq=%lD0{ewAITUaPMf8XZpFFl=l8;1LGu^Z%1yB1 z$PBw6yycxSBJ4gG;||Fay-$E>?h3ynX`?KdH&!o7gkticXm8h@QnvgV#$`;Wyzxdk zf_ik>(|_`71F!a9g&^ zTW#o}Vxg9|x-r(J#F0B4jbWFduKQ!8w&e4V2_BxUm7$@_H$r! z+toyH`!|5IVLeb!CQ;qTyhz>^U{gR(Cvy&_-%(~4RB~q}GOH{6m{Df(3;rpqw4utn z1vmOL?WE~eg6LiXfPb$hcYK%DERE;-ix1@9=fa8*zs(vW4j6`JjFFy6NX1WI69Zcq zQV$A_AvNMK4Yzd-MGYI^O5>5R&9w6>P4{A3Yp0u5r@nJi4B7f~(3N$?C*;r2iaAy_ z>#T0beK8FBOG+}4+&2iZb`f>cms?d6LMt%k*?~38zA<76AVOx18&MSVq>id1Vz$0S z?`BHFnM&J1u8%_MMFnC+m@xJC%r2p%-H9Rxykfp8+@XLC~=>`#}IB_TvVAcb{w<@bvO|x%f%# z0y-@w2_K-4zZTp!Y-^UDBkj*Hh3qsN*sSesKy7+FIvTW!Vy(6 zH?Qz~aU^Y?3+u}kwLF-W#a$NxWx0Ez$5K?VJyYon7A&sK6t{!HuRt9q{Xc_ahFJy>BEXpDot&Y4b?)WkriCnSb!|^fK`pXx~OtAHY%c z!%YWg9j!au*GVkE|F>Bvl6xoJq67fK2QB62B)C7s z%Cp{Kcc}4nbn(4jjGsIv{X6`6ym-c@YcF5}LJVBAa;4ZOZ^QR<#lQaD7a0*bv5fDS ztza99V%r8Qlf`wf|K4=v_D&~H)^%JowITpcISxH}s`H5+{YVvQ|7?c^)+(fP2LpYE z;%oYKF7wMnZ+@`rWajvI($scxPff37k%f=(L(xTN56*!cH$G_RuVWJCws!5l8#ADO zu|!B;L{MI-mOX){1SNE#ijhH2{B7tIglFfPQM~FLN-2neWD-3QC;PSR^dl}-nA>+i z^!&{+F{L>kpm$DD$AbCT1V?V8R&w#L zL!^~s9ZyY?dpBI&L<)Kks3pUWehTHI-)a-aLD%fJMzi!^^JkzsTatbJlvu><4tlg3eWCAk+Fq zb5zJYdXZbCSx;%C>87e>WcFfQhNZWnV*fl*D`POS6z39DCB)&vwiQ+l-GVT~ISocV z+ac^^CAN)+T!QXj`=s{0`YTeA>3!(Il~}}jztKXY;>p+ik;t8TA-{}W-Zl|#{oTV= z#@v_`72#$Zy)Qs=jsOJU5s{nsi3ik>*Cg^=cQ(~;{5@@bBNbLSSL~a12byR|729|e z5(5F8G(6;NnJH#PP>>S2#Jg*}6*d%HN5DM1(!Aq$IFfM*tIrL~g61oQePIRZ9{3Rw z)+ZVozmW$Vaq)%?VVHtNYdNjrkWN=iCbV!%bx5$rcqP@euG}`Qdn9f@{Gf+nhpQND zv;x%L+TP45L1-cT*zW6DHolhH)O}~^P?uq0g>MVqzK6#aOF&X^8Yw+0?qxZC@5%Oe zpnOOJ519xO zzNP*Jm;U{@R2i&)L(7^=l=J`%S=%Y7->6>g-niFYKz;7?`^7m|dflYxaWGe^VQP0< z16fe<5`g>@t%cZ=wo}3U)vFbW+1w=x5jUfDr^1C1x7gGdZuHJcIT>54<%hx7h}>eP zt#hZ8Gol6#lH*53w%gmb_@qiq*|xAl0{f@WcJi~|kzZ;Lz9tm|N3cCb=x97lT0JrB zi~itu^MViB6Eij8=)2E8apQ8^BlZCu{J!Rb&(qo;l74E2@1Q|G7L{@$`8q~RW3-M&dGm@0@TxP{fG!xedqn~{9VV( zXB?D;T|%c%YH2%9-5xapQlnBQv3XtzDTtEH!5)0yxBE)B8zXVjiXm14H*K(m`PUxn zyu19JPR0S^6!z?h^yR`#k?B(V{;E>C{SDWZfyN}@^5M@}d=;53e7^62I8Bx`z3*mv zz`3$&KDx42OtuGzoO`O|xQN`t^04s4db&H*KlyLNQE0qy;sb z=h`9X1IcU5+9I1B&3fOJIsh2{{W`clQcUrGwULsb_!+^*FnARv&{GE(h}|1&n+Z!G zf>d+AZOr-*n*B(%u&slu+s2Fsc*G}tWL%IxM8z8`ecHHPvA$&v^MQoeh58{wGr)KR z6&zcQ;iv&ez&UA$ub`Du7cT99 z6BL)?emT8azteVxu*AntIXb)z|9PwZ$8_B%0N)TmTrQQ^*HX`Be1|?HOgO$iPeTm= z+*7^c?Le2L;eMF*nS^fRF;brrZF?&&V00G9HaC=hO5aotlI-u$oAxGYHq}W`?B&2Q z5L3oRdk|hGW7yVF1*4C6D>g_vOgiJVfr2&`H1KQ7G4CqJlLTOd&zfh8-Oa$xqM0$! zev36}0^uTca?*+lFttN;Oq1vbjKY%9_5d&3bZnhBGG3n3Wfh10H6%k8Kb$tN=}?SDx;B z7-vTzs%i0^+}gaHtrkCI`gbc1haI(Zh=$v)BwV+!y~0TJQ9&ID7pGOv^YqGeJMv%7 z4|yRHq-{Rxyw+6|8q)q=(*t^gn@!#TRF|tbuX2d#7;na2zucNaM`9bA{3NxloShW@ zO$uHA7xz6m8rn_swbHwbQp|l3C8Q~K`t^>x6qB*+G!-mjn67+MJHPtxV8NzcM*(jB zV{9Jw8bFA{$$`vPIHBOb>cEVFSc~A#^Dr;zU&t$Nzc+#N3pdvOXhv}_yT>&3*1sD* zy+hqq#jg-aFZc!#x|r32%stLaJxFGeYs`N9lig#NILkN4hRuNsXw88r5G}$@saIu^>-7e1o+a^1x*d zvwy8&HU#=IKbh}6x(#7$o{|FR0)PoP(u#vNe3d|3d~4+G>^P=KFjvQH@o4lzZJYDM-*O?G90vO3BJ$bMe3X?pgZ zHKjH*Pvk}cun4UoWyOM4;I@)E z0PRuB9iTn_>x@zU`!@u}+i&P6Q)Q~Z*JHAQH=(nDMe!e}^nZHk|4$$2|9Hy(+tL4- z@x55ihFRa+j;^-xhGn=VTAcjsU_$CAI|*$@S?l% zqv5=a`&Apz$DZpgK=hG@fGfqQtchgZi33I%PXsZ|| zFYguKk|zB1>ehawp4Lv!u5gdLUWHzHuxr}R+UQKvqlr=z>}ih{+IC{UvpTQfoVJnk z5l71_I7>4A_2`2x>L1)yVoAL8+)vmkF#*qK#{A%USmK#*`!jXQ>hyoypsX7*K_{@> z7#QI#Og;c7jwFYvR{z5;@dmz`S;m@DN9!8KdsL#Ytf91`U6z6Dh2p-MhgaPbsYYDC zQq=LNJBV55FbqeE%tv6q5r4z^`GP0CB;vc z48}t2*=S%DeJ@b{E>f*2)5t8g$O$h7Feq$M3k`e8R^|}aQw*uj&GN$2?*5eD2{A&3 zy!`jWvq43983ItuJAchp{iS*hSck7I0<7JCynryPOPbq~l&{ob(R9p^Iqch6zd|2t z8s+hG)aJOX?$@rstck1eI)NY{kMRr$m>p%uJ=W& z?%@X-;91W3hA4wVbLe4f#1Wr~T}_?=gWX@ichx1ut$lgVtIK-F-flqF@-r>^S|sG@ znqIh_qwx(+fvt?z6a>=_n9dWvaLZnTO0OSzTb%$)w#lH;?rK_I?6U}u+`N9vAaeV2 zq{`=z^^a~Ty&gwqXwOwv-g68bbCOzuFJ+uU)jOv5=_fDm{((9@g2Utp=(Yu#nbLS0r}0l7-uURK=3@kFO{RY~ylxMT zp}c+f?B(r~AFo6j+GJP&aL%@R1upS^Pp)&|YsO4e=4|XeeXWuS*yP*Yw48-G0WC$| zT8Mi2Q%(fOp93}9U!vBNnf$dC6*`X1Lk}<7#XgMJpTq89Ga(5vAM6BFZ8KqBmQ5u0 z@f-TdYxtF&qmDGZNiXARhYMEstPL@xamc#tSxDvI*sD#}Vuq$!FBKh^f(SSBc&sYM z_#xjep{LJM?=$`+4LKJ1sc$k5mMk5{xoi$$8F3hqgnqy_)d$t*dCc;Y+Ft0TZ(E!6 zd0fU+)6U`AHNq3Xw5+y9D(MZK6Nmf0Nm30vvL>G(fCIoTs_!tHxil%V!In-AVwWqH zsP=z-$tL?luwrvA)tPI>GFyNSFg)wquS&fu96tsg|yZD4K1?fv;8$8cNNhbh~3H=S(EQy*2h zc)uofoLwui9uH%9n?4&NQfmNzL&zqcGdj~wgOoB1uL1}H_4oMzSW*+P-)Lba3m0!M z9vD$oK=*;A1X@~H$%jR^#Bt9Hc7Wx=alftZlzikUb*7%!VPaY*kUxCdQY{4%vkxMt zjd$I+vl7d$y=dkGaD#jGgYK0nh!d#RJQJ%`s~i)5Bns~Ipt_(~bZyOI3+=Q>4x*j& zv|aDS%tsCaf>pV?k;}RhPRFy<4j6^)R7wncfNFoWkg=6op?gY1P}N!oywWuk$MLw|TUTsCx_vX>mN@9bD4St#{{$H6lxmT{w8j-RboW@`%u=sb(&iC9VaMZ&d6(paeVcy*!cJy_&@fboXnmEJK|{v zGQRJ!gdOB(*yy;gVEwZJStfYLJ5CmOPVtmRe&-GHYyjZDhjN;AVl@iXkYU@#fW8uf z$$<8fV$w^cMi72&4>)SkC-QPSy%?NzkPwajsQ<>Dv6bbT7L+PifO~yjqLLd&L!D6j zdZWd9c2xU+iO$pJTmE`!^cj!*))JpjAklqT2VN&dYX)}RTUd+E)U%g*rk-#nMFrwo z2oXJb`0VHUO-`uE1%K!}+le$NeKBlp$_EnwI466DIe;UJz!-nZU6>svAv{pc+ODs= zRHOOJ=j4y1)K0rf- znR85W<6g+AorZ|tjoqIc;d4F;}|%btm} z>LYU%Z~CJw;FiE0;n@ZKv#+tYv(S$a36VUisrP%0-5+wLE=^{AC%rb(y{ z?V)Tvyr&{sAJ@9koJiEVmnm;8_dEnBwVqcm=W?7tB_3QTe59Yip__OHF?kZ#FovmF zG?KOVk`#Vp2*&K)pEpgJh$p>Q?$u+Xb+?^}A?D*r0H1`Zj%XWVS^GEbsTcBky=Fyo zD?Ccm%B~;Wi!jeHCP-_fZ+eE7`xtcY%oC#WObgPClPsX897o`lS8ToHjGGH|TpnY+ z*PaIMIR6TQ-;lAdXfXE)wyFxMHh(lJwaNCmS-(DIIzY9uYtjQ~Nbi+;zBfbu;4-Uw zY^PkiGQivw-R4R}j?Ps>ot-k>FPL+VdX2L{b@D@}X?v;*ucqs4(>;CsI!y5HlN-iA;gm;fRBa9Zr63y>#(2!F%M({ji47DMA*r@N!n zVOj&aw_?3~D~BT%53JqNBp54J8mqdBUCtjAPCao=KC+?2{GB}4S+;T)5`r2A>b-yn zvotk<_@=}EI=suUu?kUj4dr`s+g$MgRC=Rg9`{QFNbQH2ZQn99yAb z{XV3O<6~W>86yCTlzn*KVQ_B{`SqU(eat_*y$tmGBT#WY8`Jm1X(_~a+vP3K_G@p- zgPsbqG{IGkNMFxq`I{{L!iGz&hmelTxqkjlI0N z+Bvs4I@NnDnlrZ1QNswxh**n3JPtR8Ql>_`qo$Y+n4kZK>Er}10Mc|0C-$Bre&mht z_K;7wv@UriO*~FANoqN#syHvfS$XM%8s`{J6-D6dXG7XBCZJse;=2!RNaIe^3ZucS zcoSru8TiS?^0bGVMp@n~Q%%cx=8RRBUZ0J-nCeIOlA16-T@+P~56p_{rI_>=sR>{H zMT<1tiF5)TcSK?Pbx~xW!}VR2GS&49(LAED5&Cs22Rka5R1H?VExrFu^dx}OSn1bh z4Tb@-*ZNqAyA`PvKe|D^H#r`irHgkC`q*ik5equ9Zp(%=rI#i5TVS{9W|af+*^7?u zX3z0sc+u)-L_<-PhDCxWJ|=Cz^!*zjU2)Egh?1IS*J%CM=tc*OY0g15&&Yq$sBkbr z3gN-OIBv=xp8MgoWN`a7r6U0^>&RII^sL2f3Ch#fhrrfVH%OZe*Y&mMoTFVLRhie-eHkY1)J~Kh8+$&`=?PIAQL;2-Wgr`oZGT4}T zUlc~KS|ujF=b5}Ppzb*O!!uM<(0z?H+*b5Z8Jqj+ShRtm_~Y!L>CMw3UrD5@x&rAw z1*&_S*&{g2+2Z?SuB$dWN0R{4ULx4-t-J7vssi9g#UgONVd#6u+6EFg??B4kEd@4x zGn|YX*|QMyE0I|~gigCA_CUBbB>mhoaM<%n&r^U~)nPhvGBV0(HUM&8t0W?aKRT5C z?C^jdLVo#;wc_dU!;Dz3m%r<8Jo$G-W$`}{OW@xQDPV_F_s|8 z%$0PAeb4Q}-u}wtTn!ib*b3|z4odEQ1ZO;LyqIzN3Xd7_EaTg^eI9__2>+)^a34Q( z*1%D5UMugwp;Cx)x_*!z{^q$nZxVW7{foNuwAOdosFK7K+Y;r!ob86?3 z#@6!W<>u*-iox5l(#f-wi>_SG%?lo1Mi$odlOYjZ5QCn)&)0P?AmLYHEzjjS?PPim zBz9X~iuhYw@UhDZS)ctqab-3OH?$Nyq4S}We*Op%C!@u{s=MNmglzZpAZ?0P6kw`n+aykie3+p|al6YU_Dnn z@C~k+UsZRRvlhX^9c)sGWJZ0kz zKAC7sP(>F+4)~D1Y|5Lnnh%2{A4$(I6x#jPAK~Fq) zS36#$RFl_;eqy&r9UD^+mH&hCzU_l}R@>;Y6#VE;x}7;7{n!oH038o(@Y0xn4pTNa zx>w0mW%}+fLowhoEx(Z{jwzdzR*rzr75fz!i6ckn2FFgAL|6DY=3jN4X|VVn`tDt$ zUf_u;ksG?~KHaVnBDbadqa54eY*$%R%3D>{LOzt~9eh4B$oTsW%v3kC9w?ZDl1q{< zm^+9YiEX`y#)$DGuwoW5!W=oI=d^J-1dv22H&E$f24M<>AeE7>#^ZnslX<(`BOB7)*)*-#Dm zNEcETjcm9TQ*l)1%a>f*%J)o2OaQAy_CR_o;K#JMU((SO26rvLg0$^M;;?xoQBJP) z8@GI5#qny;OMZ0@pHbZ<%`MxCEZDFBQ6JVb1_Z`hzO4yXG-I1${p~a);aG~me)C7K z-ZL)PLH>JH1fZJ}47f?v&vpU1@d_*1A4#p;ltl4tLLFtD&wNvJpw(MXUat2c$QpkP zW>kqH(n3Zz))901uY`z1snbwe`7IxLDd|k(>>%@?Rf33}k@4r56fj(|sbV{WlPprx z2)TQ~(px?)L127)OEzA)J95R?d?ol~qd|6cgN#wAS{9+L3}ve$c<%KJF^sdXcG_ah zomfam=0>n%{-@?=Tgjw|%$EA2H?hin903eWp zyO?agHu0&x7>=vsN{%@>$sWW^jLqGGgj)(MjI03zPF&ynMg2gWccC7;b`j{pxecf| zfaBP>8}0GLT0R$X-0Bpy6+t7EZ%Qr>u5}z@RZ(%pb~+J&=}IGe5fd^-uGLK6)^$Fy z(=_S8(QW7g;lPZ>%@fJ_tQj=!L0(0S%rYTKCiiV`d6uVI>!g0yh^P8B0raGz@Mznp z3l2R8!wPTXoLNA5B)ja42)ohC_;*?AGo0 zYEI@`YtPvTfi5Q*P>+N$*@Jp@h<+zeN19|HO7^z7p;f0q~ODY3e>bwv{T1wuVd*8Q|G?Gw7B24?aDWVbDiZ$ZI?pwdvx0(p3vFI zw32!2zh$%pcwgGnzFwKdVcj1xRFfA%={D|Gkd!-s-C8ju?QJHYso^#uox-#pB%Pu8 zI7R%v6Z~%B6#Cx0%&w^hfM?d$D6LY7>1e=1N-UY7+nOBR-F-r<2k2}DZgSqR{Fn#3 zf8bQ$w)SyBrNTj~^@UZyz*7?P2hWrZk;gcRKK8;Hy=2xT9a0K&J+Y^4v>>7MZA`SR zqYR+=oJ$}!X9Z`h_P7!a_uUL^2;)`|FkhHOGxvIX`h7)<$7|Dx!*@S}DL`1}2UHe$!y(@x%b@tW`EpgBJn*VVsm~y>m&GfZ9RTDG=N|;#$ zz;>VynbU3HifbW*eaSloW-D9K(F7Z+m0S?R`-1^W?XXx$*DU<>1w7WaFOGUNyOTNQVJ z5Z3KROH?gwtqExk_}h-Ujk zdUbjT<7{HOr+4`=kG|f+XeZDgBZZHSoqlTAdeI|lp*_I<+z9av|A)~i5uEo~n79$p z5c^pO=xU<_BV-d}k+!EE;3r%eUH1JH^)Vp70TYrEdmtF=YaJo4cHt$r&bSTC3)Y^m zasYP8wL?EaQ%Z%DCtDY6!m`dKm7;Qd1bO_W6ESn6xLDk%0&OFFko4Fh%7T*A`TIo; zt(6Y}Bax!@jjp?yAKi7Wtj8e3V*It!MVQ2QvK-zX@p;s{n}Jn-Vt4#@hso*+l={H4 zrl<~Av$zq1thxcWcEFe}a=>#c3k9Aqy=mB!t7YlwdiU1?2+Mdq6*gK*ddq~4 z58_0SjfH}jc;FLIbf`F%K5)h>BidGqt#o*ns77cu&DungUzmvJCja^kgRKO#Byx_ynGAF^J@88X)Tv>UC|Ej0&sckophDk|jHhhj2PeUu2U z73{8rKhd&`hXhJMp6}Hv8C!`pJ=6z)C70{Qlm~eLU!BJt8Hi^1)BhJ|Zywb|x~_er zxEW4I#%@ivArZo$-3TPOAs|UmXo7-7!~wPpLKy6BWJU%dL7@pqOqiO0AW@M)v1PJl zP(Tb2LV$pPN;3%wQ;<0U5=iD0pbAx>w;@>z;Lw8c?JV8N#??nkkH+RRfQA>k_DI3XrqBoi18W-9v%b zrTKx|4hamb5#>E*371SVyFIL19{A!6hIAg2pUlOsT|I#e)yk*46&n3UA)Qpg!;rKd z`R6ikBtM-s_;$G_)XE^6d`%t_cYi~1Da9ViUd<-I11P5|e<-N$@Hca0ILnwXy>KXe z^B7Q$B7ga5u}ti=ums%2e<)mYhYke8w*BE%om|bT&t_=hErjpYyst zNuaPpxJ7_)vJG{wo6DksJR%+UccN>!`YFNt+ikV}()HDvzq%_C_JfOistrZovVf?O zRpek6kQ4P&*vCDnYKvRF@vP&hkj?c|q_I9Lz>e3GwAa^q*IePY-?b$C-i~GQOK!l6 zXtZ-gPhh9-Z4cdhr(B<%Z#UJCI8@;Tp7p!nXY=713Y0~i(nY%TFflogny<{W=Cex6B&bZ0@@G3d0Kx+rqpWZ4Fo+ zd9^ftF~O@gpXywy3vP#;IsXvc{uN4p6`1ANJ=FF`1`r_h;tc98xLe=-O9xk=+4g0| zQ?CU~E(uZzq55kCUm({3@`V3OY>~QFy5IoUCW{R?QPC`@UVv3k+FMOJD!24o%`|AX z;~uSQpar~7v+MA>%9m{&08T%(-^w7({}vbA8PRC~k1#99Oquy=41rKp=}J5SamS>n<3OvjAcL@QAzK)C(^h5ATU=WVKU&&jN+y*&7$M^GO4p-lnG z4rX(;JF=)mRI4>M+-n>Bl+~{;?oWq^uKMLvA2(~6-Z2GJ!;;@u5tAdITllQv<^Gzro<5Z z38)cx)0Gg45hX?(6Ymb(F#r4~9v8URT*7?6U9&)03wY|98wipU37yB zPH`>^+<#p&Z7dY$oQ%)j=@w~? zCU|wa!t?mr)y%(BH@k1`8&<`0Ra77YSz1MpEn)V-OZ0CJDGcQLSu&eEB|_}(eKXp~ z^#$weqfgzpXq8X1(xH1Y_m^EZ+0*H$5GmjBx=>qiQ)@n~-35NbF`z^G>%^NUiK|BC zv?Chf-J5HQRw@N6y~~%TvXdz2<{B_H=ja=-z`hy!DyR{w&Oq;pqyDdL zne{&ysb<~f-2lAzv3e;1OK;oJB|w}EsxhQ7q~17Oz-e+DU7Ft30G$m<=TOuytA-yN zNQLwW9=IHPwQb=@b8ht=r99ybMwb|lzz3&<$k~pZ2WI+9iY8;*2K8Zist$2jp%J+e z+K9-I0MV04#74X0@y_m;XIkk{exB#;L>CXcxQVO#?Rpk}pKnQE$%)zX0!7! z-KV?HI_X3;l)j2Vp=XAQsuxO(?Hz4b^iG^!m_afg6#qR%ecmttj+NwNYGm==%40@h*I=a|8j1{jf^I6|5?12rHY^k~go-~9_UVOov5wFp- zXGvWw_)xlPx9*~G+V~CqUF#0j$N4v(btSdvtXVzDWy_!jG(6I(UmfU z2}N_hrW3&0a0-oFAug7!SJ`?9-?odCv1wfQ7Va?#Sg^c*(~AEDl(Pgq^U;Whk^#mK zyJm2m_oQ566NQ=TqKo%^YO?x{%WJ6XmkB zM;3avP)$cn2LZxr*J9se+rr`!)AqS-7iLATWdD=pgA1`CyaIIoj_jKwX0lW)J)D(>m23b_^ECmv-w< zf|!Q!pN%Ta7itMdTE(Gm42^}DH^5y&H5%_Wb0G;fb6)i05FfZPXEPow%83%@H}8Rj z8+d{k(&7a7prMs7gBpmY*FuVdq_^k?Yq1L&h(w&*Fz^;w6jvwKaeCab%q0I!OfR1=T!0DMS+{1X)ctTl$(V9 zRK^0Uv)@hQdUQ_9O$n<0tz65qbU2}(wB*~{Dn6A+;EGSAE{L)?%h3{}@AyU>v75{$ zF|l#xIkNnj(09YVDM2Frtmk!^!x~`$LcnDzM(uP|#DXs+JTKPq)cN~22YNTv>;0Xp zDz@SG<^io4F)DcT+Kp$ zxH@0m4c_o){Ra#D27i^?gicpr2$~v6uO8F9OR5$~CW&TUs05OglfIOH?{CSKc{Uz( zS3Auj^!6c+7O3);evdD%n@OCgAK|UTpQW?}2QKg-q>O{#t1(TtT)gR@H)o3Da4z9M zdKc5=bP&yP>8@Ii084l%U!!@B`?xaD9q)E8#J>xGM31!C3E~qBQMtrTyHa-Y6Q1Cv z*_OKYU7&P0d6#L|ALZrk&3w#$=is_nLn|?k*nKQ5!B$#&sWHlh0fiII6Yt5Ps#_5{ zJ8wprRT9PbvmLO?DvB3wbDAx+HBh6Wn@DthxxR=QRF|VKgfzEh$CYN=pGiuK6c+$g z0=lGtV8jV#IQ6q0ri4YC<#|`^hPVz9(TTT%ZYN&WahShpcr(OSGcnZd!yLq16A`XO|%9l*-+PblJkx6#TR^p0r+zcU0^-?qN!KtmQ9jY$p5dqpRYW2@#2jD}q5=YVGL>PM=j-Yv+?q!zB z^k<;51JHb3Ky7X?d^1*>#((30BK&4$n{6gejM*7PtTz)lQ9#nmb(X19+76(;m-f_r z@rNfL@N7_>rx2{{LXNmZa+jUL%p$}d@#IX&LX`5ay-d^2Q<$$eM3Qw|@peS?28VJW zINt&H6EuJ-TFaHCpK+y`n}3TYIXz(wM%OIF)2b?Df!>so?O>+9zBTip-+;<5D>-gRRg(wvQkI$I*MezzyK`V_`2<>ac_ay!QVblrvr_FA+@ zz@Qj&byG^prksjU%Z_Vx8k*_x-HU>#5Baems*d-tBUNF^1JU<`+%|OZgyrb%c<8Fc zIL^1w(9NXK0-7nqdRooBW5Ee4_=IY|wxMW^%~H75o;F71f?Szj9o2|+bW#gOWBtr! zfZqJJ&T&fpJHWNTgE1yF#<6tRk1#+lalk4*T?|*HTXye0E@6~pF4jfGHa&|)&1{*G zlDfF1a{JnLfzG8f9k}YE;voYb;3^llzSio*x;>$JXY2vQ#*87BiSsu3@9{-mmY0p; zTyT5Mj?#<8o>XF6n0I-1g969Ui&f}Ov}@E@D?G=CoF8nLwcjC3e?J+b=)Xbb8;CE-M7#2fVhBkxm1QH0Py{Fk-OYU zgK<705MXo_8g<&4u5XC8QDWtCx~F4NwO>{z{)Kb+^7C@bzGe22=tCFSVh=$~W1ct|8baTwb_2x^S?oGjDL{7zm5$utBtzT-m z^r*;4#DAPRcGFigqXOvpZ{Zs-Z+^6Uwg6}@pY-NnLCo(yI8{o<#`h5mfmi@uIb&Yx zc^GfZ&nVMudpA>T<5u*YKHnjb;5sZOKVz!_iWQjhTV{GXl}C6VHDZWsMkN%Lr;#nt z^+l~u&_Qe`^^T|z>CEe;*GD?`2 zp_t3Aj33ZS&dIRe+P@to-NP9T?JBucm84>yVocO?B-rO+N!;bAffQ?R`uJT3E$*Mf_n`Hj$}OHndFLUDFkC=V-UCS32O*%SrnmI z{9;yyV|Cvk+4F_URjnp;5^_zxYN5)ImYI!jOI!Y}fdy$uM_W0j_crjnkJn-ss`vQ&J*>RANI{3MnbgVx9#mUEL=@HO_DH-SgfNJwvEx zN#XDusLVNna6Hl<5|Pd}JZb*waQAnI3*`OG&0E!E)2~V9e8Fi3Tcn@kUz}5}pTp75 z_b?igwvLl^fFQ@^WcjW%bh}Nyu-!Y_`YL|^Fd!j3J-EH$le|H0lAn+#jw{O~qRF+} zBm`eI9e1eTGng$qJ-9~vLCzNZAfMmv?erOMR+?5Y0)(%Jy~xCO-B<*FkA6asEvQvf z1}E@#Jpdfhhn*^Z>)iMkR|NCy9|~aHzwLf;dquJp1>c$*BzLNB`LM~nS6?g<*h0D4 zpN5ev`>-~-u?)B&cx8VmP_@_KVCU1@6Sw&{$wT*X2aW*C<8`3_OXQ~Fj zOx6GG0RL^LKL2`kFxq$he|F->?=^<6yD)psCbwf${vsFtZ|AJ#|6Dr%HIV;4`l`EM z&dopVCA(MI(wl9CV9v=MpdQktzW%*y*{?F?{bBzg8 zLGYy-C--T-i~4liM#CPB=%;x$M$U3_OgwWq46{sbcHj&Wy_9LRjyyqru)6g8JJ$D) zzTBwC4rKg4{}Mq{-X;eCTKxwv8(O#Mzz;3)cuI`+e`PL3NmjpAC_Mg`2=WnUZgi)s zSw%Se4q{Bpx~-V}_ypXRxhlC|AMXLI{TWh75xXd(0rHj~VA zGXGHcN_G}W#{t}qZr2+7EZtfjsET|J0m-5mqJu|0Uh+!Yih5Y<oy^~DCQi~$kUQbgJ!{pn*AnNXe9C>6ZVG>k$gImGa%+j4lrH6sec)^>BdSMj zB!aHyk;cweLx*TFcmE0>MJ(^;w676&Jy2=+d^&3MC>QFF7X)dc=Qb2HJp5B|Unf!O zbB=Ih?u4$1bpQH?LZG5`mpV;hu9q#z9<%UG&+~j;6gG;a-hI35El4#(G|k?i#op+y z@~^*Huy!+gw->MhdaUnn6;qC*?8hBrEp6LZG;`y$HFFb<9o;whykCKrBPcrl`74ot z_mQpkEP$h^BQY1{n+J56eMAD~KfKa{XF2ld5W;rXr!&gObcp+y^*(UHnp!V~#z{km zh@3i5tpI>81L7^TlGcta{f*sn!PnmOPg3tMo{WnWL4ewWXfNecVRH)>QSTPxcPGZo zriE-b(=cMY(U3p0Mic5PP(&x^Y&iv80pb_qpFal{&J~MNw9`(ldsDs`2O}<%pF~EZ z+nY{zdJE!PW9^Al0daFc{%N6DGld4@aY{l%Td*FBL8+}iI2j%~s`>hqG zNK*Z=*XJ7jw?zC$G67MyvTjYkzYy=pXSfdTrl>hXnx5E+BJ-SeED71@x*#C};xx)u zM0ZP!AX*AiKZy&YVlg5Lt&}kMRxffkRWCl+Fg7(foRgci<>Mco zla2?}?Yca@SbXJ1+SSbIX(xEW8z7&u7LWCQIyWfb4n_^ipiOdSDdXahs3D@;bB3yG z4o)0yH$a})>w_^SA6$nUU~`NCIL-UH1TX@VGUJg3S>nw*#3*PIqw7*!r3Kp_(G4A>UT3-G;nJoXv-|>Os9%`ZXRL2s~JF*HvtFmTqOn+~3 z9CnUih1U=7Tlu_`WO{iWgTv<>fZ!{5LxEbwK)t99TY_Y3A&hIOe<5~29PI_1Bkb_s zjaSV9iF6Dh$HInEF`6tkW1O>&E4~*ewK1v?#(R3Sf}~XUlB3{QLsUv&koLicl8NLh z*(Ki4RT&Jyv=Xis?M0W^e4N9cZVib=IgqEb7JG>@J}aY~#T4k~s0vf0J+Z4(#Xwkz z=f+I{nEfGflDmaCe?M~Tubqjnf97tCD*@tt(;=r(**S)*S}`EU^Uf#-=KWJ@$i59f zmX@<0C?>Hm<+EDV?CSJFd`~mhSh6l^KA`qIRkd4#a(OUFXdT@6vdh_5^DW^VF{1NG zoP`*7Vn9S1icb@336Y?(@w0Y6rYwKbqbrvO)|(6`u-&h8^4}gh5dw;7pmKA8pG^bg>5NYU~5Cys!H_ z@GB`LI_;70ytKs@yjpB=VHuzX)$v>pVrOe3x8lwE!M({wTFUHDU>Pwy@`81 zHHWUiJ4FEOqr9RUQxqp#E>vz!{vC+VLzv#s`W^pUvIXI#ye9&eiJOpF3L~R};Fs0P zVa6jh)6BC-;1aPaYO;z1P59Y|m_JdyUZsOuQ3JK=42mU9-gSF~0d$yJ;qO+cXh_5< z4+{}9B`C#LwcCSGub~&?CLhD7%HZ`GRXpjgGVU}`U_kBEP*YH>J0m&exvj;h>olB4 z#2(iAdG3bAqR+J`2vk^0M6Qu?gz>>{sm9F?AdiR-^>oAFFwTh+ z4qazXxiu!1TobI#b%su;f_$vQMHqWjf_>y?4inmXHqSjiAufq?m}neGnj4{N1>LDt z#Yd~iS4G|fxi#V}9_V8eae!Nv8{as~O$Pei)dh(kXKt^j7qqJ=wmh~d0D^>^6Psk- zj{fWn(^vG;qMA-C;_FcT_Re!@SsX2sLk5esfJV%`U+m@I1U=skKwzIL*<^Pd`6M)W z=S&oq49)=0X{dJI$eKpn$3Q(tO7C0gm;^7qqjPn8g|>mX6@M*C^CK?l!DC42EM5k25rTf-rFK<4X; zPY1;1MEq1OD$}Us7yplb-yIy^DhSz8K9mx`zdO6meT#Op^RJV8j`(a4eJIOTa<`8X7bc&KAD-EgCKLbwlnkITJW{A+f`5+Q`M?DF z)kdEW1+>yio(svZ5&co<@StK?UZRi3a-TbY&k6QG6yMlh_PW`{)g~1WJKKPCTxx7j z-tf9SFYPNAfqijzc}(>#JJT))bT}34n=fb^0(?Kx3XEQ_g05L_DQ`UtL^# zb9Lv`_Hl8d36!YpdOMPVAEvepAggpcr*tN#^3TJ`cu1OZz92}U2UdNoG*K0oj+cBSn_ zT5@eY8@gvLFf7$B*FUY;s<s#mlfH92*0LaW&y#aT9Tjk+9~=+#+p;s`;`PBB$XxjY6zZR9ytPHjkZ_272 zEtF5#PA5?vJi`x#&8BOy;CsDA@wbjR72GX&V5Au#R+8x!>IXryPs~Bb9e&b#Cf32K zF#`Uh!jCmbq#@@xS-(`n#(XtpX`P3eTSpXp%1hQHW>NQJn)Qf-0hB98J2hV4$A;9Y zB}7sY;WX#--26Fey{f$j--N$7=l8AaG?TQs|s6 z#Koeb6MYDUPZyAL3-LDQtak|sO~uuItk%BM(VD%mDib$ctKsQ@@$3@#OU*P**<7!b zo+WIeB|j7bL1gOhf~?dp?op%Kft1fueTBZ8??L`E#h(SYU3?m9Bnkbjwfk5bcU}6l zbgY?#&hHKvS{F5j`%eyaMqods+MuPeoo_aY4n65O-Hk9w0RSy3k;1;biWMuWH-GSF zxDL5De zDhK8<#nt@oPzrzB5w$(>N{r$`F-HMAdF$5em}m(xu4I68+bkE~=~7dKi%TndjEdzP zSp`8AEk4FeX-8cV^ADd?Voq_3{JaFWh7%X&)Gfol$CZ$)|wAOHj^QsVKZU~ zs(uTrcF*#T5ZT7wAAZX*!BKPwZZza9cw?pr@$E0}-wcaqz#!1<0p2lmV$SJGpC$he z;q45zPWqIO(?J#&Tz+tNN>bj!amjIZzqVU@f*%fvy@G&9hsc??@qLx09H4;Tp_&lj zi|erhBqg1Z@}85wu%}wwM3abjfk5v|o#SNU`PS~B@yib!21Y{9$aPd!$Y zUqp(%oa22yIE|)~>K`&r4iU!Wb6a<(Pn0NPs+qIuIz}A{^{10<_O0@s^a3F;#P{+R z_l+o-r4s~Sma1Ymt#mj%w1_$f$jN4!f|6k64y^@ z90}?uoHn8|fom?;-T(r*tdvSlT9g717S3l0b-NS%#<2&=m+XDfkaCPuimkq@jd{e|4HhtG$CqsGs0;_ zZaZ2l2;8N#M~}x`r2M*x#VNZ|G!|CG@FyKP3I!Z!1Zz0K!ri{}eBQ|Ph?(K{S#6wE z+)ArT9^TfJ&zRkv?y+BYYjE zRkcDGnRLhjmzrY9UiC*%WiG%qZ+O57knrE|f$258PvV_Ba1T(aW!{Hu!tg+!+g>Ju7xl%fCHHZ_h2{_g$?wznGJ{z&7KEMxAuc)DltPQAx*TZ>j$uGR4KiD+~N`zb>e1%$I$fr2CTeH7;l~yo!th= z0Ffg$00?$FElB8$=!8T=48!3~xR_$bV@U!U2XuQMNsR3Pee^_Scn63WOpKMo6pt#( z3Nj&oD0rU*ly{2538~HnMwG{_<*V%E(Y6l)8rlvHG%D6cwAZw%>VEC|X?4ukwGt5d zn!Ex6rB?R9a`fA!oKEe<{eWN)zd>YF(A(8Yj{ClOW0YO}M#cU-NwJFgJ>_9nd_sPc z&06o;I`fhdmL7~EZa(!<2^YIlBOEn{_yucQdyVNClC-&bbGDI_Y7{sqRilFmGqyt9 z0~Tbjpriv2S9Zd*!1Jf7U?Yw>h0|Cc3(_l_4L-bTfsVfimQE>{T_XR8o`e6qQ&lUCY$t()~eN;H}tO@{XGkFYXZ+x}DVQi2u=-f6T^lL|I077#al7Tvr z0rD}bKiK*%0buuOC;&9Lf}Js)H+PxZ;5W(qQOyIUJd@CLiOrw{w;mhyhr%(Mt5AAP zJZQF6nhYmMsU8Mv%EpF(i0fm3vHwQ>fKaadR5+7kyei7#+Q=+jRpm_{4o5}frt@#W zb-P$+58a%DYr1*bJB{h-d$>D|?}O^HF(wOsY#LtO3GfwFc?{41NRh8Z z|DjMWlmfIq>@mthHiBI^&~6oUvGZT4M#o+vjUt4>b(Tq_ro`v(ZYCi0L!@b z86YAD;$%A*CQx9}*x1~#j1Iq*0}Ag`h|l(BK9oF5#ChslqobJyg%+feXRHsvW7mN= z$^so~F*o+Jb}2Sv-Ps~(0~F1MmV<(Dk;e9jywK7~tz6mlrB?_G{fP^mQ?kpLdbn(d zy+*xnzaG+?ccsceOWmzMTIS>RPTY)lTHBDpCn?H{5otH49nSG`jJ7T}<3fPGXo_Hy zh+O_`u8_7H#HCf5dKurxy41!3&3SXub2FKt@rZ7=9SogdGFGb$RbX6PIY@bS%++L zeE$2jdNk2d48vDc>zl4ObU6*)R=<5hW=ZzfP!;XlJ~+)QpOYmX*=XCb&21g4`32l1 zw@tUd9eeoB`fZhc8YcysT?na;x)NPE+55M{2HHN$*Rpgaw^eHRK3iG1*}cG3qOg}I zfCpK=Fu&=Mm~*jkl=&if>6`4AhZw(GZLsfS8h1#`oSiGO)|lYt)`Hy1->tv9&i zp2Ihsl&;zO7elMr-;QRx&w-u78kP$78nX3X)5xsMn`Z1B)Afh>ODr3ve+2hN8#Lk< z)h^!Wy%x?blQwD`0h=D$h_*}M(+&v`uk?YKKlI3<@^5$ijG4AOnOm4&SAl4o;)$u{ zn>SzX6q?@XoeUBFI_6bdq+6d*qO-1%x}dUL)Cxk7??jZi!o#2A9_k(Lws$}(ozFV1 zu$S|n3fFy(s`lw$1g_~dhrhqA^69qKzA!u`!E)zj$@2Bdy0FRG&6UyZm&^RJqAB$VA`E#{Wv4(zpZN3pg)E4sCPzW;xzKW`53{zl&%O`CicLw^ETBwl8tSWR z+TZ@mz^?&lJ`m#Jppi6wwC|J|6<+`dZ8b2b5C34Cc`K=iub54m05(}v@a_2#1;=qr zP43IiUi*8yugcLxYI(M6%3;ehk(nuaIIA-k!E~YHUx_>lGM`m=!0pZz6evzNlh43~ zoYcDEl)TwZhc7+~L**gS1?>*!lQJj4eVg5`%>!Da#~vpcyu29o(`iBK5hp_+umin+ zkYn|aw4I}lY3=0mwg3R_MvqQWYrwiL z=E7Q+i_s6rU(V{gWRFzdGFXzmbKwU;sBhtlL6;Y+&UWg4H|y`;iO5>g|3?8(T2%r&vL| zEg!v&CjOxiS%mRcAELk9{7i#V43}Depc_Tz3MLsNX~mvI0XYY;TQw7{L3gx8jv5zY zR%X(3vdwmckBpAIbrb5NAV3lsks7H*%szxYQF`d{4ecdpR-W-;Vo}hM>(jUNPK9mv z6gZ~@Py&gXS5UBW&5wS2ij*9=QP20q?fk5vTEN><4_@kR+ADiPM&CT&v7M6G;HkRh zACU~v4A&>@7W->LLU-}^2f(u~x|eMtb6@7qXyn(_{+yk&d+d=bpKp*%RzAwH@u{Mp zv(0}UZpF{;QNo32(fPA__iFevD>%rzjM1ow`oOlN6(nu=R$oE;E#FVAv^rfIGELaI&;BzVDyFKhQm|Ic*lEa*Gjtu2ps1UQ`kS7%dFz&+7MBKg zG0E+TK2bVwM-o!LA`HL1ue$xKZkwH}bdE66m%$Oujo<3FhEM3+w~^BB_#8tpDmtX0 z%kr0y(s!RGsXNR=P&Ub=5Pp#^spUWvO(;(}>t?;O;o&IwQU`SMaKuapU37oXb_f&Z zU82_aAY?JzKb>VP!?l=46HV*?%G7b)E}B#a{2y35jYTZ{!S-t}HJxS$SULQ%NnM4| znsdhJ>##YFm4HgjHZKa_Ik65_y^ZIH$&;;z-m#5aoOTNNbJEY%61AKXfWSKh^1@$9 zym7sO;FN5&APrY>4(%A!siR4pqgoAs>KQg9(dUviEvJ03d^p-G5Z+JqIR>lbH`AEY zsHn*s&I4`P5abl&``CS{&hLtm9!7&b{@X?TieiEv?${dA(#mPHZ7F)12;*-KDVM4# z3*eJQUY8QKSK&AI!mZY_0Fjc*U!unM#aD;TEc~dQ62?;EuuTTxOT5BoB~Pj-LhI$K z8DDyd1Xr*Cbihgw_b@huiy4oEDE7g#RylbHpiMApR%|Yxo#>N>7D|G%g)OI)E9T8+ z=J6BpHt&GQ`f_9EPVGCm(h~u9v^lD(@TF~xsn~NerDq6(5|213CS>$7gVv3#dS038+Cz#XaNQQ=E96 zc**A{&4tyOQ3&fPpbMg68oKrDQv~b}2``-`Mw)ArulPpedYISDqc)eBrUK&HxIWc% z5F57Ekk+_*l(jjVNtcc?B}P2%VJ1@Z(g zt_%KQ_bR7<8n8inR{**5sm_7b*R|U8l#EfuHV-nt^-uZ)$T7jzj)0zSJqq1A8e|d| z&>m5Qj;HE)1INq$EtyMKkQ&1SD#ku0ClPcDfzTFNWv zeE&nbpl*ZFlls=KCMC}oafF;_ z^Wo8hVC#Zidgt3%AiGB+B7sb(g-Fw)w%Ikw74$PkIsWr+ok>0d{K>u6v{xqH<mUey>$p^SJ)(y-_Gy~O%V5p_UtA$Xjx*6|g=Z*%;>eA)Q5)zfZR{gr*e>*^Ogoijc=A5>h%wiz_S*O zvT-H64}i`1oG5#{$UWXOtK&lgMHrCrtnEG9h~NjF0>ywR`w*#d)@fb+2xHVP`|>&j z2x}U`njdrn#L(a5>0jP@Hs$5xai|*aawE!prfcqLRgY7Z#JijyPtVK)j0As;5PKPd zbd0NKw=AN@G11kx00pX5Q=Is|N008%4n!dpdO_hn{k>R=w^k$ENT_E=Mb5|DG$eJb z01du{03dv0m*GY)?+(v@<9p)9Cz@;a`K+2++;=%MYa%944PPix`BX5^I}L>9w#$0_ z_N9lmJEqD;566vqUV+ukg!u`PK$o1$9TQr|iewi`jmhPV#`S(9ISAptvERW?cXRDdEOM(kCEH?FXR2gK=;v88dWm z?;OaE+aN8@a)yA_8XE)nP-q2(exL|!@GjoggklWleQteSQ7(g-*Z3%?m{!WG9GZ%2z3V?&{Dq` z7mSaa@jzD)I^90Wnpe!e6UJczL0IytgUv%d0Xhy)e3{VVGl%j}h@u)<*m!?l6G_yB zT4s=-<4&f)N+)XfQbNDb!Gu{VF})|$RVA{A9F(LcMJ#<}H}08GS4wS|QDFv^XPPM< z1~si@ZIXP9T0hVk?bfY9fd0eD3kJ&rtPj|d5;?wpcvhwp$VLnWPMn#d)xMNl- zQC=}zf1pP?Ob|7DbmD=00p48*BF}9hg$9j_5PJ^+jE|?`O6NKOnb@Wy1q79@Rk>ukmoufz|7-R6tr*e_f(38_j+^W7XL*%-w&G}f{0rRiK~ z@(dfLT|rJmK&h;HXz2}Wm*=r9%8%yb0iZggJGzC}$=C6Zz#G{OsTIN(gTON#cYMmX zclF{PkqfkQ{2fk1&IzTsce``!PYdDxGMpnx{eVg^&v>vS!^DSdX*cv%xxDSpi4^%I zjD3AHf^238u=XP9bGToMikLdRCadBN zfPq?!FD}QDQf`)%FSHz<@($GDWtw*M z4N!!(N;X9RMLSt;29U2>$C&EXeEH(Mh0~3BIpg4obkyAS_0vH0(bv{#szuK(xW)Vd zf`)UV4DM{YC z9QyB*Ik-mNSo%WdR^Ijd@>TLLM+3~^$6Z|eo9pz>D21>1qK3q?OtW3dpEpVVzf8iv zoxKd%zw8j0#DCu*bD5d(U&_k-|8Z<=+3dglN$a0x{NHv)*%xS5aR z?@Pe7C+lI&A2eqAlbtBpe^EzbnT(yw|I2CnA2W*k{ojWK+&WtR2C|XKLl?<2*)wW_fz2dogES|NJGMFbs{q#KEaTlUQ2?Z#b80(2lZzNmPdTRwplMU};dBpe zRP00Fj`eN2Q^r#v(!Whwpb0>>q~#{Dw*tdxW-8C^QNw`)-ig{0{qx*R8C&xv# zmeDV~OZMWmDw8Qcn{-XoRs6Vm zsBU{=Ti@Fth)QzL%Wl_(yB)u<4UMltxB$;~X|6zErYNPa&Adrjf$Ti;VnsbtTY3p9 z>9KThK&7sDIN09C^%)zb6%6DJAaoUibisGuVl=6 zaNl0j&!>C}(s0Y;{pOo{{!lmwZAx2yi{iFp+InK(-!wftQDyu|&)&B!mol9<7O_L_ zP>iFE4E2qF3N~&TBh4}A@Zao_A4j>YY@GO3V*}Sx>04{>Oe80iKt4meHS-No9Jz^b zT6Rt2SjYYi#hf08kCz+2JA4Vv>@W#wH6gdDYA3_u!k6te5J6Ed9U^GRE2Z^eE$DHb z;RcUSZ-9lk8g7AZW()VRlbq%*mZ+`_25n3m}8VyoraLW@moi+5uY`nGzy>E1ppM!$G?`{a0Z+CvIl3tw73~~Fw%ocT4`}BLV&ZciCUX5F7DCnr^0Yi zTs(9nEP(PdlHaiug?~!eIyj6=fx;2;}!Gf`tuu|`MX$6n*@&E%A;y|L>nB@opxTYdZ! zmPxtkX~?8&GR$T~_oYvWO_?3E{t~O9)6>EJjsQ&pRD&%pvW5h5XWBG(*s+jtSp_=o zd9t~M=aj;y+1c-OhPPIKVLYl~3lET5VV>uC+QTe05TwqjZ2NPg?0H7TVj6#69p2Z{ zCmfmL!qKD)dgOLh3mEDnor6vp7$~IG?cVubCX@ySFZHH+_iw7900r9eZi5ccUBQ$ zt2Ha>qm*wpPYn~Tki_0hr^mgCFzAR2G%g+p#+K)4cY#haalxfm_8`h7e<;v|@m(S? z&uxWg7<>+JRNH~dlP9$`yGesVWx{>?hiH%wG(s;wHRPq+EeuSp9L|m^SF$OPK7S=3 zstOj7pE}fx=;dh|`mx0(54ta^8SJpu{B*F6g5EqGd$WLXfaIEal|3{IWcrEi@iIbd z#p}Z^-WjP zGie5Z?KB7Bla-wYgZ@9p-aMS`eDD9)>R8S(6rDDiMuJ%HaS%Ernx!ojEtRTi%Uyed znRASt+Cv#jr3qq0OJ!7*E>qh~DMi&15lb!YP*h2R#2Ra4>-RI~-1oV^_jP@L*Y&&n z)vGS=Pu`!;`;+(k^?E)ZPtHA0L1UZ}5$Wda!r!acE$Qp$=_uuH!M8h4qWxsigWSC& z%Lnpu#+ocUF?QDeh~M@-ootsx)^!sc;_ZNM#4O{3cq4f?)w`=8wsdLykM{hzCly}) zpK?#vu9>vZMp6=c=|(iq+g?pX0Uy9<*|L5`#Sr)FyJ0SdF(g!jG9B7q*l25mm~vna z0R3*P)uU{UNmhSy_7!1kir9?^EwfDEW-KZ{R)uXx1y47@@{KS!&W0(&nx>`0&C8lM?U0v{T^2KdI~C1|99a8OMZr7817XCTnRLE~$9>up2#_ z2!OV7AeRv(5a>&rfDyLT5vUhI4jg>EaGp$4@7&N{h_9V@n4tQe7kpyzTd#U|AX)=x zFLt~ri%MZ$U}D2SRBtMCX1|pgYLsL~(0IY`m9U+W#w9BIeKx1#2l^2PE7%BbD`>vL zt#JslRUVLpgg*1Lib&faal+@4VN6lZq9qRX)+II?_n4JmH|da8W$JnlgKMK3)w62Y z_bAp&`@|+vzm(#<(c-6dU$8~s_4(*scg^S8@U#7@>>!!yR7gUNVQ|wb$Li*)K(R_s zr*M;B6E?J1EcFq@`#09Y%F)G)`PwgCdg3NtP_Q#KW# zLy!!1+<>HASM5tHd&1t>85I)W1@>B${@uG_0n%rJ?cYCAGZ8VRyjK{)IxA%Xz-QF% ztyCzG!1?@9a{Zzn7GO1Aw=9VfH1@+%dZZrZfuS?~26`Xq@%RM?cjJ_t2z>UjL{2fw@8I#$zt==Rw?#Q`Z_xYYPd!+bymB;YbAj3CHS>2uf>tstG!j>x8?W|8Ync97<_)28ogm9J0%@r^k+w(dT8w)=D?XnI#+!Pm z|2TaM6g`lZ2@ONWd^z`i+fh%e*XGDsqr;>l!R9{kyuJ9s{ql~vwzWRo2UBhE7hhW= z?E8cFR_nvlM!p)vU5VdOd{VI54dF^*bThFIg*xAHnOC~5^X;Dcxf{k`ezea65*3(Q zuH!r7g4X9Xj~O1#KsW;gV6WbUPiV-PF}G<=f`iVrh6$kA>bMv@u_G1@ALXpMntTIl z3@tHp8$h{r9Rax>mIgLOCw;Ps`x}w5Uy&=#_wN;^p94f=V_9d8&;_q) z-9(le3+7Q`f-!NYT)f&)sXr#%ZK`o?KbpsG zj-tIp5qV21DV~RG@AWL`A}i|;t^JtSbkcOQKf&}z z*Y~GM>PiXH*B>HYqdoX&&M|q^m*oi+R*`%pUufwhA2mGpS?PiEYK=L%bZzIjeYj44 z3J?mSR?ap=Yncpo^mog=LvW>xb}Djs8TMPL+DCKk1ircUQZ5l_qa3~&AzrQcnf!HB zIZ+12G^{6W#s9camF1kk(|EA}_*Wq43@RYQqAy;d4gt2%+bLzj|`-_Bf@M)3Z}E1>+~qGirXfQ$Ytx1)8Ijqq&)CP5%aq_9&Nl+Jdje0^Iz?$893a@f*Dp=P z^t2`{!PfoCD2ajn#}Vg1##(DXvQ96ATb04UTlf9_MO*S~xB@_JN%5{^JS^yC)@CR4 zfg>09D~oKij3JYJ9gY9UEqsP+zuQWl2wU!HAFi_Zyye|GTxU^remXs7p#iIrw7&K^@{LcA`Fgm2f%>%H;7go5! z*A5>>b|x#XpYUMXeWWIAL$>tn+<`3V1kLbUI6WBA#EUng29WauvPWXV1M?#;+c+m4 z;ctUuWH<4fW5uoEIZ&68C#4nP54;=I2fIywN3Hed9|@Ip&};S@z#koBrv2*#4I$lX z<@fQ z>Xf8vY;a!htPnGrxr1>Y%o5?vPo^H))@1NSDOA7Cn>@IX%=Gw5eEup z8HnqWk3BHnSL1}Ou+Xmaig-OsP5L9|B~a`fJo8t9G5rbkLTn+6j`ik#B`TGR%ojf` z&IEn&UDvmaPaTeymNbXH^|-{y1%W-k3zBN5F3UhVgpKMdQpg|6)CY&J=&;rK)0Yn$CEAEPixsPaG!vk@ z4j{T99e9HSiyYG%6cPr170g`UBwBXXDo%CY_2Q%BoItYXo|L+No^5x|qh)@XrY7@= z^#RINC9SMRh><1Kq|1Ca@=%zUZxZ&_ABRIgvE*;H=z0k^4bnazy^za7eTPI|POowaOqi#) zr3jtY4lQG@Z}gW+6Nb@VOX&bI6YmSI01$6fe|q{X?lyKbJ7xS1chPGZnwUhU9JpbA z5H8VbhScIxBW{cX0Ix4gThprQW*qW1a(bmNsq7IbW~|%hMebs( zt|bjKpDRSPcAC|8)>)Q(bd|({plZffOAu{(J`}}Lt(aCKd=y&z2@ur8wm1;z+AG9E z06{xte25YyA`5>Y+nShjv=({|kw3e@ZXKXexT|AC0rwpj<0Of}70gn>Nts*tlq&hO zvO$)t;(}UU4`-^+>aHI-3ou69bQFD7dMGfE&jGk;rnLKGanmXrG8Gdf#G0B|d{(MO zMUPm7>c&)jI(t~c%s8MFDA(v6|8i3-OZBrzbut*=#mxdJm?(E-CE))ymo}HBWbzNGM-1^`6s>2ua)Tt#J&L;CwpS$uXaowY(BeO4H`Gmar&Vm>Uk-W?SXA>I#- z!EOuULdzPvFB|p%J4`eU2Ndkf_|=J9u8-Bi&1J@=ah?Ei2G|(SnjY$1 z4IZ#@K8H7Iym%w$14OPm5(iF#Yz^H)CH=L+R`Aj z!L+uKM@C#Fsgsp|;1}lUbuB5e9T#s-1UHCUmL?zpoJp!%<}_`3|6UR^cg0qA4VDLN zTL4g71ZhX^Y*ozOSYYQ22N3!^*u}0^t(VsKLkJbNGJJn1pqUM(#F% ziIO0@9$<~qJT*KiM2*Qxght^JSdSmQ@*td=Sf!C_=bm}0mBO5zYMlhw`1h|lGVBKD zW*yCY%{c~pk3wOuXiA6P%kZA>DB85MZ+8m1HokN4Yn!GF$Bf?vR%g zeQeD`g=hhDmX!k&S}!St`$0~TXQa_{w8++{YGVHqJtGGf1?~87ldAXnC+3A)F-%u< zqC->(vIB}-jN4H@b#lAf{uVn%HVZK$`TbPJDoW z-Sk#=(|;`1OQJDrdUgwBUH00c zZY2`%dyr>+2%2HmdtwA!TxbEv;`c=75?T!-Ip&o5rS7o}>V+NeZ!D6?xml*jires+ z4@S-xl*L3Z+)alL1|Z%K6tu!Eth*qEBNOvN74o=F)PM~~q-uJpgxZbPrOi`T624%G zn8sM(eV;VUc*ri}ZIgsaAFE)192S=po!7laZa=M`zC2IUv@l%yx;JH=&fs>CtpS`K z7WRIp<}nr9yz7-kBfR5gqbF?wV8^USHZ=-49>vj0-)H;|Yr{Bw@2FyS4%;_LPP}^^ zXiv1o&(L~(ngJY2kS(^x^2#@B&l#W6@DJD;v-ZDhOm4a!v4M8jR-*NeEB~!gT&4TB z`^V6?Ulqx!E{h{dSRy&@EEs5adBlN|DspP&;kcNZiZ7)>MEQ6V+IXE1$v(N1*`4|5 zpzsggilm~fas(OMBC#wcC%7v^aW7K+{!U|+O7DjR>P-NyJu@OC#)8~-KLn!Z@0zcA zK|{|OQ@ZlFTS9>ebK_2uuVEn}LhE%Fh@HN_3-jM#mY+P`yJnKzZ~wPG@K?fR$TdxrJ)iQ zno7M>g6s=#-pqb_f&g6||X|yDf^I2oWTo&^QRqK6jIMTt**N(v3xsPFihd`w)i>=l4f}_2l z+l2@O!xPNo*7RV?y?{I$B)ljw81;T+F%E1*3NlhbuIAbqxf>w4>FmF4E3Y#aFLVl$ zBfdXn@mJDKcd%9|#kzEdldmof!0!>76ZU&DU(gnm?xrr`UhV_ubhIY~FNUi&6zM3h z0m*Vfbr(kG;`;}phF+~#B>G*@j+}-Z6^Qzf)vellQCwQHB}vPu=*MEBZSKhW9(VlB zjgF0IjCFd(&*FZfT3#@1#s!Qjec>NZh&`BYdd-WlQ3(~1O4}dA7_D(-7!$v;o%^Ae zCW0$;%d9Sx=u&k{$&Xo{tw!o^>Sphpl+AR$nvEytb&0?R*}it#OuwR?YI1SPAqVRMr@-_%2v)tUTBv z+ve_KiWY47_P?;amQj1OeW`qt{P>^$4wSleuqiQ88<%h@O5Ri)pBGLsz5)-c`bOza zBjtH+M>kU48A$jlEzHtLFYmG2K+qNnsLShydy}08x>?o8zNq4c0vjh6FwrKr*y;76 ziHG5ti_eX;yIT#TWncgp?opykzQ}<x)+b+w<#T!)Tr20FwQH^>l{^ZNcz# zRSQ*RKJEN6;8If?u(3WJ0@rslzW(B>IM_+=(Ve5IXB`GS?t}w$bM2E4;n9V)J^puH zL?G$~k=%FlBVvQr5)@+45@DUEG>8|0GW9i{WauZtUkxCB9i!ZIId}S@ih!wor!X2@ zc$~m1QfmBO^8!|B*GQrYbxS069(M`O5TRqJE~2INJUGoSR)yjzu7sSC} zKO?Ksiu0e9>K@jp{Wyp0PRTN8J$Jgss#|St;qG%o)VHi1O4T>hW&;m{;`=XFLydK> zU&)hsplSYsXVoBQ&+;td(O^Kx-iOG2dC_ST(DMruNGY8BqHoMBlQOaF9RbAvngFkl3-@IK!wa#F!Vat{pgN2bjkopl#<{_#%q_pwP z$t}mw=HI@~X{P2-?|FY#YFF4kSxI`{3228h#oKEXQtV5IjYtj-Z|(4d29VQ0F-FJe z6hGDf=}hue$LT8hJYXu#=?5qcfABbOqa>P(yHGOVrLOI9uqj zQN(&HEtRYTWrzdpBa8(V9CUyy7K;OV0wG{LYl&imuPr%yJ2A<}@i7ZTi&kDIG7MId zkjYaGZ^(M+ZGp{B`Q7k0m_d0!OW;UO6h)G(2(&5vO4E8b0f4YoN=GKtp=D6>Sn^j& zmYxCx=`pDXh${Yh%ZV%aei^}0<7M=2D%QPDi=Dz4*uAf*eUHd@w}@Vr zxB(!bWXy4p-ywRy$)tpyVMC{K%+(ZDPq5H-7iG#=0LVFnN5u_0v)4UoTs{@l=ve)V z{J7+R2VHGgr_DC~s2;$PXcaHhJh!|ZT4d|yQdHFXUcKvLz3U0z9Qh@XyJyaJu-S-- z_Vu-M`Z-qpGR8R@M|+R=?w}RA>$g+(Srv!uHcxyG)#%pU&sJC+4iQ`lRA7 zK@f5y#9f(B%$<*2*h#(X*Mf1e8EcuX4JSv+ejOSElsB(15F1yM9|D&<>`5A10b-xj z?}+c>N(0wIup8G6=#Oo& zeOB+MRHGOzcA6^V`A>#`+=|Qx!ldys`;k~x*mp_i9Ln2|{{XOICgM~=tFp}t+l(}p zXtBhQqaA0fgQDHT{o4KUxG)q)6p!HdN`O3+Q$C{>>Ayq;B0 zFl!4#_5}eu(csSpdC}}O_o}Cq)c zJoc#=GYHPsEs6Pg>10CpyHNHvYBMgCaD7ag7%wBAg_cFQzK>n1rpRTpga%xU{y=md zQO_AiTFCtnHpd|y45l7E4G7+Y-}N13_DZLslO3y9Y+PsL&WGWNQS&E2%x?n<6FY7! zM#dH@BKj-Zj!9Na`HW-E(5Fy~mKU+x-7wlf5~b(j4JYHV+<=qqAOEI^*Qz*Bm&$Lp zO~}Zu46el6NkMxuqM?__bPI7vZJ??rhamPFcrR!8#oswwcJix5IAbOdPur z0{JzZXWd&@i+NoZSH!OjF_uZWRJG)fGY$8I@fSyYi$GPIiM0MW`Hw&>(*$Y1)pxW+ z>!ulyS4IfJ>!BJVaQFzYo!RCT6G7e)!kc3w~Ha(V3JsLj( zD(pkBZlA0=Dtncb8;ASiUEKZao@35nhrv`I#VLX*Av;D;vpTXNh~_K8o~oC4{rI#} z*E3Kq7>m2_mqr0N(S#w{4DP&z<4)7Gs7UDG^I7Q)_z-(yfpv&Jv$u#VL2pYwE8S5{o078u2%ckv zNz{tNsVR}Wv(DyyUe!bTjnhJyaD+yJG%phIFFC)y~`9V>#_F z-~b!qi8g-YJQgVagssXVF8!@k!T!Ue!vBX7hsd}@L<+7Scq*b}-2vdv1!!(49c8Ryx`1Zp>dsD z2lMNvBG0g7qF;gLz^x1!3r$<6{V5|P?a!RonlE`$=bj9&udX^{ny~8 z{~jDrTuT1mgZuw`@DtLiKZT@oW8^syxzD2G;LP6|NGwO!+sLy{)N`J z6X4C*3|w?(Z(gDUrJT-x-LwBc(?;Ij_^*3*LdsaMzet{KhYBtix956mZ=#dDMSiKN zxc~bJ*hy$eNf4?!=EE*XUOB3IuAZ|-HK<4I@y@ij{RG4W+Nr}f!gpa=z#e-eQ);y& z|KfMxWB=3VNzPFm3-u7=rE-NB*Z3zh^Ut6A!2fm*0mxVpAa{8~`S%80@fGZUe%F7K z+^|D#0wAstKr36UDl_|7wfV2p+PugAj3(tWfxmd`j}r>=-nW1L$^T5D`Q~sPpfzfPE#B`}dPr7WD!|awALK*|u~R^tMv=<#8a$NFHnJ zr46@>LK>;S%`$7Bc^ML31^c}{;h=Mec2~@O7a+h0DEEC3BM;d??xCL5HJgR~d1%?w zz0OMvgWmn*D0XM2UfWL?(+zvpE+DVp&bdAoBye~cOJ@RmS8X7Eqc*m5Fgn@r^ioOG zY^Hef(5ulqQ2=ld$V--`Og&J&&iuuecHv!c`ieuOrh7T(xVcvJb+0PLupJ`2%72b| zQc}UJ-fzU)drG1XS(epO5PV^SwB7#F1RvRlEqgLV0Ruh_vk-LZi}O1;^HCY2HOZXM zp=p1JQ7{2QmAP&ODvepo22dXv>fGXx$blO!OZ}gfeo~%D(*|CPB@Ng(IxuM*x`|mFat~5kZ8i+aB!^YDB!OI3OTV=~pUK?+rgCI7V7c@9 z`*X;clx!mX(@3kR#(T{{Wxd-7SG4xo{A56$f|eTJ$?~F*ZL&)o1-R% z{@Jxm|6RrP{eL`M0W2Ywj7hQVK3IsU#Xsm`RFw*|5%*9M9Ix-@D%UWoJj7062u>5O zA3zz;<&jh@-JTWNJ;r)?7)dyrjqJQM#w3Sc8V#-jj5hhP(XL{8?uTf_I-fl*t2+-X zDt5pX2xe#k!<%7cO~LmK7ax(%vaX z=MqhPSr0!C+t`-^-HeDGELeq> z|0TE{OQr-o8@JE{on1$R1+M|>30URQJ91dH?tzz4WU5PD3pvC;q6){Co(P>Q%>95< z71@Cmju!R&tZxQ?AsY_gh#_`&+2nYm8#|k{1jggeH);lPa{*H3&8_y%Hc_O@zU?_X zXY)5FDQ<4fv0_`@7e2R9Zg}wuIf-jN=$F=b5baJXT>~4KyNyI@XXz8qCFe3s(}~fi4FB#V9q&bY%<0|739*yc1b3bKvWQ~$ z^>fkqcqOc80%(nf!se2fZiD(JXMnd(yxrd${@9K$QkFkH6JypF!@WPs!ra9)T9Ec0 z#q&V>AoBN0>W9x=|84f`hJ|IQR_4;%!W7?I%w`iv^meJ!Ev#@B`34KLUyc^S*K+3X zQl4pee#Cw<_}k0IqrrO=uV@aCdLN~U9a>;h9_gp8YaLXJ`BaMg+9tBftW=?YGxW_D z3V0dl&c=!LGkrQU-vB^R+{SvuJeY=*kEyXbnhQOaZhbLjL%!-_q*Q?I98sY{q7E!57PgT75@>?27 zKLkx%b(_1z!BfH@SM_8A>8Gjv%tiN;q6ih_(teo2;Hz`~B%T%NX#%7W9DV|@kUC#x zEM(2Y!EYR8-@AaAn^E0Xzb&LMSzhcXE+8e*!P-Svo`)6%P`p?s*5y2+UNbB!$79R8 z<8-y~VenY@uk3fhL*v6$&|Dum#TNxsA#@5%LZ&wQ5AE5cX{jWxK(9A14^dVQq328fzKP*0A0JseZ< zcb%*dH>WfcTd^Re#Imzyi1vta5$jmP(ij!CA^~xi=-!YYP%?*a!jxw=?=@NDY)x4axVzG)5y`T zU6?b|1qDxIVH=&4sc|07!-Dx_KQ%WYx?Di28jsgwcpiOnw#uhRJpg7#If zq}02%?g}=ElDOEQ5XCw^qFsIOx-;1{f_0~;g#a`e)OrfQSy;dC3nA2p2#f#63b9{sCf`{57RIUX$dZH$4}=PMdK1%FYKgR z-JofCtc9*@?j#cFsvh74FyS(0FbEkcc}#{=670)>%(_wpekg@hFXcX={Vws2dvwF* zmc#cU@>5G@t2%kvWWFmH`lRP$ivdzF=KM zgyT%MOwY{?0jcO8ns8c}9h*m`bunr|zmU$uuAdlA@e8lpK}w2}>f#gZl2JYGK52W) z8Z}3I2ofgpD~G~f1nkY<{Sn!E1YZqi#D%v2G7fVFY(pB_LUr9;ZcPDIq82OArrL}b z8qK`v=Cwj9p+a1qP#?m$hUs_&U9{Ek-qNPc?76#*W}{qdvSP?4SB4R}d{wYCLs>df z*$QsfW&HXE4oM7!Gq@QT5*+k;;L01-bS$tl--jX7VjeQ^k{RB7FCb4?w$3FAZAomj zw+#!DT9_U}4Xf`phnRlFWlXi6rvbCv0ED4Fh+;kJeGkMXvIu49Rxh_ZC0arQiz`1R z7nHk;Ssc0Gt#sC1i@d(v=lPECfded+sl(oZj3-l)?|Cd8jRtAi>m6C;Hu(e^+*+~?fIW_FT=a6(?qOfI)X}Dpv+A5LlEtDB1Sp!<)sj3Z z8unz#TW)`w&u<{DZ12RvZ-cpScMjMLNez#fol3Ym?zlFodMWE1-~7&0>R{9fN;)=_ z`!Fe?yA~DvE*u#M0FLfm$%?5cUo4JVC}d@R1YX+oaQHPNA_wsBZp9@!SR?{^pW_?x z*4Y<`Z-NdL+bn4#4GNTHD3UIqAXB793;@b{jYNl6T!_uU`PL(PKO^pDn{Px{7Ji#$rs0E;DIkOX8&xV%Zqi?hi#TcoNFq}pFq z&Np%COOP+Ss#So3DGN~~Hi+A=HU$^Rw=+$zie|BgP+A51E)`(_HoF;$MnyY&$!89u zOwEJz7i_b*6luqQ%x__^DK91NB|*ONAa@TzYiX$9=4#2%n?!`qW^y*7Bn-hhs&*>O zzb}qew;Z{9*Fdwv+qgof&nAKroLS3BUt^oS?sr+3vD7}5f>PY57AWvF;+ewX=v}1y z_axT%A}3cX<~TCbB7rZa-mpEw?NQyXro~!S%IBApY8Sze9DF8mzUYE}8z~WRdylBN zjgFurdyCSuw(t;MRPrs;?O-e}Qd`P~=Eq`$4(QKqMDlEu?I_Tki+2 z2JWTKY*MX5En0xon{*>ij_JmUZej&GdgVNys{ZD3H`Byc^WizK;Pvif4H-xtP2 zN!w}XhO|wYb0P-{eUxYl8V&(sxf_Ea$!_w7)z3<&G7JnL$<=0g7xmL!fCGSFUNo!K zAKFWg@O`Iw@2H@%tadUOm>hw2uIrlitVM{jQFYsKvteRIGmi|=vYWbSb3h3NP`KyU zRLD$?wo@0qk5sJ(Wosy#q)b<~YG~^5^9vu;{bdI(c%f+x|a{S84rQDUh&7LI6)H+a1i%0EARFp0<#lCSd6(nhw@~b zL$dPhb3vC8D#q;XWCDu=JNqs~(BbY2NV*^C3LY3+K8Jo%t*Ho{Ae%y0@6wuISZ7tY zq<=b?-1P-KNU?JCR={#l>fkL5Uf2|Tlx3?~R*gYsRl(vB*d>pAqdNm2D()q1(ABgr z;J^*0_b#-z1Qku{rkP%X%wjEUN{bh5gIQoEpVebm#Xjt{tquONkwWR1$%d7u&Rp4H=R{@Cb2qZG2kRAsPx2@a2$Gn8 z7pA7p*6q{8T2hwuuM3^kcglC$vYUXs=#NnnjGdE30jtFgvSzMq^BSw<%jEulJk1)Q+ZOM8zPWqKQ4=rE*Tb zAUsO1`npu+f78U-lg+T`2b|e1Z$DrMLG_1LA*9%6NlS`}1ALXBd|weS>6I z%@XU9$=u8rC-d%5I(Pqzu6V_+Ms%}pCdYPFDnicyUr{5iav;7dR&9D1~QL>SY@#Tm3eG51pl&Xdj(zan4G3lCGpgw(UCI(zb~qH)rb0 zyu#sI#m2?K1=~H%f6Ho+wJC0tDu{15-2aEqO4k7K^Ys>3+Yi0i3jIi@E_=Uv zwpnf_KHP(TQ-7ef?vC&bW8o#a9Z8%OKr+`9muJ`HrB%rkL~Kh>razY9GOb=} z1c8aflrx;18sQP+E4tnFqWyB6y(Q5nZ5j+;qN5t3FqR-DzE;8I#-_j4nqP-+EL7^X z*^u%Wg89;*?yu*pk}XV;QpRs!X+rNks+pto$|qLh96Af~GMY5Ph?w8Eb@w(g;I8JK zCI;yJqB{_T>5n`5>lmm$G{^8p6r`xPLbXd^g&FEVMqk+a{2+}?djW5v9SvlhlXJ~^7> zv9<%N+)KNHt0`Ei=bdaVZ%|y?MMV!@Tep!l<8iq;y$j;;aTibsXCi1N*q88~8AR?3 zBOa6y*Bu{quS~VQb7U^ioD)E%*$w~k+egk$|^s<#&_bi8?`!0|p z!ua>#ANMje%?9-RyhxZctO*dQB}{p`_>8?c`y-Gh5{5IzwrO4PYWgIo-}OBup%yuZ zRDi6MwIbkjJ zG@5t4Blt-pf5cXq1Wph>9+-ERfgS4FR1C>ERHE#RY@|+UAl)XIwtl~i?(4Hj1c!a=er+&x+P)B=ATa)kwHw+BRLCW#K{8WU(8FLcX)KoN_1R=P!)p1GOlc>jT)wT#T}elBl*r4tU&FMve6i&Bv2vpt<_QnR)2`d81ZPBfBhJbq zvb=qI3Y^kBL)NBhDe=Cg&r1fGC&pq;AN1Sq%$`}H0jgL!KttioVBEtdn;mDUi6NXQ zFx;%?wX?^h)f2IQDF!`17F%i!kwc;Mr`_s14PB)HfE>%wM6>0@P61LSbg@K zPfN#X{$^a~lWZ8DE9~%mCaC9_ItSBm18*A3UphwtI|;>Vq&6#vYn}kF2714YH<8lG zRPp>lVoJX@^Fmhn0r^S{(MIk};P>z1LQl|wQ}EZuOteKDj0kK96K?i`4SYfdXV$!-9Dj;Z)cZiL8ckOVD zp9|fb_K)eKxk=@?SAVu94Oq9q4v_B0^$y-ZM|&*}q_J1gw8mPCJCdCI@Fpuwa@tFF zb0~IeKXT{eh9Gpym(Ukbkw(R`ytm5agZG^S3(6-WIdvlpbm9aY=dC}xD?V9Zw{PBbyyq)>{5ZH%*-O|C2$xrfW|4!A#Miz0s?5WUnG?+7b zmu2N`P8!mlU>V(_i{x%!hSN3zvdX?n0bs_gxm@hRId%g3>Z8sCB5$uulXfsX{Tyv7K2ee zZ!R~gq-FA&_y>WOMZ^aO<)k=Y06z=h2qMObf+~ipXJ>9MkwQf++~-JRFX0!k|A~P} zTy|#B#@L$b5qd2PT1*;rKylgWA*#;|z2S72ZJu(VH3c5;@Ct_kVvkfk)`%?2^zuTO z(3@qFQfd=0WUF{aopc9l4xZaPiao&C_sUp=KSp?%COUSw0~8F@Ns9vFUPkd~o#t^j zqBYB=sTN)$$0L|}^hqoH+qlwJ*t(*Vi%2O^3#kZmG;ybavKoUq_ij9hUerCkO(1p5 z)}Q`<%RQXQ1Hz-;#`&H&<3M;j&mK!Q#o-wm5_D6S`9ivGPvl@)1st;AlKbhkgeS(< z*s1LtIJkYBiAw4ChIW0_887|g3GHf&-k3H9{fp991`O#r*iVXu6+S?;A0txc=@!+D z8is4u5*YD`1xta}n5-6n5=v{=3=bPV9Sp3ONA;JOGu=lF^mG58@@b76GQio~@$yS;-})7uvLoS{Z5 zqik_by&{yi+ix8A9}6kSSZRgal~ZfvE(q5eVWb8)3dlL~yuyCXh5!)+>R-0S)1&1x z!WVc5;6liX+SxoYv2%s7Wj)_VBD~a2)chMytp}er`Z|e_ePEem2dz>8Cj)BAg1+eB zW&U581Sm817u%kD%5mYx$)>PASr67uPqjH(AQ{Bmyio31Mf<%>>ngUf5zyB6CAeDj zFL>pqKPQ+T!}|Hdp>5B^^Tj*uMoE4})+-KPj zX{x-SB<>n1tF;4o8OUc)61P<6v+v^IkLUj2?N>{t7M4`t&0hj+*q~l=OiIggbgWkc zl?n5B@A^a-`3YkLJb2bwWPA=V3niLmMwRPvN3$cA20T@MadV55R}?N{qBltJfQZ;1}2UR{^QwJa@;jCFN&2$m)_SC6`{p z*UwO{NDs}vU6fn(B-?&SQZyg8@b$`avIfj&DYw#QhQ*hUMRkycMxO{V5uhv3Dd!8EpMS zY@@fZdDCUlLa*Zbh-CJ4X1_jd@FZ+y@1Pz9?}y^~#BrG-4rop%Dwu#=E&;&N{FaIX zRGQYu31TIl!jS=BjsE;OP?Y}r+V;FYE7k7;yZVo~N!-+DC7kpx4B%wLa&W#8b|4LI zmIES0ep!`&+O)pz3o%whKd^JdRwWwIa8>65?8kwJ;Y<52VDDo{aQZ8RjyBCL$?d*V z#xL+cf=kTHJIkYjIAf$c5tGi2`p9UGLAed(CcQ?W2w*+f&7gUR>RGRt9XHinjg~VF zDAKDsE{p^GHRrR%kd}Yw|MF$59>hg@hBkRN2evR}G(AByHIg^lmCBIJnr8n8x+2}? zU9iJsg#ImOjpoptBN;0ORN(uMuH`LWIMTp>;{@Luu!GanCh^vDJ)ycBYA4|~KFU;| zb?+s6{LpycneSR=&FTBWoo|SXXR4y)UtU!47WH|n;94LB?C~&`mZ{tuJo3W~p*iiX zN{!ZUp~8o0n-1akQqruNp~(IqWl_0JX$EACD&Vz01cU*eyW$!%-d-b6I!t}ErTLWG zIN&iAwXb>!6<&-)X8c@A_h97x1*^7sRz^b~*$NoQqz&`Z;XPz0i}a}A&v*J zm7^J~4h?3+eM@YxqKf=$r-8mdct7R)` z`uN)Ulx6@APRFOB1qf{{sD*nNL^GL-4?Km@+?7_ZzHKO_p0-|r!D8t~!2TdnrRE!wYgT8jp9T-J;Xde z9&(TYWGvaYqsd@^ROu@1gywLqcUxjuPrGO*E-_VI%|5Nz1#z%XYqDe3M_`v^Ggn)| zHY}?P+pup%+@~ceu&M)}?R1c+`y*SlHDrJW;U>h}fpH#D#T);7lNoz#3&h=+Un{j$+o~)<;OWAB-(kpsc*iOzecJRP+grIh~oS$ zP>vb)7bf&Y9i>#Y>W4@vSkLD;L|IMF4ULB0Enh&JSIHpIfYSV@Wt>NT9j6T9oY054 zkZl<48tygt2A(h@^B>qnb=dQ5{sZo*BnPW()@jaGX`g$uoqiBP=4YV%J~($<>)l=a!`E84;X*~%^C#X8&zn#J z>*QJ7`rM_Ggro#o)8m7tan~I=^6+zvsyqIJWz(*<@_LT$frXsFN?Em){YHt3#aJ|O ztQ>QyQ4SS#l`El4ZfbeUk-h&z)|knykEv*rXbP2$XqseA zrFSkVqRrgqPVQjoxFmtwh^9%UhGnCvbLW;@E{M2PYH99*`xYoF2=u*re$VrJey{KE zpZW){<+#rCI5MidObuzc#WwPj{?S&QX44sQD zYx5@coh}CO`)+xo-6Ct*zY?NZmY=v?LpOmv{X5TWM)6&>Wt`#21pmgd98?kDBq_(z z%|$w|BezLrJOny}JJ{o2S@9PK==hmm8$7zI2rZyOJHXTlEXIjy_ltJ*e#^A3N_>^a zMtoAbAA(2wg8jeVMrdR2WlB+K*L?All&0J`?h6-1u@mL=B zEt2^Xij6G{*oJDfnQF575w1rq zYd{xy0i*VgI2PL1i|WLK9tBT$LGPrE=KV%{>m(D2f)ae#X`r9qb<8WEfh7Y}{0U2u zC0RM&SJ(FTwaY60Ed)hKHSnW=4%k@@1f=|%EvRoCNP+#t-?Jn#6+!MLLqhV=kwwnI zu=5}QOa?MfE=>To>Qy83AHonD*j=B$R%Q0!V%KLL5!)iYRA^WmkXj?CcEmJL{YLc+ zZ{H_scKWAq3A67E5i&bml*N`!f*VPU?R=L|#(lsoz&=llV%L|Ql}1Uq_^wBJKcpZ) zG*AJsM*H6jC-p;T2l=6053wMH>V>6&;JTyE^pghnyxe-!>Nb<8#|Wy2uDfk{MG0J0 znWhj@(p+P4M(K*!#QwSHWwVc)iI=Nw76n5$aiav=A?ns4`ybx??1kw8EbM?#GyVj` zfrY?4gRx``kcIE^mkZVLxivzK+}e$9rOP0>K7pYplS(A_a9T1vq*_m}p0xv1EKh8-*`YxEG zs<<}s-Kg$C6piDGN=#MowfiO1x?O-lpetT35p1Ia`QR3u+4bSY_S$D`$kvydywL~w zDJsrZZtHH9MYPMRu!pN^taA}7^AKkq_dT)I7+t93_I^8h&?UTR5(4z8tCEUi&YO3f z3X4YMvh4B`=Qtnpw|$;zV|un5^k`Ee6(L;JDe0eip3&x!A3Ac@_7ju&ot!l;Cuxy% z%`(rss$$TzaBP);y1CRC5_M#t@Hw06PR_H!9sY7I<#Je-ana-Z&n5I8B12=C$GBlj zp8P8JGk+A2vsSmmbDpwIbM$Kh@(!Sj0Hh70$ppjhL9X?J?0SGP+j0&Df4|*qcH^Fx z?W=8w4T)JUJ!JwjjR?$*t>CO@HI1iHO}rp1qlF^>^Cfy3?}ZJuLWUWLfdSuK3g=OO zTyE4u&7xvsbSez(57p2v7U~1Mf{$MuJY3#^(VjpC`W*l$Sp|}GVM4H_NwgRjAeGgf z#CV9a*5@F6)?{Kgo^CrZ;pv5~T8;{5OD-_PEc=9cKU8bPnv@m5eWRk{VGG>-PoFqk%iDmw`B8|+M{3fn0H3GAn=S+y7!$*mOF(XR z>bs2v!+r^Ac&&XJs+5GOS|)*s9b7RwN9h-_TaJPOeW7MP&u5r6yio6eHPYdQsm1dK z!h>nbqSil)Ku<=}37nL`ie;7)Ri=g#1=CBrQuBkeia`x2Q>6nQ2DE9G`(Bvj)1V6| z@UP6wT*Giu#?VESUcgkYY4oXW~0_LEBXq z$ueZ;tj)0~`-l=d+V!e$Xt!#xrS3NsKE#bye63(P(&<-Sr7g=;CGypq! zeKkcfNJo{lR@ks=>Ky5(Q4z?_7VQw=gAlMvQ=B3nxy0IfDB*^6d`&A(d0fCeUp47| zoj;Za5d?{*?uV_Yv5WY7OZLy&M}+ycGik|vvI_}T7rhj{3r&|6`o#~j#?+CMX|0Xq z69UXs0f36xy)lgEF!aL)%Na{{mF3&@GI;qC^FR`;IYYm@Czw5)HgD~E#uqW)NGgQg z_%w5Or!hXX82|Ufr7hMoh`-)X7@pJ#rG$wj|M^p+x&B*4PseUUdqLJgmWU?C|G&FN z<3Ng~A`ID4cX7o7-yNRT zYpZUk#ORxHspY&MeB2YYUCXEsD^#?2fjHurML)v#Ui=SgvwU(05HEj~+Ze#@OIFDu z0-!-&sq!NNz~#THgspBqYnbU*dzg&waB$>@bdF_?p7wQj(88_YEGc&4)`9*#Kpc#U z?#PkJ!~ov(10X@&Nt%(F5b{EX1}AgjltJJnw4SNoZ6(h545GZ=t0j4omH5$5@ib=9 z`7-O?#+JV!IK4^h9xAh-r_jQ7Z&ASd;`2jBRNc@8Lw{(t_H~aY{lq6G*;0q)9#w@> zr%IICE`|j|A!NW6ewCXC0=5H)wqde0pvcrZ04N>vd^SQJypY)3{eIf_St8N@+C*R z&JVaPJ6gNAtiD)9a}Qir+rLdaJ+lmET!mjAiznK-Q{Go*@_ zPh@IBEReGM04LCg`Q5RFjR;?x2>{+gn9L6|=#EL0kz?uR)bqNxza6}0M{W2 zo0%z4>ap{=0Z7P?1Dl!iE5JQ)a}3>v1}A!S5ttESQyDa>#!6f`uHAWeM(ene{4dzj_sj^9xCZ5VlF%T?9f;{uac|Z$bR_u>XJe z0K_m(tLg`F%j?$d5-C6+29PB3qmR_&g$cLSzK~y_zRJ0iTY&qbeLE|8dius!IgZ(X zJyOG%me`iMo-gFy`2Xv$unpRO|9sKwzkg0{vRurORjkHf7@}{Hk|V*mv?8sa2Sq+N z7Pr328DTbIYyVfknKLa$yp$_L&Lq2i194>ycSFt)D=tZQJXA_`1bphGgM8Kis3_d5 zV)Y_ySyuiHybMGdYWfOSj1yP=#ghd}-GIjj_{jYM=>NaU?FJ&GQemqE=q8AaC-2vO zn+DS|kMQ`TT>;dI=9A20>CcH?zA*n}?oA=|uC9SYS7L$|5EN+qOo4E*Vikv3T)_aL z#<0BhwOWD6avLbkh=Ibxt#5%NPS<8jd{)HcRRGD)O(w!@ejB%M;;fBCu!>dSC%m)& z{Y!whU%|d_O#NFglIK$8plnARe(pj)j zc%mC)sWUTvIyZ`v3|k+tav;?{PY@n=_=4aa#0>q9u2t6i-G5%<>p$^8v_<=ZOF~_b zuX0vmpks&bGnSPu0V-~274C-om)^OU?>LhBGxx169J|%CMo~L2EuT6ETCQSTt}@K9+M8%C&G^%cSBkza<#xY%Z-<&j$^uu$4}$K z4+p2|=^sd*hE(ro&3plM`su6ba)^8Twz!~r0{%#R7FFciPB;G}Z4(-}V+4CWBJyuygXC3_Vo9ZRCd*xr4ygKxx7O_WRi`z|=CFXh9{_ z$qhnD{j-jGJMG7IoA;71zU$ouepTK+?B5JO@;;tUI8Jm;({E`Q*-A;wt*bm2j%C@+>W7ojS zA8bQmB4Z1L(*_^rSA5qbmtZeeVjW2(cOn2;&GS%SHo6#l()D-tM$x72u=yhd4Hd$& z4f(@h`LdYOP?iDw7nENUIrV;em}Of6kYVfGmghB%VlwvI3t?^ex8a;A4nT1zTlM{Z z>;vw3A97uj67Gz4(Xh%>PqkL6Q-Q(FHr2ZE(gP3+poLOvMK8n91oBKb))x~onaJAc zJ{LUzr}=UqTPS6DU3B16jNWkkZ`ODQlSR`n4JGWP6y6Nq zhYd(vJ*{gy{$j1)1eaxBrn+nBJpQQSpp_h$XFb0&mxt=}XN-SO2gPn=yNlynz9iec zNm9dYIz$`LkrwiY!xktOajE_<40SV2!Z;(uDb|&Dk9rDlhjZiW) zQqHlwEE=EyyZf?Y?>&*~3p-mCYS3}`1Utio!b}Zm$}qK58^VpV;Uu|Qv!Z3CD*|mO z{-GC^HIw(7e1=IF0ohKsWXSxp#J1t2J?`bcMey@z4No~4xNF90av|7X$?e_t zC>L70YS#zwxq2d{ilDeHVJ#iw?^2CVJc+RVvtABxhnHM)v5rj>W}?1u4kLB~v?dvn zB7A2UrGf0mZVNkyH&+_Bc*wmeh`T4*SA#2Ts!os?BH7M~imw zENlD2mSj_pKrmNR_GuoLyC)(>Ea6A+Qddkws-ESK5s=q&Hcb~bx};SBr(&9#2DY@syk}t@;mMKuPzS*y(qJsVIl-hQ&ldQ zFR0NwuyEdCUiP0?qOWpk>n=}$zk)1FF#FFt+5blP=1tJ)Df*56SIxP2$CQ^C|0NBujN|RN)&!)oi%KKxCVS7 zjAbJ0e3JI7T7$KF2iI^+UDYRRNgTfy8zkz6PM%5q8v#m!&S$PC!xTSA7^(WVv5*%Cuq{#XH+Y`X8Xf(M$#sUKtixQ|DRx>=U+6$s%B@*z zgZq~chADNT$#WKd?1$PnbCLcj#s^Z%cM~S=g(vGJecr8cq{JM;vre>pyf{*G^<(@q z6Kz$~+GiT8Y96-W77P?&U(r9DiBuj)rzk`bI479n0LBzKmoD-F0AmzPMOSMn%eL9= z*nnvZ@-=nYL^WUx|V z5Or2f@N8=rt~kbz>bQ=2{T3e|K9>9Y@j++7BF3HZzY_#Cw74}R=rEe&a=LmHaP6yUQ^RWALX($6dSeOA(QP8ycU-eFMN!l5~<@Yh$^AmHKY zFkbBJIIDs=wiccxo1jDo5A@*g-eE432zt8TiaufetsBs-c=8Nbptcj5XMA3}^s8L+ z-T!T(d(!fgl)NhXH!yoI`H^4xpXx=3FX-R1JFDB`gsw5XjDCh?V+zn^1=HfNnVZ%X z!yKW~v)xv+we45nuX0_64(CXUX7fbMi}Zcz8~3HjYp^IF!+$?C>61Y_94sG*6O#-T z-)ncQX;8JO7M~C8zt``z_Vcx0`}|AJiEeFkt<&OYXN{ti%?PNVL%%QevxB$6WzF&3 zL+}2KKmlG2dxW@%8P2_5Z{5v1?W7X}_{~{(>(L4E(tKY z*Z1qvFUYnulpQpeEpDeXTuw_YloW#H zw)}bQj7+MY1wxe zPrt~Y#5oPA(N@qV+k5B>%~X0hN)WOXVB_wrbaj&p5iIsZ43=kQ_FxsTyM?9F>pmlc zTuZ3b8)SDx=P69D?!|JWt(_@4?@R#u!(vOt^JL73*G-LnI{~maP%JCitvv;d2zyWr zpD16tB$m%7VnJ^JT`^us<=@oua0Nza$?Ic5z4J1aJCxwG0HaS^y4J4wEQtq6%P zwjSs<$;^F*%nYQcpRrTw#nUdD(#trs=gTAASQRi&-|+?vAx~X1^N; znsqv5z33e~W4_gAn3x}HlEoU?juv}YJuCK3aq#Z6$x4Z~1gtIUc8N;yfixo|)NN}h z{yImNI=&(X#fWqGQl;)re<@V#VrTXXJXckcPoGhD+qDPaM-mH|{-Ka1Qt%~_c+^{T+ffIchW ztyrFql&YG2jQki*5dK&MmIQ+^k5^KGZ4F;R?JAOp zftW?``ub`JKv&4P2`r`y?C5EJ?%3~csu-GRZ`(`BHB_0mOtLp)^XTFX6nn(EV#Oxk zO~zlYP=~x8K#v-p$dKg393eKOIw3Q7jnD+djkLkX7SpNB!6cpFVtkd(=$r1# zU8wn2r_yPi7V+2FWK+QP?A2frtQ`xg@!u11chTy=`Lncx2u4I5QN4=%KVb1yv<-6J zPKrjVE;X3Wi$yp3Y~rTrYHZ@xYAq=rmW6CbZa9MonCJt$>-utik~|#wundD)s*NO< z(Qr_p2w~xuMd9=MY-l6Fd6LVN^Pqn!o^GhocrV!n#=ny48si7XvwnWVzaJ+8o}j#C zX-h4XgbfafP`%jnW#3R!hxf}v2qsEAk>96=8&3D{LOzU>*_1I(w%jlbs!m%?8HGq* zzV=%T3ccIt5MZz5B+!BxnAXj0^(I8&q~jTZ9`DX?1FW|Ul@6*#%j1upLwVj6ClZ<# zl_!$Fo7p4hF3+aTEzQ}q@Lxkc5>)q!nD;yZdTZbE1JN{(;4i9B?}jdoJ+ z3*%=~x(+0A@o-IKOsr|`#!`5Co8*~KR`M5eMRnX2gdsaUE>W!`kp5yB{qN^1;)zA( zIPK+>^014CVwGOA<~v)S35+li3Mc_ec9Z4)fWPIk zi%Mu{v0Siuz%_*22DblT+Jb}d$2yxAKP=?AAj&2MmQwWXf^RL3;ccTFu)|HIvaU}> z41;0fv+8l{E=ExLPJll~G2~%ix*wQoIWlP29R3LgvnQF51Us06lz#X3oQrdt%BX2Xw~K zvm?CKnn-P@l`nJswr}G~KKZdT%&if}rZX>`PU!z|jCSK)am7)ub;;pIQblE#EkGMs z+*>B>_c>VrDncxA?Lo$aPmIBR`ut6xKM4I4y%Q8;!OaWK^y4T8il9>iK0}gXXbpAa zjid5>qUAF8%>_#&RW)fo)`fgX>`m8?hZZMt!+*;29vCHIdxiz$kmZFUkz>+T@0~fq#?V2Ha9vA zhOkhJ$Va#q#Lyh<#JYpWoF3>ypQTHXlExqF;8&72B>SpW%Wdx+wM-UG)jOAzqV&1V z5(`Qg5?oeT?{mPfU&F0YNIJ|X9MhD9qxN5h_VxkHRgGpBgIjiBc)OuGkY$qJdKDIK z2sk9%&DLkNtCBK!;;Iq<0yakMFa~934hE zB-Kr)L?zEVbvzyRmli7zCBs4&AssK_krsZrs;3pwFPJ$E#ZyhIO4&Jcr+~SC^!>h_ z8ZN1Psd`S^$4z#9Bn?;5?%K3md$#a>-Q*gDj?vh$ehtAWRvhEHo9;NTod=9JV)&jRQRZYx{nQdrp+;AAr^lgVecKGZbtSzvTH!ZDc1$K@0@hr;P>Qz$zeqlCz|(-}d2?S-bnD@i%XhGcFYea@Z55CH zk=8*c*=i^;A`BfV4Tu}QR3s(%%FnVLrT-zLEdR@HJN}bAd;2I?O2&POBEJD_C;=&? znB3g{zc~T0q2asQA!Y0??&DTp`ojaN*7K%!WmPcSPgC&v;TKjroGEwgAp z>}=?Vu{EtC8XSY0OI5*=)GoEOt|8e&rHa)5Z`Ah<}CIz_`%5A*l=RBy&9s5`;SMDMl3aR@v=FHo)f5dlX*cvK`L7`o1WV-JP60*3e z(E18~BQaeg(RNZjG@jA3A6_IbLQL$fHD9x&ANB=VBZW?Peaa>?lMU=da8OQ`#%C1@I^?e`EXTVY-d*Ok<|G73w}Mb8QN zL0+Au%+`6Ro9~SFZc!xNp)$&rxA3|;7#$}skpk@`UMt4NXnk@6*kRICNQM^?-MYk& z4TDth)&|f^tP^kD@60d6s}wHJ_7{1b7r4H#MAgi+x5>H!wST<>cu1IQ%92bdHot-I z8JN@~3)C!FXeN{D#q4u13C|U*W9}G(2TFSW^wm}<$@z`;MgjX-53WYtsl^s5Rb;)n znT>8khTTz6^vN>UFhsT&9)=Hml@nUA{5VLkbO_uhaK&psdY5_9O8wCGSPxx&^-H(b zK1iCrEj>G(6GR#eLZ-jrF|6{T8hWxxLEnXaQq4)=UIP5FXsRG8l* zIbPk9Um&w4WlR>E?f%Fqv)-Ih z?hZ4&l&Nz^C9E;Ir1j?i($<2Kz1Az z({oIYC;VzYXo~B|CQTq3Z=CnVN6ipc??V(CL~c5z*q)`($gwbWOsZb1sY`g~KH=|A zw&^ZFO}?y+>h4>Ae|iI_P}9?EvEQ7tpv8(jmA-YnfTLq83S*HxQ5OE4C|#H9Q}~}W z!A}W=zs;;IuGf`((`u3`0j*}Y2g$xntJff+&mwX%=ota+(%iAzBW7$}cY42_;Dg<7 zHLYT@_|2eLTFP=`x$u!1Hc?V3`smFp6@eKad0pANM2&oKiacqi1?@a5hRP=9-#G(P zph=}(q0-!!$X9!mR)aN3>ct^oNm}vFAvxacwj^4zj6Pi--kwBdAr%Jf0^8#QuY8PO z1Uw%4hy7*zVo-e}a+uf8--GiXo$|DvO)5)qE_NBpv{?O#Id(6UwxyCOGNUeUNun-} z%));Aq-k6I(t*ynqo_o7)H8fG`eT3Frn0m!?1kW+BX?k5BSh3w?3;4N7m zpb4K7pPc7ww)rbx2+20Ue*JRz_T_eESq6|w;|rgy)&{0-l~5MOQUVRIy6j7eVH1)- zju0ZV{HE3nRvU?Q+ZPwibz$zeTl-ByZuY;|GOc(f8|GSyUwS&kXX1JX5RPtX<+qPM5Ps;>m7wD;DUA zI%6_Z`Am{H^E*(oAhx(h%$S@QC3)K+>;ZR(P+pN;!FK9%R_XyT(>N!MSAaOIXJL@` z77Ls5@Ayk(nk1}Q-U?xTvo~*UnZ9URY>A49GzYkW98eLjcrEL5n6oGjl~x^cMX*>| zY^;{G`~|R%>y;P|G-`C1c-b}rl>Ts{VF0-|Z{m}7g9^pK4SpYURDdwE=hv(*f)ac@ zBk*reIm1?{#snmXrmbDPdy#7A@Zrosa>!%Cmi8rjA5ZFfU^qUKbS858yEV1p0Gjjn z9V0xpahwRBs}`+Vtif7;)RbOh!+0d}3}dU(d9R51PxMgnR5akr!Q8LH+@P0?s&q+; z>Z_BCzRH~fZw0X>J!7d?h9xYgcfbZ$;TEx=kt-;8av+U%f5}ENXjBB?LRV^$X$pr!mBa@&#L7DaA1FFeqgc<3h2VF^<_awb>{59{Rdp^a#EsFUIW#G zooJ#4gmk5BMGOXbQ9}!>-B55S#qN3+(eBsT7NuaMP9=C&<%0K&3_5SD6)M8r@oAh4 z@enwlVYQV%@oZK7R#3 zXP$ET064c)O--(|Y+oOMblj64j^Ff%1_1U!@RB`hN!fC2B~^W;<@ba;5wvn@yEnT- zU2!UtY#KO`g}P;D*27z=m81;{nlaz>nKx4Gl&aGLmXVPn3Q{N%5G^M2abRlbdH7IJ zzed0NQp>OSy+K-gDlgWXJ}ENGYX2xnneb3@Qj4n^Ow#A~6`>YCai9qe1ewRASy043 zXjg~hKRNMX+WEKHpJuf~I7MN3=4eYrJoqjQ2zzr4_OS24pqtjKcLUXWPh=eF6$qGZ zyz*ZX|G1nmYg+7O!n!!@%gzagdO3I|o{IrlKHwin@vf6PnBzMDpBtBGs!yi$nyunB z(ptSZJ~|MT*da=^*FWy``P4`e>VdXc*!;ke9{&^Yu=F^J)hB5R6Pj( zA@A||XW^IRgIcchY+5PoyoAtYz@&Iz|F9xY#_(P4|oABI#KGz93D%6XN{nj&gr%_V7980SG zYp+kR($)h%F(&qY2w=JoM!B(#sl^t&!tua?-{SLJyhxTqtWrv7pw#SYMmg50z_bmvo3z4hMz(4dar?#b?&7aSXRbzr!CVnf)mF+j z_bBzuA(vi{>bKsDS9P*4x2r_DSvOLiV%CbHch6t&oMnquTbX-~!qG;Z!jks)P>ufk zmMf%x8{#vC$1E2zSy~(Sdyoz>)S&L`8bGrcIlhz&@mu-Qn{fWXiaDz+WizRdUt#jiBc9grT?uSa;-Dtm7b({!21fXEdEsyP<#RW4Lfy50l@nOe$frbt-09 zxc3XI7W*|zHq=6B<4f!ljj<8O;FYqE!iGTsA;mm7xvN@K`HD9vh~Bb)vGP@}UeL20 z&Hu+<0qoCZz!m0}N?d_O0t`%7@}JAG2|1$bq4;F-FT+@%v8D8j)bJI= z5TV1^k0Y+%EMfuXb#n17AaHC;tAg5pQlWv2^zWB|<#{)aQWhnSuPN5jBJmEq4L*O( z`hq*ZH*CxrpUhM{ZD5pSgX^k zI3MQvlR%*qYe8I1mn};0)?&YHC&it&0|YY-J;y5f3 z@?+}at7w|&(T7)27g$LFtUa}o44%zP^L}Ml%*x$t>u~2I)(b@uXYBP8M4by7xo2iv zEBigH=q6i{m-i&hs0-n7PpypnS;znBJ#gy+Bn(s(mzCUBAXf~ONE%~d{8)xWSwjCR zcLGog0vbZvc-{D5oy6ypBxTxak9^%52;KK;NqZAmJyz;T*WWmXmu)sPmGtNL$}DWE z-Y|B51~haqjdutBwlCL^r1r$8!B$C?Szj1X3l54k99NSZ24zga^qR)+=9V0qelb}a zNqIeX?7=%zO!D4@xp^0@JegoTaD!ye^CQ^SSQOiPUAN4AP{61!b}|4Iq>zj|eb#r` zC&moKo0*e&H@fkWGe zrJNr7c6)zAE}YZPYP|gCL1*dvcix*J<&#&N_B(h{*XNsrQ9eVo-5y$dyr-%?6oTK# zhyM9dIOE9u;o!fYAN`wjtZ};vw?R#kjt>Iwz^`(EIt+l<seVIYZh$-xDSBEcj-onY|N%w z=A;o<;hdq*i{|Ru*N8;IKLsH`tQOZ+&>IFap<32{>b#lIXHrJq17xOWZzQyo+`cvq z#BkgvZ+c_|m`;iDxO3kr3w71x;%RI-OrOoSSOc5CncM2Z>M>>8dYZWH+`AjY+15?D2C@+EOeLIefFHOMI zx0v%-^s)ZdqYdkfPehc&#@)^_W#bXb8fpcf>)1J`9RU7bk#pE_Xc)E?5Bf|F7MKBp4rHy_fQu?n* z-2oQ3>95~VqJnY2KhM(k&V0wioB5gspNN9V^*;Z!yp8gWw4(Fn;>7qwpN-<=Oc$Gb z*n7Zya)QlZD!39BP*mHX-rEgYu{v$6?{)5BBlZHQq(ykPm*!7T1JWg%0FpbA>hCb0q#ssL_$>%iBe8){!bIIdBJljDlKvlGl$1d#3ez!UX@mlRyR&F<*Q+wlb`rA+c$M)s0} zi#zU$T7<2yZP-)*Ck*mQOG#w<;RLe}82Mq&(~c2JGiHnV4@xbb0#DUH z3kfW~qORbNILwzLs5so9F6Flx@U2@c$94l%_Fp|%f9#ukFEGOwJqrei``}K_eSXBg zId9OcgZfgHVD>uVG`4agy2hV={D}%|iLhfIh6!WeQ%~J_W;wr8Cw`~%3vI!T5~En= zmJ5%9gR<%SnH^?zuO*J+hZ4lv@pawqgZ>H32{}>iePr<&rEFhF_j$Fo!Y_vo)Xz~! z+@dzW%BcOi^@y3czZ07N67FP=!lBI;>CTX^aysT?^|UW>nLrgXRm7CMx!fD?PQmVd z*foD^FXj9lpjF%cS4mF$OdHJl(3#ktoO7v&oVM+j6WqZ;(me2Xz z0r1GK1xXzS!)qd=!xslrp#VQEh>8j7b5VGfYsb-&*KhQ%DLYUOZhd%fhIZ9l=jj7BF&UHXFqM7CG8~(du@0=?3`gZfRXo`c* z6t2#&FUBH}YU~i+X_iJ>6^@CksLNtcDZ(RzCuQGUjSb3STvWcvfqJ4}&(zMe^ht)45!W*$+!;UjuM)Msvtm5!MuNCjJYY(5i z-aOnfr^E@|4WkGsv8D{zMcYLby|&KKGb^8l12JvkL;Sp$0R2lis2+t;jbSG6!`+Lr_ktP2K)m*;?O?oGuH zQJFyRH;mdf;@3_;88$ok0l-*|;3g>ggc0Ymojz5&(YD;6`5xZ`H%aFgMd%z=+Zu>( zj-lm8JoxN!4;yN#LL)#cJng8Jg7U0vQ*1}Ws3J6N-h98=)P2A$MT?<6*{V>Bhrl5! z4*Im?)^cMxzabG1S6Tp$b@P)EA|Oyb`Fb|F(!+w`l|N%(eE=Vs{JYie5waOSe=Bf# z@#8Gj`ynJeAl+gge(!ip%X*W6t@&|}u(y}llw-N}?v$d!+7N8C*DEO@dD3r6W}EKUL)Q+)is0Iz8c*Kx7`C}I8b9-tM6 z+<^oR;ghMl{-!anI2fFY{}}39V`C^=uLikrb!I_Cqb@U3k6s0WTZp!`##3+5#*5Zi zaHKrAjrRtx|C&YgIHK`s`+S;=`9p7lH!`3_mMVFr84Y7@Wj>UPuG?SaVsJqJWT@0O zoTb)KYc-vRkJL*+PpvJ4?U$@!b&(AR&-{$Z+Z(knW1H3~PQ9i%y>RCn9RNtLg25!vPyL=Dk?p{AP5oaE3iA_T4Ls;`c!i;(bZ$l>UPKa`jiD>e69P^ zr1lqU1#W!zU&}TdIhB;f_lv1+polSJ?j&GS?%;nrziJ(CK@--!5HT{AYGs8lR>N)% zUP4c#ILn*O=yz+TO)lo_oiDxRa259Fp2+!mw@o>;85)Q#`N4&djC@p^-|dIUKIjuH z@pIF^Z+pLeYZ}6MoZ7Q5`-C$K{+SN#cIUCR`5iULEKW|y&q+UpXE2QxAbJnNE?XLIDvG_wGbn-W}6=+9z%!U@=Uebu9Yj#;fU*&S61EB#ArWaRT zeWuVUDAKj)sCf<_Zp=>Wc25Zj0GGjO#>pk%qMH4ZSvT_z%U`Je{nF6qafCb`z6sg#w(mPJ@@BZOW z;p)1ievbN4?jtN~DMDx+Yis9f`^Z&$YQbod7JLqJ>fu<<=K}R!WUu!Gb!^=*Ys=1v z?qj>f8rn`cdPRpqEU@@BmRfEf<(7K*)I@VScy2$++0ZTfIDA~6LEjsl2MA&>yP(aU zVK@bY7Q?VXQuk^anEE^Xa70{qQOanN-Wd{K0LBk+lAj#CyW` zKmdCmofa%n1WLA+#R3JK`H^j@r^k8?-(zZ?v6eaO=)Bg3Xp93dOs`KwtsXtv)8)r^ zeDj=Vic1Xn>Mp;7Yj7VZjq893BgyGAis4J+l1B$!M1RhoVRBG6$1CGZ$Ibj%ivZrxp5xh2R$Q z(JLQ?31-+KP6h3kgFvbq6gF6BM74${SmAQdxFUBI0_lc9NG%2Bp72E}cj;B6HNYGk zq?w}2w=qu#;DFQTP1M~Ectj^$qfp0*pp|P^TOW+M)g_QZq&lW0Xb{jN2)dGrgEDPH ze%?P52%c42c)t_H(&!C3r%#P7rlJUG9p>yIB8r()y5f>h-`CAupFe6A5WPhGJSWH!Zih@h6|9AKL@uz(j(BZgCTP86+w2n>#jc#4b zfV|bsh_MQhhn$xIQ%qy!5V};{Qvh3qv$JHS0$hbyR=dqDl{(lD9V!g_5lQW<>DPYa z`EPwnz3rsVcNq8xaoQloeT(Se@skmYZi?cKZT3K?Z;krvACLA-aSUADWIwb$u$U-3uy+r9~mGYS9c`bIMorpr;AwlG1Kp z*zY%Jb@%(c3)J;)@z9!gb+ z(p~Km&~fsgL)`uhZJ8ysp?M|%t7xB}E!Wx^V>nwFxGWpru^>hO*>~&JB-I~fg?4{U zHC2{h%~aedzPz7e_Aah|EsZCY>wre2D@6u4fHj)p@uq&Kq}0JCXx;x|@4bVXin_kh zs3@RF6$J$XgsKQql%CK-lTZbeA{|9R5Tp|Xq)UKM1&Q>cfPhK|krJwO5$U~`P}9BV zd7ro4Ki;`>=eysXJ9i%caG1kM&f%Q3_u6}{Ujf(fxIU-$oJxJ~GTYdhZx08NyOgIb z&YFptV7pK6#b8dwr0oVS=MU|58aLMEfcSsPXItWYB=b`OdG=+i9YBASTReEyUubrp zl|`z4``lMd1JJsWdf_{y@5;`MWhUL4^laPeTn@}2Qjv~O92p)(InFA{Hg?UM#aD@02hiI26>{>CLi5X??pDJo{OX5n2)y$ujQUEUs@9`Alv# zfKx?JDZvO>j;RY*$t^_Wo22R6-W>rNZ5`^x>kY5RgJ2c`+ww1c{Hh=KVT5ebh5VMk z1Bl{3u%dI!oElZT^?H1uRtV6k=|AQcjbFpz1N>Jv4R|UnT*BmEx^#*qZM3Qn+2?GB zDHcQXq_R&gPclT!j2{QfK9Wdn+l}|^JCJYD%N@KuJFAn?$MxB%q}S-Q%Bb`92e{b1 zzMV{d;n;uQ|pe)=HALFw4b?Ir7l!wmdX4HolVQY3HENw%j_)p`qpR9S(K ze=lJe5Ht(OOG~wr8stASP_%5yZ16BqG5>GN8Rs5%dR`y^cAd5uK=yxT{RA%C=>xkl zvC^dgX}lUz%!4?-CrZxFXDGgMZ?_N48y}O16~D!#cfb*1dW6(2_%mm|`S_yS$B&S= zCKAem&EXk7+_s&_SIcSOAvkm57L&2G78}7*_uH6(G^~RmVly1Q1T_&hc?U1-SFk*W ziHZ5*`2Sn3;f_cue3y=k=jVP}&OOdED^RS61?# zfwP31+Zf?EA%@01l1W6KN+L=1CE#Ya#@XQSJ)^RrJeRhqph`X38*>;uz*jHz?JZLe zr_!%7A;qeqwb*(*IfZCI!iyos;8H9qe{&^nd4+-d$te`ZRdr-rvDL6!#IX$3@QF)bp_}#!vhCB8ts*L6msTWlQe4S?n^k(NFAStkg(-`k&L;=UihfuKlav4mG88no z0YxwnU+x7J0lMIQ$#O&q4<1HLemeX_oiwk#k};)xkoH}bXR-=#I9VoU2WtHYmQ?Y9!BP%Or;^bufh8AX5k&(-NA=CWy;}=_K8qPRAzNC@+Qz2Z z|4yK-Xo9s&^E5#vay#SX8SCoRfQqOUB0#$kRB9I2o+pS$!oYG4QR=%(ZL!w+M1OUG zmdD>$;)$r$-Od^TyDwVT+zsMZUos4B25?OZ9{4wi0Burk*BV$K9G-2IM~Vdi5yDBFZ<=>?}w zs888~2~yI8p!ZO|Q7x8EI&ZvWmkK>%cRxg8#bpRk5+nwZs1Pv(cJ=j!WXxj@!SJcg zCDf{2vdJC5(i4$>*?b{SwR41A!IQsuuz+7*=)}$31H8HMOC!v1GbQQG1Ti!rU&OML z{Qiftkg+@?;+zEH@Ng4~P?B_PlStgCIvUOq@irP5O~`hk$Sfq1he_C0OQ+i1a|DMg zC9iR|w|T;s8|02AArdK@d>Ey{jT#2eNG^^O2YITyf3dW94y(M^a%#B94wn%YFd-)9 z)XrD0ZM~qIFk)!FAQz(+*oKWKXPMIQ62nzAdvaKV4`38NTcU0eCvD{;WjqG4?`Q?*^)?fNW z#v1T_oCT35ysRCw=%pvl)vVDXTY?>P9EcNw76ltf9>}e_WUu7ddU4V$BtH;i<(gpv z@a|exnF{*(Ox6-{g9ma;l(`m5s<=@$44!N&5}a*WNJk$ZE;di|?M5bY%C~}wI8dlu zCLs@Z)}~I78y~lJkezeG)D41#x3!06RB=CKA|zSfC0UuK-(f_JUy&xn{_Kj}uF#{p z`AaJq1oVVAhF?J}hYHOShW~N^$YCVQeaB6{F}6|E-gCUvTR<9JPv-LExi;==-99kz zf#GJ0Vp){!!K7ADeSX$bF~d2U1@Z7A7K}ALf);_|f+W+r6AxX#kObcpU{~oQzaT4Z&YkuW{j5h8lFy`IPG!R@QBTVOl z9eje!0qmr5CQ$xxxLdiN*Zii8R(AA!sZ~O z6v7&2kg`OcZBU6$)^7dw2syVe0fu7yqNVbUgm=;x?!@Oeaqit%wtpHq&=GEx=;X_* zUuLD1ui^s=3>KHJb$$X6t^~I}A4zrzsK!8K8`I?YgY+FCGfHqePN=$!l&Kvwz3`my z+eqQk8R|;<7aEO<`o0FF=QWf!(c#_FZg4uAQGy&bd%5RwM`%D?DV^hQ2Aw|=uF|Ov z>%uMh>BXu2-&OQ@2NM(>l>+NEUdQXOh9<_J;R$fMonNxdE=RR}J!y8iSWszd?QbUXEjWaiV zEy?Yp8f!gr-GRPh94GiRdS`-rTrTaiGJm@EvE`K0GfZAAk|p|Q!b{{|WcG8opP=fm z3o|w1W?*J?JL!`UvB~Zk=}Xw?=;@frgcUAl6;9ndRcw#DU)u}#(@?Ls!0vH$+2ku3 zSdYMF?nHb)7r&OfQ5~Eg6UfqQhdlu}Tj@Oar!MFK=8fOrcP}@~_27aftYqh=zHv(Z zlofYj<%cd^kC9hE#il)eL8^NRSEe*FI^aV34TvDhr1JY?qz_xKkQ0n&CLSQ^PaFuN zE80h~PZYiM87x~U`_ZQk*K-w|8F-`K z6up=f5C19=%jp?o*=`@&B_!oTU7f$PJaB?^msHjg^E+IM zsehJ~?TO_XjXfKPXIXr3$C(tl4Thj-sx>sG8O2tmlOl>azMJ~KmT>pV)=6Xubwirt zhGFd)n-Kd?f#JDRd@%54mN3t*$O9?O>4tDFqrn>7(eFb9O`Y;RO8{n~w*%lXJqMsd z8mD%ds6VRANz$8-?~}L<^!ZKCq&RRG2)zD&7yYDC(c@PrmL71U=X5`zv|xBAebK^3 zO}Zg@aE862XmFTe55EMjgdYD(@6XMxn=jE4ChE?IX>v<|WeCgbl$VQB5<42YouPc{ zc^d|MPmSAt1!i8>w#VELFU%3?l>!#2uVaL~Xm>6ITI#~Vni(DK;!on`J*SbN4X1a@ zN|{GB@tz)B98N4y-pNSuVlmA@MtUc#!wXi{2;Ypqpl5dRg*k@Qp$=7&djl}nOT6hJ z1|`Q=lfUq#3r~q<=A(1Bq#Wm@E@x-b*7M(7S$t!DD%+)=i+^;dZDeV1U)iPmcm{DF z^_u|RQ%dC4QUXK73NpOqR+8l#BojCm7+&_I6GGF#?4w5*Y21wY2JV;w>s=&>*TCR7 ziUjG_~LO5{l%ogIOZ8PP{_6Xt-^y~`o4X9KsULz$GL~7 z)GUG6@or}Nkxda2NAuWwVGA+l{0f^i_9s$59l5*`H*j|C`*V#MQa~0Jk6RAF>#a02 zjYe-2#&Y}WD*vnzYp_6%`dH*S4P)mzQC9@*Ew}pz7aGI>-sCP4_>WBYOBohL&V?NavmU+_lJIZ9laOUJBZ>CzOrl7 z&Yda60gwN|&;NqG`f*3xdCCfa@Frg&K7+V(Vd%4#g%d->^UL~1*5)K$4tS>o_^HWA zb~`5BIJn;PE2sb}ynKhJrEus7+(>a2FTQ3V>6F0unaP(Xy4$Zqa_@Bery*N{fq?c_ zK=%Gt$OTVAKVVoC9TXuv9&bUbGqw^MUp05wYT%TDyu~1k6t`GW@|9=4L&jRe&^@CG z9}D|fevt?Dpz#awfa3L$36t%tU4a zQxYEc3vt!eu|2DdvJD^s{bcnRLqeT4JsmlHGaXq|^qr!kJJcflX>vZUto&Nr=!e1! z0W2?|;)S#4ex@b5@FM{8X3OiCXCcifPS8n6GJcsx@XHN;R3|yTb%^Y4(BM~f9E@ya z;7^bo?_=o>?w1=#l$sCSd}Ygw;W8UsZOEk@{sU13FnE^vq85}Zk8M;({(_i3_9d=x z7NP`@nA!_0OpZHqqL017$C(P&Nxh!CopK$V zT91}cVj9@G+uY_x2NVfaoTU`K%hpSu;^jko)YsZYU^gaxG%5H^Al_taCGOgNW~P(F zUL|$Z$pS%SjUbN&8+dv%6I4Q=F2#{Sko>CQm3T<@@nn9wNBx*Bf=m5M#Aog3$+pA# zg)uG87QMVpqUynW+56~zNu#8qUj_k8$wp4Vu2BVEfDZvGB4gg+U;shB{4&tLxz2-i z!J>kdi-#2AHZWE6}TC?U_Ja^zRZHtnU+x2+7Fqn@czy4Vp0dsC9dc`r z)8H>}-;t$FD1^2LQPDRBpWJXlPgh0?`I58cKie8*bl_ieFW&ADAl*< z1~ZufHZF*$BkMC!dV9a5M_rU<%@}G}I>Y5RHGCaE%>^-VIB&^%dv=C{ZNmj51Lq)& z#f%*9yNc7e<>F7n!K)e$nHNqvaPHt)SaO1n-p4ITY>~2rc}li5qrBsHyNKmZk<0T= zk|`RmmZ#3O829jk_>mF^+~!? zAQ9f(;+v9-%HJYZ@(Zb%X;A^;>DkSDA*-~oZh;eR@+RoWGr+}9KDD4 zQg?k0dq$5a2wR;0%DDO*Xm@b*D0!nwR|*p@-|v0OJ-X(;W1h={^7ES>c?0j{@<-?bUnYR#26oX5S-@_nvfG8#UXa0D z^apj?R$>AZo83H{Rl3#CQcG%Gl$uY!FY(GUmmV%_#E6ClajXn?tPW(Txe(+WL_y9+ z1gBviJd~B&12GKH@fqW$P$ritw*7rjf{UEjN)MgZK{!{=w3qW~HQPz-1sLqWpO4;Q zvq1;(5u0Essa|veNuOpbJxuo7IHddq4FKS0EknrIv+kFVQ}QhaYLfUQvm+ckliuLckvm7%S z&W!rnpzavMx8+5S(i!!h^je96XRRI_V+0SR2FCmHPWF$Qq4M5HmbfyGgKRbm^f%ZY zBCy6l5~5GCJ5)A>>Rr`2Y7PoOqA@>?C{VFFg_wo*I9YgB$)*c^7v$PzGdU5POx^Qf zC=}VjVq3@QL-y@96k2LO^}bL)a>*qy%n8R8wn1yIawRMEiA$haQVtnjuyZk|yg+?3 z#&ic2P}P?{9vcB@%rysGJ>S@3U%0T*i2BENHhHdkVo<0uOd0|G)ms7Xd28s8TL45LKqs)>k!Wjg*cRCueZgW0*0;3sVzGTZDC$1b zid|=8Nz}BUIQkwm!=?QDFtFGP7HA`RedkEjiD4EpjEMf@#L&ql@aoDWeS3J8GKZY@%t?hWEqU<)83EjB?S+{yxHyX8r}{Ev;PSU%^o zDzZGMMu25>6r`;rHu@e!C6b)8bWsj!9vJf z$k#w682K4MjTSEx=gObATDLCF;af-Bsr$%EQYX`KYd#gYX}cwg2cie~p%Sx2P?8#RkKA|oe#g*0n|ubGvqw6CCc{B0DT1MuC0=KWO~M$|`as^R zec!Q%=}Y@|cK!*QGZ)e^M?Z+Im!2z3bu9^-!$e#PC!qF=1-k#ZNb^8PwH^#k zWGMDUH2suuLWx6Qiwu^yjMYwt6h>_|dnw-Qjl!hj{I%UJ|0~GZ;sdMKo#110{<=!0 zQwi124iz7#cqD;xVo+q;0FG&FhwBgv7^Yl8&9^8rHF#pnUJuGI_d6WGco{AGrxVl^ z5?zqH&#}b(1)>Pn5oykWi~%PRSeWoBK6im|`HVLRlP?})`V}~eWq=Exrg!h1RAuVQ zorV;@8W@q9a&*6UYvS4uZw@{Ydy2cH=yK2PR^bClsh%_~OQ}8&lb<@;lS#{%d+qZf zvOJW}o0S3)2i;^;H>XoKS&6DgvW=shw0_+p5a)_d!Pw^~Cq6giNHE)p?W*}5iq;el>J*`ao%w}Z zqHH1s0YLb;k|!3B7u9fTqE-e!pQEfCC<5EzxW;3}k3?%pynC4BB+Izg+3xrd_%e-Z z`eI2!(Hj6M++slnW81~`ag@h>X?G$Hn34%+APj-=e04sG-(n2B{ycNfE)YQ@rztFH z0J+tMC^-j6=qjFIBxi_O`Ggl7)IGA5@<3ffbbNKh!I_EUMX5BA=p`XY2`B?}5A7HL z^x+1Ez>qR%HUR#<4o)W^qDcAqWa6ML-ajb)r1ctU2kAz##eAgn;7A&;d=yn_;K!7Z zA$S;s_>Lyv`T~q;m{ZH;*!e{>8U{HKGHg{82>AGxIBrW)-=CpRTO!u*-^&Ev<2eWz zr$f09Y)KLHcmzsPQgTz@=}{gauONAMaf$fuE}#~#1*0EQ7q=P){@4t_rXDkkgftj- z&|xpnmDbR?C&k~7&eVHu2_nNZd~LTFaVD+F1aK202tzF11-+0B0K`{c9z9ZSJ+`ei z+X3Q^oX|`D7V`1=KVi%|%n(kWs_1z-GNuPayA0a&0}sKbDc2~s59t1ad?b?g{UGGx zHZEpVM{pAxIe}tr0U*m}GRg2H>s2s6n8rJUUJ5IhMdrl&mz{!F6 zDR2yXLd{FspP`e296#>g%>+XZKtI(ximlCO_|~1ek@Z9gq7^V7q5y0&g7}acPO&3g zq^_<9O_&9}q%0glbum!$^8tqK~de@v(rn-X9F8z+@rG{c$vb^ zaK*9W6XJM3VLoM4-2^gxeAmLFX#fT?L_jt)n5+i-Uci#ZsCvMRc5F^d0a6K!Wmv@& zW_e~c_rMmyf_%?dR1Sop9xkN91_1=2FnalLi~w!TqKuAsp87QT0Srb=kLUU=idiS4 z+z~k^oB=9Z3N&M0a^WI!>3z7(&BnVFU!V2Fj;;2@J9ZgtTi(lbz|34fPKjT1fHl5S zO>-n%Oo93ruO{gQxf0R*c%&+|gU6lP#hRdXC5x#Q6b`+quR{o!Ufj13? zFM#(>N%Pb`@V@63l}xQHh7g%f0VQKu6aW+d@%BHRqp0lQ|M>pu*FXRR3oHPs{@<^n z$+S|=`mft@pter{u2eWG8Cc8$u$MiFQ< zsQKUT1-NYfe_nRW;q0SN)*5{jm#H<5hB=#mG^w&kg)8bwGr+=I41Dg#SI*`C7)4WnMX z4H11_sUo|42Sq$Wwqet!?)tKI?J{NT{y`8>n3Jp7QWq+eIL~@SXPkAU{|lng`3nN_ zhwPW9yHN4U_eGC1C{RELPWh!N$@njbcB%1blJDFGGJ2>|n9SJYK4tr7DkPl>?gR9& zZJ!1K{0Ry_T$VJ0^q729U&)WfKQkkeY`xD9<@{+CnitRpMoU-_ zfbsveZl83_Ui)fqn=nNP2|`u@gr@GZeoM$Hq>sa0*fH=Xj20=u`QG|L1_ZKHJVTl7 zmJw75fT~3m#$Le2Duq)g2K+=j@huDAJK-c)|25m4dw)TZ1JLPE;e#26iETwkWWUG6 z&;*YG=cQ|`su>@Gvh9~?kI#{3bNrkVjIJU-z;;de9)tH$Kr0UNGZgN=Vfzk*{0apM z^b^kfx1I>FY!T-0v;YK&nIZaIj|>UY;i%vFy9`GKrjHuJ=g`Er$qZ}N?2BEqP828} z5KRQ80EF#n9~xY1Q@cjg_NNQw_44hN&W0DN;e`*=Ce2sW2ljs`7IRRYlqHtkfFag% zvV8v{Rk)UlY{cvb7h~2*UZkMlW7~P&EWp=-5h?NT=ua?o!Q6A%9Jb|mTzT?_qafIU zg0i&=n}@aYEm7V=I2G@Q(nrH~tw$yY2^4XF?0tMvcxuMXfW^NGxe1hl$=z$OL%{BJ zfS_~weC!Rvjn*HqU&mz3(}>Ds<>s%O!qVXV-}#-$R)>Vm0i-k+-7#qo10F>UVh%~h zEp(7Q*;k;~pt<8!$m<@Z5QoWhSj0;{4Z;+Qv`y+aH5)jQd?r!@XFHi6q~}*Rfmb=6 zviaKifz{PZ56y|S-9{8r)yZHCKo-kSD!nZ@iFUBSfxEHLr_puF+^3EJ z1p$)PfcM+UV4^Dc)ttH{lK`N(UNvv6XfLesz6lvYNlFc|LfeG;2iL_--$#m>--xI_ z`_u;G8Y4WBG(W@g%@~ER24X+vzT}NU=KE(=YBoYjI|r}v2tsxZb6Mr9+8U1j;XJp-CWut!dhQnSM}93TiPQAdEPq(yp%rwjwa`#@-ItY?#06kt3^iRQ$KxotWTX zA#=Jj=G0me_#{e5x%v+cx!X%==a?P205JAAc5l?Tt|G&rzZ;;n5?sK1`w?dv61a{hp0M7WepwhFDnr2r>>+G->rNpKPAIFP2%K~ zxDpVpAQF5mlqMg%zk359eF@A#m7mDH?Y6k_EQ{Jb^G&f8A}->;x=yp0ws=0|b`{N` z6dxxuY|-NcGIqG5eb{LM#>pu6{RLf^6Fyu>VbJ_d9T;BrNLZi4Yh`%uO=~yje_tG2 zp|n|`9sSRVvrHb8V4?jT4ewMetka(44Ie!6?TxM!a+v@) zFmXg=SX<>u%hC3AEM3evBENct|j?%vBeh zUsnBx*D~-N>zB~jlRRZu;p>}ZY@V}r`GyA!cPWBlG8lU-1 zakp-<;G@3aCS11v)KxrWxOTa7cm6vWEXPeO=ICS+;!_U>QML%e>Ez)rNVPomOp zObk%0Q!<9mKH2G5q0Xjs;eYu~eL zSqT0@byXp@UgiyNcKak~e;NVPx$JVUSH>FAa_t>EVTk(WJmy5HD)k)O8D0eNfck;C zZ`Mo5CWRKn1ma&*<$+5yDRt54&t#GRg8odLz>67NL?%GPGpumQR5R3ZR2CPboM#d} zJ+n4=CzvbKL5^cv_7yA_NPvJaQIh-_vu@VtR4~t!NI$9Lz77pvQ^(9cZ z@)whmAOAkr&xFFAXR-z2V~(d-AiAuASJ`7bDRDWgQD~5)C7noZ^>!JcidYBy1sN+N z|L}Y9V3y`ECw72hC)al~=DqY~rG7kYyPFPtat^iC)2f=RKI9j*wh9XMQ`+~Z4aXAd z;g|_sH-qgSs>>PSsh+c!YPiFa*=n9+I2P>m|Bv=d|h*0L52RH!_#! zhIS?!+aEFWBrFRHc*_jnrOx`3&a={keHUro&$<(2oui>JX~$&1ltuVZI6006+&u@0 zaGZY|?ml^j=jpP8uQQPU*8PGfk+HDi9O&>xven!CUxc;6q-6CcEI0CNcPq5xUxgy) zb1s`r5We^DK4a=_y~Z9=>oRyxTgme~QsRpzMd|Prvb14o=z^ED?3Z(tGl0YA@;lHA zkiW(XchjY}+o>;atdV*AuU-b9DDAKuH3EeLos{_aCQjD-p7Ef5>7p!)7M?eJpvViFBghF%s8sUb@%PSe;))S|NUGagVgSo(tetkhIj zT)n$awNd2(c0a%cLI!1N-8We2s_%s|<(#>PAYqSJHen3#a=^V2TAnnYL`9yi|J#`k z4Yo^q6aZw)saQyrX`O)K(EmE}ucz^^Nch(%_}3`-zZ?a!A^v|sU4Spt-#;L_GiN{- zU}piD0MI622obGKHb9+LA?pEXTry@4P|onmr|Ke`<0w5~GO&^kyhcg_ADB?KZFfzP zKGYM5)0?n{e>VXVUhuip2Dih!v0LQ4-Fq_)myFJbGaaM&L4ZH4trY2c~xgIrQovO zx9OF*B&l&3w%qep70)iU>BaGz_1VONk`156rzRj`$hK_w7GYcvViAw&#KGbgk=Ht? z693x|*ZmMpsg7>5lq<^BEiI%UmN}bO26<3WDlaND?R3>Gwz}8B%$)E+yZhP)yXLo$vcsXy(x zrG!;~j){~24s9>arrvhT)7MGU_Pl7WC^A&ILXwdq$&{#G>gyR85EbG;OANm}Z(LAn z$~C~geN=ukubB-V6Kk0FiB%d^YUiqY|K*3GCwCP*^CLBv(c&rE4@V>vS^ZH)1%6b%Vm7%(V)B5#$~raO`dA8<0F2B!q!S}=~j9RVvol~PYh$& zNAgmSid1t!==?mx>a**G&dTvZ51!<1QhL8od>r%SRXg=I3t3YRe%g%aZVhPX1#MNN z@_|G^U(bV|meQrFYXA6JmZxC20T?LW73Fi~`E}FSj0PQe3w!nsdDixt23+c^uF3cF zqPl8Nj9uSx(z2D%?%a2HSGGxCBAlLJxsJdq*|Pq>`o8~%5Nk3kGs~rYO&jeAs0rnf z^`8J60f7KjS@Oyk*Ouv5M+07oDPkN9W? z?|sLW}yB+`Ao3)6aU z(D44Q!ut@xRemjRteBQ*p{Q*d=C+&yox|C$Mf8QPCL1IHR1zed&*($=!*R&NL_~U~ zHtY@)nqHe;dmi)w%*)wB|3ID1G~6`Y5WP?PFktfs`a0`}Y_%{IK4>UW+En1z*D|fI zpz9l}AlmtJBO;xq?AyYB*z@W<*%io$k9qcQAx0_@gpn2-zgTiqevf3X(AN@O)ry8+ z**>rs{}f?~KON?;x%~Exqq;HXiLrOe@6z25c!Ek#Jr7kMj_u?u6digmxv;XbLM7Ao z%l!q-0B@>|jY@U|Z?~_G^>^V%khVaPdvCCSbIjCP;qw#yNxM-ZgjhR?Mw1} zF8}aW*w|Nf8Dri&3qo?SY3Z$#XL^c%GtlChP}7?SRWoHK9M;*QUz)$95ij*+IZl(p z4#KcUzIUHmzd1f~6+U`jmvHx!wr9EwFHPpv#%SML)}M76+Ak24%V3%|h-ytA=+fot z{2aah{Ddz2_xeu@v8U5(r}9EXsMARCRIPQ^^nC0tV)W|pqk_qwF#?)Dglg*=YS;Cp z0tXsaHD_|q%|2gb)q2qCi{lxUxH;=qPuCbv^XQR=@H;0_(=&9hb?V9k%Ez)IR_HJJ z`rdGCA_eMgygD`z?MrsGt9_?_wO|qBr~mX4U6NFuhUmF#MDS5F&`cV!&4a;xNNcU6 z%9aDl9HYyvnUM5Z+^O!9!9E1x>e=FVBF2S+XH2xClOI$%fj)&ksO(KDJz$y{z1*-f z;p^$dJ(IS;z9;UQD$y8tM4te8_V$N}VA_awL1X;EI9J?T_1ZcV4SsjK4;fth+v?$S zW*v_PL~Yr;6?c6I9_G8uKN(JwT@aC+r}PH#OnG+#`gFd1mah+U zC1}zPt8kbfx8aDI(g=QfMxkysQhPO4B^4{Cr=Qdv-lqMKUUwuYC0X?ewHG#@PdP!> zQn1vyQ^j;ya=`t+Ao=YX96Rky!5BDPb9a{StMxm_9HZFiI#l|no9wx|Z`8uR@EPoi zbV=eT=~^}*9f`u7vzc6ajs2cKjh0fFCc!`-Z0=nYA65IH&-g;4Zn!E zseDMKcarMy^n~*3EVDpz&ug+^udrYljNa%7q^RAj7kIdAJofZd{K09%)bp%Q6Scm9 z8vK2U9|wL6JV=+ilsa{D|B<%YUSwZZuWWv%jgjdEfxNp9AJM&X6)zWqgmo#mDY6fA zuDq*Af5Ij0?7o`de~l~J$n2A-j;{P`^GC)NvNTgV9+$ty4&OZgbC~_xLgU;cp{@mO z)0CJSfWK2;Su^>nf41Da~lR`|$Eb-rxpfjmGWma_{| zW|m*E8ayBM6?xc^)J|ix(^oy``~~BFe_K0k!s++(Vdby;Q~pB(&o9T`?%n$OJ=ZJc zQbJ)tNdd3m1K+^3m6ugT_ZI_|6G@+5SRz`~1JC~%_P;{kl6ePP@6NNpH7fG(MzT&8 z+M{LzGbWY1 z$%9Kle*%HBuG^mJzrFgupnt{@n1r1E*8vcahyFJ{51!c)zR3AM?q^rEg|iYf?eCd? zE2B?G-@A2T<0dy3tLq2XlfJ3Al>2Tjps7(ir8d3lnre-|puFO*^}tW}r`M%>&W~N& z?|#!&x67X+zcVJzGwgA7p>~oQIpga#^{6g2z}Zx>cW7dDy z;8mJ)j{?~w>+T%7iC#3&vMc}$*S!$D3DUyid;+6-eQNSGdP2sxo<|krVPD8rYkZ{i zJ(oUb=kLmzHB)Fbt6|(&(4&zppv&MkjCel17{eSGKib`ZM|a++Ph$N&^T%t{tx>;G zBfEl4SgtrDqRSZdtQEil)eZDa-kbB2oe0d#n&DsN?xIdiS9<7HRW?~$0`=b<11Zgs zVz=6zlc7nA$*$d!qd6D4vXI_bEO^FPI;}wcQidqVGoNGX4?~r%$9NFr5Rf;3vqg91}A8}19~#0 z=T=?ur^70vZ!bSNJeo(In<~_KP^c`_tRq*d5aL*JrNonl*$0r}^YYiEkL7d%{ffX| zPdkIZ{&bYAhJ6?kh$7r>=Uc4Hv*gL-6GQ=jWhLdv^xc^bj8Mrk4)tc3pI&#Uob>FX zZsePr7uM96m;re?>HS&??MW*&7KzKmKca?{Z2y8ZTJil&w*mcN3V^A|!;qbA0MNyU zlS#l8PJ$}U#PAn17+F8>Ge{ zaT$19YWS4PKkp?-0=So*8sJ_Y-oYW?j1}}<2hQgEGpv903Uc1yD<~9t_ka9|&5D?f z)P84gg^7EXJUsT(^J^~df>E=#A+d_y4Qs92*^$Pz;yXcandI zvn?u@3eV~5>U$lcJvBZmnL3`+^ij0fZt__ef7Dio5UI=Rx+m5Bk=}g?y5${H`NQSx z&_GYJc0~mwkzc0gtjfcB#)8bp$$@yI2&tR1nh$&K)YcW6 zan;?tJ6-$&HxVgb?vy5P7e!QeIC>iC?j3L=Tl1nxp3F!#XC0~wdi7M>-t^VHU(}Pb zozB$ermJq{ZRzWU5#1M~-|+lVTS@i%4Tv7-2i@i}DjIltuH%tfs(Z=XwuW%=5IxNw zP8vw{Fej{N0!!}2sRC4I&K1?#G)?XB#ruUSNX}YgdgwmgrC9b`Ssvu4f+8C4y6WBJ z{*bK~qCLbbj3k;dY!>j{YI=8<(_W#~nu7@+7!ENr{nB4*geyg&!U2bh^eC#2y!8B= z?I_91#J--vNR-X8Xf1_T|Le3+6YbsH3$wa*7ak1#!MCiZtOM*rW+Mz|@Jl}q^^<|O&Us-*Sm>@uMtS{K9jg_oLG)Tv zFHOzTyUzc`V6r7UL;rhVgD(Mr9r)}Yf&Kqr$o}gp|91!Zzn<8?p4fk-oBxlF%H3oo zyM-__w-=xryT5gW*h4|5IRg8x0EpWvaljV~pvnKH9)tXBn zKTG>vxQ9$EedQ`Y27KDNWcj?viY+91h2FtP?T5H{dHE{6;g}0Uwbqm6ytT-{H&cHs ze`Hp$UlnpXycXdJ&k!{*H8SosQ^{c$|GC+<`eb|eSKXcZ?*k0oS`Ov(YL0K8^c|cH zdv|?&dM|67vV7HkSMP@2^QMlNbOHLeCJ334&O5qi68Ysuxy>|1b&GgEK1tXxPeVWK zL^>#i@*{mSjp2RoMK@Lf%X5KJ8U2_}JJAaMUnf-Ru3{s}+o~hW?wZgHYkY41?VF~( z9dE>ADI~pIF;2Yg&Na z5jh7euib`obwoP7b8mhqD_nVu*fB4|RE_UH{i%(P5#?krC|5n>BzjSWHzH|gp_HCo zaA*W#@tw^vKED1j+lb$ykIcFLul6NlH1;aS57f}Hsk!aNzs>jVOsIBNrhU0BqRVJ) zUuJ5xt^A%2@vh3Cbh9)cE0emK=y}uFBtC_nq)5gLUaI@>SK;la zH;r7U?C-z-!K<3^%Pr$qY56e0P%?==6@U*0vI-0tDHIqDynIn3cGz8Clw>oqoTRB| zL_h=P+lw#wV{=6xGJhF|_EuRK_9zUEG^8h4o3ioWR5@|#|MY@9-AVQt?fG=bWLZ|{ z*{MBb9JBrqJ$j$%yG;CnuETOfx#&ZGe@ABH4{D(gN-JxY$5OA9h@|?!IeAM2h0hw9 zdKdE27+$=nv>6|5Xg<`bbGFpx@sH%EXST{2^B)vCqSG$KCfw!a=!A%>>ge9NF3c<< zn$q#7tYAkZ+t-O9sQlu5Zm?SE*qeRYGKG1cqiz5y{avCcBh)Zl zRa02aSX-`KE&t(FEwwkI231|bDPBL`nB?tm^!p^~zP}!A`?ahrg}EY}=R+9X_mPz1 z9~ITNZkzg@DXXdk!5l-b%Nz%C<>dfu8z5yLte76Du*C{g#S701JjC|cNNYMBg23GDIJ06`K=W&gj3`*oM^Z!7>_I4`ySKU^f_J>bWkvi}XyK#j zDFplYr-cj2Ud3;8RZX44w0}xrjoz^(yYVl@TC!a9%5;6}rXi|uUbi3&qN8wL{59$3 zLV9&@jy%%&-O7)6qnq-9GCG^ZT;7|c>uQEy*+0_I6qJ+)c=Lk19^@C^Rd{>XEqdyw zVEl-7ywpnvXfiy(6?Ps(Og5o>F!?@&JK_z;(a7}=^)aV%b;nm#NQ${cB(2g)(w+>P zl5NHPoWgX^+sU}a_v2AM<@t z0QM}~Xz}R2uV>iGiduGRAIj_#QIMTeujTb%aBiD22PWxHjLvAnkYgsh46ku8YgF7Tgvd);0vjCi5tl zQHAAI*XTvHf+YB`h{{bP0xfmqR02N_V7dzQ!{~U2!gFanY5ZAM74b4ek6*AuG-dy) zZ7jAt-uC#t+m!RnYTX>VZts;W+Wfgze~DdfB=wPvf#Un}A2mj`mu}scTl!FL^w~qp z`p0O%SG3puM6~js-rMc&(>vdeX9sHC`9~D}(l5@xeH!Bmf5pFYx=9kKDu7_mS$7*n&!>K2g#HloX-p21rG!ktXIGHeemk; zx2xo6@wB9$)<0s4($DepCn&nskKVp1x}~ZJ}l*TrO8kCd58BEkCSv+lVH2&k2Lq1ANqy+)Teu( zu)h>FJUuSfOcmCqEy?XUvh=^Lv(=8XLydO<<&|C1g@tc^FY+X=JWuuu8+a9PhugZ&6u}vU9|BTQ6KiGS(sHV2RT^QN0r79f-L2Fh9X^&gbgTB5cbLcobT$r zc)#&|7w6oZF~?XJYhGU2gzEnzyAI&Rj^ri_@?{9%$Qi0oB;yr@Q-csiVW}!{Z z4T6(2!;IKz|4&ZWejjI}OkY9{Kg>O@&W@`YWgH^HeqRrc6Vo zY4>N%`tf68-p9GG%~-0iF^Z|lkVIy!1L{HB3TAKIL{#eK^-a%#J9E()RcL~Xabhf2 zv7H&%IKilrr!LUde$8Z|3{|EYHOGxd0W z!LgX7rY;=?P?+Nuu&mP;cQL=GDyV{}Nu2D#!%KzlQ1jB?k{v#Pmo}72KB6*74!DiY z8HeDvKMXyPskMP~z+c*Qj?dx1dEnny{$;SHmn=T_Wv!?E%OGSCJsVQ*$0R@C*WINT zX|S0nh(c)%oA*qGmGf8e$$}7bytS&4Q7fm+XT@#@^7~l%S}L!`$8+A+mKRwfLoh7= z?Zj8&=lB3wGG@%#gHv-Ogvd&?r1@tsp!E)B0Ee<8}Sr0Y3nq8sq`oWIi*~7)-O*?8{ zGC>uxNp^PB;exjoAmJd@I}dZ4BY&Pz_T@W!BHIggva&>OjX0?umCDd`^&zIrMn+roVAWNC3b!W`zj?^+)op)GR31KM=1x9@bqf}m_=E(q7RAqW0&OQ>%`>a*|*3Rw98{&bT#Ihq+U2 zd?+X+APCZoWk-j5ycCap%Z z94PLFsAaK7WO?URh7LyUa`t+kE@n}8$)VY#N(xo!Ic>PH;4hv+T9U_*^s5!dn1-c? z0QL^Y`rtQSUF{7yHwKueAs-=LC%$6Dwp;ARiEAk`apGROZ3*B=$BfKUb@E{B{QUN- zD8Q}`e`PE2VjgPWj#W$$oDA32`x1ynJk&GBQv2oJI|PO$d=~cJHrZayewcd3+=iE7 z&3$4o5PQTsx%GBQZVnT|dQ}`D4mGa{>;u3`3Ro?n;`Cq;Tp}J&3%z@&a+wls@r0Yc zy0)_Dea~L~^gE4S_Q+cI`*oCb-h}DNW_nqHhE4XM;Rge%{M`1tA-A7s6)pJ)WFU2c z`aoTecrVXnb0pb}r`?0p76TQ}y+NT@@^y;icl29KYme|U z1>v;_JoI6XB%{3dl+?{h!&Y(bVx89cJpOH?t-@vd<%ie+YwJo={!%_OAa=;Z8OLloex|xmoX|mhoeb|D?bG=Gcg$H_}~$?{BN~ zIZN8&-C0g8I1-h0t#dYk2^xC{@;1G+77_UXKNjFgvZWjjMMkKQ-Gu|)5+Ta9 zAxpl#4_+4UMvm7IGNI!c(gZ1=CS0$K3MMBTD=*o)C28#7VCnfFNBiu0Gr?Zc>v;ZC zTJbv6eLKXJdVG4tjrbNEGB|PyBQ*KSb;$R4hf7KeBsi zG4@w!qX5* zF^efHpsy8h`i)Hj!doG+eCu~Li{jQtyj0b#GCj3_$PNQ;q^uqoG~k)C9n_Gz9P=`v?DKPzpgD{`@Te}hjE&_5bzO? z(WUE;mg~w%trgg9_K_O4sj3ot>(116@0)RK<6j*=Mbc~JXtX=`ei+Rr>v8ssT!e)< zcSW6DCQqrWG*23C8uGd}t<|?_dC@8EwDhcYc@?7Hci&w`56g~qXJ&Q{WP=W|shFFr zP}-Js{QMGfx7T-f7+MfzDj*2Nevn^6JFQY9KFP74YMd=^ZpBww;PL*Z&Q)NssqT0H zh)vYxp5b2kAMUe(|9k!aHv^zs+=gtonoL!B`HTjE{9Jfxyc`t96I%(B(mt~3s1=!C zhpoe{@j0$L;wZ65X3=K284SnXV5KuqD1q9y=^yom3Pg$76p#f%j^f zIZt7M&uc%DdV-nc|&B9Ue41&o&SOw7Un_y+&p{9pZx@ zX8C6Wx#FxO;H{IERdIm~SZwk=&Bp=7#%UUq10y~eU96R^_P1|R5~iwhg6zcGrOf=& zx+rdwk*CF$aa^4fz1^rIS$!(+5!wDD#`>Ww21vqi}=9yj^M ztMuk{?77?4PG3fqA|9Ag3DIVQis&#QxVPDlEzeobH~#PS|I-YxMYm42o(QBPY8gP# zJC)|s*At>QXm1Xt)c=EnUreU`2^pg+H}@Qu(%bA^OaGT)$nUI@di`L54oaZkEpLq; z@EG`$xz^dZLNi9^MeqVG4Ws<|;t12xkBdYr&B5jq+ArQxZB%H}%Kyt3fWMjkH|aTY~LZ`k0?pNtn6b}2r@ zO=IfpVP2wCjz|+Q`^seYL{$tAUb>mFU)FUJUaZ5|( zS!qbN)VT}-t5>RSNYxO@q8&G?h6Y(c7LcuN+)IHo-1r*+c~-qjLq*oRxZmb|5I0yD z9|7{f>d%u|%||${R1*(oq{g#>`||uyKV`g6VQWO#g$pn>MLXzNjrXT0mNdSP<5j8% zK_GN%L!l)@u@(uQ0F0N?LsQnuJDteP&h|>U^{to#goT_1WE=SH?9cnlHk-viZnbfB zpgsmkeIulVm$V@hTLoFI+(;%;_NCrio?w7}wMuE+7Y-B-#RI^$-IE`GB)Wq2I|+Td)? z{Az-;ZgY-YN3?^)ru1YPlqJMX|H4aS^;j+BUqDf-iI5GHs^eR{vDO%yC|-;;h#% z(|)g+op`F5on?}vD=`CSNVU5^6I-K4F8xCfq^cw7+|Grlo|DX_=+X0$^9H|DPhi;B zmg33)G-))_s@#M@NBd{x7z~aNd)Rxp?m#x0QX=oG{hVJi=Kgaa3AIM3h)ZV3TtV1sk3ledo%9?oH;tN1|kD+LKf%lVlz5Y?5%KM;%K| zy+xRu`n?b(-2F=3!kxZhoFYC}^Dd{o@%2vUeg8e;(a>p~JFR&5R+eeRg9@X4Rfzj%RbX|a^;?b6I=#ic%gB>ZDqxo74H zJyGSiLR!5-4tMY)`>rQT=gQ=XYxu=XwkVW+$<9>KPKG$AuROl%w{EUB_(%E;_bbg;(oi2MCQ4rbj`XiW~yHCwRi(>R@0QbSAWltDS96ezq`yFWTcdj@u zARU|>s3R?nIl_vmR`U z&xiGJXTmLw%VCc31L(Z4d9`_x!epghK%PvSIlNpBw8 zbd>vFH#`$Y-0q1yyXlK!c%C*gmsfE8P+dQWgVnK$dN!qsTzqE(VS<~)0#GGs$ZQY2 zCZpIZUtS)8?73KlV>8vH8yp)Yd&u%N3R_Dxe#fVg6&PPky;V>EFx6Kva;7G6Q(S4c zbFyM9=Kh>RRuV~T$M3H|)40?{%z7&id}_tx26G<(r*8n{x?HkSBOCUHd$fnr5#6oN zJlfJ8`mp!1eJW1`K+jez&X}YhQvi6?&<3G%{%XpTDIK`6v!(Cmz+&77lA)ml) z&;1wbLeZ+rIe*)5uYAgjOqkYzAmOeEz1-=!rU9mF8vCmd3KPGqv|;6zZhu6%sN~fU8Z2=%1Fx;+Eoy(<9l^dUQ!1+Q67|0`6xIc z6#56eR{GvGEP6ul`uAPmWA}YQSSMZpa{m}$OU#F=#h=LZ0S%rhm+g)OnlFUPC~)~@ zvXIqR1?=yIChr6_nE_4M_(QweKd=9C=v5c)kh$sE$#RSDNHBBrd4rF@X#ssafa($$Rrcts|;n zEb#dmQcbjUCjb)WDLmo0QB6M{#1DGl% z@lr{mA_5)iKZ1Q;Jk*r>`r|aFOe?w^p}cdAwgL`RXj?Q=`oLCxZt(pIu*WKy5>IJe zc}bjEC66)x#K%=8yYLzo$2Cuk3cWxCdWB5Vyx;2XZRl2ds%9wPyR_x!-(ja9N7IZP z=@?ok%ubkMZihjv6#=ZS9}D|uTBvsk<_6zRbZ^zTwPbMl^i>t7sq@~uXORtub+H5u zVBGw3NbD%?N0oIEp{~$06a!ERqp?v!7M8H}=;efKi-`I-ri6R?O@ImPw!8EvK*IPg>qXu5-rX&cln2k*6D! zLg)U?ipOZ1;3Ta{t=`?pE@C)5&p5&IYD12t_5F|w(28-PHqX>qC;{0h%8$g#SQpsS zkK10hS9Db#^lFVS?K^nNTxfO2j46>8skj4hGh}+J7Bt&6iV77%%PgncTbeLKu z>04^q;%Dk`kXvAqL+gG`*9ps3L6v}w%&Q_rn4r~W5X;pLJ2{du%C|1sknYY|bsn&E z(dBh6k(eqWv|y_Bu9Nh4LXl9RJEoQ-?P1ogANEN&bUy$Pkv`_@(n?&cAwlIlV1+Vf zw+oHgHjwT(g5xkJS>KL=Nx2I77`{#apm#nJ_Hz4KGcW`-tbBh{{u*hYIUo4Sq% z>Y%g+*>VC#_z4gM)P&Y#(CSkp(}tJ4nXzA^Zbwp#?Q25XgKiYN#cfYSL_C)0ZfT}D z_OEEJ`jc9EVr~|-rRWb`fh*gGo{gbew;`C`DUT(&{eKz+PFvPrb>tbBRxj7>dE9T5 zmPO7_{h9`V1|UWMY}M|Ks4bL7Ey-i7P<{`6KBiOW6z|E&YxNJ$D!bvnaT^CVyG!Uk zOjHP7A!ZDrh&n1q4)aLEyElFW%JVYv^Y6u3EPZAi?}!afm@O@mDiI`7>7TBBF|5L) zm249v*x^jjZte@<->PTp1NUoogg`yR3tE9y?kRVFi`X1TzklJ!89l~Mr{2|Ex#D)F z=h*Y-m=gV6i1r(I@vi~BH*43{I+}AG(A5#VvVvT479)I#$JTL#IN+-ngI}p|UrXaQ z1z?`AvC8*WHm5QX%zIMG&gq`@pNgTP{#rQMsDgmFL9WyW&I)JanZE8`gaYix&A2Yb zUUL-h0u)fzGj4`H)8@CJxG z8$fRm{}9N2+{CuawvpNCnDQ+k8c$tp8SwyMd`eQTZaFJQKF3^Z$CS3Ur5?$9=3WK0 zI`S)Lz;hijp`0lvA}-R(!*!MA<~K}GqiG1^ zZepuV=d!cy0!At*WA;$1VAA7$ZI5DVW!%RCYK~MsI@`ekFfM}&Fl&_zpmw%=ct#@H zxAB^(mY zfkuP$n1K6w5a?xiMk&wPPbaYhaU(;O_h;hW>Mne>5u!)P$~yk-2scO3ZrOwD#qAUdqJy$-VP|` zRIPipaQXkpxD>}Ku}RlPz5YvlfU}$KroHEoHVM!d*oqJd=zq!+E6$qDR0?JQiJ4!} z{&8TIaB(Dj>FzhpslIOD^&j?2(I?_``iAqm-^nFk=QAFfALo8v>B_!Wa;-x?VeUwN zdwbT_7xM+DvIMhIUe8fieeZ3qTf%&0vx@E)sGnAu{SxN>Mb$tPhllNn#{+}9%iIA2Cz z2Fc_uuCH-BImiM%8EaX0s`Nyk0+L-#IXtvqbWvv;vTI44{p;&Y(yn#z89ng5p}-5D zY!BfHp=j$h^uy{%Ti1fc2uq$dgi@>wpAbJ`199cB;@8*x{o0EM5!SIEigCwGq4&w<@UF;Zs$!j~5Y+^4k?1-xR@$QJ}{47db+sHh}3W zXc?^L-SSOyxZHEz}M8Su@y{~6+lNwDt=dW zNGBEl_pKYH5!k^H@j7nt6uwckisbrLpk5+&RA3}NxK}Sn5)VtCtgE$5mA4(QC=oqU zNh{l)HO84&htrFOLA9S%Ssv(q{L*-Vpa@sHZj()gRgL=H{{C!-W_F zzU7X`N-CLJUqCUU7-DWae}4Zy z)k4j7FW{Mli*k~CnDoK8 z513Zngr|1gLw5|811fORsdbKK_F(5EcxIJJeK2BD9*o}?>9F9NkkxDb{l?f5`brXs z&F~iG9t9}9@HK(LytrBkwX=6}BnY`@fJff<3a(VV?i-FU06)TmCQDO-C-vUpB*5S8 zBPP~jbm(04w7-J>WhnFBKW{o--I1iLF4ONZ$ve~NQa4`)&TWYsbiNQ}^~@8q`q}h+ zH~pLi*+cE4^W9&0`PLGR+a9#itM)oWX3DC&aZlUe^lDLVxka^A<`zm7Kgolyx*EqH z(`R0!3nx_ggMk4eI@k6enk2?g`6Q}q#%4oMB}9O(6?404Yx>s)?#*Nbu9S(nQs#wk zdO-Y{fHMI=T+**fk46vDiXY%64ATOrGx=(VaohB|+XRTG+O)}sm`TTnhf``O53U;D zKFk$o5xSfRPk`~T&FbpNe-`(2dz|-8;Y<8?@0HNn&wc82Km9f-}jZakE!uhj}m5#1SG>)DD zp8HzwcD*(A@vy@A^!-K}^9GhVcT^hz?8^`{B$gdQAqGMYomu9j(gMiGdmhjJHcl=U zj!Yga0H%rVFuxQu9}Nf!8zSjNROkFam#w<-6Uh-L*7O7DgMY(nXk=|>FosJwfBZ?d z{?6B5?r)z4$-A}|fVr?TJUG@R`5l90t-9I#wy-%(-=EFC<2onykx7w!IiX}SfsVIn z$%X*IaNSh=rwoA6aE}pYoQ~(}=$SYs371ib6qcnhuGA6|81V z_?L%d#|7xso%brL+eOg(PNT|0syc@D2y@+Byj<5uX!7GqexP!H2Fx-w*#mk(neQhP z1Upcbfj(fP{EqaA#CK2HfVVzXcXZsUFO+_UVs~t(P_}G3rM@0sxZ|UP@>BiPCu1AG z0vZLI7%3YS(ZNtyw`7R@sB{Lf;;TqlJZl`Gafr#r0F)FVnFvNS7^>bv<5ULY zx;Ue`b3@x&U^{k*hc%<4GA2tzI)>Gk4<_;5J_8_~q7ovn50Zd?S=!sD&`gODR(|`6 zAb(@O;Md(T)Zs@+@)10)Zqcd)ADF$hRn<^)QR{ew^EG|l-1!D>>%uM|*MvaD=3NNI zG%crg&C%gQvae}vT=QHQv+!#k*?Wu}IKF;n>l%YZkw}NVQ+t3TWllXKr__Y|j6%9Q6a?Q*F7X3DM7#%4r=q`n>j8jsXPT>DH8 zTRS7U8DHo82Omky_b}2g~_Lk_F4iHTH??&2fd>hck>g3fs*w^r!V;R zytbcQJ-?4~Tg+-8nMz!cr;HnYM(Zt~4s)AZyY@)|L}$WZ3Dfby4XrENx$JV)!3OU+ zo4ZAp_SAl>vpakbuagf$cZ_6X=J>dv%q_XwCUZcc9?pSvv}qPfSTMQlK;_i=#W6GH zn4H}5;zduwJ&4anCaYA>3Lxe^+^D{Y2nu}07D$&r=2;Do>=SSjKA3$!;@C$$2m$6L zcXqsr-=AnN>tDWQ*x~H75NniiN`R6EPum&ehb4FRvLb)Jc(wP~lWH9}^!G?dcoSx! z=F%CdHr4cn4cn|$vyeDr9Fk0X`Wk%6+jGsoa-A<3g_&{6 zcrBLnEYd(oq_29Iy53l)nJ3Bq{SaI(29fdlv2(*xcy%wmlX^ubNDhDeVeL8>CJ*d1 z7Ts1DBzJrxLVl)m4Ap}Xu3HoR zl0Wt^h21hhU^^yGhwAV$G!8`z2}+N_@vE)1V#t8d`YYitB3c>`?k{vYQyjKOyA~<4 z#dcF`Kg+%eFBg&1?{?(4VBHjr+P~SG?k5vR7o&(XLE%+nzKfd;OFLanr1V~rwdS4O z>IIv~wC-hhn59?c!-D=w#9?4sYW&ONwwg11mS=%3`{^ZX@WchZ-U+d7Emq=tM z;=D?%lB;IWe*NXQoCYKcth(2s`qxOf9xld z3UKwj=R7{7>Ak1?7DqQH&DQnpTl?)B$<&ody#YVj(_D}Kb=A@!eIT0E{8g3n?`yI? zd$o14qhs-*+(ch%P36taRY!*f({P&*7q99*`IDqX8*$4KwrOovJzVpcZ~Y{AX?wA6 zWuJRX;z#BLDvI-yV5o7NpyJABzgxX_2;LAs9#4khwu8_#O4{h{G&)uq@s*Sc^3ux- zodm$AKI!y%u(Mi>XH<`O4Lms$dnUO>bo}6D)do@y6rZmp=7re%{AuHl_G@=K{n=PI z>uM6vx9=}44$icG6CPt+Vb!u<;aH>2IEk(~j+{Pi76gi#O!1B+1_NcWjLv_i#^`+3 zZ5O(IucMoPo-YZ8#4^nYPeEmJsiqY+f@g`1wKV2+rF-G9UPbDq{NnTz)wPzu&YSg@ z4@a?WfpWTU%7G%wVHv-XkI!_3^;^lI->*+ti>_DhJy0@hD{x6)RR_68%stx3zqoxU z4yI?t3OMJ^JmwqzOwf&KJK+ZMG#X zGV1R0@)%jG8nry>ok1%TIFEJg`0GUT!a`v5$lombly$B&y&^%&QdZGt;8ft{r+mSc zrD(HP^ws(|+q!>Y;V4Upi7%#Z(Ql*?Yp&1P-E(O{Iw)nd+95lT$= zC)d|lL|oUH2+M3DOYX{DR%SMdWwp=;Zep=usZX~oi5Su;w$M;HzzwA}5r5--;GuaZ zkC&GfYGRVHc1x+h*rqU>z2^rA2U8&=k~mI7l`32Z|C zhHjHc0(&A%_v>3r1Q>cpzYc8PTAHlSV+f!}$qjunx=-PV+ml5WbmGYLQ#oy$xi8m_ zVNz!1@?8WaK9&2V8%slW(HimZK2TNz zT=|>)Fq;x`E*C7JiwdCrp!r4SrNK6+f3^ZE_-F20sc4)u6zp&kLc1lpvV7WO`lUHE z;m0j3#bZAn7YWP>e$zuEX6JbBeM0_8uM7*aU!ok0gfL_4I0TSi=fVW0+61zp}Qj649O$d%r5a+)U}&bhb+x7PYf*{FHc^uw#W{vdU46-Xk#&hvA0 zA9fMZi3%_OjK2!vDuj=kA2GF6RT@h3tdWV|Px%eo!igJEwCQV$Tai)8l$y}*S)uA_ zn@PPbXOiTWKI$=Xmb*w~rV?U(go)~)Oz9?{dbSgBUwzeP56KubJsaR0n(pVJHB54N z;_lr@_8ZT$+sJ{o#amr2X(I!=(<0rITH{3KOH!b6rOVN<9VOjB6P#nIpz`{CVBpla z(i2guKN5Yoy+NEDISSz_(T+FZeFz}sOZ>=i5NfB?g}EPvnMA0A^($U#o%SF3T`w<- z*PH+47l6A3a9p9a+HcESVU#VYyZ=yEnt+)HTYi{Gs{gwdJuYNsy7LFE&CJe0iB>2r zNp9o^7D4E>AO-PWC4RPAst<6!IY+zf;S{eB-1GVz*m$;#`mgvhT zWq6fZl%vcxs<-U*lfTXlhwiqV>8wVN{Y`hiA$n5aE}&*HG$G`ck~8!>`7-ZR7v!+Ff8=8x2unjpo^>-VN(3}MeHP*u z!KlHJ!1nhogBC!>1sCU#C*xpdtEtN|QQnVRPBr&dt|LZBN&X$WzMd)IEu1DIWGVZj zz?{BvHjdB-e0$mmlC~P&cme7dEjFcoU-mhE!?9x2x~ERp=bAkVanB=o$iEZgmRzu@ zCPGh)Hq};sz_Zma_=U6#Kprak^2`H#q!N|+kXLw`u64AQe+mo;GPZZst)NU z3o65(WG&Tgw%m|ZK-Xtw8+8y`ZTYw`petS^HmAczhsmo>-@Lmwj;&iNwrKUXfZ+=N#TyR;#UEv7A9+ZV%zm z-<$seT4x@XT`$j6R?izWIB4D%hS!3_0^|tiS32pM{NX;tvlIrGSAj8Sp)`@N*g8K% zv)$4dL?WpIGilbkZ%wQ`Kz8#j_s%r=M#feNbe_sBe(s%&be{0{Ro1_0u-d)^Ib_$@ ziL{GpgB@IdP6PgWx`4^+Kj6^J&s-xpl>02GsX9ShsSZ6|7}A}C!6p*VK1&WwUNHA!=F#6N4_TCQlk3Q1cuw1O^1Ekp20s#Z8^9gGhP*6Wk;NDAMv*o zY^^(zqOivK#oq&R<(_|-%UkaL?!k-&X~NarJRo9=G!@fF2|!|=Dr+2wy!IB0&Wq~s zUY0WJUUZPuble`+{H_&twWbZnk`?(S%}#*nH-IT#Kppt< zkE!Dp8To5PULO3)s92wM;5y;7HF%?P2GDXRr1XhXfg^?FShZ$Nn#IBkb2Qei;|!_@ zKWg}DepK-NqcXATYrb#E-qol1NIsKLih`>VSoUxU(`*24LP+4d?TSjcdnu%hjy_C- zjlwIv5m-A_8AL1|j}PHbPqS{RZak9!#dLi>(VBV4S=Yb%qkzI^p{;KEJ&Q}Y_8TdV zOWvWdx$4dX>6)Xf>gey5E%<$#x74uEIpI6YcUDDrP%2phn#svAUuX`(UEQcsD;%Xn z*M%Lfi0~8)@BpS6<#jD`?ke2K7 z1~Vgrhx3xq9WpO%s2v65;8;gnB%d6kc15XfQLgsJKh4m^&qHXrX(Avh%R4=gn7M0$ z56}N(pG2VA#!9TFHh+#SQtEH+j}^0Bae5M;Yb;!yJdj!Y0Tt=#wqr`$-k&RPc9f=(L(wr7RJZ{SN~ zZEKX|3oMLdg}KHoE{YSZXWs&3BEtt7IE+l8^sLE$zkQs(^T)-tEzuZa?{&z|qNSe} zm*{zbWcW|?LV&DZmAqmw_+~CjP`0raZY+zHK_*#LWwu;HlwO10ebSoyXngA6Uxv)9 z|E)DWl3~{N_-d8^I1Ze`bg*{jeE0!)KKJt?ol13Exc=nRTbEbc#&6DMr2cTV-6htq z(H|)D-#w6>7;|`2a=Um5Nb?Wa(*gP+)iZD&S{NE5ypJ%z(tpoqgc(l_hN3D zOfCh^cKd+Y8x+lgj9Z|Gr$zT(+1*_*(D<_(ZS&{t5HDXKtZMGccxlyBw%2gh z!k=N^%)#(bnLDOaj$r& z-?IF==Ov&AB8tp`3big+C_rqtNT>~6uJCR0X-ANAF}}B=b_zwrOyoJ%O<%~BJ9)Gv zaWp7lIFXW&no*=G4zpPXvx#x(%anCSZ^hGn6VWi|AE009=eJ4DXE}Cn2aZ5v|10bJ zhHUfCF)4obUxtUxG3zH^!h1OX)trw*vu8@dFXJ`+F%Sc|q#rq_^E;Ta{x@C(4N*THI8 zu&gVaTaqhol022HiQ!Bhu~j&g{wg;BK^qD}d1pI(b}`TiOmJ5cE9}R|4W)qJTk7${ zm6ZEAITEVGT4K;So0B)?)^QO8F&-14kxJ9B)M zu&J_k0;=9!$B%==I~b61MFKfFh_VOV?9FV_Hswh#1m#H(SBfcWO{BWz5wu9GAd;7K8 zKB1{5#u%j&eD;eomn3~^ejuNFEh&_lc9k~PTgg`0Z?KMFIurlOxgzs&2rwaJ zorXiaHN4nq91%&RXku0dq90&7@3q#4c33Tu_0PJVH7$j)YbN*JOp8(mzP=~Rk_4$R zQbE6M>zMbwZOL3a&Fw^XxC(H3e{x?ToSYsuY@!^FTUQEDTZjUR3=$W#=9d8LMr}_- zH66=i{fHe=lZTP|PELyplGkb-o^WF#^BdLJ?c}0Xw3CwT!px>1*6X+&P%Bn{_SlpZ zXz<;OK;~N>K%>17ttkQ(6>5>@+XN|s!m_gn0lwLbY=Sic4$=s*r_>isH zBE)mEPWRvI%r~VLEh=j-zI*)R|Lyo@Kd=xnY)w1=(i5q+7Qw$s%hI%JENiuYd!Dyy{C*ELI{p)%%f>{FXine7nCcX4OMAw9EaH z2I8g&MePOunO51o;52@5<7_c{gyX-Pj$c@<0sp23TAZ!q-AC>5^MeIeyVhrXKBNReM!4z&`9aKfd@9YO||PIyV58}<(*GywICU@G^Q{TIkW@1zfYYTAvP0ra40L? z5}nPAQV251id%@Mv=*uj8fq{1>9i*EC1H)%1P|PY_!8swf@E|pAn8Jt_R>!`o2)ul zXgqTwnZ2qIcj&c<1SJB$J65Didb756aC3ar7IZ=v=E-?<=cTmwjZ%Z6N*6Y19V7c* zs4m<0r|?QFj4o#R(|m%wd>Xev>VT)ArDJsS;>7qB(sk?@brCQeTd>C0->4LQBjp;D z?#t&4u-&K1R~TT;-x$*0mqesvI_}R%Uh(}~VZCa*X5jjy|94xk8C#n6mkt5JJCq>) zt-j8srr2@J58A@U5khU|#7_I2(9^0?1Uv=-f66v}0jw>>g)m5D)&uf>{HltwgT?S6 zcpB5OSX3&kRl2N1Oe+_Au&>_H+ZMIRDqsH2Cf!fq_E6T>SUk{XMw`=^wgNkwdPD6# zFe{;@IIE{Ss~(;Vitxe?F8S&i=PiG6{Pd?G3$mh|+LrZAh;5RsCqqO!1rB?w|tqM{xW9DMV(Yb*@V??01J(x!YS^kYvjkBQ{CK5SH{`7-z-*<8a1|HxNHqC(g$XwhR6M-d*{Jd zDli^2bd7NPw3HD1o;8gt5qL*?1i*EB7+?N@%D-O21LtcOfm9V6W`WFCgNkw z`ynk=vE!Fhf%yy!I227R-+WNK9Z^Zl;*H&X2Gtu%I1dua%&54;tgQ-qPznWtANAv+U{!LVK?wl%^bw^4hGgcokc{d~0j4iVOye-+@`W+Q~s}uksoBpUWuhNUU zZiG-Z(hn4RF}P(sHYkxk;;eb&y+}>a;BP6REM=b>s=R5lckV{I5PmRGbaLyqgi-mn zgd?-DnZ{Mu(OV^XLK~wOk0exHrvE82r*6d$ZyW8&ZFF|RU2P5`p@5RqG%pB^f&$U8UL8)#`HgwR`Y0dQCQ0^w%KZfkt39iE}*(59Kf> zWT1O4lv{<7$L+&BG|`wL?vg@ibCdqpOtMc;9J)30f3Wu6QBAE;yRTcpO%bJ|fGAZG z1Oz3~4X7ZYBhpI%rPm~cKoBFM2uK$Kp$aO!1*N4BK z!S>${H7|7b9(|gJ&2N6phl6P85AI>j6caw*E7M?p?y^(BubL-cNEB8{tWgfHBXbUh zRPT|BW$w2#XKk4p_BSm(Pshi(x#hEWGHvk!MW(9*qS&d=n2|9-7A=_m$0-7MO>PD8 z&Xt`rOal#8TwvNz-uP2-!3Y7Hfg9youD{~1yrq^i9-e3~I48aZW{Nbla1f!fy^ll+ z&Yhs&Z!-~q+uz$rSw+A$`~Skp_nU4bWl;>;(XWjbB*+h*@KzyZkVDvyOLez zq;s!OfsJUxS3;7oz`^Oh_)P+Zv6jF_(_(}Wdte!a#suQ@twq2eD`Z6T8@R2PF0QD} zv2lNL0@DM1@XCJB)u+HnnMOrOdGH@dAzObI3t_iBo13|C2|clhg_J77yH5fMJeuEI z!M6fJVodWR@4v}HDdc2pXxAq0S%16?r1@@FQI8+CSMVY5N`>Ja^XOVeKblHB+b%P} zX@3WQ*IIB|bB4DuD==ChgBX_9cK@hQCx-nqjw-%6bEwp`UA_j8BsdaPW|)4h$(v(o z>&b5p233o%c_x-?!gFMb3dT*bwJ&3=VhKGrZ^VqqWJ^i5O+hk?&95<+yO-(GMP)L;e1igpw=I*o+bbk?TKN~h9%BpzoD|07D*~s5RW$U}?_AdOQ zUi3RE>&9!)zIuDueFH~Fth3n#vccaSP#I=a?CR3BChZFs!ynyvJG*h9Mxhe8ME7)c z%{O}byp!0UCH=vb6To#SGEk>SI9h*{!AnQRU&xEUe?7eOA3Tfw5Hgm3X~6U80jlZX zd(v%@hnE#Uv+Cu^vwrO|drMJ5z4%2mNumLGzKX?hAL=ozkLa1JQmV0NEcOX2Fc*&0 zU)2etj4U?wNdpU4qR9u7@d`ScC-qun?K$dQss~F! zj6cs&fah<(jTCpNX__W^kYugpul`$5P}jl?Y?al`;o}tH zL}txejSKm~&VLnjqPMF6U;)V<1qS$h&87UCcjoFKFJd+xZG;wXnC-njyNj=+yme?J z)VSwr-)ZyZRG%-*D^tlmW1MN>TsFH$8^m+m_mYTB5L~LRc7_))q504a6 zuPu@%Rdio8@jp_yF} zPl36}1Xu$~VYQ3P%14mS5_DYholwf3v0BQnApLsF<>l9;{3DUR4?o-2B-t z8Pyrl<@^B710FMh$wbF|0i1$VZ);J2s zTfK;!Zh$%F?CrYF?awwHDD$MaC7Y7ml9PaHmz`aV3e`919?Fiublnu)=R&UKa;tH! zyKH&gN*%+~30mg$p62Hg4i1@PYU+oADOJ3$(wDyf^T|^VYy%0xxtR<2bK*umygXu= z3@9zofe{F_xasT4O@zB&vWT=-y<}&LCLjb7km#A|=*0qYfJY%ERknlw{LHypr;b;j zRFH(0fF>Ch&V;;)S_^l=5&{=SWw`tP3F>Fmdy#4;8^sJlQqtaP!t5W(a02ik?l+nB zt?+!WLo9I52rAg-aIXDSWu}c8?hU!JvJ#$63kjeq<_Xuj*DKK!1En$nrp^WZOykd< z6~|+iep{rL*3?>!6s3+IX3?EGP$52)f~A0*5g^TbZW%OmSL<@VZP{$zTKYz|pOf-G zA=BP|Z4@kf{ZsUOiSEO1B^LH-2k^O--^%BgLaO0x#p@%z9}I3?z0&x$k(x=Gb)B0Z z(O8NMf=$4|GU*|r3Q*cL7Fz>ddjp-I2CecDRc%T(B?CnlSy(z|N^op*4r>A5v11qCMGf^fny`W%2@! z(i%}WU-JO#`xbR|ulmOhtug-tFzb3tV#gH}foV(FfIGYp5UmZ(w)Ar76tP0UA%-TY z1bo3XQ!o&$3mw6OF&=m5E)}|+;VBk{wP!A4H9`!>1zdfSYdIm3KJ{~Q<4uOuH>Odt zGdT?=D9>o=8#Cu(2qbFn)CaKkw`;?#WJ;qsk6Mzd_^l+HxsZ<`Hs+2JC#R0y)TjbhMl0D~YU!1Ge z*=B)c1AP?Wx|}&aH;iI|?+YGQgGW(>*`m(%R~FSL@3hI|v|l)|*DC_`&bU_$M>o^l zSkR(OM^>=LiYUCYkql|f)hl%65gz>Kb^6^BfYxe$c9mnZZgdm!Z7ke(KIQg;)e8%8 z^IRBFH=JN+5|~zp^61lNIJ%WpBjfe~rE^Bmi?%N1j)JRnmr7>c>T}o&kKSk>e7){) zHpAnGIiBcf|> z)>R3nxs_jd#8d|b7eevW^{v1;yt;hBS4qj_W8YggZF~7-Tjag^hK$Pj6&64DeiFtU zk%@l!9i?^*CG~~!d}8n&N8y6w4(`oYUaC;HA{cnf5B8SdO0|n9)C9|o;Kh~I-w^buVNO_#G_E>$+zKT2k*|r;U215$sv$j*q9&q#mqp`Eaj9j>;hL!VHzDJg z78doq5mF{rTlv&J^$Y$%f!QLTteyD z%m2YJ`4hHv_>Vu={B!>2%KV@3{{wOIUr)}RX}y-#dsYW*m-Xt^O#bqbW1s&$($8() zTdF|(QlDfpvUdJ6E^es*=fRj?+>JEdo%_@B-y{F?0OoApAjGY?yN}YJF|GfV6aOD0 z|NkD#e-8Oph_%2kZUwLWXkT!$o!9J!HdkZy|8^zYqW8Xu8dSDhn)L9q-c zUX=&~ew%dV+jp`6h6Wks$`O@+62oGGe?R5QS^h((=I4Crzb<+-_e)DCrQ9(Tj>F-D z9G?KpgUVHlj!5TZDYq1r)gCFC*bk?%G@U%eTM8Dm%U;eon|BB~VsJ0^oB$Flw^Pl` zJ~yAWQ}Q1~R-0Zo**XIZA0D`4oBg-z4<~aWy?s`p4)Zgp3M}(H((!Xu<`u_sQyZhK z3X2qb6}sxlhkc%dDF8!dz)Ec>6=XH1J4!nT#6X)XUO^ds8Zbpp=69!lhH@;#ofg;C zVrrWm8?S3EHTp($M13*xMhT_C=cOXqn-h&U-&?&`)KF2Y!oJeGLM* zLRH!!Rx*bpHGRj_CpV~IMX!@E|H3GMelM}Fwo1Xigkj6)*b(Mq2y)*Kq1W{-U3f;s z@1y4G>n}*nfH1~CBE69qf|4tyQek3Lb-9=yp}%UIw49)$ERGSa^P>?hZV1<}>z?hB zU^-KKY6Yz)q-r{3dUF{1b&}K9Jb+)iD88Mt$;mF_FYYFOrh;Yk_rs{{KU!xA3oTZm zMd>oIam>rFn8L4bLhxmhln{_vPB7gDAu8HZZs(K1<{&=lO4}Tti|U}co5%KfZvDO)D%-y@Y0Y>sZ)MZK$_UU=<1 zQ4T&Q%BuSmQlKy|0T(kReUffib0PG3iL!e| zl$T>*dbO?bJPNcB9NnSTL+Kl)K!{@(rwfDjSnon!uqJ9OoJCX?5c-o{>%nGl7+;r? zxs!PMerOhwO0aqf!%_uD=A%djGWPBsD!x<~0||UPV}(KgLMS%sMufC^Ck1Dkiq{a| z#88vRn}-+eLmusfrY&xCgJ$}=V5>ZZ*5Q`NjZ8_Ob5_88b1Gk4^S<6a)w%E%U*C`3 zwv^MPE6sz?VV?T6n7pe+l8W~PPy1l0e0Y&qg+}{b3k9zJX^6*feKdRVq;1ldiw|wqnZ2pB4*dODAMew#pl9XVQive5DjEUtPRci3@i09`ua9q zna1rihO^(isnE+L+^oJM)@lMyYE$<=KG(v+{Cngb!;Nh-=W!ns>CmVSE;JJ(s2j_{ zChq_zd>|yuh^JLeVr|n~`xhHgM2lb@tK(*3x0DypYj=OR>1veuVsX`29C-Prjs=lm zok)nkAGY5M9eehfyao?0o>=nlAf#L6{0gKB^nF#vuQV!BVyB}?bbz`2prHXK8hd$8pc&qSoXMuK!aT3$VknP+^zTYrTMkss;-JaD`B^V_Bcsl=(dl@n z{Z>EHB^bJ|uP;g^U$Q~PqHyp$q51jM$(BApOGF5B?_ddTl(^k7)q&WDEpvi82#~#B z$VRKy_j%kTPUL}-M{k`Tl!6?buBIe-|gJZ;%+T5P=jM3@c z6k*k1k(wRlAYoWQN9&8z-q_RilHS6sM;G2TG*G!78C2Fl!8LX%X}+SJn(z$)YlN^x z-4qbx-=K6iH6*bqeXJl+!~BBtEhE*6F!Q`jY^)e|TKGjyjq=elpK{^sG_z8<(;QYS ztWT(8Bb@Q!5+dlSe`6Ehs+GLsL{g-Y*#|>)iH2@+1skF)EMYIz79z}qr7#IqEVlRC ziuEk=9Aj27j6iNC>-x7sQLLO|_YM|_ff^e+ChTfKCH~~F5@J5Z(O9~Aw(xTmZ-}Sa ztU5M&7Uo1OxgK3cR9zdbjhlPq4EMD$)t#Pd`aP5*;@-oZwwEz+HR0p+H*Y$ z%z7`HZ~B5rex>C{mdEc>CFQ>&`t|!JWQwW{CswILeP1sib7mg2wo^TsEX4+_P{&<# zI;?e-Y8OG_GGWfZ<%w8NV1o>EpW<;dZILkf1iLHG*PYY2D~5?0x(p3>I9=?N+(f9jL0 ziPMr$SBxYJUAx`BN(+=j7f!&o^nbf}Y2($X(R*}L(nxz*Fu{oVO}1-SH-IN>u=!{5 zTCc|$ViPm|;w!hphIiV%krEXP(kzh{fIT&}ZFp|N=`VBfLI}gOOxcb_L9+;Ru>Hu` zJ%r?4_C9Xv`?MONl}I~S-<{8FQTYkE!Wqb!9(2_Exu92GZTl>O;0C7%rB=~>sf0ld z4TOZ;zel1^PD$=H!wi{2fl+2O4fT2@a(nv3=_%9+0jF!uf*6Z%l!nGy0+o6F%ovwZ z951mu1S!|~NqKq7!6>2f-=7BCNahO5x1`j~aH=_r*Bs-O4UPb6P@pA52&jmIpGUSAFP^mTbl}$(P%Tx&C?E8u)6U{POq+x4R0~tSC|Y8vR0S$vM*AbK z|3zK}4@xAvq<-AIt$-Ra+$fl@@hU-A&hf|aM#J4U!K8y;yH4>9H=9nSVSD6|fZQba z5xTlQ7HPheKCx&@uo|7X&*7P?aj8DOAe#Zu!3qn$de#;Uy0=(XOofu=d@A$*ehL9 zgKmvW(y4p2^w|y{&fc_^1Vh1U$i0=RTisiMPBN|2=7nqliT24~dH}O6qUK@q=m#o> z2wl*R0~6NWC$nHL%RXaQ$DLl(I-H+AJyZs1t;|suZRQQwLcf_1nKKA(I>e?2O6ZK~ zmHIyq1)66D;ldp4{hZxQu`=*Dem_(5*R9R;kf{f7@MlF=wryJ9yg#9(wVsJ{Jz+2J z-jmE}x#{#hkYAt*y*D!fVRsxfx-w2H-^n_=J8H3k62%D}7w$9aNss@M(NNobw~flA z-Mv}O(%75=zRuM8K#9sQ8ovcpN(h*YFGp4mausYd+#Vud@8IkmC}t9idb36}bh-!% zy(KG>^f2Gzydf28oGxBic^8Nwjt4sqGx z&drkM?u$e5_C}9^%`_1V@~Ag`?-x-pIDF(vq?D>bN1{=ZU7((gWq!yM@K>|JGov>; zHUN5N)V*|H!b&8y~k0{+%Sbf1L}JD!7{!1 z?Jd{v{HAG_k}XROao@|;A_=>2=tE%^bF+}PkH8=CS}<4b+K;^WL^dB+23vaD{VP^n-Zc5)%j@7^&gb5Y74kO+zK-$tjtSIn zj~j@EvfY0rT^`fRfYN|hH*=9=D#~Ya@`UOD=4B3jN9);pYe z_gXMz0g%RV?KQq3WfS>CrKeXiw;!D|0>3>s!R_AA_#-ojcTkEXN`CEPfcV>=%emgO z4G{rbhou+mcuEL2UFCF zcuZepOY`F;kZ>RKCDCOaPy++%`Y5TT#X2!kWt^pvtjO^tQx^ieWVoqs zkRW9hl}W0KIc@1DtmP_VUaLY8R4%#C%V1#<8cNAbEsd#Q-q8)E1CuO-pYnx*H-Y>g zCBAblCJPIF?z+Mnn6OJIe3t&Cd443=b{_K_I5f#)B44Q;ZOmvACwW zVym9{`+SAa2Ua6%aX-)J_99^PeRsN&0&ZPb@>_)5SMXC#52F`};QbKD1Ys!m)VI9F zPFsR2VL2Ggen@GWZdy$yPsJI5VLHeKu1JwgNpj?5BttOXkq8O){DZjSGQnE4#0x96 zHQG&QrgV_qq7q7tcoB$ngza*s0UuZN!v(JVU5z=}yQoV$%e3kaPw{8$JwL^6?2m3> zj79JkgNYlo3vVyeEVRiv)4{DZpRs3DQXoaE)G-uwZ&>ZFIQ_m|KrV({pu?th7Oc?; z6cjA@DkuMZyg%4!(1bWVBOhdam!#xZ?iV; zDkp7EFhA=-d#{MI>n=EI^QeO_+uU`+E1@QfIi8FwR=OaXxJv&>ickL${ZC1!t#MHe zFW`uxff-wjy__|1|EL9NmPk>XpEy48dtIj1YDo1pfdk8l9#tAduu=PCm-J&-if(%i6!6~>nH!B3@x*F|GMRuoBlrc^)@ne$St%ZCIAG%GG>)kDn zvmFIYXP@SSbJsW{t!FgE$$oDOCXx+o8${0oRIQo)w*`)Tx+BFpd1YqtR5yE*V!3!M z@aX{q-7{9&ni`8d#j!8yyuTy}1>VU8UTRBuq1Yn${|Ra(C@s z;~ar!eyn*6<=;ZRU8r32iXjdeAXCVA{4N5nK!+)*#jZ;5bt(Qezv&-hw2wPzS)CG? z@+Wi>L%4Pkn?=)BO|T*nvyQPKNAX0KMx;2@HObLiRJ_m5vsE!*o6$yq+U}iEXYK80 zQ{lSOo5r-?7m&%pzdlSSHp*6!&11vGM%K<8wa@pzO7>@Jw7Bo>kUDv!W;kxc`5%4Ak~`I=@xnd08J;5^ z3&cmysou8XW4{I$r18uA4hA-XwifIHu}Wf2Vd`{Y z9|`T-2OsQiX$(J1iadi;#$CXgey~Vby_W22`NJ@|JV_@?*OTBLQb9H*gj zH1<#<^`eO65`V(P8JIeoKhw@_IP~eorZ+nAyk1!l-h07Mrbz|DNIfCGE8ozVShV#C z!&=zuM{>o~vmM*6Y|PQkEYIKPLX9ZdL)Z!3@Jeiz6Yqzxa_w(J6M~FX8aM%7!XRu2 z<)eu*5#z+hInX<_L&EsIMB-^n5PElxMvqpgAmuC^cd7IU79dhmo8=s(&X8;0?A4c54 z?n|gS)&(+|?l}(w;VB5(5>;yP3TDoO69HNW>-Y8T7%u>@Rz>JtYtg7EgILKa1Q7Jg zGpn0$D1{SjaZsYdhz*N8ukVj$jk<65xj?iDD(ACnzsikJ%ogVPQ}78?>L-LbXyg0) zybvBmm}viR=lqkj!Q&rRRUMna|5W!!Fd~JDr-M_{`qX#3188-ipL;Q11#H6eBWsg5 z24uD)IC!nJpuNOY3Mm~G)fp?k){sU21->p#*nZJWl#eOFgP(LjlF0?`m|bJLiG*{d zD^I6c;Hpi6D#w)2vPnssK>zsnNY68vLpeT?$Spq>TmGR0UlmP)iTPe~<;h5%Dx56q)!m=xWOJc8A%b19-=E7*;Ot+$2aGcxs@oTM(TW}C?(^TrM2&6UbxZ%Ox$ z*C!9Wz9(!hwOMuaq|(P{gyBF$<{7V^<~SY^7Mf_AfoOXl)ZD5UlrKv}HB zE5S)jTiYGau~(2Q{Vz4v%T}LrzotNP$vjL%b`3Zdid-N!f&8RgBV#cfSqfF zgnnVbbJ*O){%36ctspvHUBjCJW8?Is?C6-D+=;GgjWt4oMKaB+@7M%tobJf z(ZM8e8z`9ddyH1713MET7;7=h$ZD*7bA_>G$H(=K&L+VDK1aH@ppxbq9h}c}nd>@EW8qm%d_g9E4 zWKizqUk=&hfUkdJuXE1F87f)T_~wY0Usm_!w|kD1c{ESf5U7p;7NCj-{#m-6jn)QJKM;qix>I~{j}xhgP!^O5!WS1 zxrn!|$qpfznCBGNcq@{dl8g~+TY-7=MXcqEQO`R727-gRJ5l&zqGHXj8Im)ZRtx94 zw99qjhneut6b4>}V}Y@`q8mb3{D!^u>HJlV^O-i*u#0w`!04*g_&_W`><`zqs_Nmb z+#Vo}BXcH_m3zNsN54Fy1?Fjz#e_r;usP9CQ}@d|%v&=a17 z9Oo4ylyTzw#53~RyYEdi?%a4tY~}DO%(~nXN;U%R?HPDkM=^Qy)BD2IQ_ z3Os|esd)O;KhwC`3_0sI#|8&+QUp^{s!OQeIh(ML76=3^l0Dw7J|rfaec9q#zQOqu zz`7C!Z`ubZ5t_!3Q9p040(%^t^cKXi8B`*lcPTS0b}ez1UU_L32c@wccc5mJdM4i| z&*7BsQ#B!5!k2+AhMuO&K8@av)B`12E1*( zjILokrYu@W4r%i$ef%&Mh-pl1Z#})bT4VhxOJ`7_JRgAT&8wxI4*5B=LQ#ebqA_Ha45WYw~ z2u{XHwC&nq^K7f1|6`B$r1N_++Se^~(>j=|n&Ue))6>6^poM2G--&>mgrOqIUCX~} z3J4K2?hX+_a+BL(yKP+4u;m#h6!03p&NO!#E-X6ft>IBq7sQd7oHyZ;Uy`?M&OUbE zq(s;41#-UZYMJ^Zg!pKcNUy(x8Bw6KdxKbR87}PYv#j8O=Es9b1+p0@H8q7(jcpks z1GC<%Rre&qID+@@5gB;T1aW7+rDqSG;~r!dlsPr+W9_5-?Xr>u(>hiH#Ae;-2SNo7 zBnzTz%@Ca_J_OWfIICX@0~&iJ50D*Dfsqjibv&+;WG$4uIWETlRy5c?=pD>qnkkhm zlQRaAq{PX+MuI8PUGt&zYaFRa}D zndd6FrN#_4=n^aPIGYc@M4ODKYn(#kP${KItbZI{%rM)b2gUwX_ zL0C>}T?DM91!HxSD{)sM`P>>sF514nYx=4tc9D=wJpjf6)X%rAuvT}^c0k`e^q?o1 z^)oD6&YFUcN@$2&7tpw8N1Ax#7Xu;wd*mU9US0ok>D#C0%Lm1!7BJ!D0*Y(Svn}DR1?~EpJoEb1(u6x4m$1?!qO&Ur58m z?H8j3O6P*BOQSeeqlERR^pIta1l9GHUtGVpfN+-d5X??mJb7^HyqbrLs>~n4+zNr7 zD?WpHnBf8(ak`XmuCY|tu_H9%S5TY2az07?1#*0lKR2_`KhEQF$BOjuuy(1Qi0vA9LXHw=~aMuWpD*n-p4?Rbob{Yiy%R-GSl%~y$k z4o&kGihWhL5|E^3dxvblRG^%Dg_XJ|QVJYuyG^fwnde{nG{ z^b!5Z>8fJ2=GPB5EG(iN^FB#W+vGVEb4Z)lWytRcVB6c#w6FxBuGO`3OSyNT>`W7h z52DBPfV5t0)Uaz#e5!5X2nTI%@vg((*qg_Y?`A9?>$RaGPk{-KR;hB0nUm!T)=a#- z2rFJ2@f0&#Qmp1{lyY}`_Y5(R_!qE}6UT%o1r&l%Z`MJ2Xd;UN3y=@UJjv#` z5_Z&u7d!*if7>`eUpR56zv~kFp+QG2ip)qWXB5>r+PDfTD=Y=P3^5?NeX0ofarog&4D>Cf7kTw;yHgZy9X2B)yM}#20xoGNb;Uqw+mC83 z^eBx1(&akNdQ%($?Ivwhs#!}(PhV0cf&8=xq*%xvP7*T?Iywc~LB%|xqwfuatNV^|(#UebGe-*^zs^vo))QCjIj8vk7kY8I)iSIw zz&H7f|FJKnIrmy1(zy2;M!oXp_s4lCQGV&BORZ^kP<5}QVx<9+gOdL@CG+@_Hf=MZ zNW*JZ&9){dvf_&EQRcWB)$DgZ8b>8@vdP=#;!cCzJvjAf~lFmCSLdGTSqVweLxMvvZB_{ z$5o(lZt^QBhuLM(`xKE0=jAjfnKLf)hmX?>+ zAWCjuY>-^uxZZ&B^tH^pK{|&HLZ@=0rcP*^7Y103bQ%W9KLMIcTzR(pNP{DK5#8l>z24TKsnQ2T%KRnz9isS z@|^HM^;*WQ6V5MIaJFIC#Qs&4yQQDL1v;s>e6ZyjA*3YSS20L;E>B$~EgM#q;eq1k zxv(Je|Alz71*MU~0Lg;dFF| z*{fB$1y3ej-#z;2ZjkO;!dAvXD_*7@q20m ze94%kwX@3$6%4@Y#x)NNRmOY;n7{8Y@#69A0R~TI#@R zoxqN0+wBj>mpD(_S5j`KM0Y4dIt1~pN+nFeDb}`HxEQ~vX#Sdm6I{LIB|t(HEB^)K z_oeEh{-@uXNO-2){0Y>BQ0s)55Q-XC=2wCgX_ZY0j(SGPFbWN?Nk8M@ON0(tKh@mA zQarukBGMXJi+rzB`|_}6pw;yuVeKnr544jmZmu+^z?k=1(m?qL5qQmf{VEMoFS1Vu zl~9d_T9^Fpxo%`9-^9dxHMP;fk7N@8Luzx}Z(8@Z!zCEyw5Mf8IXLjyyyD*#$|rD7 z>{{Iqo;^D_(9N0IN^&Ur4|z;!TeUvt`@Q7LA@IiTBK8k@boyPF%&|a33l$~RLf@~) zAbziHS)_!zH#&rRa-KwtK$35&2~?Y3HLW9zon%sn&<7>VJ&XM1W}GAVI-s>hX*jg> zM5e~{sHadI5T_0O_lT5Q#%bTogOg(|-QoB#uh>1ANf$S&RSQtGsBbNVFAi2sro7A@ zOPG?~c=-5<)^e*w#M$y!c_9ML=@Pg8puW=|DGpx_YDTI320dl+t<=ye6$+ja=G|$q z%Xxb0q)z=dVVZRixN4EU(qv6~pCzOX>e5pbuJPr;_&f{zr;hMNT(eD?1UJLZx^%L+ z*IXvEe5uFV^8Ws++&6E&3B&8De@nH^_IlZn&W{W>Cw~iN;3ZlQ)U_V7F_whsC~t@$ z_l~eOb!&IbWIDs#I-@#dj(G=OqK?k9s}G-Fc;KEL(Zk&LLv1~*YybY4%PV+Cm}T|$ zO+_9(Ap+am!EEMug3R6)D5c6@_~VW3Z~{XM2A$aBvo0easIY~nS+Ebxsl~AgfYH3U z$d=r)=a>Xeh(tY|tfqx77SEZs9(N=-ab1REH&-ty#=J`fEiD@0}U zBp?l6YB=r(AFa-GUVdwrlH-CWjD?b(!4lXXV0$@j@ip(0wqBDm`AEp1kq};CP!&xOO#qQsG|7tPR8DoljF^g z(ky2VcOn%o>Q6+!HkLCIg;p??J0oBR>(K1OtZWUVd~t8r`6PKt^PD=*emH^9bvgtu zvh~Up(-^X5DhQ&N)fOuF*sHw|)5d|`WRvjz3?AL^9I!Br26a=2(ll}+*zTIN(^Z%f zxUq;w*Zg9ks9|I4pn}zj=+SXqxfx$=P+@kB55onvW1wn3NTi6Ai-p=QDum*~rhdIl zs=HXH*vx70)Q{6$sk;m`>b$X&=zxjv6&D?pjWOd1vbCG+arnL`+h!l+1mgQ{6m z>=b`2#=YI?wYGczR!tn<7GVAijM9Tba3hnMtRYI1LwifA81!th2KQWz zmRqhuhylHNmatX{^9Wz?SE0RN*jVUgSNxq$Pw{sfkofV;UMJQsJFP`?o$vM*kCfs|HUjpmMGbQ8^D~D3+wC~pULNhUywr&@&VB)7#LXq19JFeiidvsHqd z&s7W}QCx9W2dxA;Xf@LJY2g=(FsOcq%=SLiZG{BNdV+T5TrQG+~p z{(Ai`-NmcyODvTk-47kvs`6sdK&O9?C@jCE9=_UoxArvR-y<$LC$#1DJ zG%o5KY4~y}R~m9ODzxu<)@;&Qk;+)HiGsfmCnHb&WO2K~%IZtQ=zsmZ>mK#>uz>4( zn$86eoh9D*j*A7WzZVYTYj3Smd~&ei0M_rX5`MEZ<9>7J@2?SW3IPYoBpZ*9oQ)db z3$^d9@AgW$hN!Ty1LYW&Nhnv%PkZ^>{Qo}Ozeifmb|31(W4@~Wdn8Er*&j5wWn{wX zKjWxVg+m{okLBz5j|tCNa6KCSGnPs2Aw`=%=#4|{|AvVGx;cxuV|O4wKAwMmDeBEZ z71!03#$7zKyZbiu8%u<>{~fdZ{~or6sNVC^E;{^n?9=_NSEc{`Mf>m0^7iBkXvG#;Qi(*IQW-*K<3}`8V{VLW0#zNyK{YN0T+_(|B_B1`?{9pIMkRaWkQ0n zkQX^Ecn8~@a#8!z>VIDTlKLMast)~u1>^okQ;MgQfvsXIm6dOzn|ulmbX~z}&(WM; z@@u{D7I}zZk=|_RQ>B9|a}&&q6#$RZYN2xkJXL?SPtI*`1{og+Lq9?J#aqXPdR&|v zL}=I7b+%*`nvR(lZ!EIrBZydJ#Ba?YDxPTXY$5cuxs|*MKMt$^Ii@3@hNig_l^9UG zE%5M|(J5XQ#dwXtVE!!if7h1&%W32G6ltEuRZ-MQVjfh|SSl^pC5CrHg4*%~tmkE= zk*)C(E%Me;@VRh8E2S~{w$Hv7JL>}^VNr|!DKcGAHdnIRK4HEfamCh8)EM_OR(!s* z&E-{G#D(jg49YTDM%&Boo*M0(9m^D=pP!Jnl=tS+
u&a?aPNBAs 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∈dBvbeg0>|Rz%)XrYUJ#N|k{Whf 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%0AQMg79gIrMQ@rk;jX8?BHwafDt@ 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 Ih`)>f4Y#giPXGV_ literal 0 HcmV?d00001 diff --git a/extensions/commands/accents-setter/index.ts b/extensions/commands/accents-setter/index.ts new file mode 100644 index 0000000..3b042e6 --- /dev/null +++ b/extensions/commands/accents-setter/index.ts @@ -0,0 +1,142 @@ +import * as vscode from 'vscode'; + +import {IAccentCustomProperty} from '../../interfaces/iaccent-custom-property'; +import { IDefaults } from "../../interfaces/idefaults"; +import {IGenericObject} from '../../interfaces/igeneric-object'; +import { updateAccent, isMaterialTheme, isMaterialThemeIcons } from "../../helpers/settings"; +import { getCurrentThemeID, getCurrentThemeIconsID, reloadWindow } from "../../helpers/vscode"; +import { THEME_ICONS } from "../theme-icons/index"; + +const REGEXP_HEX: RegExp = /^#([0-9A-F]{6}|[0-9A-F]{8})$/i; + +let themeConfigCommon: IDefaults = require('../../defaults.json'); +let accentsProperties: IGenericObject = { + "activityBarBadge.background": { + alpha: 100, + value: undefined + }, + "list.activeSelectionForeground": { + alpha: 100, + value: undefined + }, + "list.inactiveSelectionForeground": { + alpha: 100, + value: undefined + }, + "list.highlightForeground": { + alpha: 100, + value: undefined + }, + "scrollbarSlider.activeBackground": { + alpha: 50, + value: undefined + }, + "editorSuggestWidget.highlightForeground": { + alpha: 100, + value: undefined + }, + "textLink.foreground": { + alpha: 100, + value: undefined + }, + "progressBar.background": { + alpha: 100, + value: undefined + }, + "pickerGroup.foreground": { + alpha: 100, + value: undefined + }, + "tab.activeBorder": { + alpha: 100, + value: undefined + }, + "notificationLink.foreground": { + alpha: 100, + value: undefined + } +} + +/** + * Assigns colours + * @param {string} colour + * @param {*} config + */ +function assignColorCustomizations(colour: string, config: any): void { + if (!isValidColour(colour)) { + colour = undefined; + } + + Object.keys(accentsProperties).forEach(propertyName => { + let accent: IAccentCustomProperty = accentsProperties[propertyName]; + let _colour = colour; + + if (colour && accent.alpha < 100) { + _colour = `${ colour }${ accent.alpha > 10 ? accent.alpha : `0${ accent.alpha }` }`; + } + + if (accent) { + config[propertyName] = _colour; + } + }); +} + +/** + * Determines if a string is a valid colour + * @param {(string | null | undefined)} colour + * @returns {boolean} + */ +function isValidColour(colour: string | null | undefined): boolean { + if (typeof colour === 'string' && REGEXP_HEX.test(colour)) { + return true; + } + return false; +} + +/** + * Sets workbench options + * @param {string} accentSelected + * @param {*} config + */ +function setWorkbenchOptions(accentSelected: string | undefined, config: any): void { + vscode.workspace.getConfiguration().update('workbench.colorCustomizations', config, true).then(() => { + let themeID = getCurrentThemeID() + let themeIconsID = getCurrentThemeIconsID() + + updateAccent(accentSelected).then(() => { + if (isMaterialTheme(themeID) && isMaterialThemeIcons(themeIconsID)) { + THEME_ICONS().then(() => reloadWindow()); + } + }); + }, reason => { + vscode.window.showErrorMessage(reason); + }); +} + +/** + * VSCode command + */ +export const THEME_ACCENTS_SETTER = () => { + // shows the quick pick dropdown + let options: string[] = Object.keys(themeConfigCommon.accents); + let purgeColourKey: string = 'Remove accents'; + + options.push(purgeColourKey); + + vscode.window.showQuickPick(options).then(accentSelected => { + if (accentSelected === null || accentSelected === undefined) return; + + let config: any = vscode.workspace.getConfiguration().get('workbench.colorCustomizations'); + + switch(accentSelected) { + case purgeColourKey: + assignColorCustomizations(undefined, config); + setWorkbenchOptions(undefined, config); + break; + default: + assignColorCustomizations(themeConfigCommon.accents[accentSelected], config); + setWorkbenchOptions(accentSelected, config); + break; + } + }); +} \ No newline at end of file diff --git a/extensions/commands/theme-icons/index.ts b/extensions/commands/theme-icons/index.ts new file mode 100644 index 0000000..9beb82c --- /dev/null +++ b/extensions/commands/theme-icons/index.ts @@ -0,0 +1,98 @@ +import {getAccentableIcons} from '../../helpers/fs'; +import * as fs from 'fs'; + +import { getAbsolutePath, getDefaultValues, getThemeIconsByContributeID, getThemeIconsContribute, getVariantIcons } from "../../helpers/fs"; +import { getCurrentThemeIconsID } from "../../helpers/vscode"; +import { getCustomSettings, isAccent, isMaterialThemeIcons } from "../../helpers/settings"; + +import { CHARSET } from "../../consts/files"; +import { IPackageJSONThemeIcons } from "../../interfaces/ipackage.json"; +import {IThemeIconsIconPath, IThemeIcons} from '../../interfaces/itheme-icons'; + + +function getIconDefinition(definitions: any, iconname: string): IThemeIconsIconPath { + return (definitions as any)[iconname]; +} + +/** + * Replaces icon path with the accented one. + * @param {string} iconPath + * @param {string} accentName + * @returns {string} + */ +function replaceIconPathWithAccent(iconPath: string, accentName: string): string { + return iconPath.replace('.svg', `.accent.${ accentName }.svg`); +} + +export const THEME_ICONS = () => { + let deferred: any = {}; + let promise = new Promise((resolve, reject) => { + deferred.resolve = resolve; + deferred.reject = reject; + }); + let themeIconsID: string = getCurrentThemeIconsID(); + + if (isMaterialThemeIcons(themeIconsID)) { + let customSettings = getCustomSettings(); + let defaults = getDefaultValues(); + let accentName = customSettings.accent; + let variantName: string = customSettings.themeColours === undefined ? '' : customSettings.themeColours; + let themeContribute: IPackageJSONThemeIcons = getThemeIconsContribute(themeIconsID); + let theme: IThemeIcons = getThemeIconsByContributeID(themeIconsID); + let themepath: string = getAbsolutePath(themeContribute.path); + + if (isAccent(accentName, defaults)) { + let _accentName = accentName.replace(/\s+/, '-'); + + getAccentableIcons().forEach(iconname => { + let distIcon = getIconDefinition(theme.iconDefinitions, iconname); + let outIcon = getIconDefinition(defaults.icons.theme.iconDefinitions, iconname); + + if (typeof distIcon === 'object' && typeof outIcon === 'object') { + distIcon.iconPath = replaceIconPathWithAccent(outIcon.iconPath, _accentName) + } + }) + + // theme.iconDefinitions._folder_open.iconPath = defaults.icons.theme.iconDefinitions._folder_open.iconPath.replace('.svg', `.accent.${ _accentName }.svg`); + // theme.iconDefinitions._folder_open_build.iconPath = defaults.icons.theme.iconDefinitions._folder_open_build.iconPath.replace('.svg', `.accent.${ _accentName }.svg`); + } else { + + getAccentableIcons().forEach(iconname => { + let distIcon = getIconDefinition(theme.iconDefinitions, iconname); + let outIcon = getIconDefinition(defaults.icons.theme.iconDefinitions, iconname); + + distIcon.iconPath = outIcon.iconPath; + }); + // theme.iconDefinitions._folder_open.iconPath = defaults.icons.theme.iconDefinitions._folder_open.iconPath; + // theme.iconDefinitions._folder_open_build.iconPath = defaults.icons.theme.iconDefinitions._folder_open_build.iconPath; + } + + getVariantIcons().forEach(iconname => { + let distIcon = getIconDefinition(theme.iconDefinitions, iconname); + let outIcon = getIconDefinition(defaults.icons.theme.iconDefinitions, iconname); + + if (!!distIcon && !!outIcon) { + distIcon.iconPath = outIcon.iconPath.replace('.svg', `${ variantName }.svg`); + } + }) + + // theme.iconDefinitions._folder_dark.iconPath = defaults.icons.theme.iconDefinitions._folder_dark.iconPath.replace('.svg', `${ variantName }.svg`); + // theme.iconDefinitions._folder_dark_build.iconPath = defaults.icons.theme.iconDefinitions._folder_dark_build.iconPath.replace('.svg', `${ variantName }.svg`); + + // theme.iconDefinitions._folder_light.iconPath = defaults.icons.theme.iconDefinitions._folder_light.iconPath.replace('.svg', `${ variantName }.svg`); + // theme.iconDefinitions["_folder_light_build"].iconPath = defaults.icons.theme.iconDefinitions["_folder_light_build"].iconPath.replace('.svg', `${ variantName }.svg`); + + fs.writeFile(themepath, JSON.stringify(theme), { encoding: CHARSET }, (error) => { + if (error) { + deferred.reject(error); + return; + } + + deferred.resolve(); + }); + } else { + deferred.resolve(); + } + + return promise; +} \ No newline at end of file diff --git a/extensions/commands/theme-variant/index.ts b/extensions/commands/theme-variant/index.ts new file mode 100644 index 0000000..08aaa4f --- /dev/null +++ b/extensions/commands/theme-variant/index.ts @@ -0,0 +1,41 @@ +import * as fs from "fs"; +import * as vscode from 'vscode'; + +import { getAbsolutePath, getDefaultValues, getPackageJSON } from "../../helpers/fs"; +import { getCustomSettings, setCustomSettings } from "../../helpers/settings"; + +import { CHARSET } from "../../consts/files"; +import { THEME_ICONS } from "../theme-icons/index"; +import { reloadWindow } from "../../helpers/vscode"; + +export const THEME_VARIANT = () => { + let defaults = getDefaultValues(); + let options: string[] = Object.keys(defaults.themeVariants); + let packageJSON = getPackageJSON(); + + options = options.filter(i => i !== packageJSON.contributes.themes[0].path); + + vscode.window.showQuickPick(options).then((response: string) => { + if (!response) return; + + let customSettings = getCustomSettings(); + let themepath: string = defaults.themeVariants[response]; + let themeUITheme: string = defaults.themeVariantsUITheme[response]; + + customSettings.themeColours = response; + + packageJSON.contributes.themes[0].path = themepath; + packageJSON.contributes.themes[0].uiTheme = themeUITheme; + + fs.writeFile(getAbsolutePath('./package.json'), JSON.stringify(packageJSON, null, 2), { encoding: CHARSET }, (error) => { + if (error) { + console.trace(error); + return; + } + + setCustomSettings(customSettings).then(() => { + THEME_ICONS().then(() => reloadWindow()).catch(error => console.trace(error)) + }); + }); + }); +} \ No newline at end of file diff --git a/extensions/consts/files.ts b/extensions/consts/files.ts new file mode 100644 index 0000000..ccde74c --- /dev/null +++ b/extensions/consts/files.ts @@ -0,0 +1,5 @@ +/** + * File charset + * @type {string} + */ +export const CHARSET: string = 'utf-8'; \ No newline at end of file diff --git a/extensions/consts/paths.ts b/extensions/consts/paths.ts new file mode 100644 index 0000000..4f673e9 --- /dev/null +++ b/extensions/consts/paths.ts @@ -0,0 +1,13 @@ +import * as path from 'path'; + +import { IPaths } from '../interfaces/ipaths'; + +export const PATHS: IPaths = { + DIST: './dist', + ICONS: './icons', + SRC: './src', + THEMES: './themes', + VSIX_DIR: path.join(__dirname, '../../'), +}; + +export default PATHS; diff --git a/extensions/defaults.json b/extensions/defaults.json new file mode 100644 index 0000000..99e91e8 --- /dev/null +++ b/extensions/defaults.json @@ -0,0 +1,197 @@ +{ + "accents": { + "Acid Lime": "#C6FF00", + "Blue": "#2979FF", + "Breaking Bad": "#388E3C", + "Bright Teal": "#64FFDA", + "Cyan": "#00BCD4", + "Graphite": "#616161", + "Indigo": "#5C6BC0", + "Lime": "#7CB342", + "Orange": "#FF7042", + "Pink": "#FF4081", + "Purple": "#AB47BC", + "Red": "#E57373", + "Sky": "#84FFFF", + "Tomato": "#F44336", + "Teal": "#80CBC4", + "Yellow": "#FFA000" + }, + "accentableIcons": [ + "_folder_open", + "_folder_open_build", + "_folder_vscode_open", + "_folder_gulp_open", + "_folder_node_open", + "_folder_images_open", + "_folder_js_open", + "_folder_src_open", + "_folder_assets_open", + "_folder_bower_open", + "_folder_git_open", + "_folder_github_open", + "_folder_test_open", + "_folder_dist_open", + "_folder_ci_open" + ], + "changelog": { + "lastversion": "1.5.1" + }, + "icons": { + "theme": { + "iconDefinitions": { + "_folder_ci": { + "iconPath": "../icons/folder_ci.svg" + }, + "_folder_ci_open": { + "iconPath": "../icons/folder_ci_open.svg" + }, + "_folder_dist": { + "iconPath": "../icons/folder_dist.svg" + }, + "_folder_dist_open": { + "iconPath": "../icons/folder_dist_open.svg" + }, + "_folder_test": { + "iconPath": "../icons/folder_test.svg" + }, + "_folder_test_open": { + "iconPath": "../icons/folder_test_open.svg" + }, + "_folder_github": { + "iconPath": "../icons/folder_github.svg" + }, + "_folder_github_open": { + "iconPath": "../icons/folder_github_open.svg" + }, + "_folder_git": { + "iconPath": "../icons/folder_git.svg" + }, + "_folder_git_open": { + "iconPath": "../icons/folder_git_open.svg" + }, + "_folder_bower": { + "iconPath": "../icons/folder_bower.svg" + }, + "_folder_bower_open": { + "iconPath": "../icons/folder_bower_open.svg" + }, + "_folder_assets": { + "iconPath": "../icons/folder_assets.svg" + }, + "_folder_assets_open": { + "iconPath": "../icons/folder_assets_open.svg" + }, + "_folder_src": { + "iconPath": "../icons/folder_src.svg" + }, + "_folder_src_open": { + "iconPath": "../icons/folder_src_open.svg" + }, + "_folder_js": { + "iconPath": "../icons/folder_js.svg" + }, + "_folder_js_open": { + "iconPath": "../icons/folder_js_open.svg" + }, + "_folder_images": { + "iconPath": "../icons/folder_images.svg" + }, + "_folder_images_open": { + "iconPath": "../icons/folder_images_open.svg" + }, + "_folder_gulp": { + "iconPath": "../icons/folder_gulp.svg" + }, + "_folder_gulp_open": { + "iconPath": "../icons/folder_gulp_open.svg" + }, + "_folder_node": { + "iconPath": "../icons/folder_node.svg" + }, + "_folder_node_open": { + "iconPath": "../icons/folder_node_open.svg" + }, + "_folder_vscode": { + "iconPath": "../icons/folder_vscode.svg" + }, + "_folder_vscode_open": { + "iconPath": "../icons/folder_vscode_open.svg" + }, + "_folder_dark": { + "iconPath": "../icons/folder_dark.svg" + }, + "_folder_dark_build": { + "iconPath": "../icons/folder_dark_build.svg" + }, + "_folder_light": { + "iconPath": "../icons/folder_light.svg" + }, + "_folder_light_build": { + "iconPath": "../icons/folder_light_build.svg" + }, + "_file_folder": { + "iconPath": "../icons/file_folder.svg" + }, + "_file_folder_build": { + "iconPath": "../icons/file_folder_build.svg" + }, + "_folder_open": { + "iconPath": "../icons/folder_open.svg" + }, + "_folder_open_build": { + "iconPath": "../icons/folder_open_build.svg" + } + } + } + }, + "themeVariants": { + "Darker": "./themes/Material-Theme-Darker.json", + "Darker High Contrast": "./themes/Material-Theme-Darker-High-Contrast.json", + "Default": "./themes/Material-Theme-Default.json", + "Default High Contrast": "./themes/Material-Theme-Default-High-Contrast.json", + "Light": "./themes/Material-Theme-Lighter.json", + "Light High Contrast": "./themes/Material-Theme-Lighter-High-Contrast.json", + "Palenight": "./themes/Material-Theme-Palenight.json", + "Palenight High Contrast": "./themes/Material-Theme-Palenight-High-Contrast.json" + }, + "themeVariantsColours": { + "Darker": "#424242", + "Darker High Contrast": "#424242", + "Default": "#4A616C", + "Default High Contrast": "#4A616C", + "Light": "#90A4AE", + "Light High Contrast": "#90A4AE", + "Palenight": "#4E5579", + "Palenight High Contrast": "#4E5579" + }, + "themeVariantsUITheme": { + "Darker": "vs-dark", + "Darker High Contrast": "vs-dark", + "Default": "vs-dark", + "Default High Contrast": "vs-dark", + "Light": "vs", + "Light High Contrast": "vs", + "Palenight": "vs-dark", + "Palenight High Contrast": "vs-dark" + }, + "variantsIcons": [ + "_folder_dark_build", + "_folder_dark", + "_folder_light_build", + "_folder_light", + "_folder_vscode", + "_folder_gulp", + "_folder_node", + "_folder_images", + "_folder_js", + "_folder_src", + "_folder_assets", + "_folder_bower", + "_folder_git", + "_folder_github", + "_folder_test", + "_folder_dist", + "_folder_ci" + ] +} \ No newline at end of file diff --git a/extensions/helpers/changelog.ts b/extensions/helpers/changelog.ts new file mode 100644 index 0000000..f1edc28 --- /dev/null +++ b/extensions/helpers/changelog.ts @@ -0,0 +1,61 @@ +import * as path from 'path'; +import * as vscode from 'vscode'; + +import { getDefaultValues, getPackageJSON, writeFile } from "./fs"; +import { PATHS } from '../consts/paths'; + +function previewFile(): void { + let uri = vscode.Uri.file(path.join(PATHS.VSIX_DIR, './CHANGELOG.md')); + + vscode.commands.executeCommand('markdown.showPreview', uri); + +} + +function splitVersion(input: string): { major: number, minor: number, patch: number } { + let [ major, minor, patch ] = input.split('.').map(i => parseInt(i)); + return { major, minor, patch }; +} + +export function showChangelog(): void { + let extname: string = 'Microsoft.vscode-markdown'; + let md = vscode.extensions.getExtension(extname); + + if (md === undefined) { + console.warn(`Ext not found ${ extname }`) + return; + } + + if (md.isActive) { + previewFile(); + } else { + md.activate().then(() => { + previewFile(); + }, reason => { + console.warn(reason); + }); + } +} + +export function shouldShowChangelog(): boolean { + let defaults = getDefaultValues(); + let out: boolean; + let packageJSON = getPackageJSON(); + + if (defaults.changelog == undefined || (defaults.changelog !== undefined && typeof defaults.changelog.lastversion !== 'string')) { + defaults.changelog = { + lastversion: packageJSON.version + } + out = true; + } else { + let versionCurrent = splitVersion(packageJSON.version); + let versionOld = splitVersion(defaults.changelog.lastversion); + + out = versionCurrent.major > versionOld.major || versionCurrent.minor > versionOld.minor || versionCurrent.patch > versionOld.patch; + + defaults.changelog.lastversion = packageJSON.version; + } + + writeFile(path.join('./extensions/defaults.json'), JSON.stringify(defaults, null, 2)); + + return out; +} \ No newline at end of file diff --git a/extensions/helpers/fs.ts b/extensions/helpers/fs.ts new file mode 100644 index 0000000..de5e41f --- /dev/null +++ b/extensions/helpers/fs.ts @@ -0,0 +1,106 @@ +import * as fs from 'fs' +import * as path from 'path' + +import { IPackageJSON, IPackageJSONThemeIcons } from "../interfaces/ipackage.json"; + +import { CHARSET } from "../consts/files"; +import { IDefaults } from "../interfaces/idefaults"; +import { IThemeIcons } from "../interfaces/itheme-icons"; +import { PATHS } from "../consts/paths"; + +/** + * @export + * @param {string} dirname + */ +export function ensureDir(dirname: string): void { + if (!fs.existsSync(dirname)) { + fs.mkdirSync(dirname); + } +} + +/** + * Gets default value + * @export + * @returns {IDefaults} + */ +export function getDefaultValues(): IDefaults { + let defaults: IDefaults = require(path.join(PATHS.VSIX_DIR, './extensions/defaults.json')); + + if (defaults === undefined || defaults === null) { + throw new Error('Cannot find defaults params'); + } + + return defaults; +} + +/** + * Gets an absolute path + * + * @export + * @param {string} input + * @returns {string} + */ +export function getAbsolutePath(input: string): string { + return path.join(PATHS.VSIX_DIR, input); +} + +/** + * @export + * @returns {string[]} + */ +export function getAccentableIcons(): string[] { + return getDefaultValues().accentableIcons; +} + +/** + * @export + * @returns {string[]} + */ +export function getVariantIcons(): string[] { + return getDefaultValues().variantsIcons; +} + +/** + * Gets a theme content by a given contribute ID + * + * @export + * @param {string} ID + * @returns {IThemeIcons} + */ +export function getThemeIconsByContributeID(ID: string): IThemeIcons | null { + let contribute: IPackageJSONThemeIcons = getThemeIconsContribute(ID) + return contribute !== null ? require(path.join(PATHS.VSIX_DIR, contribute.path)) : null; +} + +/** + * Gets a theme by name + * @export + * @param {string} name + * @returns {IThemeIcons} + */ +export function getThemeIconsContribute(ID: string): IPackageJSONThemeIcons { + let contributes = getPackageJSON().contributes.iconThemes.filter(contribute => contribute.id === ID); + return contributes[0] !== undefined ? contributes[0] : null; +} + +/** + * Gets package JSON + * @export + * @returns {*} + */ +export function getPackageJSON(): IPackageJSON { + let packageJSON: IPackageJSON = require(path.join(PATHS.VSIX_DIR, './package.json')); + return packageJSON; +} + +/** + * Writes a file inside the vsix directory + * @export + * @param {string} filename + * @param {string} filecontent + */ +export function writeFile(filename: string, filecontent: string): void { + filename = path.join(PATHS.VSIX_DIR, filename); + console.log(arguments) + fs.writeFileSync(filename, filecontent, { encoding: CHARSET }); +} \ No newline at end of file diff --git a/extensions/helpers/settings.ts b/extensions/helpers/settings.ts new file mode 100644 index 0000000..0216fc2 --- /dev/null +++ b/extensions/helpers/settings.ts @@ -0,0 +1,120 @@ +import * as vscode from 'vscode'; + +import { IDefaults } from "../interfaces/idefaults"; +import { IThemeCustomProperties } from "../interfaces/itheme-custom-properties"; +import {getPackageJSON} from './fs'; + +/** + * Gets saved accent + * @export + * @returns {(string | null)} + */ +export function getAccent(): string | undefined { + return getCustomSettings().accent; +} + +/** + * Gets custom settings + * @export + * @returns {*} + */ +export function getCustomSettings(): IThemeCustomProperties { + return vscode.workspace.getConfiguration().get('materialTheme.cache.workbench.settings', {}); +} + +/** + * Checks if a given string could be an accent + * + * @export + * @param {string} accentName + * @returns {boolean} + */ +export function isAccent(accentName: string, defaults: IDefaults): boolean { + return Object.keys(defaults.accents).filter(name => name === accentName).length > 0; +} + +/** + * Determines if the passing theme label is a material theme + * @export + * @param {string} themeName + * @returns {boolean} + */ +export function isMaterialTheme(themeName: string): boolean { + let packageJSON = getPackageJSON(); + return packageJSON.contributes.themes.filter(contrib => contrib.label === themeName).length > 0; +} + +/** + * Determines if the passing icons theme is a material theme + * @export + * @param {string} themeIconsName + * @returns {boolean} + */ +export function isMaterialThemeIcons(themeIconsName: string): boolean { + let packageJSON = getPackageJSON(); + return packageJSON.contributes.iconThemes.filter(contribute => contribute.id === themeIconsName).length > 0; +} + +/** + * Sets a custom property in custom settings + * @export + * @param {string} settingname + * @param {*} value + */ +export function setCustomSetting(settingname: string, value: any): Thenable { + let settings: any = getCustomSettings(); + settings[settingname] = value; + return vscode.workspace.getConfiguration().update('materialTheme.cache.workbench.settings', settings, true); +} + +/** + * Sets custom properties in custom settings + * @export + * @param {*} settingsObject + * @returns {Thenable} + */ +export function setCustomSettings(settingsObject: IThemeCustomProperties): Thenable { + let settings: any = getCustomSettings(); + + Object.keys(settingsObject).forEach(key => settings[key] = (settingsObject as any)[key]); + + return vscode.workspace.getConfiguration().update('materialTheme.cache.workbench.settings', settings, true); +} + +/** + * Determines if the window should reload + * @export + * @param {string} themeColour + * @param {string} themeIcons + * @returns {boolean} + */ +export function shouldReloadWindow(themeColour: string, themeIcons: string): boolean { + let isTheme: boolean = isMaterialTheme(themeColour); + let isThemeIcons: boolean = isMaterialThemeIcons(themeIcons); + + if (!isTheme && !isThemeIcons) return false; + + let customSettings = getCustomSettings(); + + return customSettings.accent !== customSettings.accentPrevious; +} + +/** + * Updates accent name + * @export + * @param {string} accentName + */ +export function updateAccent(accentName: string): Thenable { + let config: IThemeCustomProperties = getCustomSettings(); + let prevaccent = getAccent(); + + if (prevaccent !== undefined && prevaccent !== accentName) { + config.accentPrevious = prevaccent; + } else if (accentName === undefined) { + config.accentPrevious = undefined; + } + + config.accent = accentName; + + return setCustomSettings(config); +} \ No newline at end of file diff --git a/extensions/helpers/vscode.ts b/extensions/helpers/vscode.ts new file mode 100644 index 0000000..8ae4cc7 --- /dev/null +++ b/extensions/helpers/vscode.ts @@ -0,0 +1,42 @@ +import * as vscode from 'vscode' + + +export function askForWindowReload(): Thenable { + const PROMPT_MESSAGE: string = 'Material Theme requires VS Code reload in order to display icons correctly.'; + const PROMPT_MESSAGE_CONFIRM: string = 'Ok, reload'; + const PROMPT_MESSAGE_CANCEL: string = 'I will do it later'; + + return vscode.window.showInformationMessage(PROMPT_MESSAGE, PROMPT_MESSAGE_CONFIRM, PROMPT_MESSAGE_CANCEL).then((response) => { + if (response === PROMPT_MESSAGE_CONFIRM) { + reloadWindow(); + } + }, (error) => { + console.log(error); + }); +} + +/** + * Gets your current theme ID + * @export + * @returns {string} + */ +export function getCurrentThemeID(): string { + return vscode.workspace.getConfiguration().get('workbench.colorTheme'); +} + +/** + * Gets your current icons theme ID + * @export + * @returns {string} + */ +export function getCurrentThemeIconsID(): string { + return vscode.workspace.getConfiguration().get('workbench.iconTheme'); +} + +/** + * Reloads current vscode window. + * @export + */ +export function reloadWindow(): void { + vscode.commands.executeCommand('workbench.action.reloadWindow'); +} \ No newline at end of file diff --git a/extensions/interfaces/iaccent-custom-property.ts b/extensions/interfaces/iaccent-custom-property.ts new file mode 100644 index 0000000..6b6b81d --- /dev/null +++ b/extensions/interfaces/iaccent-custom-property.ts @@ -0,0 +1,4 @@ +export interface IAccentCustomProperty { + alpha: number; + value: any; +} \ No newline at end of file diff --git a/extensions/interfaces/idefaults.ts b/extensions/interfaces/idefaults.ts new file mode 100644 index 0000000..4e4ee50 --- /dev/null +++ b/extensions/interfaces/idefaults.ts @@ -0,0 +1,63 @@ +export interface IDefaults { + accents: IAccents; + accentableIcons: string[]; + changelog: IChangelog; + icons: IDefaultsThemeIcons; + themeVariants: IDefaultsThemeVariant; + themeVariantsColours: IDefaultsThemeVariantColours; + themeVariantsUITheme: IDefaultsThemeVariantUITheme; + variantsIcons: string[]; +} + +export interface IAccents { + teal: string; + [index: string]: string; +} + +export interface IChangelog { + lastversion: string; +} + +export interface IDefaultsThemeIcons { + theme: { + iconDefinitions: { + _folder_open: { + iconPath: string; + } + _folder_open_build: { + iconPath: string; + } + _folder_dark: { + iconPath: string; + } + _folder_dark_build: { + iconPath: string; + } + "_folder_light_build": { + iconPath: string; + } + _folder_light: { + iconPath: string; + } + } + } +} + +export interface IDefaultsThemeVariant { + [index: string]: string; + Darker: string; + DarkerHighContrast: string; + Default: string; + DefaultHighContrast: string; + Light: string; + LightHighContrast: string; + PalenightHighContrast: string; +} + +export interface IDefaultsThemeVariantColours extends IDefaultsThemeVariant { + +} + +export interface IDefaultsThemeVariantUITheme extends IDefaultsThemeVariant { + +} \ No newline at end of file diff --git a/extensions/interfaces/igeneric-object.ts b/extensions/interfaces/igeneric-object.ts new file mode 100644 index 0000000..7631326 --- /dev/null +++ b/extensions/interfaces/igeneric-object.ts @@ -0,0 +1,3 @@ +export interface IGenericObject { + [index: string]: TValue; +} \ No newline at end of file diff --git a/extensions/interfaces/ipackage.json.ts b/extensions/interfaces/ipackage.json.ts new file mode 100644 index 0000000..b52a9f7 --- /dev/null +++ b/extensions/interfaces/ipackage.json.ts @@ -0,0 +1,61 @@ +import { IGenericObject } from '../../extensions/interfaces/igeneric-object'; + +export interface IPackageJSONBadge { + description: string; + href: string; + url: string; +} + +export interface IPackageJSONContributes { + commands: IPackageJSONCommand[]; + configuration: IPackageJSONConfiguration; + iconThemes: IPackageJSONThemeIcons[]; + themes: IPackageJSONTheme[]; +} + +export interface IPackageJSONConfiguration { + properties: { + + } +} + +export interface IPackageJSONCommand { + category: string; + command: string; + title: string; +} + +export interface IPackageJSONTheme { + label: string; + path: string; + uiTheme: string; +} + +export interface IPackageJSONThemeIcons { + id: string; + label: string; + path: string; +} + +export interface IPackageJSON { + "activationEvents": string[] + "badges": IPackageJSONBadge[]; + "contributes": IPackageJSONContributes; + "bugs": IGenericObject; + "categories": string[]; + "description": string; + "displayName": string; + "engines": IGenericObject; + "galleryBanner": IGenericObject; + "homepage": string; + "icon": string; + "license": string; + "main": string; + "name": string; + "preview": boolean; + "publisher": string; + "repository": IGenericObject; + "scripts": IGenericObject; + "version": string; + "devDependencies": IGenericObject; +} \ No newline at end of file diff --git a/extensions/interfaces/ipaths.ts b/extensions/interfaces/ipaths.ts new file mode 100644 index 0000000..ba3d072 --- /dev/null +++ b/extensions/interfaces/ipaths.ts @@ -0,0 +1,32 @@ +export interface IPaths { + /** + * Dist dir + * @type {string} + * @memberof IPaths + */ + DIST: string; + /** + * Icons dir + * @type {string} + * @memberof IPaths + */ + ICONS: string; + /** + * Src dir + * @type {string} + * @memberof IPaths + */ + SRC: string; + /** + * Themes dir + * @type {string} + * @memberof IPaths + */ + THEMES: string; + /** + * Extension directory + * @type {string} + * @memberof IPaths + */ + VSIX_DIR: string; +} \ No newline at end of file diff --git a/extensions/interfaces/itheme-custom-properties.ts b/extensions/interfaces/itheme-custom-properties.ts new file mode 100644 index 0000000..e801dc8 --- /dev/null +++ b/extensions/interfaces/itheme-custom-properties.ts @@ -0,0 +1,6 @@ +export interface IThemeCustomProperties { + accent?: string; + accentPrevious?: string; + themeColours?: string; + themeIcons?: string; +} \ No newline at end of file diff --git a/extensions/interfaces/itheme-icons.ts b/extensions/interfaces/itheme-icons.ts new file mode 100644 index 0000000..23e10f6 --- /dev/null +++ b/extensions/interfaces/itheme-icons.ts @@ -0,0 +1,513 @@ +export interface IThemeIconsIconPath { + iconPath: string; +} + +export interface IThemeIcons { + "iconDefinitions": + { + "_folder_dark": IThemeIconsIconPath; + "_file_folder": IThemeIconsIconPath; + "_folder_dark_build": IThemeIconsIconPath; + "_folder_light": IThemeIconsIconPath; + "_folder_light_build": IThemeIconsIconPath; + "_folder_open": IThemeIconsIconPath; + "_folder_open_build": IThemeIconsIconPath; + "_file_dark": IThemeIconsIconPath; + "_file_actionscript": IThemeIconsIconPath; + "_file_ai": IThemeIconsIconPath; + "_file_android": IThemeIconsIconPath; + "_file_angular": IThemeIconsIconPath; + "_file_applescript": IThemeIconsIconPath; + "_file_arduino": IThemeIconsIconPath; + "_file_assembly": IThemeIconsIconPath; + "_file_autohotkey": IThemeIconsIconPath; + "_file_bower": IThemeIconsIconPath; + "_file_c": IThemeIconsIconPath; + "_file_certificate": IThemeIconsIconPath; + "_file_changelog": IThemeIconsIconPath; + "_file_clojure": IThemeIconsIconPath; + "_file_cmake": IThemeIconsIconPath; + "_file_cmd": IThemeIconsIconPath; + "_file_coffee": IThemeIconsIconPath; + "_file_console": IThemeIconsIconPath; + "_file_contributing": IThemeIconsIconPath; + "_file_cpp": IThemeIconsIconPath; + "_file_credits": IThemeIconsIconPath; + "_file_csharp": IThemeIconsIconPath; + "_file_css-map": IThemeIconsIconPath; + "_file_css": IThemeIconsIconPath; + "_file_dart": IThemeIconsIconPath; + "_file_database": IThemeIconsIconPath; + "_file_dlang": IThemeIconsIconPath; + "_file_docker": IThemeIconsIconPath; + "_file_document": IThemeIconsIconPath; + "_file_email": IThemeIconsIconPath; + "_file_exe": IThemeIconsIconPath; + "_file_favicon": IThemeIconsIconPath; + "_file_file": IThemeIconsIconPath; + "_file_flash": IThemeIconsIconPath; + "_file_flow": IThemeIconsIconPath; + "_file_folder-build": IThemeIconsIconPath; + "_file_folder-light-build": IThemeIconsIconPath; + "_file_folder-light": IThemeIconsIconPath; + "_file_folder-outline-build": IThemeIconsIconPath; + "_file_folder-outline": IThemeIconsIconPath; + "_file_font": IThemeIconsIconPath; + "_file_fsharp": IThemeIconsIconPath; + "_file_git": IThemeIconsIconPath; + "_file_github": IThemeIconsIconPath; + "_file_go": IThemeIconsIconPath; + "_file_gopher": IThemeIconsIconPath; + "_file_gradle": IThemeIconsIconPath; + "_file_graphql": IThemeIconsIconPath; + "_file_groovy": IThemeIconsIconPath; + "_file_grunt": IThemeIconsIconPath; + "_file_gulp": IThemeIconsIconPath; + "_file_haml": IThemeIconsIconPath; + "_file_haskell": IThemeIconsIconPath; + "_file_html": IThemeIconsIconPath; + "_file_image": IThemeIconsIconPath; + "_file_ionic": IThemeIconsIconPath; + "_file_java": IThemeIconsIconPath; + "_file_javascript-map": IThemeIconsIconPath; + "_file_js": IThemeIconsIconPath; + "_file_json": IThemeIconsIconPath; + "_file_key": IThemeIconsIconPath; + "_file_kotlin": IThemeIconsIconPath; + "_file_less": IThemeIconsIconPath; + "_file_lib": IThemeIconsIconPath; + "_file_license": IThemeIconsIconPath; + "_file_lua": IThemeIconsIconPath; + "_file_markdown": IThemeIconsIconPath; + "_file_markup": IThemeIconsIconPath; + "_file_movie": IThemeIconsIconPath; + "_file_music": IThemeIconsIconPath; + "_file_mustache": IThemeIconsIconPath; + "_file_mxml": IThemeIconsIconPath; + "_file_nodejs": IThemeIconsIconPath; + "_file_npm": IThemeIconsIconPath; + "_file_ocaml": IThemeIconsIconPath; + "_file_pdf": IThemeIconsIconPath; + "_file_php": IThemeIconsIconPath; + "_file_polymer": IThemeIconsIconPath; + "_file_postcss": IThemeIconsIconPath; + "_file_powerpoint": IThemeIconsIconPath; + "_file_pp": IThemeIconsIconPath; + "_file_procfile": IThemeIconsIconPath; + "_file_pug": IThemeIconsIconPath; + "_file_python": IThemeIconsIconPath; + "_file_r": IThemeIconsIconPath; + "_file_rails": IThemeIconsIconPath; + "_file_raml": IThemeIconsIconPath; + "_file_react": IThemeIconsIconPath; + "_file_readme": IThemeIconsIconPath; + "_file_ruby": IThemeIconsIconPath; + "_file_rust": IThemeIconsIconPath; + "_file_sass": IThemeIconsIconPath; + "_file_settings": IThemeIconsIconPath; + "_file_sketch": IThemeIconsIconPath; + "_file_star": IThemeIconsIconPath; + "_file_stylus": IThemeIconsIconPath; + "_file_sublime": IThemeIconsIconPath; + "_file_svg": IThemeIconsIconPath; + "_file_swc": IThemeIconsIconPath; + "_file_swift": IThemeIconsIconPath; + "_file_swig": IThemeIconsIconPath; + "_file_table": IThemeIconsIconPath; + "_file_tex": IThemeIconsIconPath; + "_file_todo": IThemeIconsIconPath; + "_file_tune": IThemeIconsIconPath; + "_file_twig": IThemeIconsIconPath; + "_file_typescript": IThemeIconsIconPath; + "_file_typescript_def": IThemeIconsIconPath; + "_file_url": IThemeIconsIconPath; + "_file_virtual": IThemeIconsIconPath; + "_file_visualstudio": IThemeIconsIconPath; + "_file_vue": IThemeIconsIconPath; + "_file_webpack": IThemeIconsIconPath; + "_file_word": IThemeIconsIconPath; + "_file_xaml": IThemeIconsIconPath; + "_file_xml": IThemeIconsIconPath; + "_file_yaml": IThemeIconsIconPath; + "_file_yarn": IThemeIconsIconPath; + "_file_zip": IThemeIconsIconPath; + }; + "fileExtensions": + { + "cmd": string; + "mustache": string; + "rails": string; + "styl": string; + "twig": string; + "swig": string; + "sketch": string; + "do": string; + "sublime-settings": string; + "sublime-theme": string; + "sublime-commands": string; + "sublime-menu": string; + "html": string; + "jade": string; + "pug": string; + "md": string; + "md.rendered": string; + "markdown": string; + "markdown.rendered": string; + "css": string; + "postcss": string; + "scss": string; + "sass": string; + "less": string; + "json": string; + "yaml": string; + "YAML-tmLanguage": string; + "yml": string; + "xml": string; + "plist": string; + "xsd": string; + "dtd": string; + "xsl": string; + "xslt": string; + "resx": string; + "iml": string; + "xquery": string; + "tmLanguage": string; + "png": string; + "jpeg": string; + "jpg": string; + "gif": string; + "svg": string; + "eps": string; + "ai": string; + "ico": string; + "tif": string; + "tiff": string; + "psd": string; + "psb": string; + "ami": string; + "apx": string; + "bmp": string; + "bpg": string; + "brk": string; + "cur": string; + "dds": string; + "dng": string; + "exr": string; + "fpx": string; + "gbr": string; + "img": string; + "jbig2": string; + "jb2": string; + "jng": string; + "jxr": string; + "pbm": string; + "pgf": string; + "pic": string; + "raw": string; + "webp": string; + "php": string; + "js": string; + "ejs": string; + "jsx": string; + "ini": string; + "dlc": string; + "dll": string; + "config": string; + "conf": string; + "esx": string; + "ts": string; + "tsx": string; + "d.ts": string; + "pdf": string; + "xlsx": string; + "xls": string; + "csv": string; + "vscodeignore": string; + "vsixmanifest": string; + "suo": string; + "sln": string; + "pdb": string; + "cs": string; + "csx": string; + "csproj": string; + "zip": string; + "tar": string; + "gz": string; + "xz": string; + "bzip2": string; + "gzip": string; + "7z": string; + "7zip": string; + "pzip": string; + "wim": string; + "rar": string; + "tgz": string; + "exe": string; + "msi": string; + "java": string; + "jar": string; + "jsp": string; + "c": string; + "h": string; + "m": string; + "cc": string; + "cpp": string; + "c++": string; + "hpp": string; + "mm": string; + "cxx": string; + "go": string; + "py": string; + "url": string; + "sh": string; + "bat": string; + "ps1": string; + "fish": string; + "bash": string; + "gradle": string; + "doc": string; + "docx": string; + "rtf": string; + "properties": string; + "prop": string; + "settings": string; + "sql": string; + "accdb": string; + "mdb": string; + "cer": string; + "cert": string; + "crt": string; + "pub": string; + "key": string; + "pem": string; + "asc": string; + "woff": string; + "woff2": string; + "ttf": string; + "eot": string; + "suit": string; + "otf": string; + "bmap": string; + "fnt": string; + "odttf": string; + "ttc": string; + "font": string; + "fonts": string; + "sui": string; + "ntf": string; + "mrf": string; + "lib": string; + "rb": string; + "erb": string; + "fs": string; + "fsx": string; + "fsi": string; + "fsproj": string; + "manifest": string; + "swift": string; + "ino": string; + "dockerignore": string; + "tex": string; + "bib": string; + "pptx": string; + "ppt": string; + "pptm": string; + "potx": string; + "pot": string; + "potm": string; + "ppsx": string; + "ppsm": string; + "pps": string; + "ppam": string; + "ppa": string; + "webm": string; + "mkv": string; + "flv": string; + "vob": string; + "ogv": string; + "ogg": string; + "gifv": string; + "avi": string; + "mov": string; + "qt": string; + "wmv": string; + "yuv": string; + "rm": string; + "rmvb": string; + "mp4": string; + "m4v": string; + "mpg": string; + "mp2": string; + "mpeg": string; + "mpe": string; + "mpv": string; + "m2v": string; + "vdi": string; + "vbox": string; + "vbox-prev": string; + "ics": string; + "mp3": string; + "flac": string; + "m4a": string; + "wma": string; + "aiff": string; + "coffee": string; + "txt": string; + "sqlite": string; + "graphql": string; + "gql": string; + "props": string; + "toml": string; + "rs": string; + "raml": string; + "xaml": string; + "prefs": string; + "hs": string; + "kt": string; + "project": string; + "patch": string; + "dockerfile": string; + "vb": string; + "lua": string; + "clj": string; + "groovy": string; + "r": string; + "rst": string; + "dart": string; + "as": string; + "mxml": string; + "ahk": string; + "swf": string; + "swc": string; + "cmake": string; + "asm": string; + "a51": string; + "inc": string; + "nasm": string; + "s": string; + "ms": string; + "agc": string; + "ags": string; + "aea": string; + "argus": string; + "mitigus": string; + "binsource": string; + "vue": string; + "ml": string; + "mli": string; + "cmx": string; + "js.map": string; + "css.map": string; + "tmTheme": string; + "pp": string; + "applescript": string; + "haml": string }; + "fileNames": + { "gruntfile.js": string; + "bower.json": string; + ".bowerrc": string; + "webpack.js": string; + "webpack.config.js": string; + "webpack.dev.js": string; + "webpack.prod.js": string; + "webpack.common.js": string; + "webpackfile.js": string; + "ionic.config.json": string; + ".io-config.json": string; + "gulpfile.js": string; + "gulpfile.babel.js": string; + "package.json": string; + "gradle.properties": string; + "gradlew": string; + ".jscsrc": string; + ".jshintrc": string; + ".jshintignore": string; + ".npmignore": string; + "tsconfig.json": string; + "tslint.json": string; + "androidmanifest.xml": string; + "gradle-wrapper.properties": string; + ".editorconfig": string; + "procfile": string; + ".env": string; + "dockerfile": string; + "license": string; + "license.md": string; + "license.md.rendered": string; + "license.txt": string; + ".babelrc": string; + ".eslintrc": string; + ".buildignore": string; + ".htaccess": string; + "composer.lock": string; + ".gitignore": string; + ".gitconfig": string; + ".gitattributes": string; + ".gitmodules": string; + ".gitkeep": string; + "yarn.lock": string; + ".yarnclean": string; + ".yarn-integrity": string; + "yarn-error.log": string; + "contributing.md": string; + "contributing.md.rendered": string; + "readme.md": string; + "readme.md.rendered": string; + ".mailmap": string; + "makefile": string; + "changelog": string; + "changelog.md": string; + "changelog.md.rendered": string; + "CREDITS": string; + "credits.txt": string; + "credits.md": string; + "credits.md.rendered": string; + ".flowconfig": string; + ".jsbeautifyrc": string; + "git-history": string; + "angular-cli.json": string; + "app.module.ts": string; + "favicon.ico": string }; + "file": string; + "folder": string; + "folderExpanded": string; + "languageIds": + { "git": string }; + "light": + { + "folderExpanded": string; + "folder": string; + "folderNames": + { "node_modules": string; + ".git": string; + ".github": string; + ".gulp": string; + "bower_components": string; + "build": string; + "dist": string }; + "folderNamesExpanded": + { "node_modules": string; + ".git": string; + ".github": string; + ".gulp": string; + "bower_components": string; + "build": string; + "dist": string } + }; + "folderNames": + { "node_modules": string; + ".git": string; + ".github": string; + ".gulp": string; + "bower_components": string; + "build": string; + "dist": string }; + "folderNamesExpanded": + { "node_modules": string; + ".git": string; + ".github": string; + ".gulp": string; + "bower_components": string; + "build": string; + "dist": string } +} diff --git a/extensions/material.theme.config.ts b/extensions/material.theme.config.ts new file mode 100644 index 0000000..a4a17ff --- /dev/null +++ b/extensions/material.theme.config.ts @@ -0,0 +1,49 @@ +import * as vscode from 'vscode'; + +import { IGenericObject } from "./interfaces/igeneric-object"; +import { THEME_ACCENTS_SETTER } from "./commands/accents-setter/index"; +import { THEME_VARIANT } from "./commands/theme-variant/index"; +import { shouldShowChangelog, showChangelog } from './helpers/changelog'; + +enum Commands { + ACCENTS, + CHANGELOG, + COLOUR_VARIANT +} + +const OPTIONS: IGenericObject = { + 'šŸ– Change accent color': Commands.ACCENTS, + 'šŸŽØ Change color variant': Commands.COLOUR_VARIANT, + 'šŸš§ Show changelog': Commands.CHANGELOG +} + +export function activate(context: vscode.ExtensionContext) { + if (vscode.workspace.getConfiguration().has('materialTheme.cache.workbench.accent')) { + vscode.workspace.getConfiguration().update('materialTheme.cache.workbench.accent', undefined, true); + } + + if (shouldShowChangelog()) { + showChangelog(); + } + + // registering the command + let command = vscode.commands.registerCommand('material.theme.config', () => { + // the user is going to choose what aspect of theme to config + vscode.window.showQuickPick(Object.keys(OPTIONS)).then(response => { + // switching selected option + switch(OPTIONS[response]) { + case Commands.ACCENTS: + THEME_ACCENTS_SETTER(); + break; + case Commands.CHANGELOG: + showChangelog(); + break; + case Commands.COLOUR_VARIANT: + THEME_VARIANT(); + break; + } + }); + }); + + context.subscriptions.push(command); +} diff --git a/gulpfile.babel.ts b/gulpfile.babel.ts new file mode 100644 index 0000000..40ab315 --- /dev/null +++ b/gulpfile.babel.ts @@ -0,0 +1,9 @@ +import * as Gulp from 'gulp'; +import * as GulpStats from 'gulp-stats'; +import * as tasks from './.gulp'; + +// Use gulp-stats +GulpStats(Gulp); + +// set default task +Gulp.task('default', tasks.default as any); \ No newline at end of file diff --git a/iconlist.json b/iconlist.json new file mode 100644 index 0000000..83ccbc5 --- /dev/null +++ b/iconlist.json @@ -0,0 +1,113 @@ +[ + "actionscript", + "ai", + "android", + "angular", + "arduino", + "assembly", + "autohotkey", + "bower", + "c-lang", + "certificate", + "changelog", + "clojure", + "cmake", + "cmd", + "coffee", + "console", + "contributing", + "cpp", + "credits", + "csharp", + "css-map", + "css", + "dart", + "database", + "dlang", + "docker", + "document", + "email", + "exe", + "favicon", + "file", + "flash", + "flow", + "folder-light", + "folder-outline", + "folder", + "font", + "fsharp", + "git", + "github", + "gopher", + "gradle", + "groovy", + "grunt", + "gulp", + "haskell", + "html", + "image", + "ionic", + "java", + "javascript-map", + "js", + "json", + "key", + "kotlin", + "less", + "lib", + "license", + "lua", + "markdown", + "markup", + "movie", + "music", + "mustache", + "mxml", + "nodejs", + "npm", + "ocaml", + "pdf", + "php", + "polymer", + "postcss", + "powerpoint", + "procfile", + "pug", + "python", + "r", + "rails", + "raml", + "react", + "readme", + "ruby", + "rust", + "sass", + "settings", + "sketch", + "star", + "stylus", + "sublime", + "svg", + "swc", + "swift", + "swig", + "table", + "tex", + "todo", + "tune", + "twig", + "typescript", + "typescript_def", + "url", + "virtual", + "visualstudio", + "vue", + "webpack", + "word", + "xaml", + "xml", + "yaml", + "yarn", + "zip" +] \ No newline at end of file diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c30b64f62e9fc4787a2964654901db77b78cf6cd GIT binary patch literal 268646 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 $rcoa6n}TPab&PRp=jL(b5C8BFPk!2G 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ÿ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 themes/Material-Theme-Icons.json && yarn remove-icons-tmp", + "remove-icons": "rimraf icons/* && rimraf themes/Material-Theme-Icons.json", + "remove-icons-tmp": "rimraf themes/.material-theme-icons.tmp", + "build-icons": "yarn remove-icons && yarn minimize-icons && yarn gulp build:icons && yarn minimize-json", + "build-icons-accents": "yarn gulp build:icons.accents", + "build-icons-variants": "yarn gulp build:icons.variants", + "build-themes": "yarn gulp build:themes", + "release": "standard-version", + "postinstall": "node ./node_modules/vscode/bin/install && opencollective postinstall" + }, + "categories": [ + "Themes", + "Other" + ], + "activationEvents": [ + "*" + ], + "main": "./extensions/material.theme.config.js", + "contributes": { + "commands": [ + { + "category": "šŸŽØ Material theme", + "command": "material.theme.config", + "title": "Settings" + } + ], + "configuration": { + "properties": { + "materialTheme.cache.workbench.accent": { + "type": "string", + "title": "[DEPRECATED] This is an old property.", + "description": "This property is intended only for migrating old settings system to a new one. It will be removed in new versions. Don't use it, use \"materialTheme.cache.workbench.settings\" instead." + }, + "materialTheme.cache.workbench.settings": { + "default": {}, + "type": "object", + "title": "Custom material theme settings", + "description": "Material theme settings object." + } + } + }, + "themes": [ + { + "label": "Material Theme", + "path": "./themes/Material-Theme-Palenight.json", + "uiTheme": "vs-dark" + } + ], + "iconThemes": [ + { + "id": "eq-material-theme-icons", + "label": "Material Theme Icons", + "path": "./themes/Material-Theme-Icons.json" + } + ] + }, + "badges": [ + { + "url": "https://camo.githubusercontent.com/d3c6e53aa66426dead24cdedab0e83082103bea6/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f657175696e75736f63696f2f7673632d6d6174657269616c2d7468656d652e7376673f7374796c653d666c61742d737175617265", + "href": "https://github.com/equinusocio/vsc-material-theme/issues", + "description": "Open issues" + } + ], + "devDependencies": { + "@types/chalk": "2.2.0", + "@types/gulp": "4.0.5", + "@types/gulp-if": "0.0.33", + "@types/gulp-util": "3.0.34", + "@types/mustache": "0.8.30", + "@types/run-sequence": "0.0.30", + "@types/through2": "2.0.33", + "@types/yamljs": "0.2.30", + "@types/yargs": "10.0.1", + "babel-core": "6.26.0", + "babel-preset-es2015": "6.24.1", + "babel-root-import": "4.1.8", + "cpx": "1.5.0", + "eslint": "4.17.0", + "eslint-plugin-standard": "3.0.1", + "gulp": "3.9.1", + "gulp-bump": "3.1.0", + "gulp-conventional-changelog": "1.1.11", + "gulp-if": "2.0.2", + "gulp-stats": "0.0.4", + "gulp-util": "3.0.8", + "json-minify": "1.0.0", + "mustache": "2.3.0", + "rimraf": "2.6.2", + "run-sequence": "2.2.1", + "standard-version": "4.3.0", + "svgo": "1.0.4", + "typescript": "2.7.1", + "vscode": "1.1.10", + "yamljs": "0.3.0", + "yargs": "11.0.0" + }, + "__metadata": { + "id": "dffaf5a1-2219-434b-9d87-cb586fd59260", + "publisherDisplayName": "Mattia Astorino", + "publisherId": "e41388a1-a892-4c1e-940b-1e7c1bf43c97" + }, + "dependencies": { + "opencollective": "1.0.3" + }, + "collective": { + "type": "opencollective", + "url": "https://opencollective.com/vsc-material-theme", + "logo": "https://opencollective.com/opencollective/logo.txt" + } +} diff --git a/src/icons/icons-theme.json b/src/icons/icons-theme.json new file mode 100644 index 0000000..398bcc1 --- /dev/null +++ b/src/icons/icons-theme.json @@ -0,0 +1,10 @@ +{ + "hidesExplorerArrows": true, + {{> iconDefinitions}} + {{> fileExtensions}} + {{> fileNames}} + {{> fileFolders}} + {{> languageIds}} + {{> light}} + {{> folderNames}} +} diff --git a/src/icons/svgs/actionscript.svg b/src/icons/svgs/actionscript.svg new file mode 100755 index 0000000..d1a6d21 --- /dev/null +++ b/src/icons/svgs/actionscript.svg @@ -0,0 +1,89 @@ + + + + + + image/svg+xml + + + + + + + + { } + AS + diff --git a/src/icons/svgs/ai.svg b/src/icons/svgs/ai.svg new file mode 100644 index 0000000..dcad0f0 --- /dev/null +++ b/src/icons/svgs/ai.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/android.svg b/src/icons/svgs/android.svg new file mode 100755 index 0000000..9dc23cc --- /dev/null +++ b/src/icons/svgs/android.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/angular.svg b/src/icons/svgs/angular.svg new file mode 100755 index 0000000..d48359e --- /dev/null +++ b/src/icons/svgs/angular.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/applescript.svg b/src/icons/svgs/applescript.svg new file mode 100644 index 0000000..33a08db --- /dev/null +++ b/src/icons/svgs/applescript.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/arduino.svg b/src/icons/svgs/arduino.svg new file mode 100755 index 0000000..5d0136f --- /dev/null +++ b/src/icons/svgs/arduino.svg @@ -0,0 +1 @@ +Layer 1 \ No newline at end of file diff --git a/src/icons/svgs/assembly.svg b/src/icons/svgs/assembly.svg new file mode 100755 index 0000000..13ffa1b --- /dev/null +++ b/src/icons/svgs/assembly.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/autohotkey.svg b/src/icons/svgs/autohotkey.svg new file mode 100755 index 0000000..2d30b20 --- /dev/null +++ b/src/icons/svgs/autohotkey.svg @@ -0,0 +1,55 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/icons/svgs/babel.svg b/src/icons/svgs/babel.svg new file mode 100644 index 0000000..95cbb6e --- /dev/null +++ b/src/icons/svgs/babel.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/blade.svg b/src/icons/svgs/blade.svg new file mode 100644 index 0000000..f2e83f9 --- /dev/null +++ b/src/icons/svgs/blade.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/icons/svgs/bower.svg b/src/icons/svgs/bower.svg new file mode 100644 index 0000000..9fb2327 --- /dev/null +++ b/src/icons/svgs/bower.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/c.svg b/src/icons/svgs/c.svg new file mode 100644 index 0000000..f088643 --- /dev/null +++ b/src/icons/svgs/c.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/certificate.svg b/src/icons/svgs/certificate.svg new file mode 100755 index 0000000..b755e35 --- /dev/null +++ b/src/icons/svgs/certificate.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/changelog.svg b/src/icons/svgs/changelog.svg new file mode 100755 index 0000000..18cbc87 --- /dev/null +++ b/src/icons/svgs/changelog.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/clojure.svg b/src/icons/svgs/clojure.svg new file mode 100755 index 0000000..ebd6dda --- /dev/null +++ b/src/icons/svgs/clojure.svg @@ -0,0 +1,57 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/icons/svgs/cmake.svg b/src/icons/svgs/cmake.svg new file mode 100755 index 0000000..d03a99b --- /dev/null +++ b/src/icons/svgs/cmake.svg @@ -0,0 +1,65 @@ + + + + + + image/svg+xml + + + + + + + + + + diff --git a/src/icons/svgs/cmd.svg b/src/icons/svgs/cmd.svg new file mode 100644 index 0000000..70d3207 --- /dev/null +++ b/src/icons/svgs/cmd.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/coffee.svg b/src/icons/svgs/coffee.svg new file mode 100755 index 0000000..9495cef --- /dev/null +++ b/src/icons/svgs/coffee.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/console.svg b/src/icons/svgs/console.svg new file mode 100755 index 0000000..05e0344 --- /dev/null +++ b/src/icons/svgs/console.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/contributing.svg b/src/icons/svgs/contributing.svg new file mode 100755 index 0000000..02e92f6 --- /dev/null +++ b/src/icons/svgs/contributing.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/cpp.svg b/src/icons/svgs/cpp.svg new file mode 100755 index 0000000..1395b2e --- /dev/null +++ b/src/icons/svgs/cpp.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/icons/svgs/credits.svg b/src/icons/svgs/credits.svg new file mode 100755 index 0000000..d648b6e --- /dev/null +++ b/src/icons/svgs/credits.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/csharp.svg b/src/icons/svgs/csharp.svg new file mode 100755 index 0000000..b9202af --- /dev/null +++ b/src/icons/svgs/csharp.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/css-map.svg b/src/icons/svgs/css-map.svg new file mode 100755 index 0000000..05e3ecf --- /dev/null +++ b/src/icons/svgs/css-map.svg @@ -0,0 +1,60 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/icons/svgs/css.svg b/src/icons/svgs/css.svg new file mode 100755 index 0000000..ae3dfa5 --- /dev/null +++ b/src/icons/svgs/css.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/dart.svg b/src/icons/svgs/dart.svg new file mode 100755 index 0000000..92a3329 --- /dev/null +++ b/src/icons/svgs/dart.svg @@ -0,0 +1,86 @@ + + + Dart + + + + image/svg+xml + + Dart + + + + Philipp Kief + + + + + + + + + + + + + + + + + diff --git a/src/icons/svgs/database.svg b/src/icons/svgs/database.svg new file mode 100755 index 0000000..afaa27c --- /dev/null +++ b/src/icons/svgs/database.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/dlang.svg b/src/icons/svgs/dlang.svg new file mode 100644 index 0000000..40b13c6 --- /dev/null +++ b/src/icons/svgs/dlang.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/docker.svg b/src/icons/svgs/docker.svg new file mode 100644 index 0000000..5fe5f0f --- /dev/null +++ b/src/icons/svgs/docker.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/icons/svgs/document.svg b/src/icons/svgs/document.svg new file mode 100755 index 0000000..aa62b2b --- /dev/null +++ b/src/icons/svgs/document.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/dotnet.svg b/src/icons/svgs/dotnet.svg new file mode 100644 index 0000000..d31b3fc --- /dev/null +++ b/src/icons/svgs/dotnet.svg @@ -0,0 +1,12 @@ + + + + dotnet + Created with Sketch. + + + + + + + \ No newline at end of file diff --git a/src/icons/svgs/email.svg b/src/icons/svgs/email.svg new file mode 100755 index 0000000..244fbe6 --- /dev/null +++ b/src/icons/svgs/email.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/eslint.svg b/src/icons/svgs/eslint.svg new file mode 100644 index 0000000..2696c8f --- /dev/null +++ b/src/icons/svgs/eslint.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/icons/svgs/ex.svg b/src/icons/svgs/ex.svg new file mode 100644 index 0000000..ffe7bef --- /dev/null +++ b/src/icons/svgs/ex.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/exe.svg b/src/icons/svgs/exe.svg new file mode 100755 index 0000000..870667c --- /dev/null +++ b/src/icons/svgs/exe.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/favicon.svg b/src/icons/svgs/favicon.svg new file mode 100755 index 0000000..c78b83d --- /dev/null +++ b/src/icons/svgs/favicon.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/file_dark.svg b/src/icons/svgs/file_dark.svg new file mode 100755 index 0000000..2232f80 --- /dev/null +++ b/src/icons/svgs/file_dark.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/flash.svg b/src/icons/svgs/flash.svg new file mode 100755 index 0000000..1d192ae --- /dev/null +++ b/src/icons/svgs/flash.svg @@ -0,0 +1,90 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/src/icons/svgs/flow.svg b/src/icons/svgs/flow.svg new file mode 100755 index 0000000..a3a96ff --- /dev/null +++ b/src/icons/svgs/flow.svg @@ -0,0 +1,65 @@ + + + + + + image/svg+xml + + + + + + + + F + diff --git a/src/icons/svgs/folder_assets.svg b/src/icons/svgs/folder_assets.svg new file mode 100644 index 0000000..d03adf3 --- /dev/null +++ b/src/icons/svgs/folder_assets.svg @@ -0,0 +1 @@ +folder_assets \ No newline at end of file diff --git a/src/icons/svgs/folder_assets_open.svg b/src/icons/svgs/folder_assets_open.svg new file mode 100644 index 0000000..63071b9 --- /dev/null +++ b/src/icons/svgs/folder_assets_open.svg @@ -0,0 +1 @@ +folder_assets_open \ No newline at end of file diff --git a/src/icons/svgs/folder_bower.svg b/src/icons/svgs/folder_bower.svg new file mode 100644 index 0000000..fc3e493 --- /dev/null +++ b/src/icons/svgs/folder_bower.svg @@ -0,0 +1 @@ +folder_bower \ No newline at end of file diff --git a/src/icons/svgs/folder_bower_open.svg b/src/icons/svgs/folder_bower_open.svg new file mode 100644 index 0000000..ecab30a --- /dev/null +++ b/src/icons/svgs/folder_bower_open.svg @@ -0,0 +1 @@ +folder_bower_open \ No newline at end of file diff --git a/src/icons/svgs/folder_ci.svg b/src/icons/svgs/folder_ci.svg new file mode 100644 index 0000000..3f1a7d1 --- /dev/null +++ b/src/icons/svgs/folder_ci.svg @@ -0,0 +1 @@ +folder_ci \ No newline at end of file diff --git a/src/icons/svgs/folder_ci_open.svg b/src/icons/svgs/folder_ci_open.svg new file mode 100644 index 0000000..3903ad8 --- /dev/null +++ b/src/icons/svgs/folder_ci_open.svg @@ -0,0 +1 @@ +folder_ci_open \ No newline at end of file diff --git a/src/icons/svgs/folder_dark.svg b/src/icons/svgs/folder_dark.svg new file mode 100644 index 0000000..9aa8535 --- /dev/null +++ b/src/icons/svgs/folder_dark.svg @@ -0,0 +1,10 @@ + + + + + + diff --git a/src/icons/svgs/folder_dark_build.svg b/src/icons/svgs/folder_dark_build.svg new file mode 100644 index 0000000..e894e15 --- /dev/null +++ b/src/icons/svgs/folder_dark_build.svg @@ -0,0 +1,15 @@ + + + + + + + + + diff --git a/src/icons/svgs/folder_dist.svg b/src/icons/svgs/folder_dist.svg new file mode 100644 index 0000000..a0537bd --- /dev/null +++ b/src/icons/svgs/folder_dist.svg @@ -0,0 +1 @@ +folder_dist \ No newline at end of file diff --git a/src/icons/svgs/folder_dist_open.svg b/src/icons/svgs/folder_dist_open.svg new file mode 100644 index 0000000..73a06ca --- /dev/null +++ b/src/icons/svgs/folder_dist_open.svg @@ -0,0 +1 @@ +folder_dist_open \ No newline at end of file diff --git a/src/icons/svgs/folder_git.svg b/src/icons/svgs/folder_git.svg new file mode 100644 index 0000000..28b1656 --- /dev/null +++ b/src/icons/svgs/folder_git.svg @@ -0,0 +1 @@ +folder_git \ No newline at end of file diff --git a/src/icons/svgs/folder_git_open.svg b/src/icons/svgs/folder_git_open.svg new file mode 100644 index 0000000..891e7d1 --- /dev/null +++ b/src/icons/svgs/folder_git_open.svg @@ -0,0 +1 @@ +folder_git_open \ No newline at end of file diff --git a/src/icons/svgs/folder_github.svg b/src/icons/svgs/folder_github.svg new file mode 100644 index 0000000..54fa0e2 --- /dev/null +++ b/src/icons/svgs/folder_github.svg @@ -0,0 +1 @@ +folder_github \ No newline at end of file diff --git a/src/icons/svgs/folder_github_open.svg b/src/icons/svgs/folder_github_open.svg new file mode 100644 index 0000000..cb0cfa7 --- /dev/null +++ b/src/icons/svgs/folder_github_open.svg @@ -0,0 +1 @@ +folder_github_open \ No newline at end of file diff --git a/src/icons/svgs/folder_gulp.svg b/src/icons/svgs/folder_gulp.svg new file mode 100644 index 0000000..c8c1f9f --- /dev/null +++ b/src/icons/svgs/folder_gulp.svg @@ -0,0 +1 @@ +folder_gulp \ No newline at end of file diff --git a/src/icons/svgs/folder_gulp_open.svg b/src/icons/svgs/folder_gulp_open.svg new file mode 100644 index 0000000..0d0b9cc --- /dev/null +++ b/src/icons/svgs/folder_gulp_open.svg @@ -0,0 +1 @@ +folder_gulp_open \ No newline at end of file diff --git a/src/icons/svgs/folder_images.svg b/src/icons/svgs/folder_images.svg new file mode 100644 index 0000000..e8bbe6e --- /dev/null +++ b/src/icons/svgs/folder_images.svg @@ -0,0 +1 @@ +folder_images \ No newline at end of file diff --git a/src/icons/svgs/folder_images_open.svg b/src/icons/svgs/folder_images_open.svg new file mode 100644 index 0000000..750b88c --- /dev/null +++ b/src/icons/svgs/folder_images_open.svg @@ -0,0 +1 @@ +folder_images_open \ No newline at end of file diff --git a/src/icons/svgs/folder_js.svg b/src/icons/svgs/folder_js.svg new file mode 100644 index 0000000..6c4c01d --- /dev/null +++ b/src/icons/svgs/folder_js.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svgs/folder_js_open.svg b/src/icons/svgs/folder_js_open.svg new file mode 100644 index 0000000..a4d7ef4 --- /dev/null +++ b/src/icons/svgs/folder_js_open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svgs/folder_light.svg b/src/icons/svgs/folder_light.svg new file mode 100644 index 0000000..54846de --- /dev/null +++ b/src/icons/svgs/folder_light.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/folder_light_build.svg b/src/icons/svgs/folder_light_build.svg new file mode 100644 index 0000000..3cd3446 --- /dev/null +++ b/src/icons/svgs/folder_light_build.svg @@ -0,0 +1,13 @@ + + + + + + + diff --git a/src/icons/svgs/folder_node.svg b/src/icons/svgs/folder_node.svg new file mode 100644 index 0000000..72e6791 --- /dev/null +++ b/src/icons/svgs/folder_node.svg @@ -0,0 +1 @@ +folder_node \ No newline at end of file diff --git a/src/icons/svgs/folder_node_open.svg b/src/icons/svgs/folder_node_open.svg new file mode 100644 index 0000000..4e72e2f --- /dev/null +++ b/src/icons/svgs/folder_node_open.svg @@ -0,0 +1 @@ +folder_node_open \ No newline at end of file diff --git a/src/icons/svgs/folder_open.svg b/src/icons/svgs/folder_open.svg new file mode 100644 index 0000000..a59c192 --- /dev/null +++ b/src/icons/svgs/folder_open.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/folder_open_build.svg b/src/icons/svgs/folder_open_build.svg new file mode 100644 index 0000000..e7e86f4 --- /dev/null +++ b/src/icons/svgs/folder_open_build.svg @@ -0,0 +1,16 @@ + + + + + + + + + diff --git a/src/icons/svgs/folder_src.svg b/src/icons/svgs/folder_src.svg new file mode 100644 index 0000000..c9f63e1 --- /dev/null +++ b/src/icons/svgs/folder_src.svg @@ -0,0 +1 @@ +folder_src \ No newline at end of file diff --git a/src/icons/svgs/folder_src_open.svg b/src/icons/svgs/folder_src_open.svg new file mode 100644 index 0000000..0c8d18d --- /dev/null +++ b/src/icons/svgs/folder_src_open.svg @@ -0,0 +1 @@ +folder_src_open \ No newline at end of file diff --git a/src/icons/svgs/folder_test.svg b/src/icons/svgs/folder_test.svg new file mode 100644 index 0000000..6eac173 --- /dev/null +++ b/src/icons/svgs/folder_test.svg @@ -0,0 +1 @@ +folder_test \ No newline at end of file diff --git a/src/icons/svgs/folder_test_open.svg b/src/icons/svgs/folder_test_open.svg new file mode 100644 index 0000000..33163af --- /dev/null +++ b/src/icons/svgs/folder_test_open.svg @@ -0,0 +1 @@ +folder_test_open \ No newline at end of file diff --git a/src/icons/svgs/folder_vscode.svg b/src/icons/svgs/folder_vscode.svg new file mode 100644 index 0000000..99cca82 --- /dev/null +++ b/src/icons/svgs/folder_vscode.svg @@ -0,0 +1 @@ +folder_vscode \ No newline at end of file diff --git a/src/icons/svgs/folder_vscode_open.svg b/src/icons/svgs/folder_vscode_open.svg new file mode 100644 index 0000000..3beefea --- /dev/null +++ b/src/icons/svgs/folder_vscode_open.svg @@ -0,0 +1 @@ +folder_vscode_open \ No newline at end of file diff --git a/src/icons/svgs/font.svg b/src/icons/svgs/font.svg new file mode 100755 index 0000000..f7803b0 --- /dev/null +++ b/src/icons/svgs/font.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/fsharp.svg b/src/icons/svgs/fsharp.svg new file mode 100755 index 0000000..91ff767 --- /dev/null +++ b/src/icons/svgs/fsharp.svg @@ -0,0 +1,216 @@ + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/icons/svgs/git.svg b/src/icons/svgs/git.svg new file mode 100755 index 0000000..89a4c3c --- /dev/null +++ b/src/icons/svgs/git.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/github.svg b/src/icons/svgs/github.svg new file mode 100644 index 0000000..6edfae5 --- /dev/null +++ b/src/icons/svgs/github.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/gitlab.svg b/src/icons/svgs/gitlab.svg new file mode 100644 index 0000000..97835c6 --- /dev/null +++ b/src/icons/svgs/gitlab.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/icons/svgs/go.svg b/src/icons/svgs/go.svg new file mode 100644 index 0000000..2e1a0d0 --- /dev/null +++ b/src/icons/svgs/go.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/gopher.svg b/src/icons/svgs/gopher.svg new file mode 100755 index 0000000..fc0694c --- /dev/null +++ b/src/icons/svgs/gopher.svg @@ -0,0 +1,167 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/icons/svgs/gradle.svg b/src/icons/svgs/gradle.svg new file mode 100755 index 0000000..d4bc84b --- /dev/null +++ b/src/icons/svgs/gradle.svg @@ -0,0 +1,439 @@ + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/icons/svgs/graphql.svg b/src/icons/svgs/graphql.svg new file mode 100644 index 0000000..8df1b04 --- /dev/null +++ b/src/icons/svgs/graphql.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/icons/svgs/groovy.svg b/src/icons/svgs/groovy.svg new file mode 100755 index 0000000..3e71e81 --- /dev/null +++ b/src/icons/svgs/groovy.svg @@ -0,0 +1,57 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/icons/svgs/grunt.svg b/src/icons/svgs/grunt.svg new file mode 100644 index 0000000..94a8442 --- /dev/null +++ b/src/icons/svgs/grunt.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/gulp.svg b/src/icons/svgs/gulp.svg new file mode 100755 index 0000000..eb07242 --- /dev/null +++ b/src/icons/svgs/gulp.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/haml.svg b/src/icons/svgs/haml.svg new file mode 100644 index 0000000..aa23f66 --- /dev/null +++ b/src/icons/svgs/haml.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/icons/svgs/haskell.svg b/src/icons/svgs/haskell.svg new file mode 100755 index 0000000..33aef54 --- /dev/null +++ b/src/icons/svgs/haskell.svg @@ -0,0 +1,75 @@ + + + + + + image/svg+xml + + + + + + + + y + + + diff --git a/src/icons/svgs/html.svg b/src/icons/svgs/html.svg new file mode 100755 index 0000000..a73de36 --- /dev/null +++ b/src/icons/svgs/html.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/image.svg b/src/icons/svgs/image.svg new file mode 100755 index 0000000..c37763f --- /dev/null +++ b/src/icons/svgs/image.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/ionic.svg b/src/icons/svgs/ionic.svg new file mode 100755 index 0000000..d808a7e --- /dev/null +++ b/src/icons/svgs/ionic.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/icons/svgs/java.svg b/src/icons/svgs/java.svg new file mode 100755 index 0000000..c3187c6 --- /dev/null +++ b/src/icons/svgs/java.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/javascript-map.svg b/src/icons/svgs/javascript-map.svg new file mode 100755 index 0000000..4be7d30 --- /dev/null +++ b/src/icons/svgs/javascript-map.svg @@ -0,0 +1,59 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/icons/svgs/js.svg b/src/icons/svgs/js.svg new file mode 100644 index 0000000..5496e57 --- /dev/null +++ b/src/icons/svgs/js.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/json.svg b/src/icons/svgs/json.svg new file mode 100755 index 0000000..3390382 --- /dev/null +++ b/src/icons/svgs/json.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/icons/svgs/key.svg b/src/icons/svgs/key.svg new file mode 100755 index 0000000..b064be4 --- /dev/null +++ b/src/icons/svgs/key.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/kotlin.svg b/src/icons/svgs/kotlin.svg new file mode 100755 index 0000000..6555b58 --- /dev/null +++ b/src/icons/svgs/kotlin.svg @@ -0,0 +1,108 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + diff --git a/src/icons/svgs/less.svg b/src/icons/svgs/less.svg new file mode 100644 index 0000000..3fbe602 --- /dev/null +++ b/src/icons/svgs/less.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/lib.svg b/src/icons/svgs/lib.svg new file mode 100755 index 0000000..83f2b8d --- /dev/null +++ b/src/icons/svgs/lib.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/license.svg b/src/icons/svgs/license.svg new file mode 100644 index 0000000..56f79ca --- /dev/null +++ b/src/icons/svgs/license.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/lua.svg b/src/icons/svgs/lua.svg new file mode 100755 index 0000000..f460949 --- /dev/null +++ b/src/icons/svgs/lua.svg @@ -0,0 +1,70 @@ + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/src/icons/svgs/markdown.svg b/src/icons/svgs/markdown.svg new file mode 100755 index 0000000..18cdeaf --- /dev/null +++ b/src/icons/svgs/markdown.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/markup.svg b/src/icons/svgs/markup.svg new file mode 100644 index 0000000..25ac918 --- /dev/null +++ b/src/icons/svgs/markup.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/icons/svgs/movie.svg b/src/icons/svgs/movie.svg new file mode 100755 index 0000000..8812c84 --- /dev/null +++ b/src/icons/svgs/movie.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/music.svg b/src/icons/svgs/music.svg new file mode 100755 index 0000000..f01eb9a --- /dev/null +++ b/src/icons/svgs/music.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/mustache.svg b/src/icons/svgs/mustache.svg new file mode 100644 index 0000000..e4c9d3e --- /dev/null +++ b/src/icons/svgs/mustache.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/mxml.svg b/src/icons/svgs/mxml.svg new file mode 100755 index 0000000..4c57bb0 --- /dev/null +++ b/src/icons/svgs/mxml.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/node.svg b/src/icons/svgs/node.svg new file mode 100644 index 0000000..7a3f96d --- /dev/null +++ b/src/icons/svgs/node.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/nodejs.svg b/src/icons/svgs/nodejs.svg new file mode 100644 index 0000000..c8cd6a0 --- /dev/null +++ b/src/icons/svgs/nodejs.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/npm.svg b/src/icons/svgs/npm.svg new file mode 100644 index 0000000..dcedb81 --- /dev/null +++ b/src/icons/svgs/npm.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/ocaml.svg b/src/icons/svgs/ocaml.svg new file mode 100755 index 0000000..12c4dd4 --- /dev/null +++ b/src/icons/svgs/ocaml.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/package-lock.svg b/src/icons/svgs/package-lock.svg new file mode 100644 index 0000000..bd442cb --- /dev/null +++ b/src/icons/svgs/package-lock.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/icons/svgs/pdf.svg b/src/icons/svgs/pdf.svg new file mode 100755 index 0000000..89a2e80 --- /dev/null +++ b/src/icons/svgs/pdf.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/php.svg b/src/icons/svgs/php.svg new file mode 100755 index 0000000..8af9132 --- /dev/null +++ b/src/icons/svgs/php.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/polymer.svg b/src/icons/svgs/polymer.svg new file mode 100644 index 0000000..e6db669 --- /dev/null +++ b/src/icons/svgs/polymer.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/icons/svgs/postcss.svg b/src/icons/svgs/postcss.svg new file mode 100644 index 0000000..f9b3012 --- /dev/null +++ b/src/icons/svgs/postcss.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/powerpoint.svg b/src/icons/svgs/powerpoint.svg new file mode 100755 index 0000000..4de60cc --- /dev/null +++ b/src/icons/svgs/powerpoint.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/pp.svg b/src/icons/svgs/pp.svg new file mode 100644 index 0000000..46152e1 --- /dev/null +++ b/src/icons/svgs/pp.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/icons/svgs/procfile.svg b/src/icons/svgs/procfile.svg new file mode 100644 index 0000000..d0cc0fe --- /dev/null +++ b/src/icons/svgs/procfile.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/pug.svg b/src/icons/svgs/pug.svg new file mode 100755 index 0000000..8dfa46a --- /dev/null +++ b/src/icons/svgs/pug.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/icons/svgs/python.svg b/src/icons/svgs/python.svg new file mode 100755 index 0000000..5643e9c --- /dev/null +++ b/src/icons/svgs/python.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/r.svg b/src/icons/svgs/r.svg new file mode 100755 index 0000000..796bf62 --- /dev/null +++ b/src/icons/svgs/r.svg @@ -0,0 +1,58 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/icons/svgs/rails.svg b/src/icons/svgs/rails.svg new file mode 100644 index 0000000..37f1b6f --- /dev/null +++ b/src/icons/svgs/rails.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/raml.svg b/src/icons/svgs/raml.svg new file mode 100755 index 0000000..30d0b9b --- /dev/null +++ b/src/icons/svgs/raml.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/react.svg b/src/icons/svgs/react.svg new file mode 100755 index 0000000..95fdef4 --- /dev/null +++ b/src/icons/svgs/react.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/readme.svg b/src/icons/svgs/readme.svg new file mode 100755 index 0000000..2836de7 --- /dev/null +++ b/src/icons/svgs/readme.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/reason.svg b/src/icons/svgs/reason.svg new file mode 100644 index 0000000..48239c6 --- /dev/null +++ b/src/icons/svgs/reason.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/icons/svgs/rollup.svg b/src/icons/svgs/rollup.svg new file mode 100644 index 0000000..0fdb662 --- /dev/null +++ b/src/icons/svgs/rollup.svg @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/icons/svgs/ruby.svg b/src/icons/svgs/ruby.svg new file mode 100755 index 0000000..e91a776 --- /dev/null +++ b/src/icons/svgs/ruby.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/icons/svgs/rust.svg b/src/icons/svgs/rust.svg new file mode 100755 index 0000000..002dcdc --- /dev/null +++ b/src/icons/svgs/rust.svg @@ -0,0 +1,80 @@ + + + + + + image/svg+xml + + + + + + + + + + R + + + diff --git a/src/icons/svgs/sass.svg b/src/icons/svgs/sass.svg new file mode 100755 index 0000000..4e448be --- /dev/null +++ b/src/icons/svgs/sass.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/scala.svg b/src/icons/svgs/scala.svg new file mode 100644 index 0000000..16377cc --- /dev/null +++ b/src/icons/svgs/scala.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/settings.svg b/src/icons/svgs/settings.svg new file mode 100755 index 0000000..9cb4121 --- /dev/null +++ b/src/icons/svgs/settings.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/sketch.svg b/src/icons/svgs/sketch.svg new file mode 100644 index 0000000..61b3083 --- /dev/null +++ b/src/icons/svgs/sketch.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/src/icons/svgs/star.svg b/src/icons/svgs/star.svg new file mode 100755 index 0000000..ab4fcad --- /dev/null +++ b/src/icons/svgs/star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/svgs/stylelint.svg b/src/icons/svgs/stylelint.svg new file mode 100644 index 0000000..0900563 --- /dev/null +++ b/src/icons/svgs/stylelint.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/icons/svgs/stylus.svg b/src/icons/svgs/stylus.svg new file mode 100644 index 0000000..5ff74bf --- /dev/null +++ b/src/icons/svgs/stylus.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/icons/svgs/sublime.svg b/src/icons/svgs/sublime.svg new file mode 100644 index 0000000..8a9d10f --- /dev/null +++ b/src/icons/svgs/sublime.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/svg.svg b/src/icons/svgs/svg.svg new file mode 100644 index 0000000..dd0f1e0 --- /dev/null +++ b/src/icons/svgs/svg.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/src/icons/svgs/swc.svg b/src/icons/svgs/swc.svg new file mode 100755 index 0000000..1992020 --- /dev/null +++ b/src/icons/svgs/swc.svg @@ -0,0 +1,82 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/src/icons/svgs/swift.svg b/src/icons/svgs/swift.svg new file mode 100755 index 0000000..ff72dcd --- /dev/null +++ b/src/icons/svgs/swift.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/swig.svg b/src/icons/svgs/swig.svg new file mode 100644 index 0000000..5e20edf --- /dev/null +++ b/src/icons/svgs/swig.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/table.svg b/src/icons/svgs/table.svg new file mode 100755 index 0000000..180c0ed --- /dev/null +++ b/src/icons/svgs/table.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/tex.svg b/src/icons/svgs/tex.svg new file mode 100755 index 0000000..4739d69 --- /dev/null +++ b/src/icons/svgs/tex.svg @@ -0,0 +1,93 @@ + +image/svg+xml + + + + T +E +X + + \ No newline at end of file diff --git a/src/icons/svgs/todo.svg b/src/icons/svgs/todo.svg new file mode 100644 index 0000000..515e729 --- /dev/null +++ b/src/icons/svgs/todo.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/tune.svg b/src/icons/svgs/tune.svg new file mode 100755 index 0000000..27ca8a3 --- /dev/null +++ b/src/icons/svgs/tune.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/icons/svgs/twig.svg b/src/icons/svgs/twig.svg new file mode 100644 index 0000000..175242c --- /dev/null +++ b/src/icons/svgs/twig.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/typescript.svg b/src/icons/svgs/typescript.svg new file mode 100755 index 0000000..67bfb63 --- /dev/null +++ b/src/icons/svgs/typescript.svg @@ -0,0 +1,57 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/typescript_def.svg b/src/icons/svgs/typescript_def.svg new file mode 100755 index 0000000..15f4410 --- /dev/null +++ b/src/icons/svgs/typescript_def.svg @@ -0,0 +1,72 @@ + + + + + + image/svg+xml + + + + + + + + + TS + + diff --git a/src/icons/svgs/url.svg b/src/icons/svgs/url.svg new file mode 100755 index 0000000..df17496 --- /dev/null +++ b/src/icons/svgs/url.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/virtual.svg b/src/icons/svgs/virtual.svg new file mode 100755 index 0000000..6b958b0 --- /dev/null +++ b/src/icons/svgs/virtual.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/visualstudio.svg b/src/icons/svgs/visualstudio.svg new file mode 100755 index 0000000..58674de --- /dev/null +++ b/src/icons/svgs/visualstudio.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/vue.svg b/src/icons/svgs/vue.svg new file mode 100755 index 0000000..c0b54ee --- /dev/null +++ b/src/icons/svgs/vue.svg @@ -0,0 +1,60 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/src/icons/svgs/webpack.svg b/src/icons/svgs/webpack.svg new file mode 100755 index 0000000..5d5ac7b --- /dev/null +++ b/src/icons/svgs/webpack.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/icons/svgs/word.svg b/src/icons/svgs/word.svg new file mode 100755 index 0000000..daa938b --- /dev/null +++ b/src/icons/svgs/word.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/xaml.svg b/src/icons/svgs/xaml.svg new file mode 100755 index 0000000..77a1808 --- /dev/null +++ b/src/icons/svgs/xaml.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/xml.svg b/src/icons/svgs/xml.svg new file mode 100755 index 0000000..bf2d3f2 --- /dev/null +++ b/src/icons/svgs/xml.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/src/icons/svgs/yaml.svg b/src/icons/svgs/yaml.svg new file mode 100755 index 0000000..e19a2b5 --- /dev/null +++ b/src/icons/svgs/yaml.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/yarn-lock.svg b/src/icons/svgs/yarn-lock.svg new file mode 100644 index 0000000..8f27189 --- /dev/null +++ b/src/icons/svgs/yarn-lock.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/icons/svgs/yarn.svg b/src/icons/svgs/yarn.svg new file mode 100755 index 0000000..aee195b --- /dev/null +++ b/src/icons/svgs/yarn.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/icons/svgs/zephyr.svg b/src/icons/svgs/zephyr.svg new file mode 100644 index 0000000..c113cdc --- /dev/null +++ b/src/icons/svgs/zephyr.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/icons/svgs/zip.svg b/src/icons/svgs/zip.svg new file mode 100755 index 0000000..c1cf4bc --- /dev/null +++ b/src/icons/svgs/zip.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/themes/settings/specific/darker-hc.json b/src/themes/settings/specific/darker-hc.json new file mode 100644 index 0000000..55e75ce --- /dev/null +++ b/src/themes/settings/specific/darker-hc.json @@ -0,0 +1,45 @@ +{ + "id": "material.theme.darker.hc", + "name": "Material-Theme-Darker-High-Contrast", + "type": "dark", + "scheme": { + "background": "#212121", + "backgroundAlt": "#1a1a1a", + "contrastBorder": "#000000", + "sidebarForeground": "#848484", + "scrollbars": "#00000070", + "comments": "#4A4A4A", + "caret": "#FFCC00", + "findHighlight": "#FFCC00", + "foreground": "#EEFFFF", + "focusBorder": "#FFFFFF", + "guides": "#42424270", + "lineNumbers": "#424242", + "invisibles": "#65737E", + "lineHighlight": "#000000", + "selection": "#61616150", + "shadow": "#00000030", + "inputBackground": "#FFFFFF05", + "inputForeground": "#EEFFFF", + "inputBorder": "#FFFFFF10", + "scrollbarsHover": "#00000030", + "statusbarForeground": "#616161", + "listHoverForeground": "#FFFFFF", + "tabActiveForeground": "#FFFFFF", + "base": { + "white": "#ffffff", + "black": "#000000", + "red": "#FF5370", + "orange": "#F78C6C", + "yellow": "#FFCB6B", + "green": "#C3E88D", + "cyan": "#89DDFF", + "blue": "#82AAFF", + "paleblue": "#B2CCD6", + "purple": "#C792EA", + "brown": "#C17E70", + "pink": "#f07178", + "violet": "#bb80b3" + } + } +} diff --git a/src/themes/settings/specific/darker.json b/src/themes/settings/specific/darker.json new file mode 100644 index 0000000..3ad4453 --- /dev/null +++ b/src/themes/settings/specific/darker.json @@ -0,0 +1,47 @@ +{ + "id": "material.theme.darker", + "name": "Material-Theme-Darker", + "type": "dark", + "scheme": { + "background": "#212121", + "backgroundAlt": "#212121", + "contrastBorder": "#212121", + "comments": "#4A4A4A", + "caret": "#FFCC00", + "findHighlight": "#FFCC00", + "foreground": "#EEFFFF", + "focusBorder": "#FFFFFF", + "guides": "#42424270", + "lineNumbers": "#424242", + "invisibles": "#65737E", + "lineHighlight": "#000000", + "selection": "#61616150", + "shadow": "#00000030", + "inputBackground": "#FFFFFF05", + "inputForeground": "#EEFFFF", + "inputBorder": "#FFFFFF10", + "scrollbars": "#00000050", + "scrollbarsHover": "#00000030", + "statusbarForeground": "#616161", + "sidebarBackground": "#212121", + "sidebarForeground": "#616161", + "listHoverForeground": "#FFFFFF", + "listHoverBackground": "#212121", + "tabActiveForeground": "#FFFFFF", + "base": { + "white": "#ffffff", + "black": "#000000", + "red": "#FF5370", + "orange": "#F78C6C", + "yellow": "#FFCB6B", + "green": "#C3E88D", + "cyan": "#89DDFF", + "blue": "#82AAFF", + "paleblue": "#B2CCD6", + "purple": "#C792EA", + "brown": "#C17E70", + "pink": "#f07178", + "violet": "#bb80b3" + } + } +} diff --git a/src/themes/settings/specific/default-hc.json b/src/themes/settings/specific/default-hc.json new file mode 100644 index 0000000..33ea46e --- /dev/null +++ b/src/themes/settings/specific/default-hc.json @@ -0,0 +1,47 @@ +{ + "id": "material.theme.default.hc", + "name": "Material-Theme-Default-High-Contrast", + "type": "dark", + "scheme": { + "background": "#263238", + "backgroundAlt": "#192227", + "contrastBorder": "#000000", + "scrollbars": "#00000070", + "sidebarForeground": "#5f7a87", + "comments": "#546E7A", + "caret": "#FFCC00", + "findHighlight": "#FFCC00", + "foreground": "#EEFFFF", + "focusBorder": "#FFFFFF", + "guides": "#37474F80", + "lineNumbers": "#37474F", + "invisibles": "#65737E", + "lineHighlight": "#000000", + "selection": "#80CBC420", + "shadow": "#00000030", + "inputBackground": "#FFFFFF05", + "inputForeground": "#EEFFFF", + "inputBorder": "#FFFFFF10", + "scrollbarsHover": "#00000030", + "statusbarForeground": "#546E7A", + "sidebarBackground": "#263238", + "listHoverForeground": "#FFFFFF", + "listHoverBackground": "#263238", + "tabActiveForeground": "#FFFFFF", + "base": { + "white": "#ffffff", + "black": "#000000", + "red": "#FF5370", + "orange": "#F78C6C", + "yellow": "#FFCB6B", + "green": "#C3E88D", + "cyan": "#89DDFF", + "blue": "#82AAFF", + "paleblue": "#B2CCD6", + "purple": "#C792EA", + "brown": "#C17E70", + "pink": "#f07178", + "violet": "#bb80b3" + } + } +} diff --git a/src/themes/settings/specific/default.json b/src/themes/settings/specific/default.json new file mode 100644 index 0000000..b3059f1 --- /dev/null +++ b/src/themes/settings/specific/default.json @@ -0,0 +1,47 @@ +{ + "id": "material.theme.default", + "name": "Material-Theme-Default", + "type": "dark", + "scheme": { + "background": "#263238", + "backgroundAlt": "#263238", + "contrastBorder": "#263238", + "comments": "#546E7A", + "caret": "#FFCC00", + "findHighlight": "#FFCC00", + "foreground": "#EEFFFF", + "focusBorder": "#FFFFFF", + "guides": "#37474F80", + "lineNumbers": "#37474F", + "invisibles": "#65737E", + "lineHighlight": "#000000", + "selection": "#80CBC420", + "shadow": "#00000030", + "inputBackground": "#FFFFFF05", + "inputForeground": "#EEFFFF", + "inputBorder": "#FFFFFF10", + "scrollbars": "#00000050", + "scrollbarsHover": "#00000030", + "statusbarForeground": "#546E7A", + "sidebarBackground": "#263238", + "sidebarForeground": "#607a86", + "listHoverForeground": "#FFFFFF", + "listHoverBackground": "#263238", + "tabActiveForeground": "#FFFFFF", + "base": { + "white": "#ffffff", + "black": "#000000", + "red": "#FF5370", + "orange": "#F78C6C", + "yellow": "#FFCB6B", + "green": "#C3E88D", + "cyan": "#89DDFF", + "blue": "#82AAFF", + "paleblue": "#B2CCD6", + "purple": "#C792EA", + "brown": "#C17E70", + "pink": "#f07178", + "violet": "#bb80b3" + } + } +} diff --git a/src/themes/settings/specific/lighter-hc.json b/src/themes/settings/specific/lighter-hc.json new file mode 100644 index 0000000..c96e4c5 --- /dev/null +++ b/src/themes/settings/specific/lighter-hc.json @@ -0,0 +1,47 @@ +{ + "id": "material.theme.lighter.hc", + "name": "Material-Theme-Lighter-High-Contrast", + "type": "light", + "scheme": { + "background": "#FFFFFF", + "backgroundAlt": "#FAFAFA", + "contrastBorder": "#CBCBCB", + "scrollbars": "#00000040", + "sidebarForeground": "#627883", + "comments": "#90A4AE90", + "caret": "#272727", + "findHighlight": "#FFCC00", + "foreground": "#90A4AE", + "focusBorder": "#FFFFFF", + "guides": "#B0BEC570", + "lineNumbers": "#CFD8DC", + "invisibles": "#E7EAEC", + "lineHighlight": "#CCD7DA", + "selection": "#80CBC440", + "shadow": "#00000020", + "inputBackground": "#00000005", + "inputForeground": "#90A4AE", + "inputBorder": "#00000010", + "scrollbarsHover": "#00000030", + "statusbarForeground": "#7E939E", + "sidebarBackground": "#FAFAFA", + "listHoverForeground": "#B1C7D3", + "listHoverBackground": "#FAFAFA", + "tabActiveForeground": "#000000", + "base": { + "white": "#FFFFFF", + "black": "#000000", + "red": "#E53935", + "orange": "#F76D47", + "yellow": "#FFB62C", + "green": "#91B859", + "cyan": "#39ADB5", + "blue": "#6182B8", + "paleblue": "#8796B0", + "purple": "#7C4DFF", + "brown": "#C17E70", + "pink": "#FF5370", + "violet": "#945EB8" + } + } +} \ No newline at end of file diff --git a/src/themes/settings/specific/lighter.json b/src/themes/settings/specific/lighter.json new file mode 100644 index 0000000..207daf7 --- /dev/null +++ b/src/themes/settings/specific/lighter.json @@ -0,0 +1,47 @@ +{ + "id": "material.theme.lighter", + "name": "Material-Theme-Lighter", + "type": "light", + "scheme": { + "background": "#FAFAFA", + "backgroundAlt": "#FAFAFA", + "contrastBorder": "#FAFAFA", + "comments": "#90A4AE90", + "caret": "#272727", + "findHighlight": "#FFCC00", + "foreground": "#90A4AE", + "focusBorder": "#FFFFFF", + "guides": "#B0BEC570", + "lineNumbers": "#CFD8DC", + "invisibles": "#E7EAEC", + "lineHighlight": "#CCD7DA", + "selection": "#80CBC440", + "shadow": "#00000020", + "inputBackground": "#00000005", + "inputForeground": "#90A4AE", + "inputBorder": "#00000010", + "scrollbars": "#00000050", + "scrollbarsHover": "#00000030", + "statusbarForeground": "#7E939E", + "sidebarBackground": "#FAFAFA", + "sidebarForeground": "#7E939E", + "listHoverForeground": "#B1C7D3", + "listHoverBackground": "#FAFAFA", + "tabActiveForeground": "#000000", + "base": { + "white": "#FFFFFF", + "black": "#000000", + "red": "#E53935", + "orange": "#F76D47", + "yellow": "#FFB62C", + "green": "#91B859", + "cyan": "#39ADB5", + "blue": "#6182B8", + "paleblue": "#8796B0", + "purple": "#7C4DFF", + "brown": "#C17E70", + "pink": "#FF5370", + "violet": "#945EB8" + } + } +} \ No newline at end of file diff --git a/src/themes/settings/specific/palenight-hc.json b/src/themes/settings/specific/palenight-hc.json new file mode 100644 index 0000000..324f912 --- /dev/null +++ b/src/themes/settings/specific/palenight-hc.json @@ -0,0 +1,47 @@ +{ + "id": "material.theme.palenight.hc", + "name": "Material-Theme-Palenight-High-Contrast", + "type": "dark", + "scheme": { + "background": "#292D3E", + "backgroundAlt": "#1B1E2B", + "contrastBorder": "#000000", + "scrollbars": "#00000070", + "sidebarForeground": "#757CA1", + "comments": "#676E95", + "caret": "#FFCC00", + "findHighlight": "#FFCC00", + "foreground": "#A6ACCD", + "focusBorder": "#FFFFFF", + "guides": "#4E557980", + "lineNumbers": "#3A3F58", + "invisibles": "#4E5579", + "lineHighlight": "#000000", + "selection": "#717CB450", + "shadow": "#00000030", + "inputBackground": "#FFFFFF05", + "inputForeground": "#EEFFFF", + "inputBorder": "#FFFFFF10", + "scrollbarsHover": "#00000030", + "statusbarForeground": "#676E95", + "sidebarBackground": "#292D3E", + "listHoverForeground": "#FFFFFF", + "listHoverBackground": "#292D3E", + "tabActiveForeground": "#FFFFFF", + "base": { + "white": "#ffffff", + "black": "#000000", + "red": "#FF5370", + "orange": "#F78C6C", + "yellow": "#FFCB6B", + "green": "#C3E88D", + "cyan": "#89DDFF", + "blue": "#82AAFF", + "paleblue": "#B2CCD6", + "purple": "#C792EA", + "brown": "#C17E70", + "pink": "#f07178", + "violet": "#bb80b3" + } + } +} \ No newline at end of file diff --git a/src/themes/settings/specific/palenight.json b/src/themes/settings/specific/palenight.json new file mode 100644 index 0000000..8d9f211 --- /dev/null +++ b/src/themes/settings/specific/palenight.json @@ -0,0 +1,47 @@ +{ + "id": "material.theme.palenight", + "name": "Material-Theme-Palenight", + "type": "dark", + "scheme": { + "background": "#292D3E", + "backgroundAlt": "#292D3E", + "contrastBorder": "#292D3E", + "comments": "#676E95", + "caret": "#FFCC00", + "findHighlight": "#FFCC00", + "foreground": "#A6ACCD", + "focusBorder": "#FFFFFF", + "guides": "#4E557980", + "lineNumbers": "#3A3F58", + "invisibles": "#4E5579", + "lineHighlight": "#000000", + "selection": "#717CB450", + "shadow": "#00000030", + "inputBackground": "#FFFFFF05", + "inputForeground": "#EEFFFF", + "inputBorder": "#FFFFFF10", + "scrollbars": "#00000050", + "scrollbarsHover": "#00000030", + "statusbarForeground": "#676E95", + "sidebarBackground": "#292D3E", + "sidebarForeground": "#676E95", + "listHoverForeground": "#FFFFFF", + "listHoverBackground": "#292D3E", + "tabActiveForeground": "#FFFFFF", + "base": { + "white": "#ffffff", + "black": "#000000", + "red": "#FF5370", + "orange": "#F78C6C", + "yellow": "#FFCB6B", + "green": "#C3E88D", + "cyan": "#89DDFF", + "blue": "#82AAFF", + "paleblue": "#B2CCD6", + "purple": "#C792EA", + "brown": "#C17E70", + "pink": "#f07178", + "violet": "#bb80b3" + } + } +} \ No newline at end of file diff --git a/src/themes/theme-template-color-theme.json b/src/themes/theme-template-color-theme.json new file mode 100644 index 0000000..51ad483 --- /dev/null +++ b/src/themes/theme-template-color-theme.json @@ -0,0 +1,821 @@ +{ + "name": "{{variant.name}}", + "type": "{{variant.type}}", + "tokenColors": [ + { + "settings": { + "background": "{{variant.scheme.background}}", + "foreground": "{{variant.scheme.base.white}}" + } + }, + { + "name": "Comment", + "scope": [ + "comment", + "punctuation.definition.comment" + ], + "settings": { + "fontStyle": "italic", + "foreground": "{{variant.scheme.comments}}" + } + }, + { + "name": "Variables", + "scope": [ + "variable", + "string constant.other.placeholder" + ], + "settings": { + "foreground": "{{variant.scheme.foreground}}" + } + }, + { + "name": "PHP Constants", + "scope": [ + "constant.other.php" + ], + "settings": { + "foreground": "{{variant.scheme.base.yellow}}" + } + }, + { + "name": "Colors", + "scope": [ + "constant.other.color" + ], + "settings": { + "foreground": "{{variant.scheme.base.white}}" + } + }, + { + "name": "Invalid", + "scope": [ + "invalid", + "invalid.illegal" + ], + "settings": { + "foreground": "{{variant.scheme.base.red}}" + } + }, + { + "name": "Invalid deprecated", + "scope": [ + "invalid.deprecated" + ], + "settings": { + "foreground": "{{variant.scheme.base.purple}}" + } + }, + { + "name": "Keyword, Storage", + "scope": [ + "keyword", + "storage.type", + "storage.modifier" + ], + "settings": { + "foreground": "{{variant.scheme.base.purple}}" + } + }, + { + "name": "Keyword, Storage", + "scope": [ + "Keyword", + "Storage" + ], + "settings": { + "fontStyle": "italic" + } + }, + { + "name": "Operator, Misc", + "scope": [ + "keyword.control", + "constant.other.color", + "punctuation", + "meta.tag", + "punctuation.definition.tag", + "punctuation.separator.inheritance.php", + "punctuation.definition.tag.html", + "punctuation.definition.tag.begin.html", + "punctuation.definition.tag.end.html", + "punctuation.section.embedded", + "keyword.other.template", + "keyword.other.substitution" + ], + "settings": { + "foreground": "{{variant.scheme.base.cyan}}" + } + }, + { + "name": "Keyword Control", + "scope": [ + "keyword.control" + ], + "settings": { + "fontStyle": "italic" + } + }, + { + "name": "Tag", + "scope": [ + "entity.name.tag", + "meta.tag.sgml", + "markup.deleted.git_gutter" + ], + "settings": { + "foreground": "{{variant.scheme.base.pink}}" + } + }, + { + "name": "Function, Special Method", + "scope": [ + "entity.name.function", + "meta.function-call", + "variable.function", + "support.function", + "keyword.other.special-method" + ], + "settings": { + "foreground": "{{variant.scheme.base.blue}}" + } + }, + { + "name": "C-related Block Level Variables", + "scope": [ + "source.cpp meta.block variable.other" + ], + "settings": { + "foreground": "{{variant.scheme.base.pink}}" + } + }, + { + "name": "Variables constant", + "scope": [ + "variable.other.constant" + ], + "settings": { + "foreground": "{{variant.scheme.base.pink}}" + } + }, + { + "name": "Other Variable, String Link", + "scope": [ + "support.other.variable", + "string.other.link" + ], + "settings": { + "foreground": "{{variant.scheme.base.pink}}" + } + }, + { + "name": "Number, Constant, Function Argument, Tag Attribute, Embedded", + "scope": [ + "constant.numeric", + "constant.language", + "support.constant", + "constant.character", + "constant.escape", + "variable.parameter", + "keyword.other.unit", + "keyword.other" + ], + "settings": { + "foreground": "{{variant.scheme.base.orange}}" + } + }, + { + "name": "Number, Constant, Function Argument, Tag Attribute, Embedded", + "scope": [ + "variable.parameter.function.language.special" + ], + "settings": { + "foreground": "{{variant.scheme.base.red}}" + } + }, + { + "name": "String, Symbols, Inherited Class, Markup Heading", + "scope": [ + "string", + "constant.other.symbol", + "constant.other.key", + "entity.other.inherited-class", + "markup.heading", + "markup.inserted.git_gutter", + "meta.group.braces.curly constant.other.object.key.js string.unquoted.label.js" + ], + "settings": { + "fontStyle": "normal", + "foreground": "{{variant.scheme.base.green}}" + } + }, + { + "name": "Class, Support", + "scope": [ + "entity.name", + "support.type", + "support.class", + "support.orther.namespace.use.php", + "meta.use.php", + "support.other.namespace.php", + "markup.changed.git_gutter", + "support.type.sys-types" + ], + "settings": { + "foreground": "{{variant.scheme.base.yellow}}" + } + }, + { + "name": "Entity Types", + "scope": [ + "support.type" + ], + "settings": { + "foreground": "{{variant.scheme.base.paleblue}}" + } + }, + { + "name": "CSS Class and Support", + "scope": [ + "source.css support.type.property-name", + "source.sass support.type.property-name", + "source.scss support.type.property-name", + "source.less support.type.property-name", + "source.stylus support.type.property-name", + "source.postcss support.type.property-name" + ], + "settings": { + "foreground": "{{variant.scheme.base.paleblue}}" + } + }, + { + "name": "Sub-methods", + "scope": [ + "entity.name.module.js", + "variable.import.parameter.js", + "variable.other.class.js" + ], + "settings": { + "foreground": "{{variant.scheme.base.red}}" + } + }, + { + "name": "Language methods", + "scope": [ + "variable.language" + ], + "settings": { + "fontStyle": "italic", + "foreground": "{{variant.scheme.base.red}}" + } + }, + { + "name": "entity.name.method.js", + "scope": [ + "entity.name.method.js" + ], + "settings": { + "fontStyle": "italic", + "foreground": "{{variant.scheme.base.blue}}" + } + }, + { + "name": "meta.method.js", + "scope": [ + "meta.class-method.js entity.name.function.js", + "variable.function.constructor" + ], + "settings": { + "foreground": "{{variant.scheme.base.blue}}" + } + }, + { + "name": "Attributes", + "scope": [ + "entity.other.attribute-name" + ], + "settings": { + "foreground": "{{variant.scheme.base.purple}}" + } + }, + { + "name": "HTML Attributes", + "scope": [ + "text.html.basic entity.other.attribute-name.html", + "text.html.basic entity.other.attribute-name" + ], + "settings": { + "fontStyle": "italic", + "foreground": "{{variant.scheme.base.yellow}}" + } + }, + { + "name": "CSS Classes", + "scope": [ + "entity.other.attribute-name.class" + ], + "settings": { + "foreground": "{{variant.scheme.base.yellow}}" + } + }, + { + "name": "CSS ID's", + "scope": [ + "source.sass keyword.control" + ], + "settings": { + "foreground": "{{variant.scheme.base.blue}}" + } + }, + { + "name": "Inserted", + "scope": [ + "markup.inserted" + ], + "settings": { + "foreground": "{{variant.scheme.base.green}}" + } + }, + { + "name": "Deleted", + "scope": [ + "markup.deleted" + ], + "settings": { + "foreground": "{{variant.scheme.base.red}}" + } + }, + { + "name": "Changed", + "scope": [ + "markup.changed" + ], + "settings": { + "foreground": "{{variant.scheme.base.purple}}" + } + }, + { + "name": "Regular Expressions", + "scope": [ + "string.regexp" + ], + "settings": { + "foreground": "{{variant.scheme.base.cyan}}" + } + }, + { + "name": "Escape Characters", + "scope": [ + "constant.character.escape" + ], + "settings": { + "foreground": "{{variant.scheme.base.cyan}}" + } + }, + { + "name": "URL", + "scope": [ + "*url*", + "*link*", + "*uri*" + ], + "settings": { + "fontStyle": "underline" + } + }, + { + "name": "Decorators", + "scope": [ + "tag.decorator.js entity.name.tag.js", + "tag.decorator.js punctuation.definition.tag.js" + ], + "settings": { + "fontStyle": "italic", + "foreground": "{{variant.scheme.base.blue}}" + } + }, + { + "name": "ES7 Bind Operator", + "scope": [ + "source.js constant.other.object.key.js string.unquoted.label.js" + ], + "settings": { + "fontStyle": "italic", + "foreground": "{{variant.scheme.base.red}}" + } + }, + { + "name": "JSON Key - Level 0", + "scope": [ + "source.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground": "{{variant.scheme.base.purple}}" + } + }, + { + "name": "JSON Key - Level 1", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground": "{{variant.scheme.base.yellow}}" + } + }, + { + "name": "JSON Key - Level 2", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground": "{{variant.scheme.base.orange}}" + } + }, + { + "name": "JSON Key - Level 3", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground": "{{variant.scheme.base.red}}" + } + }, + { + "name": "JSON Key - Level 4", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground": "{{variant.scheme.base.brown}}" + } + }, + { + "name": "JSON Key - Level 5", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground": "{{variant.scheme.base.blue}}" + } + }, + { + "name": "JSON Key - Level 6", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground": "{{variant.scheme.base.pink}}" + } + }, + { + "name": "JSON Key - Level 7", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground": "{{variant.scheme.base.purple}}" + } + }, + { + "name": "JSON Key - Level 8", + "scope": [ + "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json" + ], + "settings": { + "foreground": "{{variant.scheme.base.green}}" + } + }, + { + "name": "Markdown - Plain", + "scope": [ + "text.html.markdown", + "punctuation.definition.list_item.markdown" + ], + "settings": { + "foreground": "{{variant.scheme.foreground}}" + } + }, + { + "name": "Markdown - Markup Raw Inline", + "scope": [ + "text.html.markdown markup.inline.raw.markdown" + ], + "settings": { + "foreground": "{{variant.scheme.base.purple}}" + } + }, + { + "name": "Markdown - Markup Raw Inline Punctuation", + "scope": [ + "text.html.markdown markup.inline.raw.markdown punctuation.definition.raw.markdown" + ], + "settings": { + "foreground": "{{variant.scheme.invisibles}}" + } + }, + { + "name": "Markdown - Line Break", + "scope": [ + "text.html.markdown meta.dummy.line-break" + ], + "settings": { + "foreground": "" + } + }, + { + "name": "Markdown - Heading", + "scope": [ + "markdown.heading", + "markup.heading | markup.heading entity.name", + "markup.heading.markdown punctuation.definition.heading.markdown" + ], + "settings": { + "foreground": "{{variant.scheme.base.green}}" + } + }, + { + "name": "Markup - Italic", + "scope": [ + "markup.italic" + ], + "settings": { + "fontStyle": "italic", + "foreground": "{{variant.scheme.base.pink}}" + } + }, + { + "name": "Markup - Bold", + "scope": [ + "markup.bold", + "markup.bold string" + ], + "settings": { + "fontStyle": "bold", + "foreground": "{{variant.scheme.base.pink}}" + } + }, + { + "name": "Markup - Bold-Italic", + "scope": [ + "markup.bold markup.italic", + "markup.italic markup.bold", + "markup.quote markup.bold", + "markup.bold markup.italic string", + "markup.italic markup.bold string", + "markup.quote markup.bold string" + ], + "settings": { + "fontStyle": "bold", + "foreground": "{{variant.scheme.base.pink}}" + } + }, + { + "name": "Markup - Underline", + "scope": [ + "markup.underline" + ], + "settings": { + "fontStyle": "underline", + "foreground": "{{variant.scheme.base.orange}}" + } + }, + { + "name": "Markup - Strike", + "scope": [ + "markup.strike" + ], + "settings": { + "fontStyle": "strike", + "foreground": "" + } + }, + { + "name": "Markdown - Blockquote", + "scope": [ + "markup.quote punctuation.definition.blockquote.markdown" + ], + "settings": { + "background": "{{variant.scheme.invisibles}}", + "foreground": "{{variant.scheme.invisibles}}" + } + }, + { + "name": "Markup - Quote", + "scope": [ + "markup.quote" + ], + "settings": { + "fontStyle": "italic", + "foreground": "" + } + }, + { + "name": "Markdown - Link", + "scope": [ + "string.other.link.title.markdown" + ], + "settings": { + "foreground": "{{variant.scheme.base.blue}}" + } + }, + { + "name": "Markdown - Link Description", + "scope": [ + "string.other.link.description.title.markdown" + ], + "settings": { + "foreground": "{{variant.scheme.base.purple}}" + } + }, + { + "name": "Markdown - Link Anchor", + "scope": [ + "constant.other.reference.link.markdown" + ], + "settings": { + "foreground": "{{variant.scheme.base.yellow}}" + } + }, + { + "name": "Markup - Raw Block", + "scope": [ + "markup.raw.block" + ], + "settings": { + "foreground": "{{variant.scheme.base.purple}}" + } + }, + { + "name": "Markdown - Fenced Bode Block Variable", + "scope": [ + "markup.fenced_code.block.markdown", + "markup.inline.raw.string.markdown" + ], + "settings": { + "foreground": "{{variant.scheme.foreground}}90" + } + }, + { + "name": "Markdown - Fenced Language", + "scope": [ + "variable.language.fenced.markdown" + ], + "settings": { + "foreground": "{{variant.scheme.invisibles}}" + } + }, + { + "name": "Markdown - Separator", + "scope": [ + "meta.separator" + ], + "settings": { + "fontStyle": "bold", + "background": "#00000050", + "foreground": "{{variant.scheme.invisibles}}" + } + }, + { + "name": "Markup - Table", + "scope": [ + "markup.table" + ], + "settings": { + "foreground": "{{variant.scheme.foreground}}" + } + } + ], + "colors": { + "focusBorder": "{{variant.scheme.focusBorder}}00", + "editorCursor.foreground": "{{variant.scheme.caret}}", + "editorRuler.foreground": "{{variant.scheme.guides}}", + "scrollbar.shadow": "{{variant.scheme.background}}00", + "editorLink.activeForeground": "{{variant.scheme.foreground}}", + "selection.background": "{{variant.scheme.foreground}}", + "progressBar.background": "{{commons.accents.Teal}}", + "textLink.foreground": "{{commons.accents.Teal}}", + "textLink.activeForeground": "{{variant.scheme.foreground}}", + "editorLineNumber.foreground": "{{variant.scheme.lineNumbers}}", + "editorActiveLineNumber.foreground": "{{variant.scheme.sidebarForeground}}", + "editorBracketMatch.border": "{{variant.scheme.caret}}50", + "editorBracketMatch.background": "{{variant.scheme.background}}", + "editorWhitespace.foreground": "{{variant.scheme.foreground}}10", + "editor.background": "{{variant.scheme.background}}", + "editor.foreground": "{{variant.scheme.foreground}}", + "editor.lineHighlightBackground": "{{variant.scheme.lineHighlight}}50", + "editor.selectionBackground": "{{variant.scheme.selection}}", + "editor.selectionHighlightBackground": "{{variant.scheme.caret}}20", + "editorOverviewRuler.border": "{{variant.scheme.background}}", + "editorHoverWidget.background": "{{variant.scheme.background}}", + "editorHoverWidget.border": "{{variant.scheme.inputBorder}}", + "editorIndentGuide.background": "{{variant.scheme.guides}}", + "editorGroupHeader.tabsBackground": "{{variant.scheme.background}}", + "editorGroup.border": "{{variant.scheme.shadow}}", + "editorGutter.modifiedBackground": "{{variant.scheme.base.blue}}60", + "editorGutter.addedBackground": "{{variant.scheme.base.green}}60", + "editorGutter.deletedBackground": "{{variant.scheme.base.red}}60", + "tab.activeBorder": "{{commons.accents.Teal}}", + "tab.unfocusedActiveBorder": "{{variant.scheme.comments}}", + "tab.activeForeground": "{{variant.scheme.tabActiveForeground}}", + "tab.inactiveForeground": "{{variant.scheme.sidebarForeground}}", + "tab.inactiveBackground": "{{variant.scheme.background}}", + "tab.unfocusedActiveForeground": "{{variant.scheme.foreground}}", + "tab.border": "{{variant.scheme.background}}", + "statusBar.noFolderBackground": "{{variant.scheme.background}}", + "statusBar.border": "{{variant.scheme.contrastBorder}}60", + "statusBar.background": "{{variant.scheme.backgroundAlt}}", + "statusBar.foreground": "{{variant.scheme.statusbarForeground}}", + "statusBar.debuggingBackground": "{{variant.scheme.base.purple}}", + "statusBar.debuggingForeground": "{{variant.scheme.base.white}}", + "activityBar.background": "{{variant.scheme.backgroundAlt}}", + "activityBar.border": "{{variant.scheme.contrastBorder}}60", + "activityBar.foreground": "{{variant.scheme.foreground}}", + "activityBarBadge.background": "{{commons.accents.Teal}}", + "activityBarBadge.foreground": "{{variant.scheme.base.black}}", + "titleBar.activeBackground": "{{variant.scheme.backgroundAlt}}", + "titleBar.activeForeground": "{{variant.scheme.comments}}", + "titleBar.inactiveBackground": "{{variant.scheme.backgroundAlt}}", + "titleBar.inactiveForeground": "{{variant.scheme.comments}}", + "sideBar.background": "{{variant.scheme.backgroundAlt}}", + "sideBar.foreground": "{{variant.scheme.sidebarForeground}}", + "sideBar.border": "{{variant.scheme.contrastBorder}}60", + "titleBar.border": "{{variant.scheme.contrastBorder}}60", + "sideBarTitle.foreground": "{{variant.scheme.foreground}}", + "sideBarSectionHeader.background": "{{variant.scheme.backgroundAlt}}", + "input.background": "{{variant.scheme.inputBackground}}", + "input.foreground": "{{variant.scheme.inputForeground}}", + "input.placeholderForeground": "{{variant.scheme.foreground}}60", + "input.border": "{{variant.scheme.inputBorder}}", + "inputValidation.errorBorder": "{{variant.scheme.base.red}}50", + "inputValidation.infoBorder": "{{variant.scheme.base.blue}}50", + "inputValidation.warningBorder": "{{variant.scheme.base.yellow}}50", + "dropdown.background": "{{variant.scheme.background}}", + "dropdown.border": "{{variant.scheme.inputBorder}}", + "list.hoverForeground": "{{variant.scheme.listHoverForeground}}", + "list.hoverBackground": "{{variant.scheme.backgroundAlt}}", + "list.activeSelectionBackground": "{{variant.scheme.backgroundAlt}}", + "list.activeSelectionForeground": "{{commons.accents.Teal}}", + "list.inactiveSelectionForeground": "{{commons.accents.Teal}}", + "list.inactiveSelectionBackground": "#00000030", + "list.focusBackground": "{{variant.scheme.foreground}}20", + "list.focusForeground": "{{variant.scheme.foreground}}", + "list.highlightForeground": "{{commons.accents.Teal}}", + "terminal.ansiWhite": "{{variant.scheme.base.white}}", + "terminal.ansiBlack": "{{variant.scheme.comments}}", + "terminal.ansiBlue": "{{variant.scheme.base.blue}}", + "terminal.ansiCyan": "{{variant.scheme.base.cyan}}", + "terminal.ansiGreen": "{{variant.scheme.base.green}}", + "terminal.ansiMagenta": "{{variant.scheme.base.purple}}", + "terminal.ansiRed": "{{variant.scheme.base.red}}", + "terminal.ansiYellow": "{{variant.scheme.base.yellow}}", + "terminal.ansiBrightWhite": "{{variant.scheme.base.white}}", + "terminal.ansiBrightBlack": "{{variant.scheme.comments}}", + "terminal.ansiBrightBlue": "{{variant.scheme.base.blue}}", + "terminal.ansiBrightCyan": "{{variant.scheme.base.cyan}}", + "terminal.ansiBrightGreen": "{{variant.scheme.base.green}}", + "terminal.ansiBrightMagenta": "{{variant.scheme.base.purple}}", + "terminal.ansiBrightRed": "{{variant.scheme.base.red}}", + "terminal.ansiBrightYellow": "{{variant.scheme.base.yellow}}", + "scrollbarSlider.background": "{{variant.scheme.scrollbars}}", + "scrollbarSlider.hoverBackground": "{{variant.scheme.scrollbarsHover}}", + "scrollbarSlider.activeBackground": "{{commons.accents.Teal}}", + "editorSuggestWidget.background": "{{variant.scheme.background}}", + "editorSuggestWidget.foreground": "{{variant.scheme.foreground}}", + "editorSuggestWidget.highlightForeground": "{{commons.accents.Teal}}", + "editorSuggestWidget.selectedBackground": "{{variant.scheme.lineHighlight}}50", + "editorSuggestWidget.border": "{{variant.scheme.inputBorder}}", + "editorError.foreground": "{{variant.scheme.base.red}}70", + "editorWarning.foreground": "{{variant.scheme.base.green}}70", + "editorWidget.background": "{{variant.scheme.background}}", + "editorMarkerNavigation.background": "{{variant.scheme.foreground}}05", + "widget.shadow": "{{variant.scheme.shadow}}", + "panel.border": "{{variant.scheme.contrastBorder}}60", + "panel.background": "{{variant.scheme.backgroundAlt}}", + "panelTitle.activeForeground": "{{variant.scheme.foreground}}", + "diffEditor.insertedTextBackground": "{{variant.scheme.base.green}}15", + "diffEditor.removedTextBackground": "{{variant.scheme.base.red}}20", + "notifications.background": "{{variant.scheme.background}}", + "notifications.foreground": "{{variant.scheme.foreground}}", + "notificationLink.foreground": "{{commons.accents.Teal}}", + "badge.background": "{{variant.scheme.lineHighlight}}30", + "badge.foreground": "{{variant.scheme.comments}}", + "button.background": "{{variant.scheme.selection}}", + "extensionButton.prominentBackground": "{{variant.scheme.base.green}}90", + "extensionButton.prominentHoverBackground": "{{variant.scheme.base.green}}", + "peekView.border": "{{variant.scheme.shadow}}", + "peekViewEditor.background": "{{variant.scheme.foreground}}05", + "peekViewTitle.background": "{{variant.scheme.foreground}}05", + "peekViewResult.background": "{{variant.scheme.foreground}}05", + "peekViewEditorGutter.background": "{{variant.scheme.foreground}}05", + "peekViewTitleDescription.foreground": "{{variant.scheme.foreground}}60", + "peekViewResult.matchHighlightBackground": "{{variant.scheme.selection}}", + "peekViewEditor.matchHighlightBackground": "{{variant.scheme.selection}}", + "debugToolBar.background": "{{variant.scheme.background}}", + "pickerGroup.foreground": "{{commons.accents.Teal}}", + "gitDecoration.deletedResourceForeground": "{{variant.scheme.base.red}}90", + "gitDecoration.conflictingResourceForeground": "{{variant.scheme.base.yellow}}90", + "gitDecoration.modifiedResourceForeground": "{{variant.scheme.base.blue}}90", + "gitDecoration.untrackedResourceForeground": "{{variant.scheme.base.green}}90", + "gitDecoration.ignoredResourceForeground": "{{variant.scheme.sidebarForeground}}90" + } +} \ No newline at end of file diff --git a/test/--.tmcolor b/test/--.tmcolor new file mode 100644 index 0000000..885b2b2 --- /dev/null +++ b/test/--.tmcolor @@ -0,0 +1,79 @@ +comment ā€” for comments. +comment.line ā€” line comments, we specialize further so that the type of comment start character(s) can be extracted from the scope. +comment.line.double-slash ā€” // comment +comment.line.double-dash ā€” -- comment +comment.line.number-sign ā€” # comment +comment.line.percentage ā€” % comment +comment.line.character ā€” other types of line comments. +comment.block ā€” multi-line comments like /* ā€¦ */ and . +comment.block.documentation ā€” embedded documentation. + +constant ā€” various forms of constants. +constant.numeric ā€” those which represent numbers, e.g. 42, 1.3f, 0x4AB1U. +constant.character ā€” those which represent characters, e.g. <, \e, \031. +constant.escape ā€” escape sequences like \e would be constant.character.escape. +constant.language ā€” constants (generally) provided by the language which are ā€œspecialā€ like true, false, nil, YES, NO, etc. +constant.other ā€” other constants, e.g. colors in CSS. + +entity ā€” an entity refers to a larger part of the document, for example a chapter, class, function, or tag. We do not scope the entire entity as entity.* (we use meta.* for that). But we do use entity.* for the ā€œplaceholdersā€ in the larger entity, e.g. if the entity is a chapter, we would use entity.name.section for the chapter title. +entity.name ā€” we are naming the larger entity. +entity.name.function ā€” the name of a function. +entity.name.type ā€” the name of a type declaration or class. +entity.name.tag ā€” a tag name. +entity.name.section ā€” the name is the name of a section/heading. +entity.other ā€” other entities. +entity.other.inherited-class ā€” the superclass/baseclass name. +entity.other.attribute-name ā€” the name of an attribute (mainly in tags). + +invalid ā€” stuff which is ā€œinvalidā€. +invalid.illegal ā€” illegal, e.g. an ampersand or lower-than character in HTML (which is not part of an entity/tag). +invalid.deprecated ā€” for deprecated stuff e.g. using an API function which is deprecated or using styling with strict HTML. + +keyword ā€” keywords (when these do not fall into the other groups). +keyword.control ā€” mainly related to flow control like continue, while, return, etc. +keyword.operator ā€” operators can either be textual (e.g. or) or be characters. +keyword.other ā€” other keywords. + +markup ā€” this is for markup languages and generally applies to larger subsets of the text. +markup.underline ā€” underlined text. +markup.underline.link ā€” this is for links, as a convenience this is derived from markup.underline so that if there is no theme rule which specifically targets markup.underline.link then it will inherit the underline style. +markup.bold ā€” bold text (text which is strong and similar should preferably be derived from this name). +markup.heading ā€” a section header. Optionally provide the heading level as the next element, for example markup.heading.2.html for

ā€¦

in HTML. +markup.italic ā€” italic text (text which is emphasized and similar should preferably be derived from this name). +markup.list ā€” list items. +markup.list.numbered ā€” numbered list items. +markup.list.unnumbered ā€” unnumbered list items. +markup.quote ā€” quoted (sometimes block quoted) text. +markup.raw ā€” text which is verbatim, e.g. code listings. Normally spell checking is disabled for markup.raw. +markup.inline.raw +markup.other ā€” other markup constructs. + +meta - the meta scope is generally used to markup larger parts of the document. For example the entire line which declares a function would be meta.function and the subsets would be storage.type, entity.name.function, variable.parameter etc. and only the latter would be styled. Sometimes the meta part of the scope will be used only to limit the more general element that is styled, most of the time meta scopes are however used in scope selectors for activation of bundle items. For example in Objective-C there is a meta scope for the interface declaration of a class and the implementation, allowing the same tab-triggers to expand differently, depending on context. + +storage ā€” things relating to ā€œstorageā€. +storage.type ā€” the type of something, class, function, int, var, etc. +storage.modifier ā€” a storage modifier like static, final, abstract, etc. + +string ā€” strings. +string.quoted ā€” quoted strings. +string.quoted.single ā€” single quoted strings: 'foo'. +string.quoted.double ā€” double quoted strings: "foo". +string.quoted.triple ā€” triple quoted strings: """Python""". +string.quoted.other ā€” other types of quoting: $'shell', %s{...}. +string.unquoted ā€” for things like here-docs and here-strings. +string.interpolated ā€” strings which are ā€œevaluatedā€: `date`, $(pwd). +string.regexp ā€” regular expressions: /(\w+)/. +string.other ā€” other types of strings (should rarely be used). + +support ā€” things provided by a framework or library should be below support. +support.function ā€” functions provided by the framework/library. For example NSLog in Objective-C is support.function. +support.class ā€” when the framework/library provides classes. +support.type ā€” types provided by the framework/library, this is probably only used for languages derived from C, which has typedef (and struct). Most other languages would introduce new types as classes. +support.constant ā€” constants (magic values) provided by the framework/library. +support.variable ā€” variables provided by the framework/library. For example NSApp in AppKit. +support.other ā€” the above should be exhaustive, but for everything else use support.other. + +variable ā€” variables. Not all languages allow easy identification (and thus markup) of these. +variable.parameter ā€” when the variable is declared as the parameter. +variable.language ā€” reserved language variables like this, super, self, etc. +variable.other ā€” other variables, like $some_variables. diff --git a/test/.gitignore b/test/.gitignore new file mode 100755 index 0000000..e69de29 diff --git a/test/COMMIT_EDITMSG b/test/COMMIT_EDITMSG new file mode 100644 index 0000000..e69de29 diff --git a/test/Dockerfile b/test/Dockerfile new file mode 100644 index 0000000..e69de29 diff --git a/test/LICENSE b/test/LICENSE new file mode 100644 index 0000000..e69de29 diff --git a/test/Procfile b/test/Procfile new file mode 100644 index 0000000..e69de29 diff --git a/test/TODO b/test/TODO new file mode 100644 index 0000000..e69de29 diff --git a/test/adobe.ai b/test/adobe.ai new file mode 100644 index 0000000..e69de29 diff --git a/test/adobe.as b/test/adobe.as new file mode 100644 index 0000000..e69de29 diff --git a/test/adobe.cfc b/test/adobe.cfc new file mode 100644 index 0000000..e69de29 diff --git a/test/adobe.cfm b/test/adobe.cfm new file mode 100644 index 0000000..e69de29 diff --git a/test/adobe.pdf b/test/adobe.pdf new file mode 100644 index 0000000..e69de29 diff --git a/test/adobe.psb b/test/adobe.psb new file mode 100644 index 0000000..e69de29 diff --git a/test/adobe.psd b/test/adobe.psd new file mode 100644 index 0000000..e69de29 diff --git a/test/angular.ng.html b/test/angular.ng.html new file mode 100644 index 0000000..e69de29 diff --git a/test/archive.7z b/test/archive.7z new file mode 100644 index 0000000..e69de29 diff --git a/test/archive.7zip b/test/archive.7zip new file mode 100644 index 0000000..e69de29 diff --git a/test/archive.gz b/test/archive.gz new file mode 100644 index 0000000..e69de29 diff --git a/test/archive.pzip b/test/archive.pzip new file mode 100644 index 0000000..e69de29 diff --git a/test/archive.rar b/test/archive.rar new file mode 100644 index 0000000..e69de29 diff --git a/test/archive.tar b/test/archive.tar new file mode 100644 index 0000000..e69de29 diff --git a/test/archive.tgz b/test/archive.tgz new file mode 100644 index 0000000..e69de29 diff --git a/test/archive.wim b/test/archive.wim new file mode 100644 index 0000000..e69de29 diff --git a/test/archive.zip b/test/archive.zip new file mode 100644 index 0000000..e69de29 diff --git a/test/binary.tga b/test/binary.tga new file mode 100644 index 0000000..e69de29 diff --git a/test/bower.json b/test/bower.json new file mode 100644 index 0000000..e69de29 diff --git a/test/conf b/test/conf new file mode 100644 index 0000000..e69de29 diff --git a/test/default b/test/default new file mode 100644 index 0000000..e69de29 diff --git a/test/font.eot b/test/font.eot new file mode 100644 index 0000000..e69de29 diff --git a/test/font.otf b/test/font.otf new file mode 100644 index 0000000..e69de29 diff --git a/test/font.ttf b/test/font.ttf new file mode 100644 index 0000000..e69de29 diff --git a/test/font.woff b/test/font.woff new file mode 100644 index 0000000..e69de29 diff --git a/test/git-blame b/test/git-blame new file mode 100644 index 0000000..e69de29 diff --git a/test/git-rebase-todo b/test/git-rebase-todo new file mode 100644 index 0000000..e69de29 diff --git a/test/image.jpg b/test/image.jpg new file mode 100644 index 0000000..e69de29 diff --git a/test/image.svg b/test/image.svg new file mode 100644 index 0000000..e69de29 diff --git a/test/package-lock.json b/test/package-lock.json new file mode 100644 index 0000000..e69de29 diff --git a/test/package.json b/test/package.json new file mode 100644 index 0000000..e69de29 diff --git a/test/settings.ini b/test/settings.ini new file mode 100644 index 0000000..e69de29 diff --git a/test/shell.bash b/test/shell.bash new file mode 100644 index 0000000..957abd2 --- /dev/null +++ b/test/shell.bash @@ -0,0 +1,2 @@ +#!/bin/bash +echo "$RANDOM" # Supported in bash. No warnings. diff --git a/test/shell.fish b/test/shell.fish new file mode 100644 index 0000000..e69de29 diff --git a/test/shell.sh b/test/shell.sh new file mode 100644 index 0000000..b3d23a0 --- /dev/null +++ b/test/shell.sh @@ -0,0 +1,2 @@ +#!/bin/sh +echo "$RANDOM" # Unsupported in sh. Produces warning. diff --git a/test/sketch.sketch b/test/sketch.sketch new file mode 100644 index 0000000..e69de29 diff --git a/test/source.applescript b/test/source.applescript new file mode 100644 index 0000000..e69de29 diff --git a/test/source.asa b/test/source.asa new file mode 100644 index 0000000..e69de29 diff --git a/test/source.ascx b/test/source.ascx new file mode 100644 index 0000000..e69de29 diff --git a/test/source.asp b/test/source.asp new file mode 100644 index 0000000..e69de29 diff --git a/test/source.aspx b/test/source.aspx new file mode 100644 index 0000000..e69de29 diff --git a/test/source.blade b/test/source.blade new file mode 100644 index 0000000..e69de29 diff --git a/test/source.blade.php b/test/source.blade.php new file mode 100644 index 0000000..e69de29 diff --git a/test/source.c b/test/source.c new file mode 100644 index 0000000..f0094b3 --- /dev/null +++ b/test/source.c @@ -0,0 +1,1573 @@ +#include "ccv.h" +#include "ccv_internal.h" +#include +#ifdef HAVE_GSL +#include +#include +#endif +#ifdef USE_OPENMP +#include +#endif + +const ccv_bbf_param_t ccv_bbf_default_params = { + .interval = 5, + .min_neighbors = 2, + .accurate = 1, + .flags = 0, + .size = { + 24, + 24, + }, +}; + +#define _ccv_width_padding(x) (((x) + 3) & -4) + +static inline int _ccv_run_bbf_feature(ccv_bbf_feature_t *feature, int *step, unsigned char **u8) +{ +#define pf_at(i) (*(u8[feature->pz[i]] + feature->px[i] + feature->py[i] * step[feature->pz[i]])) +#define nf_at(i) (*(u8[feature->nz[i]] + feature->nx[i] + feature->ny[i] * step[feature->nz[i]])) + unsigned char pmin = pf_at(0), nmax = nf_at(0); + /* check if every point in P > every point in N, and take a shortcut */ + if (pmin <= nmax) + return 0; + int i; + for (i = 1; i < feature->size; i++) + { + if (feature->pz[i] >= 0) + { + int p = pf_at(i); + if (p < pmin) + { + if (p <= nmax) + return 0; + pmin = p; + } + } + if (feature->nz[i] >= 0) + { + int n = nf_at(i); + if (n > nmax) + { + if (pmin <= n) + return 0; + nmax = n; + } + } + } +#undef pf_at +#undef nf_at + return 1; +} + +static int _ccv_read_bbf_stage_classifier(const char *file, ccv_bbf_stage_classifier_t *classifier) +{ + FILE *r = fopen(file, "r"); + if (r == 0) + return -1; + int stat = 0; + stat |= fscanf(r, "%d", &classifier->count); + union { + float fl; + int i; + } fli; + stat |= fscanf(r, "%d", &fli.i); + classifier->threshold = fli.fl; + classifier->feature = (ccv_bbf_feature_t *)ccmalloc(classifier->count * sizeof(ccv_bbf_feature_t)); + classifier->alpha = (float *)ccmalloc(classifier->count * 2 * sizeof(float)); + int i, j; + for (i = 0; i < classifier->count; i++) + { + stat |= fscanf(r, "%d", &classifier->feature[i].size); + for (j = 0; j < classifier->feature[i].size; j++) + { + stat |= fscanf(r, "%d %d %d", &classifier->feature[i].px[j], &classifier->feature[i].py[j], &classifier->feature[i].pz[j]); + stat |= fscanf(r, "%d %d %d", &classifier->feature[i].nx[j], &classifier->feature[i].ny[j], &classifier->feature[i].nz[j]); + } + union { + float fl; + int i; + } flia, flib; + stat |= fscanf(r, "%d %d", &flia.i, &flib.i); + classifier->alpha[i * 2] = flia.fl; + classifier->alpha[i * 2 + 1] = flib.fl; + } + fclose(r); + return 0; +} + +#ifdef HAVE_GSL + +static unsigned int _ccv_bbf_time_measure() +{ + struct timeval tv; + gettimeofday(&tv, 0); + return tv.tv_sec * 1000000 + tv.tv_usec; +} + +#define less_than(a, b, aux) ((a) < (b)) +CCV_IMPLEMENT_QSORT(_ccv_sort_32f, float, less_than) +#undef less_than + +static void _ccv_bbf_eval_data(ccv_bbf_stage_classifier_t *classifier, unsigned char **posdata, int posnum, unsigned char **negdata, int negnum, ccv_size_t size, float *peval, float *neval) +{ + int i, j; + int steps[] = {_ccv_width_padding(size.width), + _ccv_width_padding(size.width >> 1), + _ccv_width_padding(size.width >> 2)}; + int isizs0 = steps[0] * size.height; + int isizs01 = isizs0 + steps[1] * (size.height >> 1); + for (i = 0; i < posnum; i++) + { + unsigned char *u8[] = {posdata[i], posdata[i] + isizs0, posdata[i] + isizs01}; + float sum = 0; + float *alpha = classifier->alpha; + ccv_bbf_feature_t *feature = classifier->feature; + for (j = 0; j < classifier->count; ++j, alpha += 2, ++feature) + sum += alpha[_ccv_run_bbf_feature(feature, steps, u8)]; + peval[i] = sum; + } + for (i = 0; i < negnum; i++) + { + unsigned char *u8[] = {negdata[i], negdata[i] + isizs0, negdata[i] + isizs01}; + float sum = 0; + float *alpha = classifier->alpha; + ccv_bbf_feature_t *feature = classifier->feature; + for (j = 0; j < classifier->count; ++j, alpha += 2, ++feature) + sum += alpha[_ccv_run_bbf_feature(feature, steps, u8)]; + neval[i] = sum; + } +} + +static int _ccv_prune_positive_data(ccv_bbf_classifier_cascade_t *cascade, unsigned char **posdata, int posnum, ccv_size_t size) +{ + float *peval = (float *)ccmalloc(posnum * sizeof(float)); + int i, j, k, rpos = posnum; + for (i = 0; i < cascade->count; i++) + { + _ccv_bbf_eval_data(cascade->stage_classifier + i, posdata, rpos, 0, 0, size, peval, 0); + k = 0; + for (j = 0; j < rpos; j++) + if (peval[j] >= cascade->stage_classifier[i].threshold) + { + posdata[k] = posdata[j]; + ++k; + } + else + { + ccfree(posdata[j]); + } + rpos = k; + } + ccfree(peval); + return rpos; +} + +static int _ccv_prepare_background_data(ccv_bbf_classifier_cascade_t *cascade, char **bgfiles, int bgnum, unsigned char **negdata, int negnum) +{ + int t, i, j, k, q; + int negperbg; + int negtotal = 0; + int steps[] = {_ccv_width_padding(cascade->size.width), + _ccv_width_padding(cascade->size.width >> 1), + _ccv_width_padding(cascade->size.width >> 2)}; + int isizs0 = steps[0] * cascade->size.height; + int isizs1 = steps[1] * (cascade->size.height >> 1); + int isizs2 = steps[2] * (cascade->size.height >> 2); + int *idcheck = (int *)ccmalloc(negnum * sizeof(int)); + + gsl_rng_env_setup(); + + gsl_rng *rng = gsl_rng_alloc(gsl_rng_default); + gsl_rng_set(rng, (unsigned long int)idcheck); + + ccv_size_t imgsz = cascade->size; + int rneg = negtotal; + for (t = 0; negtotal < negnum; t++) + { + PRINT(CCV_CLI_INFO, "preparing negative data ... 0%%"); + for (i = 0; i < bgnum; i++) + { + negperbg = (t < 2) ? (negnum - negtotal) / (bgnum - i) + 1 : negnum - negtotal; + ccv_dense_matrix_t *image = 0; + ccv_read(bgfiles[i], &image, CCV_IO_GRAY | CCV_IO_ANY_FILE); + assert((image->type & CCV_C1) && (image->type & CCV_8U)); + if (image == 0) + { + PRINT(CCV_CLI_ERROR, "\n%s file corrupted\n", bgfiles[i]); + continue; + } + if (t % 2 != 0) + ccv_flip(image, 0, 0, CCV_FLIP_X); + if (t % 4 >= 2) + ccv_flip(image, 0, 0, CCV_FLIP_Y); + ccv_bbf_param_t params = {.interval = 3, .min_neighbors = 0, .accurate = 1, .flags = 0, .size = cascade->size}; + ccv_array_t *detected = ccv_bbf_detect_objects(image, &cascade, 1, params); + memset(idcheck, 0, ccv_min(detected->rnum, negperbg) * sizeof(int)); + for (j = 0; j < ccv_min(detected->rnum, negperbg); j++) + { + int r = gsl_rng_uniform_int(rng, detected->rnum); + int flag = 1; + ccv_rect_t *rect = (ccv_rect_t *)ccv_array_get(detected, r); + while (flag) + { + flag = 0; + for (k = 0; k < j; k++) + if (r == idcheck[k]) + { + flag = 1; + r = gsl_rng_uniform_int(rng, detected->rnum); + break; + } + rect = (ccv_rect_t *)ccv_array_get(detected, r); + if ((rect->x < 0) || (rect->y < 0) || (rect->width + rect->x > image->cols) || (rect->height + rect->y > image->rows)) + { + flag = 1; + r = gsl_rng_uniform_int(rng, detected->rnum); + } + } + idcheck[j] = r; + ccv_dense_matrix_t *temp = 0; + ccv_dense_matrix_t *imgs0 = 0; + ccv_dense_matrix_t *imgs1 = 0; + ccv_dense_matrix_t *imgs2 = 0; + ccv_slice(image, (ccv_matrix_t **)&temp, 0, rect->y, rect->x, rect->height, rect->width); + ccv_resample(temp, &imgs0, 0, imgsz.height, imgsz.width, CCV_INTER_AREA); + assert(imgs0->step == steps[0]); + ccv_matrix_free(temp); + ccv_sample_down(imgs0, &imgs1, 0, 0, 0); + assert(imgs1->step == steps[1]); + ccv_sample_down(imgs1, &imgs2, 0, 0, 0); + assert(imgs2->step == steps[2]); + + negdata[negtotal] = (unsigned char *)ccmalloc(isizs0 + isizs1 + isizs2); + unsigned char *u8s0 = negdata[negtotal]; + unsigned char *u8s1 = negdata[negtotal] + isizs0; + unsigned char *u8s2 = negdata[negtotal] + isizs0 + isizs1; + unsigned char *u8[] = {u8s0, u8s1, u8s2}; + memcpy(u8s0, imgs0->data.u8, imgs0->rows * imgs0->step); + ccv_matrix_free(imgs0); + memcpy(u8s1, imgs1->data.u8, imgs1->rows * imgs1->step); + ccv_matrix_free(imgs1); + memcpy(u8s2, imgs2->data.u8, imgs2->rows * imgs2->step); + ccv_matrix_free(imgs2); + + flag = 1; + ccv_bbf_stage_classifier_t *classifier = cascade->stage_classifier; + for (k = 0; k < cascade->count; ++k, ++classifier) + { + float sum = 0; + float *alpha = classifier->alpha; + ccv_bbf_feature_t *feature = classifier->feature; + for (q = 0; q < classifier->count; ++q, alpha += 2, ++feature) + sum += alpha[_ccv_run_bbf_feature(feature, steps, u8)]; + if (sum < classifier->threshold) + { + flag = 0; + break; + } + } + if (!flag) + ccfree(negdata[negtotal]); + else + { + ++negtotal; + if (negtotal >= negnum) + break; + } + } + ccv_array_free(detected); + ccv_matrix_free(image); + ccv_drain_cache(); + PRINT(CCV_CLI_INFO, "\rpreparing negative data ... %2d%%", 100 * negtotal / negnum); + fflush(0); + if (negtotal >= negnum) + break; + } + if (rneg == negtotal) + break; + rneg = negtotal; + PRINT(CCV_CLI_INFO, "\nentering additional round %d\n", t + 1); + } + gsl_rng_free(rng); + ccfree(idcheck); + ccv_drain_cache(); + PRINT(CCV_CLI_INFO, "\n"); + return negtotal; +} + +static void _ccv_prepare_positive_data(ccv_dense_matrix_t **posimg, unsigned char **posdata, ccv_size_t size, int posnum) +{ + PRINT(CCV_CLI_INFO, "preparing positive data ... 0%%"); + int i; + for (i = 0; i < posnum; i++) + { + ccv_dense_matrix_t *imgs0 = posimg[i]; + ccv_dense_matrix_t *imgs1 = 0; + ccv_dense_matrix_t *imgs2 = 0; + assert((imgs0->type & CCV_C1) && (imgs0->type & CCV_8U) && imgs0->rows == size.height && imgs0->cols == size.width); + ccv_sample_down(imgs0, &imgs1, 0, 0, 0); + ccv_sample_down(imgs1, &imgs2, 0, 0, 0); + int isizs0 = imgs0->rows * imgs0->step; + int isizs1 = imgs1->rows * imgs1->step; + int isizs2 = imgs2->rows * imgs2->step; + + posdata[i] = (unsigned char *)ccmalloc(isizs0 + isizs1 + isizs2); + memcpy(posdata[i], imgs0->data.u8, isizs0); + memcpy(posdata[i] + isizs0, imgs1->data.u8, isizs1); + memcpy(posdata[i] + isizs0 + isizs1, imgs2->data.u8, isizs2); + + PRINT(CCV_CLI_INFO, "\rpreparing positive data ... %2d%%", 100 * (i + 1) / posnum); + fflush(0); + + ccv_matrix_free(imgs1); + ccv_matrix_free(imgs2); + } + ccv_drain_cache(); + PRINT(CCV_CLI_INFO, "\n"); +} + +typedef struct +{ + double fitness; + int pk, nk; + int age; + double error; + ccv_bbf_feature_t feature; +} ccv_bbf_gene_t; + +static inline void _ccv_bbf_genetic_fitness(ccv_bbf_gene_t *gene) +{ + gene->fitness = (1 - gene->error) * exp(-0.01 * gene->age) * exp((gene->pk + gene->nk) * log(1.015)); +} + +static inline int _ccv_bbf_exist_gene_feature(ccv_bbf_gene_t *gene, int x, int y, int z) +{ + int i; + for (i = 0; i < gene->pk; i++) + if (z == gene->feature.pz[i] && x == gene->feature.px[i] && y == gene->feature.py[i]) + return 1; + for (i = 0; i < gene->nk; i++) + if (z == gene->feature.nz[i] && x == gene->feature.nx[i] && y == gene->feature.ny[i]) + return 1; + return 0; +} + +static inline void _ccv_bbf_randomize_gene(gsl_rng *rng, ccv_bbf_gene_t *gene, int *rows, int *cols) +{ + int i; + do + { + gene->pk = gsl_rng_uniform_int(rng, CCV_BBF_POINT_MAX - 1) + 1; + gene->nk = gsl_rng_uniform_int(rng, CCV_BBF_POINT_MAX - 1) + 1; + } while (gene->pk + gene->nk < CCV_BBF_POINT_MIN); /* a hard restriction of at least 3 points have to be examed */ + gene->feature.size = ccv_max(gene->pk, gene->nk); + gene->age = 0; + for (i = 0; i < CCV_BBF_POINT_MAX; i++) + { + gene->feature.pz[i] = -1; + gene->feature.nz[i] = -1; + } + int x, y, z; + for (i = 0; i < gene->pk; i++) + { + do + { + z = gsl_rng_uniform_int(rng, 3); + x = gsl_rng_uniform_int(rng, cols[z]); + y = gsl_rng_uniform_int(rng, rows[z]); + } while (_ccv_bbf_exist_gene_feature(gene, x, y, z)); + gene->feature.pz[i] = z; + gene->feature.px[i] = x; + gene->feature.py[i] = y; + } + for (i = 0; i < gene->nk; i++) + { + do + { + z = gsl_rng_uniform_int(rng, 3); + x = gsl_rng_uniform_int(rng, cols[z]); + y = gsl_rng_uniform_int(rng, rows[z]); + } while (_ccv_bbf_exist_gene_feature(gene, x, y, z)); + gene->feature.nz[i] = z; + gene->feature.nx[i] = x; + gene->feature.ny[i] = y; + } +} + +static inline double _ccv_bbf_error_rate(ccv_bbf_feature_t *feature, unsigned char **posdata, int posnum, unsigned char **negdata, int negnum, ccv_size_t size, double *pw, double *nw) +{ + int i; + int steps[] = {_ccv_width_padding(size.width), + _ccv_width_padding(size.width >> 1), + _ccv_width_padding(size.width >> 2)}; + int isizs0 = steps[0] * size.height; + int isizs01 = isizs0 + steps[1] * (size.height >> 1); + double error = 0; + for (i = 0; i < posnum; i++) + { + unsigned char *u8[] = {posdata[i], posdata[i] + isizs0, posdata[i] + isizs01}; + if (!_ccv_run_bbf_feature(feature, steps, u8)) + error += pw[i]; + } + for (i = 0; i < negnum; i++) + { + unsigned char *u8[] = {negdata[i], negdata[i] + isizs0, negdata[i] + isizs01}; + if (_ccv_run_bbf_feature(feature, steps, u8)) + error += nw[i]; + } + return error; +} + +#define less_than(fit1, fit2, aux) ((fit1).fitness >= (fit2).fitness) +static CCV_IMPLEMENT_QSORT(_ccv_bbf_genetic_qsort, ccv_bbf_gene_t, less_than) +#undef less_than + + static ccv_bbf_feature_t _ccv_bbf_genetic_optimize(unsigned char **posdata, int posnum, unsigned char **negdata, int negnum, int ftnum, ccv_size_t size, double *pw, double *nw) +{ + ccv_bbf_feature_t best; + /* seed (random method) */ + gsl_rng_env_setup(); + gsl_rng *rng = gsl_rng_alloc(gsl_rng_default); + union { + unsigned long int li; + double db; + } dbli; + dbli.db = pw[0] + nw[0]; + gsl_rng_set(rng, dbli.li); + int i, j; + int pnum = ftnum * 100; + assert(pnum > 0); + ccv_bbf_gene_t *gene = (ccv_bbf_gene_t *)ccmalloc(pnum * sizeof(ccv_bbf_gene_t)); + int rows[] = {size.height, size.height >> 1, size.height >> 2}; + int cols[] = {size.width, size.width >> 1, size.width >> 2}; + for (i = 0; i < pnum; i++) + _ccv_bbf_randomize_gene(rng, &gene[i], rows, cols); + unsigned int timer = _ccv_bbf_time_measure(); +#ifdef USE_OPENMP +#pragma omp parallel for private(i) schedule(dynamic) +#endif + for (i = 0; i < pnum; i++) + gene[i].error = _ccv_bbf_error_rate(&gene[i].feature, posdata, posnum, negdata, negnum, size, pw, nw); + timer = _ccv_bbf_time_measure() - timer; + for (i = 0; i < pnum; i++) + _ccv_bbf_genetic_fitness(&gene[i]); + double best_err = 1; + int rnum = ftnum * 39; /* number of randomize */ + int mnum = ftnum * 40; /* number of mutation */ + int hnum = ftnum * 20; /* number of hybrid */ + /* iteration stop crit : best no change in 40 iterations */ + int it = 0, t; + for (t = 0; it < 40; ++it, ++t) + { + int min_id = 0; + double min_err = gene[0].error; + for (i = 1; i < pnum; i++) + if (gene[i].error < min_err) + { + min_id = i; + min_err = gene[i].error; + } + min_err = gene[min_id].error = _ccv_bbf_error_rate(&gene[min_id].feature, posdata, posnum, negdata, negnum, size, pw, nw); + if (min_err < best_err) + { + best_err = min_err; + memcpy(&best, &gene[min_id].feature, sizeof(best)); + PRINT(CCV_CLI_INFO, "best bbf feature with error %f\n|-size: %d\n|-positive point: ", best_err, best.size); + for (i = 0; i < best.size; i++) + PRINT(CCV_CLI_INFO, "(%d %d %d), ", best.px[i], best.py[i], best.pz[i]); + PRINT(CCV_CLI_INFO, "\n|-negative point: "); + for (i = 0; i < best.size; i++) + PRINT(CCV_CLI_INFO, "(%d %d %d), ", best.nx[i], best.ny[i], best.nz[i]); + PRINT(CCV_CLI_INFO, "\n"); + it = 0; + } + PRINT(CCV_CLI_INFO, "minimum error achieved in round %d(%d) : %f with %d ms\n", t, it, min_err, timer / 1000); + _ccv_bbf_genetic_qsort(gene, pnum, 0); + for (i = 0; i < ftnum; i++) + ++gene[i].age; + for (i = ftnum; i < ftnum + mnum; i++) + { + int parent = gsl_rng_uniform_int(rng, ftnum); + memcpy(gene + i, gene + parent, sizeof(ccv_bbf_gene_t)); + /* three mutation strategy : 1. add, 2. remove, 3. refine */ + int pnm, pn = gsl_rng_uniform_int(rng, 2); + int *pnk[] = {&gene[i].pk, &gene[i].nk}; + int *pnx[] = {gene[i].feature.px, gene[i].feature.nx}; + int *pny[] = {gene[i].feature.py, gene[i].feature.ny}; + int *pnz[] = {gene[i].feature.pz, gene[i].feature.nz}; + int x, y, z; + int victim, decay = 1; + do + { + switch (gsl_rng_uniform_int(rng, 3)) + { + case 0: /* add */ + if (gene[i].pk == CCV_BBF_POINT_MAX && gene[i].nk == CCV_BBF_POINT_MAX) + break; + while (*pnk[pn] + 1 > CCV_BBF_POINT_MAX) + pn = gsl_rng_uniform_int(rng, 2); + do + { + z = gsl_rng_uniform_int(rng, 3); + x = gsl_rng_uniform_int(rng, cols[z]); + y = gsl_rng_uniform_int(rng, rows[z]); + } while (_ccv_bbf_exist_gene_feature(&gene[i], x, y, z)); + pnz[pn][*pnk[pn]] = z; + pnx[pn][*pnk[pn]] = x; + pny[pn][*pnk[pn]] = y; + ++(*pnk[pn]); + gene[i].feature.size = ccv_max(gene[i].pk, gene[i].nk); + decay = gene[i].age = 0; + break; + case 1: /* remove */ + if (gene[i].pk + gene[i].nk <= CCV_BBF_POINT_MIN) /* at least 3 points have to be examed */ + break; + while (*pnk[pn] - 1 <= 0) // || *pnk[pn] + *pnk[!pn] - 1 < CCV_BBF_POINT_MIN) + pn = gsl_rng_uniform_int(rng, 2); + victim = gsl_rng_uniform_int(rng, *pnk[pn]); + for (j = victim; j < *pnk[pn] - 1; j++) + { + pnz[pn][j] = pnz[pn][j + 1]; + pnx[pn][j] = pnx[pn][j + 1]; + pny[pn][j] = pny[pn][j + 1]; + } + pnz[pn][*pnk[pn] - 1] = -1; + --(*pnk[pn]); + gene[i].feature.size = ccv_max(gene[i].pk, gene[i].nk); + decay = gene[i].age = 0; + break; + case 2: /* refine */ + pnm = gsl_rng_uniform_int(rng, *pnk[pn]); + do + { + z = gsl_rng_uniform_int(rng, 3); + x = gsl_rng_uniform_int(rng, cols[z]); + y = gsl_rng_uniform_int(rng, rows[z]); + } while (_ccv_bbf_exist_gene_feature(&gene[i], x, y, z)); + pnz[pn][pnm] = z; + pnx[pn][pnm] = x; + pny[pn][pnm] = y; + decay = gene[i].age = 0; + break; + } + } while (decay); + } + for (i = ftnum + mnum; i < ftnum + mnum + hnum; i++) + { + /* hybrid strategy: taking positive points from dad, negative points from mum */ + int dad, mum; + do + { + dad = gsl_rng_uniform_int(rng, ftnum); + mum = gsl_rng_uniform_int(rng, ftnum); + } while (dad == mum || gene[dad].pk + gene[mum].nk < CCV_BBF_POINT_MIN); /* at least 3 points have to be examed */ + for (j = 0; j < CCV_BBF_POINT_MAX; j++) + { + gene[i].feature.pz[j] = -1; + gene[i].feature.nz[j] = -1; + } + gene[i].pk = gene[dad].pk; + for (j = 0; j < gene[i].pk; j++) + { + gene[i].feature.pz[j] = gene[dad].feature.pz[j]; + gene[i].feature.px[j] = gene[dad].feature.px[j]; + gene[i].feature.py[j] = gene[dad].feature.py[j]; + } + gene[i].nk = gene[mum].nk; + for (j = 0; j < gene[i].nk; j++) + { + gene[i].feature.nz[j] = gene[mum].feature.nz[j]; + gene[i].feature.nx[j] = gene[mum].feature.nx[j]; + gene[i].feature.ny[j] = gene[mum].feature.ny[j]; + } + gene[i].feature.size = ccv_max(gene[i].pk, gene[i].nk); + gene[i].age = 0; + } + for (i = ftnum + mnum + hnum; i < ftnum + mnum + hnum + rnum; i++) + _ccv_bbf_randomize_gene(rng, &gene[i], rows, cols); + timer = _ccv_bbf_time_measure(); +#ifdef USE_OPENMP +#pragma omp parallel for private(i) schedule(dynamic) +#endif + for (i = 0; i < pnum; i++) + gene[i].error = _ccv_bbf_error_rate(&gene[i].feature, posdata, posnum, negdata, negnum, size, pw, nw); + timer = _ccv_bbf_time_measure() - timer; + for (i = 0; i < pnum; i++) + _ccv_bbf_genetic_fitness(&gene[i]); + } + ccfree(gene); + gsl_rng_free(rng); + return best; +} + +#define less_than(fit1, fit2, aux) ((fit1).error < (fit2).error) +static CCV_IMPLEMENT_QSORT(_ccv_bbf_best_qsort, ccv_bbf_gene_t, less_than) +#undef less_than + + static ccv_bbf_gene_t _ccv_bbf_best_gene(ccv_bbf_gene_t *gene, int pnum, int point_min, unsigned char **posdata, int posnum, unsigned char **negdata, int negnum, ccv_size_t size, double *pw, double *nw) +{ + int i; + unsigned int timer = _ccv_bbf_time_measure(); +#ifdef USE_OPENMP +#pragma omp parallel for private(i) schedule(dynamic) +#endif + for (i = 0; i < pnum; i++) + gene[i].error = _ccv_bbf_error_rate(&gene[i].feature, posdata, posnum, negdata, negnum, size, pw, nw); + timer = _ccv_bbf_time_measure() - timer; + _ccv_bbf_best_qsort(gene, pnum, 0); + int min_id = 0; + double min_err = gene[0].error; + for (i = 0; i < pnum; i++) + if (gene[i].nk + gene[i].pk >= point_min) + { + min_id = i; + min_err = gene[i].error; + break; + } + PRINT(CCV_CLI_INFO, "local best bbf feature with error %f\n|-size: %d\n|-positive point: ", min_err, gene[min_id].feature.size); + for (i = 0; i < gene[min_id].feature.size; i++) + PRINT(CCV_CLI_INFO, "(%d %d %d), ", gene[min_id].feature.px[i], gene[min_id].feature.py[i], gene[min_id].feature.pz[i]); + PRINT(CCV_CLI_INFO, "\n|-negative point: "); + for (i = 0; i < gene[min_id].feature.size; i++) + PRINT(CCV_CLI_INFO, "(%d %d %d), ", gene[min_id].feature.nx[i], gene[min_id].feature.ny[i], gene[min_id].feature.nz[i]); + PRINT(CCV_CLI_INFO, "\nthe computation takes %d ms\n", timer / 1000); + return gene[min_id]; +} + +static ccv_bbf_feature_t _ccv_bbf_convex_optimize(unsigned char **posdata, int posnum, unsigned char **negdata, int negnum, ccv_bbf_feature_t *best_feature, ccv_size_t size, double *pw, double *nw) +{ + ccv_bbf_gene_t best_gene; + /* seed (random method) */ + gsl_rng_env_setup(); + gsl_rng *rng = gsl_rng_alloc(gsl_rng_default); + union { + unsigned long int li; + double db; + } dbli; + dbli.db = pw[0] + nw[0]; + gsl_rng_set(rng, dbli.li); + int i, j, k, q, p, g, t; + int rows[] = {size.height, size.height >> 1, size.height >> 2}; + int cols[] = {size.width, size.width >> 1, size.width >> 2}; + int pnum = rows[0] * cols[0] + rows[1] * cols[1] + rows[2] * cols[2]; + ccv_bbf_gene_t *gene = (ccv_bbf_gene_t *)ccmalloc((pnum * (CCV_BBF_POINT_MAX * 2 + 1) * 2 + CCV_BBF_POINT_MAX * 2 + 1) * sizeof(ccv_bbf_gene_t)); + if (best_feature == 0) + { + /* bootstrapping the best feature, start from two pixels, one for positive, one for negative + * the bootstrapping process go like this: first, it will assign a random pixel as positive + * and enumerate every possible pixel as negative, and pick the best one. Then, enumerate every + * possible pixel as positive, and pick the best one, until it converges */ + memset(&best_gene, 0, sizeof(ccv_bbf_gene_t)); + for (i = 0; i < CCV_BBF_POINT_MAX; i++) + best_gene.feature.pz[i] = best_gene.feature.nz[i] = -1; + best_gene.pk = 1; + best_gene.nk = 0; + best_gene.feature.size = 1; + best_gene.feature.pz[0] = gsl_rng_uniform_int(rng, 3); + best_gene.feature.px[0] = gsl_rng_uniform_int(rng, cols[best_gene.feature.pz[0]]); + best_gene.feature.py[0] = gsl_rng_uniform_int(rng, rows[best_gene.feature.pz[0]]); + for (t = 0;; ++t) + { + g = 0; + if (t % 2 == 0) + { + for (i = 0; i < 3; i++) + for (j = 0; j < cols[i]; j++) + for (k = 0; k < rows[i]; k++) + if (i != best_gene.feature.pz[0] || j != best_gene.feature.px[0] || k != best_gene.feature.py[0]) + { + gene[g] = best_gene; + gene[g].pk = gene[g].nk = 1; + gene[g].feature.nz[0] = i; + gene[g].feature.nx[0] = j; + gene[g].feature.ny[0] = k; + g++; + } + } + else + { + for (i = 0; i < 3; i++) + for (j = 0; j < cols[i]; j++) + for (k = 0; k < rows[i]; k++) + if (i != best_gene.feature.nz[0] || j != best_gene.feature.nx[0] || k != best_gene.feature.ny[0]) + { + gene[g] = best_gene; + gene[g].pk = gene[g].nk = 1; + gene[g].feature.pz[0] = i; + gene[g].feature.px[0] = j; + gene[g].feature.py[0] = k; + g++; + } + } + PRINT(CCV_CLI_INFO, "bootstrapping round : %d\n", t); + ccv_bbf_gene_t local_gene = _ccv_bbf_best_gene(gene, g, 2, posdata, posnum, negdata, negnum, size, pw, nw); + if (local_gene.error >= best_gene.error - 1e-10) + break; + best_gene = local_gene; + } + } + else + { + best_gene.feature = *best_feature; + best_gene.pk = best_gene.nk = best_gene.feature.size; + for (i = 0; i < CCV_BBF_POINT_MAX; i++) + if (best_feature->pz[i] == -1) + { + best_gene.pk = i; + break; + } + for (i = 0; i < CCV_BBF_POINT_MAX; i++) + if (best_feature->nz[i] == -1) + { + best_gene.nk = i; + break; + } + } + /* after bootstrapping, the float search technique will do the following permutations: + * a). add a new point to positive or negative + * b). remove a point from positive or negative + * c). move an existing point in positive or negative to another position + * the three rules applied exhaustively, no heuristic used. */ + for (t = 0;; ++t) + { + g = 0; + for (i = 0; i < 3; i++) + for (j = 0; j < cols[i]; j++) + for (k = 0; k < rows[i]; k++) + if (!_ccv_bbf_exist_gene_feature(&best_gene, j, k, i)) + { + /* add positive point */ + if (best_gene.pk < CCV_BBF_POINT_MAX - 1) + { + gene[g] = best_gene; + gene[g].feature.pz[gene[g].pk] = i; + gene[g].feature.px[gene[g].pk] = j; + gene[g].feature.py[gene[g].pk] = k; + gene[g].pk++; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + /* add negative point */ + if (best_gene.nk < CCV_BBF_POINT_MAX - 1) + { + gene[g] = best_gene; + gene[g].feature.nz[gene[g].nk] = i; + gene[g].feature.nx[gene[g].nk] = j; + gene[g].feature.ny[gene[g].nk] = k; + gene[g].nk++; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + /* refine positive point */ + for (q = 0; q < best_gene.pk; q++) + { + gene[g] = best_gene; + gene[g].feature.pz[q] = i; + gene[g].feature.px[q] = j; + gene[g].feature.py[q] = k; + g++; + } + /* add positive point, remove negative point */ + if (best_gene.pk < CCV_BBF_POINT_MAX - 1 && best_gene.nk > 1) + { + for (q = 0; q < best_gene.nk; q++) + { + gene[g] = best_gene; + gene[g].feature.pz[gene[g].pk] = i; + gene[g].feature.px[gene[g].pk] = j; + gene[g].feature.py[gene[g].pk] = k; + gene[g].pk++; + for (p = q; p < best_gene.nk - 1; p++) + { + gene[g].feature.nz[p] = gene[g].feature.nz[p + 1]; + gene[g].feature.nx[p] = gene[g].feature.nx[p + 1]; + gene[g].feature.ny[p] = gene[g].feature.ny[p + 1]; + } + gene[g].feature.nz[gene[g].nk - 1] = -1; + gene[g].nk--; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + } + /* refine negative point */ + for (q = 0; q < best_gene.nk; q++) + { + gene[g] = best_gene; + gene[g].feature.nz[q] = i; + gene[g].feature.nx[q] = j; + gene[g].feature.ny[q] = k; + g++; + } + /* add negative point, remove positive point */ + if (best_gene.pk > 1 && best_gene.nk < CCV_BBF_POINT_MAX - 1) + { + for (q = 0; q < best_gene.pk; q++) + { + gene[g] = best_gene; + gene[g].feature.nz[gene[g].nk] = i; + gene[g].feature.nx[gene[g].nk] = j; + gene[g].feature.ny[gene[g].nk] = k; + gene[g].nk++; + for (p = q; p < best_gene.pk - 1; p++) + { + gene[g].feature.pz[p] = gene[g].feature.pz[p + 1]; + gene[g].feature.px[p] = gene[g].feature.px[p + 1]; + gene[g].feature.py[p] = gene[g].feature.py[p + 1]; + } + gene[g].feature.pz[gene[g].pk - 1] = -1; + gene[g].pk--; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + } + } + if (best_gene.pk > 1) + for (q = 0; q < best_gene.pk; q++) + { + gene[g] = best_gene; + for (i = q; i < best_gene.pk - 1; i++) + { + gene[g].feature.pz[i] = gene[g].feature.pz[i + 1]; + gene[g].feature.px[i] = gene[g].feature.px[i + 1]; + gene[g].feature.py[i] = gene[g].feature.py[i + 1]; + } + gene[g].feature.pz[gene[g].pk - 1] = -1; + gene[g].pk--; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + if (best_gene.nk > 1) + for (q = 0; q < best_gene.nk; q++) + { + gene[g] = best_gene; + for (i = q; i < best_gene.nk - 1; i++) + { + gene[g].feature.nz[i] = gene[g].feature.nz[i + 1]; + gene[g].feature.nx[i] = gene[g].feature.nx[i + 1]; + gene[g].feature.ny[i] = gene[g].feature.ny[i + 1]; + } + gene[g].feature.nz[gene[g].nk - 1] = -1; + gene[g].nk--; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + gene[g] = best_gene; + g++; + PRINT(CCV_CLI_INFO, "float search round : %d\n", t); + ccv_bbf_gene_t local_gene = _ccv_bbf_best_gene(gene, g, CCV_BBF_POINT_MIN, posdata, posnum, negdata, negnum, size, pw, nw); + if (local_gene.error >= best_gene.error - 1e-10) + break; + best_gene = local_gene; + } + ccfree(gene); + gsl_rng_free(rng); + return best_gene.feature; +} + +static int _ccv_write_bbf_stage_classifier(const char *file, ccv_bbf_stage_classifier_t *classifier) +{ + FILE *w = fopen(file, "wb"); + if (w == 0) + return -1; + fprintf(w, "%d\n", classifier->count); + union { + float fl; + int i; + } fli; + fli.fl = classifier->threshold; + fprintf(w, "%d\n", fli.i); + int i, j; + for (i = 0; i < classifier->count; i++) + { + fprintf(w, "%d\n", classifier->feature[i].size); + for (j = 0; j < classifier->feature[i].size; j++) + { + fprintf(w, "%d %d %d\n", classifier->feature[i].px[j], classifier->feature[i].py[j], classifier->feature[i].pz[j]); + fprintf(w, "%d %d %d\n", classifier->feature[i].nx[j], classifier->feature[i].ny[j], classifier->feature[i].nz[j]); + } + union { + float fl; + int i; + } flia, flib; + flia.fl = classifier->alpha[i * 2]; + flib.fl = classifier->alpha[i * 2 + 1]; + fprintf(w, "%d %d\n", flia.i, flib.i); + } + fclose(w); + return 0; +} + +static int _ccv_read_background_data(const char *file, unsigned char **negdata, int *negnum, ccv_size_t size) +{ + int stat = 0; + FILE *r = fopen(file, "rb"); + if (r == 0) + return -1; + stat |= fread(negnum, sizeof(int), 1, r); + int i; + int isizs012 = _ccv_width_padding(size.width) * size.height + + _ccv_width_padding(size.width >> 1) * (size.height >> 1) + + _ccv_width_padding(size.width >> 2) * (size.height >> 2); + for (i = 0; i < *negnum; i++) + { + negdata[i] = (unsigned char *)ccmalloc(isizs012); + stat |= fread(negdata[i], 1, isizs012, r); + } + fclose(r); + return 0; +} + +static int _ccv_write_background_data(const char *file, unsigned char **negdata, int negnum, ccv_size_t size) +{ + FILE *w = fopen(file, "w"); + if (w == 0) + return -1; + fwrite(&negnum, sizeof(int), 1, w); + int i; + int isizs012 = _ccv_width_padding(size.width) * size.height + + _ccv_width_padding(size.width >> 1) * (size.height >> 1) + + _ccv_width_padding(size.width >> 2) * (size.height >> 2); + for (i = 0; i < negnum; i++) + fwrite(negdata[i], 1, isizs012, w); + fclose(w); + return 0; +} + +static int _ccv_resume_bbf_cascade_training_state(const char *file, int *i, int *k, int *bg, double *pw, double *nw, int posnum, int negnum) +{ + int stat = 0; + FILE *r = fopen(file, "r"); + if (r == 0) + return -1; + stat |= fscanf(r, "%d %d %d", i, k, bg); + int j; + union { + double db; + int i[2]; + } dbi; + for (j = 0; j < posnum; j++) + { + stat |= fscanf(r, "%d %d", &dbi.i[0], &dbi.i[1]); + pw[j] = dbi.db; + } + for (j = 0; j < negnum; j++) + { + stat |= fscanf(r, "%d %d", &dbi.i[0], &dbi.i[1]); + nw[j] = dbi.db; + } + fclose(r); + return 0; +} + +static int _ccv_save_bbf_cacade_training_state(const char *file, int i, int k, int bg, double *pw, double *nw, int posnum, int negnum) +{ + FILE *w = fopen(file, "w"); + if (w == 0) + return -1; + fprintf(w, "%d %d %d\n", i, k, bg); + int j; + union { + double db; + int i[2]; + } dbi; + for (j = 0; j < posnum; ++j) + { + dbi.db = pw[j]; + fprintf(w, "%d %d ", dbi.i[0], dbi.i[1]); + } + fprintf(w, "\n"); + for (j = 0; j < negnum; ++j) + { + dbi.db = nw[j]; + fprintf(w, "%d %d ", dbi.i[0], dbi.i[1]); + } + fprintf(w, "\n"); + fclose(w); + return 0; +} + +void ccv_bbf_classifier_cascade_new(ccv_dense_matrix_t **posimg, int posnum, char **bgfiles, int bgnum, int negnum, ccv_size_t size, const char *dir, ccv_bbf_new_param_t params) +{ + int i, j, k; + /* allocate memory for usage */ + ccv_bbf_classifier_cascade_t *cascade = (ccv_bbf_classifier_cascade_t *)ccmalloc(sizeof(ccv_bbf_classifier_cascade_t)); + cascade->count = 0; + cascade->size = size; + cascade->stage_classifier = (ccv_bbf_stage_classifier_t *)ccmalloc(sizeof(ccv_bbf_stage_classifier_t)); + unsigned char **posdata = (unsigned char **)ccmalloc(posnum * sizeof(unsigned char *)); + unsigned char **negdata = (unsigned char **)ccmalloc(negnum * sizeof(unsigned char *)); + double *pw = (double *)ccmalloc(posnum * sizeof(double)); + double *nw = (double *)ccmalloc(negnum * sizeof(double)); + float *peval = (float *)ccmalloc(posnum * sizeof(float)); + float *neval = (float *)ccmalloc(negnum * sizeof(float)); + double inv_balance_k = 1. / params.balance_k; + /* balance factor k, and weighted with 0.01 */ + params.balance_k *= 0.01; + inv_balance_k *= 0.01; + + int steps[] = {_ccv_width_padding(cascade->size.width), + _ccv_width_padding(cascade->size.width >> 1), + _ccv_width_padding(cascade->size.width >> 2)}; + int isizs0 = steps[0] * cascade->size.height; + int isizs01 = isizs0 + steps[1] * (cascade->size.height >> 1); + + i = 0; + k = 0; + int bg = 0; + int cacheK = 10; + /* state resume code */ + char buf[1024]; + sprintf(buf, "%s/stat.txt", dir); + _ccv_resume_bbf_cascade_training_state(buf, &i, &k, &bg, pw, nw, posnum, negnum); + if (i > 0) + { + cascade->count = i; + ccfree(cascade->stage_classifier); + cascade->stage_classifier = (ccv_bbf_stage_classifier_t *)ccmalloc(i * sizeof(ccv_bbf_stage_classifier_t)); + for (j = 0; j < i; j++) + { + sprintf(buf, "%s/stage-%d.txt", dir, j); + _ccv_read_bbf_stage_classifier(buf, &cascade->stage_classifier[j]); + } + } + if (k > 0) + cacheK = k; + int rpos, rneg = 0; + if (bg) + { + sprintf(buf, "%s/negs.txt", dir); + _ccv_read_background_data(buf, negdata, &rneg, cascade->size); + } + + for (; i < params.layer; i++) + { + if (!bg) + { + rneg = _ccv_prepare_background_data(cascade, bgfiles, bgnum, negdata, negnum); + /* save state of background data */ + sprintf(buf, "%s/negs.txt", dir); + _ccv_write_background_data(buf, negdata, rneg, cascade->size); + bg = 1; + } + double totalw; + /* save state of cascade : level, weight etc. */ + sprintf(buf, "%s/stat.txt", dir); + _ccv_save_bbf_cacade_training_state(buf, i, k, bg, pw, nw, posnum, negnum); + ccv_bbf_stage_classifier_t classifier; + if (k > 0) + { + /* resume state of classifier */ + sprintf(buf, "%s/stage-%d.txt", dir, i); + _ccv_read_bbf_stage_classifier(buf, &classifier); + } + else + { + /* initialize classifier */ + for (j = 0; j < posnum; j++) + pw[j] = params.balance_k; + for (j = 0; j < rneg; j++) + nw[j] = inv_balance_k; + classifier.count = k; + classifier.threshold = 0; + classifier.feature = (ccv_bbf_feature_t *)ccmalloc(cacheK * sizeof(ccv_bbf_feature_t)); + classifier.alpha = (float *)ccmalloc(cacheK * 2 * sizeof(float)); + } + _ccv_prepare_positive_data(posimg, posdata, cascade->size, posnum); + rpos = _ccv_prune_positive_data(cascade, posdata, posnum, cascade->size); + PRINT(CCV_CLI_INFO, "%d postivie data and %d negative data in training\n", rpos, rneg); + /* reweight to 1.00 */ + totalw = 0; + for (j = 0; j < rpos; j++) + totalw += pw[j]; + for (j = 0; j < rneg; j++) + totalw += nw[j]; + for (j = 0; j < rpos; j++) + pw[j] = pw[j] / totalw; + for (j = 0; j < rneg; j++) + nw[j] = nw[j] / totalw; + for (;; k++) + { + /* get overall true-positive, false-positive rate and threshold */ + double tp = 0, fp = 0, etp = 0, efp = 0; + _ccv_bbf_eval_data(&classifier, posdata, rpos, negdata, rneg, cascade->size, peval, neval); + _ccv_sort_32f(peval, rpos, 0); + classifier.threshold = peval[(int)((1. - params.pos_crit) * rpos)] - 1e-6; + for (j = 0; j < rpos; j++) + { + if (peval[j] >= 0) + ++tp; + if (peval[j] >= classifier.threshold) + ++etp; + } + tp /= rpos; + etp /= rpos; + for (j = 0; j < rneg; j++) + { + if (neval[j] >= 0) + ++fp; + if (neval[j] >= classifier.threshold) + ++efp; + } + fp /= rneg; + efp /= rneg; + PRINT(CCV_CLI_INFO, "stage classifier real TP rate : %f, FP rate : %f\n", tp, fp); + PRINT(CCV_CLI_INFO, "stage classifier TP rate : %f, FP rate : %f at threshold : %f\n", etp, efp, classifier.threshold); + if (k > 0) + { + /* save classifier state */ + sprintf(buf, "%s/stage-%d.txt", dir, i); + _ccv_write_bbf_stage_classifier(buf, &classifier); + sprintf(buf, "%s/stat.txt", dir); + _ccv_save_bbf_cacade_training_state(buf, i, k, bg, pw, nw, posnum, negnum); + } + if (etp > params.pos_crit && efp < params.neg_crit) + break; + /* TODO: more post-process is needed in here */ + + /* select the best feature in current distribution through genetic algorithm optimization */ + ccv_bbf_feature_t best; + if (params.optimizer == CCV_BBF_GENETIC_OPT) + { + best = _ccv_bbf_genetic_optimize(posdata, rpos, negdata, rneg, params.feature_number, cascade->size, pw, nw); + } + else if (params.optimizer == CCV_BBF_FLOAT_OPT) + { + best = _ccv_bbf_convex_optimize(posdata, rpos, negdata, rneg, 0, cascade->size, pw, nw); + } + else + { + best = _ccv_bbf_genetic_optimize(posdata, rpos, negdata, rneg, params.feature_number, cascade->size, pw, nw); + best = _ccv_bbf_convex_optimize(posdata, rpos, negdata, rneg, &best, cascade->size, pw, nw); + } + double err = _ccv_bbf_error_rate(&best, posdata, rpos, negdata, rneg, cascade->size, pw, nw); + double rw = (1 - err) / err; + totalw = 0; + /* reweight */ + for (j = 0; j < rpos; j++) + { + unsigned char *u8[] = {posdata[j], posdata[j] + isizs0, posdata[j] + isizs01}; + if (!_ccv_run_bbf_feature(&best, steps, u8)) + pw[j] *= rw; + pw[j] *= params.balance_k; + totalw += pw[j]; + } + for (j = 0; j < rneg; j++) + { + unsigned char *u8[] = {negdata[j], negdata[j] + isizs0, negdata[j] + isizs01}; + if (_ccv_run_bbf_feature(&best, steps, u8)) + nw[j] *= rw; + nw[j] *= inv_balance_k; + totalw += nw[j]; + } + for (j = 0; j < rpos; j++) + pw[j] = pw[j] / totalw; + for (j = 0; j < rneg; j++) + nw[j] = nw[j] / totalw; + double c = log(rw); + PRINT(CCV_CLI_INFO, "coefficient of feature %d: %f\n", k + 1, c); + classifier.count = k + 1; + /* resizing classifier */ + if (k >= cacheK) + { + ccv_bbf_feature_t *feature = (ccv_bbf_feature_t *)ccmalloc(cacheK * 2 * sizeof(ccv_bbf_feature_t)); + memcpy(feature, classifier.feature, cacheK * sizeof(ccv_bbf_feature_t)); + ccfree(classifier.feature); + float *alpha = (float *)ccmalloc(cacheK * 4 * sizeof(float)); + memcpy(alpha, classifier.alpha, cacheK * 2 * sizeof(float)); + ccfree(classifier.alpha); + classifier.feature = feature; + classifier.alpha = alpha; + cacheK *= 2; + } + /* setup new feature */ + classifier.feature[k] = best; + classifier.alpha[k * 2] = -c; + classifier.alpha[k * 2 + 1] = c; + } + cascade->count = i + 1; + ccv_bbf_stage_classifier_t *stage_classifier = (ccv_bbf_stage_classifier_t *)ccmalloc(cascade->count * sizeof(ccv_bbf_stage_classifier_t)); + memcpy(stage_classifier, cascade->stage_classifier, i * sizeof(ccv_bbf_stage_classifier_t)); + ccfree(cascade->stage_classifier); + stage_classifier[i] = classifier; + cascade->stage_classifier = stage_classifier; + k = 0; + bg = 0; + for (j = 0; j < rpos; j++) + ccfree(posdata[j]); + for (j = 0; j < rneg; j++) + ccfree(negdata[j]); + } + + ccfree(neval); + ccfree(peval); + ccfree(nw); + ccfree(pw); + ccfree(negdata); + ccfree(posdata); + ccfree(cascade); +} +#else +void ccv_bbf_classifier_cascade_new(ccv_dense_matrix_t **posimg, int posnum, char **bgfiles, int bgnum, int negnum, ccv_size_t size, const char *dir, ccv_bbf_new_param_t params) +{ + fprintf(stderr, " ccv_bbf_classifier_cascade_new requires libgsl support, please compile ccv with libgsl.\n"); +} +#endif + +static int _ccv_is_equal(const void *_r1, const void *_r2, void *data) +{ + const ccv_comp_t *r1 = (const ccv_comp_t *)_r1; + const ccv_comp_t *r2 = (const ccv_comp_t *)_r2; + int distance = (int)(r1->rect.width * 0.25 + 0.5); + + return r2->rect.x <= r1->rect.x + distance && + r2->rect.x >= r1->rect.x - distance && + r2->rect.y <= r1->rect.y + distance && + r2->rect.y >= r1->rect.y - distance && + r2->rect.width <= (int)(r1->rect.width * 1.5 + 0.5) && + (int)(r2->rect.width * 1.5 + 0.5) >= r1->rect.width; +} + +static int _ccv_is_equal_same_class(const void *_r1, const void *_r2, void *data) +{ + const ccv_comp_t *r1 = (const ccv_comp_t *)_r1; + const ccv_comp_t *r2 = (const ccv_comp_t *)_r2; + int distance = (int)(r1->rect.width * 0.25 + 0.5); + + return r2->classification.id == r1->classification.id && + r2->rect.x <= r1->rect.x + distance && + r2->rect.x >= r1->rect.x - distance && + r2->rect.y <= r1->rect.y + distance && + r2->rect.y >= r1->rect.y - distance && + r2->rect.width <= (int)(r1->rect.width * 1.5 + 0.5) && + (int)(r2->rect.width * 1.5 + 0.5) >= r1->rect.width; +} + +ccv_array_t *ccv_bbf_detect_objects(ccv_dense_matrix_t *a, ccv_bbf_classifier_cascade_t **_cascade, int count, ccv_bbf_param_t params) +{ + int hr = a->rows / params.size.height; + int wr = a->cols / params.size.width; + double scale = pow(2., 1. / (params.interval + 1.)); + int next = params.interval + 1; + int scale_upto = (int)(log((double)ccv_min(hr, wr)) / log(scale)); + ccv_dense_matrix_t **pyr = (ccv_dense_matrix_t **)alloca((scale_upto + next * 2) * 4 * sizeof(ccv_dense_matrix_t *)); + memset(pyr, 0, (scale_upto + next * 2) * 4 * sizeof(ccv_dense_matrix_t *)); + if (params.size.height != _cascade[0]->size.height || params.size.width != _cascade[0]->size.width) + ccv_resample(a, &pyr[0], 0, a->rows * _cascade[0]->size.height / params.size.height, a->cols * _cascade[0]->size.width / params.size.width, CCV_INTER_AREA); + else + pyr[0] = a; + int i, j, k, t, x, y, q; + for (i = 1; i < ccv_min(params.interval + 1, scale_upto + next * 2); i++) + ccv_resample(pyr[0], &pyr[i * 4], 0, (int)(pyr[0]->rows / pow(scale, i)), (int)(pyr[0]->cols / pow(scale, i)), CCV_INTER_AREA); + for (i = next; i < scale_upto + next * 2; i++) + ccv_sample_down(pyr[i * 4 - next * 4], &pyr[i * 4], 0, 0, 0); + if (params.accurate) + for (i = next * 2; i < scale_upto + next * 2; i++) + { + ccv_sample_down(pyr[i * 4 - next * 4], &pyr[i * 4 + 1], 0, 1, 0); + ccv_sample_down(pyr[i * 4 - next * 4], &pyr[i * 4 + 2], 0, 0, 1); + ccv_sample_down(pyr[i * 4 - next * 4], &pyr[i * 4 + 3], 0, 1, 1); + } + ccv_array_t *idx_seq; + ccv_array_t *seq = ccv_array_new(sizeof(ccv_comp_t), 64, 0); + ccv_array_t *seq2 = ccv_array_new(sizeof(ccv_comp_t), 64, 0); + ccv_array_t *result_seq = ccv_array_new(sizeof(ccv_comp_t), 64, 0); + /* detect in multi scale */ + for (t = 0; t < count; t++) + { + ccv_bbf_classifier_cascade_t *cascade = _cascade[t]; + float scale_x = (float)params.size.width / (float)cascade->size.width; + float scale_y = (float)params.size.height / (float)cascade->size.height; + ccv_array_clear(seq); + for (i = 0; i < scale_upto; i++) + { + int dx[] = {0, 1, 0, 1}; + int dy[] = {0, 0, 1, 1}; + int i_rows = pyr[i * 4 + next * 8]->rows - (cascade->size.height >> 2); + int steps[] = {pyr[i * 4]->step, pyr[i * 4 + next * 4]->step, pyr[i * 4 + next * 8]->step}; + int i_cols = pyr[i * 4 + next * 8]->cols - (cascade->size.width >> 2); + int paddings[] = {pyr[i * 4]->step * 4 - i_cols * 4, + pyr[i * 4 + next * 4]->step * 2 - i_cols * 2, + pyr[i * 4 + next * 8]->step - i_cols}; + for (q = 0; q < (params.accurate ? 4 : 1); q++) + { + unsigned char *u8[] = {pyr[i * 4]->data.u8 + dx[q] * 2 + dy[q] * pyr[i * 4]->step * 2, pyr[i * 4 + next * 4]->data.u8 + dx[q] + dy[q] * pyr[i * 4 + next * 4]->step, pyr[i * 4 + next * 8 + q]->data.u8}; + for (y = 0; y < i_rows; y++) + { + for (x = 0; x < i_cols; x++) + { + float sum; + int flag = 1; + ccv_bbf_stage_classifier_t *classifier = cascade->stage_classifier; + for (j = 0; j < cascade->count; ++j, ++classifier) + { + sum = 0; + float *alpha = classifier->alpha; + ccv_bbf_feature_t *feature = classifier->feature; + for (k = 0; k < classifier->count; ++k, alpha += 2, ++feature) + sum += alpha[_ccv_run_bbf_feature(feature, steps, u8)]; + if (sum < classifier->threshold) + { + flag = 0; + break; + } + } + if (flag) + { + ccv_comp_t comp; + comp.rect = ccv_rect((int)((x * 4 + dx[q] * 2) * scale_x + 0.5), (int)((y * 4 + dy[q] * 2) * scale_y + 0.5), (int)(cascade->size.width * scale_x + 0.5), (int)(cascade->size.height * scale_y + 0.5)); + comp.neighbors = 1; + comp.classification.id = t; + comp.classification.confidence = sum; + ccv_array_push(seq, &comp); + } + u8[0] += 4; + u8[1] += 2; + u8[2] += 1; + } + u8[0] += paddings[0]; + u8[1] += paddings[1]; + u8[2] += paddings[2]; + } + } + scale_x *= scale; + scale_y *= scale; + } + + /* the following code from OpenCV's haar feature implementation */ + if (params.min_neighbors == 0) + { + for (i = 0; i < seq->rnum; i++) + { + ccv_comp_t *comp = (ccv_comp_t *)ccv_array_get(seq, i); + ccv_array_push(result_seq, comp); + } + } + else + { + idx_seq = 0; + ccv_array_clear(seq2); + // group retrieved rectangles in order to filter out noise + int ncomp = ccv_array_group(seq, &idx_seq, _ccv_is_equal_same_class, 0); + ccv_comp_t *comps = (ccv_comp_t *)ccmalloc((ncomp + 1) * sizeof(ccv_comp_t)); + memset(comps, 0, (ncomp + 1) * sizeof(ccv_comp_t)); + + // count number of neighbors + for (i = 0; i < seq->rnum; i++) + { + ccv_comp_t r1 = *(ccv_comp_t *)ccv_array_get(seq, i); + int idx = *(int *)ccv_array_get(idx_seq, i); + + if (comps[idx].neighbors == 0) + comps[idx].classification.confidence = r1.classification.confidence; + + ++comps[idx].neighbors; + + comps[idx].rect.x += r1.rect.x; + comps[idx].rect.y += r1.rect.y; + comps[idx].rect.width += r1.rect.width; + comps[idx].rect.height += r1.rect.height; + comps[idx].classification.id = r1.classification.id; + comps[idx].classification.confidence = ccv_max(comps[idx].classification.confidence, r1.classification.confidence); + } + + // calculate average bounding box + for (i = 0; i < ncomp; i++) + { + int n = comps[i].neighbors; + if (n >= params.min_neighbors) + { + ccv_comp_t comp; + comp.rect.x = (comps[i].rect.x * 2 + n) / (2 * n); + comp.rect.y = (comps[i].rect.y * 2 + n) / (2 * n); + comp.rect.width = (comps[i].rect.width * 2 + n) / (2 * n); + comp.rect.height = (comps[i].rect.height * 2 + n) / (2 * n); + comp.neighbors = comps[i].neighbors; + comp.classification.id = comps[i].classification.id; + comp.classification.confidence = comps[i].classification.confidence; + ccv_array_push(seq2, &comp); + } + } + + // filter out small face rectangles inside large face rectangles + for (i = 0; i < seq2->rnum; i++) + { + ccv_comp_t r1 = *(ccv_comp_t *)ccv_array_get(seq2, i); + int flag = 1; + + for (j = 0; j < seq2->rnum; j++) + { + ccv_comp_t r2 = *(ccv_comp_t *)ccv_array_get(seq2, j); + int distance = (int)(r2.rect.width * 0.25 + 0.5); + + if (i != j && + r1.classification.id == r2.classification.id && + r1.rect.x >= r2.rect.x - distance && + r1.rect.y >= r2.rect.y - distance && + r1.rect.x + r1.rect.width <= r2.rect.x + r2.rect.width + distance && + r1.rect.y + r1.rect.height <= r2.rect.y + r2.rect.height + distance && + (r2.neighbors > ccv_max(3, r1.neighbors) || r1.neighbors < 3)) + { + flag = 0; + break; + } + } + + if (flag) + ccv_array_push(result_seq, &r1); + } + ccv_array_free(idx_seq); + ccfree(comps); + } + } + + ccv_array_free(seq); + ccv_array_free(seq2); + + ccv_array_t *result_seq2; + /* the following code from OpenCV's haar feature implementation */ + if (params.flags & CCV_BBF_NO_NESTED) + { + result_seq2 = ccv_array_new(sizeof(ccv_comp_t), 64, 0); + idx_seq = 0; + // group retrieved rectangles in order to filter out noise + int ncomp = ccv_array_group(result_seq, &idx_seq, _ccv_is_equal, 0); + ccv_comp_t *comps = (ccv_comp_t *)ccmalloc((ncomp + 1) * sizeof(ccv_comp_t)); + memset(comps, 0, (ncomp + 1) * sizeof(ccv_comp_t)); + + // count number of neighbors + for (i = 0; i < result_seq->rnum; i++) + { + ccv_comp_t r1 = *(ccv_comp_t *)ccv_array_get(result_seq, i); + int idx = *(int *)ccv_array_get(idx_seq, i); + + if (comps[idx].neighbors == 0 || comps[idx].classification.confidence < r1.classification.confidence) + { + comps[idx].classification.confidence = r1.classification.confidence; + comps[idx].neighbors = 1; + comps[idx].rect = r1.rect; + comps[idx].classification.id = r1.classification.id; + } + } + + // calculate average bounding box + for (i = 0; i < ncomp; i++) + if (comps[i].neighbors) + ccv_array_push(result_seq2, &comps[i]); + + ccv_array_free(result_seq); + ccfree(comps); + } + else + { + result_seq2 = result_seq; + } + + for (i = 1; i < scale_upto + next * 2; i++) + ccv_matrix_free(pyr[i * 4]); + if (params.accurate) + for (i = next * 2; i < scale_upto + next * 2; i++) + { + ccv_matrix_free(pyr[i * 4 + 1]); + ccv_matrix_free(pyr[i * 4 + 2]); + ccv_matrix_free(pyr[i * 4 + 3]); + } + if (params.size.height != _cascade[0]->size.height || params.size.width != _cascade[0]->size.width) + ccv_matrix_free(pyr[0]); + + return result_seq2; +} + +ccv_bbf_classifier_cascade_t *ccv_bbf_read_classifier_cascade(const char *directory) +{ + char buf[1024]; + sprintf(buf, "%s/cascade.txt", directory); + int s, i; + FILE *r = fopen(buf, "r"); + if (r == 0) + return 0; + ccv_bbf_classifier_cascade_t *cascade = (ccv_bbf_classifier_cascade_t *)ccmalloc(sizeof(ccv_bbf_classifier_cascade_t)); + s = fscanf(r, "%d %d %d", &cascade->count, &cascade->size.width, &cascade->size.height); + assert(s > 0); + cascade->stage_classifier = (ccv_bbf_stage_classifier_t *)ccmalloc(cascade->count * sizeof(ccv_bbf_stage_classifier_t)); + for (i = 0; i < cascade->count; i++) + { + sprintf(buf, "%s/stage-%d.txt", directory, i); + if (_ccv_read_bbf_stage_classifier(buf, &cascade->stage_classifier[i]) < 0) + { + cascade->count = i; + break; + } + } + fclose(r); + return cascade; +} + +ccv_bbf_classifier_cascade_t *ccv_bbf_classifier_cascade_read_binary(char *s) +{ + int i; + ccv_bbf_classifier_cascade_t *cascade = (ccv_bbf_classifier_cascade_t *)ccmalloc(sizeof(ccv_bbf_classifier_cascade_t)); + memcpy(&cascade->count, s, sizeof(cascade->count)); + s += sizeof(cascade->count); + memcpy(&cascade->size.width, s, sizeof(cascade->size.width)); + s += sizeof(cascade->size.width); + memcpy(&cascade->size.height, s, sizeof(cascade->size.height)); + s += sizeof(cascade->size.height); + ccv_bbf_stage_classifier_t *classifier = cascade->stage_classifier = (ccv_bbf_stage_classifier_t *)ccmalloc(cascade->count * sizeof(ccv_bbf_stage_classifier_t)); + for (i = 0; i < cascade->count; i++, classifier++) + { + memcpy(&classifier->count, s, sizeof(classifier->count)); + s += sizeof(classifier->count); + memcpy(&classifier->threshold, s, sizeof(classifier->threshold)); + s += sizeof(classifier->threshold); + classifier->feature = (ccv_bbf_feature_t *)ccmalloc(classifier->count * sizeof(ccv_bbf_feature_t)); + classifier->alpha = (float *)ccmalloc(classifier->count * 2 * sizeof(float)); + memcpy(classifier->feature, s, classifier->count * sizeof(ccv_bbf_feature_t)); + s += classifier->count * sizeof(ccv_bbf_feature_t); + memcpy(classifier->alpha, s, classifier->count * 2 * sizeof(float)); + s += classifier->count * 2 * sizeof(float); + } + return cascade; +} + +int ccv_bbf_classifier_cascade_write_binary(ccv_bbf_classifier_cascade_t *cascade, char *s, int slen) +{ + int i; + int len = sizeof(cascade->count) + sizeof(cascade->size.width) + sizeof(cascade->size.height); + ccv_bbf_stage_classifier_t *classifier = cascade->stage_classifier; + for (i = 0; i < cascade->count; i++, classifier++) + len += sizeof(classifier->count) + sizeof(classifier->threshold) + classifier->count * sizeof(ccv_bbf_feature_t) + classifier->count * 2 * sizeof(float); + if (slen >= len) + { + memcpy(s, &cascade->count, sizeof(cascade->count)); + s += sizeof(cascade->count); + memcpy(s, &cascade->size.width, sizeof(cascade->size.width)); + s += sizeof(cascade->size.width); + memcpy(s, &cascade->size.height, sizeof(cascade->size.height)); + s += sizeof(cascade->size.height); + classifier = cascade->stage_classifier; + for (i = 0; i < cascade->count; i++, classifier++) + { + memcpy(s, &classifier->count, sizeof(classifier->count)); + s += sizeof(classifier->count); + memcpy(s, &classifier->threshold, sizeof(classifier->threshold)); + s += sizeof(classifier->threshold); + memcpy(s, classifier->feature, classifier->count * sizeof(ccv_bbf_feature_t)); + s += classifier->count * sizeof(ccv_bbf_feature_t); + memcpy(s, classifier->alpha, classifier->count * 2 * sizeof(float)); + s += classifier->count * 2 * sizeof(float); + } + } + return len; +} + +void ccv_bbf_classifier_cascade_free(ccv_bbf_classifier_cascade_t *cascade) +{ + int i; + for (i = 0; i < cascade->count; ++i) + { + ccfree(cascade->stage_classifier[i].feature); + ccfree(cascade->stage_classifier[i].alpha); + } + ccfree(cascade->stage_classifier); + ccfree(cascade); +} \ No newline at end of file diff --git a/test/source.c++ b/test/source.c++ new file mode 100644 index 0000000..6a6b390 --- /dev/null +++ b/test/source.c++ @@ -0,0 +1,1502 @@ +#include "ccv.h" +#include "ccv_internal.h" +#include +#ifdef HAVE_GSL +#include +#include +#endif +#ifdef USE_OPENMP +#include +#endif + +const ccv_bbf_param_t ccv_bbf_default_params = { + .interval = 5, + .min_neighbors = 2, + .accurate = 1, + .flags = 0, + .size = { + 24, + 24, + }, +}; + +#define _ccv_width_padding(x) (((x) + 3) & -4) + +static inline int _ccv_run_bbf_feature(ccv_bbf_feature_t* feature, int* step, unsigned char** u8) +{ +#define pf_at(i) (*(u8[feature->pz[i]] + feature->px[i] + feature->py[i] * step[feature->pz[i]])) +#define nf_at(i) (*(u8[feature->nz[i]] + feature->nx[i] + feature->ny[i] * step[feature->nz[i]])) + unsigned char pmin = pf_at(0), nmax = nf_at(0); + /* check if every point in P > every point in N, and take a shortcut */ + if (pmin <= nmax) + return 0; + int i; + for (i = 1; i < feature->size; i++) + { + if (feature->pz[i] >= 0) + { + int p = pf_at(i); + if (p < pmin) + { + if (p <= nmax) + return 0; + pmin = p; + } + } + if (feature->nz[i] >= 0) + { + int n = nf_at(i); + if (n > nmax) + { + if (pmin <= n) + return 0; + nmax = n; + } + } + } +#undef pf_at +#undef nf_at + return 1; +} + +static int _ccv_read_bbf_stage_classifier(const char* file, ccv_bbf_stage_classifier_t* classifier) +{ + FILE* r = fopen(file, "r"); + if (r == 0) return -1; + int stat = 0; + stat |= fscanf(r, "%d", &classifier->count); + union { float fl; int i; } fli; + stat |= fscanf(r, "%d", &fli.i); + classifier->threshold = fli.fl; + classifier->feature = (ccv_bbf_feature_t*)ccmalloc(classifier->count * sizeof(ccv_bbf_feature_t)); + classifier->alpha = (float*)ccmalloc(classifier->count * 2 * sizeof(float)); + int i, j; + for (i = 0; i < classifier->count; i++) + { + stat |= fscanf(r, "%d", &classifier->feature[i].size); + for (j = 0; j < classifier->feature[i].size; j++) + { + stat |= fscanf(r, "%d %d %d", &classifier->feature[i].px[j], &classifier->feature[i].py[j], &classifier->feature[i].pz[j]); + stat |= fscanf(r, "%d %d %d", &classifier->feature[i].nx[j], &classifier->feature[i].ny[j], &classifier->feature[i].nz[j]); + } + union { float fl; int i; } flia, flib; + stat |= fscanf(r, "%d %d", &flia.i, &flib.i); + classifier->alpha[i * 2] = flia.fl; + classifier->alpha[i * 2 + 1] = flib.fl; + } + fclose(r); + return 0; +} + +#ifdef HAVE_GSL + +static unsigned int _ccv_bbf_time_measure() +{ + struct timeval tv; + gettimeofday(&tv, 0); + return tv.tv_sec * 1000000 + tv.tv_usec; +} + +#define less_than(a, b, aux) ((a) < (b)) +CCV_IMPLEMENT_QSORT(_ccv_sort_32f, float, less_than) +#undef less_than + +static void _ccv_bbf_eval_data(ccv_bbf_stage_classifier_t* classifier, unsigned char** posdata, int posnum, unsigned char** negdata, int negnum, ccv_size_t size, float* peval, float* neval) +{ + int i, j; + int steps[] = { _ccv_width_padding(size.width), + _ccv_width_padding(size.width >> 1), + _ccv_width_padding(size.width >> 2) }; + int isizs0 = steps[0] * size.height; + int isizs01 = isizs0 + steps[1] * (size.height >> 1); + for (i = 0; i < posnum; i++) + { + unsigned char* u8[] = { posdata[i], posdata[i] + isizs0, posdata[i] + isizs01 }; + float sum = 0; + float* alpha = classifier->alpha; + ccv_bbf_feature_t* feature = classifier->feature; + for (j = 0; j < classifier->count; ++j, alpha += 2, ++feature) + sum += alpha[_ccv_run_bbf_feature(feature, steps, u8)]; + peval[i] = sum; + } + for (i = 0; i < negnum; i++) + { + unsigned char* u8[] = { negdata[i], negdata[i] + isizs0, negdata[i] + isizs01 }; + float sum = 0; + float* alpha = classifier->alpha; + ccv_bbf_feature_t* feature = classifier->feature; + for (j = 0; j < classifier->count; ++j, alpha += 2, ++feature) + sum += alpha[_ccv_run_bbf_feature(feature, steps, u8)]; + neval[i] = sum; + } +} + +static int _ccv_prune_positive_data(ccv_bbf_classifier_cascade_t* cascade, unsigned char** posdata, int posnum, ccv_size_t size) +{ + float* peval = (float*)ccmalloc(posnum * sizeof(float)); + int i, j, k, rpos = posnum; + for (i = 0; i < cascade->count; i++) + { + _ccv_bbf_eval_data(cascade->stage_classifier + i, posdata, rpos, 0, 0, size, peval, 0); + k = 0; + for (j = 0; j < rpos; j++) + if (peval[j] >= cascade->stage_classifier[i].threshold) + { + posdata[k] = posdata[j]; + ++k; + } else { + ccfree(posdata[j]); + } + rpos = k; + } + ccfree(peval); + return rpos; +} + +static int _ccv_prepare_background_data(ccv_bbf_classifier_cascade_t* cascade, char** bgfiles, int bgnum, unsigned char** negdata, int negnum) +{ + int t, i, j, k, q; + int negperbg; + int negtotal = 0; + int steps[] = { _ccv_width_padding(cascade->size.width), + _ccv_width_padding(cascade->size.width >> 1), + _ccv_width_padding(cascade->size.width >> 2) }; + int isizs0 = steps[0] * cascade->size.height; + int isizs1 = steps[1] * (cascade->size.height >> 1); + int isizs2 = steps[2] * (cascade->size.height >> 2); + int* idcheck = (int*)ccmalloc(negnum * sizeof(int)); + + gsl_rng_env_setup(); + + gsl_rng* rng = gsl_rng_alloc(gsl_rng_default); + gsl_rng_set(rng, (unsigned long int)idcheck); + + ccv_size_t imgsz = cascade->size; + int rneg = negtotal; + for (t = 0; negtotal < negnum; t++) + { + PRINT(CCV_CLI_INFO, "preparing negative data ... 0%%"); + for (i = 0; i < bgnum; i++) + { + negperbg = (t < 2) ? (negnum - negtotal) / (bgnum - i) + 1 : negnum - negtotal; + ccv_dense_matrix_t* image = 0; + ccv_read(bgfiles[i], &image, CCV_IO_GRAY | CCV_IO_ANY_FILE); + assert((image->type & CCV_C1) && (image->type & CCV_8U)); + if (image == 0) + { + PRINT(CCV_CLI_ERROR, "\n%s file corrupted\n", bgfiles[i]); + continue; + } + if (t % 2 != 0) + ccv_flip(image, 0, 0, CCV_FLIP_X); + if (t % 4 >= 2) + ccv_flip(image, 0, 0, CCV_FLIP_Y); + ccv_bbf_param_t params = { .interval = 3, .min_neighbors = 0, .accurate = 1, .flags = 0, .size = cascade->size }; + ccv_array_t* detected = ccv_bbf_detect_objects(image, &cascade, 1, params); + memset(idcheck, 0, ccv_min(detected->rnum, negperbg) * sizeof(int)); + for (j = 0; j < ccv_min(detected->rnum, negperbg); j++) + { + int r = gsl_rng_uniform_int(rng, detected->rnum); + int flag = 1; + ccv_rect_t* rect = (ccv_rect_t*)ccv_array_get(detected, r); + while (flag) { + flag = 0; + for (k = 0; k < j; k++) + if (r == idcheck[k]) + { + flag = 1; + r = gsl_rng_uniform_int(rng, detected->rnum); + break; + } + rect = (ccv_rect_t*)ccv_array_get(detected, r); + if ((rect->x < 0) || (rect->y < 0) || (rect->width + rect->x > image->cols) || (rect->height + rect->y > image->rows)) + { + flag = 1; + r = gsl_rng_uniform_int(rng, detected->rnum); + } + } + idcheck[j] = r; + ccv_dense_matrix_t* temp = 0; + ccv_dense_matrix_t* imgs0 = 0; + ccv_dense_matrix_t* imgs1 = 0; + ccv_dense_matrix_t* imgs2 = 0; + ccv_slice(image, (ccv_matrix_t**)&temp, 0, rect->y, rect->x, rect->height, rect->width); + ccv_resample(temp, &imgs0, 0, imgsz.height, imgsz.width, CCV_INTER_AREA); + assert(imgs0->step == steps[0]); + ccv_matrix_free(temp); + ccv_sample_down(imgs0, &imgs1, 0, 0, 0); + assert(imgs1->step == steps[1]); + ccv_sample_down(imgs1, &imgs2, 0, 0, 0); + assert(imgs2->step == steps[2]); + + negdata[negtotal] = (unsigned char*)ccmalloc(isizs0 + isizs1 + isizs2); + unsigned char* u8s0 = negdata[negtotal]; + unsigned char* u8s1 = negdata[negtotal] + isizs0; + unsigned char* u8s2 = negdata[negtotal] + isizs0 + isizs1; + unsigned char* u8[] = { u8s0, u8s1, u8s2 }; + memcpy(u8s0, imgs0->data.u8, imgs0->rows * imgs0->step); + ccv_matrix_free(imgs0); + memcpy(u8s1, imgs1->data.u8, imgs1->rows * imgs1->step); + ccv_matrix_free(imgs1); + memcpy(u8s2, imgs2->data.u8, imgs2->rows * imgs2->step); + ccv_matrix_free(imgs2); + + flag = 1; + ccv_bbf_stage_classifier_t* classifier = cascade->stage_classifier; + for (k = 0; k < cascade->count; ++k, ++classifier) + { + float sum = 0; + float* alpha = classifier->alpha; + ccv_bbf_feature_t* feature = classifier->feature; + for (q = 0; q < classifier->count; ++q, alpha += 2, ++feature) + sum += alpha[_ccv_run_bbf_feature(feature, steps, u8)]; + if (sum < classifier->threshold) + { + flag = 0; + break; + } + } + if (!flag) + ccfree(negdata[negtotal]); + else { + ++negtotal; + if (negtotal >= negnum) + break; + } + } + ccv_array_free(detected); + ccv_matrix_free(image); + ccv_drain_cache(); + PRINT(CCV_CLI_INFO, "\rpreparing negative data ... %2d%%", 100 * negtotal / negnum); + fflush(0); + if (negtotal >= negnum) + break; + } + if (rneg == negtotal) + break; + rneg = negtotal; + PRINT(CCV_CLI_INFO, "\nentering additional round %d\n", t + 1); + } + gsl_rng_free(rng); + ccfree(idcheck); + ccv_drain_cache(); + PRINT(CCV_CLI_INFO, "\n"); + return negtotal; +} + +static void _ccv_prepare_positive_data(ccv_dense_matrix_t** posimg, unsigned char** posdata, ccv_size_t size, int posnum) +{ + PRINT(CCV_CLI_INFO, "preparing positive data ... 0%%"); + int i; + for (i = 0; i < posnum; i++) + { + ccv_dense_matrix_t* imgs0 = posimg[i]; + ccv_dense_matrix_t* imgs1 = 0; + ccv_dense_matrix_t* imgs2 = 0; + assert((imgs0->type & CCV_C1) && (imgs0->type & CCV_8U) && imgs0->rows == size.height && imgs0->cols == size.width); + ccv_sample_down(imgs0, &imgs1, 0, 0, 0); + ccv_sample_down(imgs1, &imgs2, 0, 0, 0); + int isizs0 = imgs0->rows * imgs0->step; + int isizs1 = imgs1->rows * imgs1->step; + int isizs2 = imgs2->rows * imgs2->step; + + posdata[i] = (unsigned char*)ccmalloc(isizs0 + isizs1 + isizs2); + memcpy(posdata[i], imgs0->data.u8, isizs0); + memcpy(posdata[i] + isizs0, imgs1->data.u8, isizs1); + memcpy(posdata[i] + isizs0 + isizs1, imgs2->data.u8, isizs2); + + PRINT(CCV_CLI_INFO, "\rpreparing positive data ... %2d%%", 100 * (i + 1) / posnum); + fflush(0); + + ccv_matrix_free(imgs1); + ccv_matrix_free(imgs2); + } + ccv_drain_cache(); + PRINT(CCV_CLI_INFO, "\n"); +} + +typedef struct { + double fitness; + int pk, nk; + int age; + double error; + ccv_bbf_feature_t feature; +} ccv_bbf_gene_t; + +static inline void _ccv_bbf_genetic_fitness(ccv_bbf_gene_t* gene) +{ + gene->fitness = (1 - gene->error) * exp(-0.01 * gene->age) * exp((gene->pk + gene->nk) * log(1.015)); +} + +static inline int _ccv_bbf_exist_gene_feature(ccv_bbf_gene_t* gene, int x, int y, int z) +{ + int i; + for (i = 0; i < gene->pk; i++) + if (z == gene->feature.pz[i] && x == gene->feature.px[i] && y == gene->feature.py[i]) + return 1; + for (i = 0; i < gene->nk; i++) + if (z == gene->feature.nz[i] && x == gene->feature.nx[i] && y == gene->feature.ny[i]) + return 1; + return 0; +} + +static inline void _ccv_bbf_randomize_gene(gsl_rng* rng, ccv_bbf_gene_t* gene, int* rows, int* cols) +{ + int i; + do { + gene->pk = gsl_rng_uniform_int(rng, CCV_BBF_POINT_MAX - 1) + 1; + gene->nk = gsl_rng_uniform_int(rng, CCV_BBF_POINT_MAX - 1) + 1; + } while (gene->pk + gene->nk < CCV_BBF_POINT_MIN); /* a hard restriction of at least 3 points have to be examed */ + gene->feature.size = ccv_max(gene->pk, gene->nk); + gene->age = 0; + for (i = 0; i < CCV_BBF_POINT_MAX; i++) + { + gene->feature.pz[i] = -1; + gene->feature.nz[i] = -1; + } + int x, y, z; + for (i = 0; i < gene->pk; i++) + { + do { + z = gsl_rng_uniform_int(rng, 3); + x = gsl_rng_uniform_int(rng, cols[z]); + y = gsl_rng_uniform_int(rng, rows[z]); + } while (_ccv_bbf_exist_gene_feature(gene, x, y, z)); + gene->feature.pz[i] = z; + gene->feature.px[i] = x; + gene->feature.py[i] = y; + } + for (i = 0; i < gene->nk; i++) + { + do { + z = gsl_rng_uniform_int(rng, 3); + x = gsl_rng_uniform_int(rng, cols[z]); + y = gsl_rng_uniform_int(rng, rows[z]); + } while ( _ccv_bbf_exist_gene_feature(gene, x, y, z)); + gene->feature.nz[i] = z; + gene->feature.nx[i] = x; + gene->feature.ny[i] = y; + } +} + +static inline double _ccv_bbf_error_rate(ccv_bbf_feature_t* feature, unsigned char** posdata, int posnum, unsigned char** negdata, int negnum, ccv_size_t size, double* pw, double* nw) +{ + int i; + int steps[] = { _ccv_width_padding(size.width), + _ccv_width_padding(size.width >> 1), + _ccv_width_padding(size.width >> 2) }; + int isizs0 = steps[0] * size.height; + int isizs01 = isizs0 + steps[1] * (size.height >> 1); + double error = 0; + for (i = 0; i < posnum; i++) + { + unsigned char* u8[] = { posdata[i], posdata[i] + isizs0, posdata[i] + isizs01 }; + if (!_ccv_run_bbf_feature(feature, steps, u8)) + error += pw[i]; + } + for (i = 0; i < negnum; i++) + { + unsigned char* u8[] = { negdata[i], negdata[i] + isizs0, negdata[i] + isizs01 }; + if ( _ccv_run_bbf_feature(feature, steps, u8)) + error += nw[i]; + } + return error; +} + +#define less_than(fit1, fit2, aux) ((fit1).fitness >= (fit2).fitness) +static CCV_IMPLEMENT_QSORT(_ccv_bbf_genetic_qsort, ccv_bbf_gene_t, less_than) +#undef less_than + +static ccv_bbf_feature_t _ccv_bbf_genetic_optimize(unsigned char** posdata, int posnum, unsigned char** negdata, int negnum, int ftnum, ccv_size_t size, double* pw, double* nw) +{ + ccv_bbf_feature_t best; + /* seed (random method) */ + gsl_rng_env_setup(); + gsl_rng* rng = gsl_rng_alloc(gsl_rng_default); + union { unsigned long int li; double db; } dbli; + dbli.db = pw[0] + nw[0]; + gsl_rng_set(rng, dbli.li); + int i, j; + int pnum = ftnum * 100; + assert(pnum > 0); + ccv_bbf_gene_t* gene = (ccv_bbf_gene_t*)ccmalloc(pnum * sizeof(ccv_bbf_gene_t)); + int rows[] = { size.height, size.height >> 1, size.height >> 2 }; + int cols[] = { size.width, size.width >> 1, size.width >> 2 }; + for (i = 0; i < pnum; i++) + _ccv_bbf_randomize_gene(rng, &gene[i], rows, cols); + unsigned int timer = _ccv_bbf_time_measure(); +#ifdef USE_OPENMP +#pragma omp parallel for private(i) schedule(dynamic) +#endif + for (i = 0; i < pnum; i++) + gene[i].error = _ccv_bbf_error_rate(&gene[i].feature, posdata, posnum, negdata, negnum, size, pw, nw); + timer = _ccv_bbf_time_measure() - timer; + for (i = 0; i < pnum; i++) + _ccv_bbf_genetic_fitness(&gene[i]); + double best_err = 1; + int rnum = ftnum * 39; /* number of randomize */ + int mnum = ftnum * 40; /* number of mutation */ + int hnum = ftnum * 20; /* number of hybrid */ + /* iteration stop crit : best no change in 40 iterations */ + int it = 0, t; + for (t = 0 ; it < 40; ++it, ++t) + { + int min_id = 0; + double min_err = gene[0].error; + for (i = 1; i < pnum; i++) + if (gene[i].error < min_err) + { + min_id = i; + min_err = gene[i].error; + } + min_err = gene[min_id].error = _ccv_bbf_error_rate(&gene[min_id].feature, posdata, posnum, negdata, negnum, size, pw, nw); + if (min_err < best_err) + { + best_err = min_err; + memcpy(&best, &gene[min_id].feature, sizeof(best)); + PRINT(CCV_CLI_INFO, "best bbf feature with error %f\n|-size: %d\n|-positive point: ", best_err, best.size); + for (i = 0; i < best.size; i++) + PRINT(CCV_CLI_INFO, "(%d %d %d), ", best.px[i], best.py[i], best.pz[i]); + PRINT(CCV_CLI_INFO, "\n|-negative point: "); + for (i = 0; i < best.size; i++) + PRINT(CCV_CLI_INFO, "(%d %d %d), ", best.nx[i], best.ny[i], best.nz[i]); + PRINT(CCV_CLI_INFO, "\n"); + it = 0; + } + PRINT(CCV_CLI_INFO, "minimum error achieved in round %d(%d) : %f with %d ms\n", t, it, min_err, timer / 1000); + _ccv_bbf_genetic_qsort(gene, pnum, 0); + for (i = 0; i < ftnum; i++) + ++gene[i].age; + for (i = ftnum; i < ftnum + mnum; i++) + { + int parent = gsl_rng_uniform_int(rng, ftnum); + memcpy(gene + i, gene + parent, sizeof(ccv_bbf_gene_t)); + /* three mutation strategy : 1. add, 2. remove, 3. refine */ + int pnm, pn = gsl_rng_uniform_int(rng, 2); + int* pnk[] = { &gene[i].pk, &gene[i].nk }; + int* pnx[] = { gene[i].feature.px, gene[i].feature.nx }; + int* pny[] = { gene[i].feature.py, gene[i].feature.ny }; + int* pnz[] = { gene[i].feature.pz, gene[i].feature.nz }; + int x, y, z; + int victim, decay = 1; + do { + switch (gsl_rng_uniform_int(rng, 3)) + { + case 0: /* add */ + if (gene[i].pk == CCV_BBF_POINT_MAX && gene[i].nk == CCV_BBF_POINT_MAX) + break; + while (*pnk[pn] + 1 > CCV_BBF_POINT_MAX) + pn = gsl_rng_uniform_int(rng, 2); + do { + z = gsl_rng_uniform_int(rng, 3); + x = gsl_rng_uniform_int(rng, cols[z]); + y = gsl_rng_uniform_int(rng, rows[z]); + } while (_ccv_bbf_exist_gene_feature(&gene[i], x, y, z)); + pnz[pn][*pnk[pn]] = z; + pnx[pn][*pnk[pn]] = x; + pny[pn][*pnk[pn]] = y; + ++(*pnk[pn]); + gene[i].feature.size = ccv_max(gene[i].pk, gene[i].nk); + decay = gene[i].age = 0; + break; + case 1: /* remove */ + if (gene[i].pk + gene[i].nk <= CCV_BBF_POINT_MIN) /* at least 3 points have to be examed */ + break; + while (*pnk[pn] - 1 <= 0) // || *pnk[pn] + *pnk[!pn] - 1 < CCV_BBF_POINT_MIN) + pn = gsl_rng_uniform_int(rng, 2); + victim = gsl_rng_uniform_int(rng, *pnk[pn]); + for (j = victim; j < *pnk[pn] - 1; j++) + { + pnz[pn][j] = pnz[pn][j + 1]; + pnx[pn][j] = pnx[pn][j + 1]; + pny[pn][j] = pny[pn][j + 1]; + } + pnz[pn][*pnk[pn] - 1] = -1; + --(*pnk[pn]); + gene[i].feature.size = ccv_max(gene[i].pk, gene[i].nk); + decay = gene[i].age = 0; + break; + case 2: /* refine */ + pnm = gsl_rng_uniform_int(rng, *pnk[pn]); + do { + z = gsl_rng_uniform_int(rng, 3); + x = gsl_rng_uniform_int(rng, cols[z]); + y = gsl_rng_uniform_int(rng, rows[z]); + } while (_ccv_bbf_exist_gene_feature(&gene[i], x, y, z)); + pnz[pn][pnm] = z; + pnx[pn][pnm] = x; + pny[pn][pnm] = y; + decay = gene[i].age = 0; + break; + } + } while (decay); + } + for (i = ftnum + mnum; i < ftnum + mnum + hnum; i++) + { + /* hybrid strategy: taking positive points from dad, negative points from mum */ + int dad, mum; + do { + dad = gsl_rng_uniform_int(rng, ftnum); + mum = gsl_rng_uniform_int(rng, ftnum); + } while (dad == mum || gene[dad].pk + gene[mum].nk < CCV_BBF_POINT_MIN); /* at least 3 points have to be examed */ + for (j = 0; j < CCV_BBF_POINT_MAX; j++) + { + gene[i].feature.pz[j] = -1; + gene[i].feature.nz[j] = -1; + } + gene[i].pk = gene[dad].pk; + for (j = 0; j < gene[i].pk; j++) + { + gene[i].feature.pz[j] = gene[dad].feature.pz[j]; + gene[i].feature.px[j] = gene[dad].feature.px[j]; + gene[i].feature.py[j] = gene[dad].feature.py[j]; + } + gene[i].nk = gene[mum].nk; + for (j = 0; j < gene[i].nk; j++) + { + gene[i].feature.nz[j] = gene[mum].feature.nz[j]; + gene[i].feature.nx[j] = gene[mum].feature.nx[j]; + gene[i].feature.ny[j] = gene[mum].feature.ny[j]; + } + gene[i].feature.size = ccv_max(gene[i].pk, gene[i].nk); + gene[i].age = 0; + } + for (i = ftnum + mnum + hnum; i < ftnum + mnum + hnum + rnum; i++) + _ccv_bbf_randomize_gene(rng, &gene[i], rows, cols); + timer = _ccv_bbf_time_measure(); +#ifdef USE_OPENMP +#pragma omp parallel for private(i) schedule(dynamic) +#endif + for (i = 0; i < pnum; i++) + gene[i].error = _ccv_bbf_error_rate(&gene[i].feature, posdata, posnum, negdata, negnum, size, pw, nw); + timer = _ccv_bbf_time_measure() - timer; + for (i = 0; i < pnum; i++) + _ccv_bbf_genetic_fitness(&gene[i]); + } + ccfree(gene); + gsl_rng_free(rng); + return best; +} + +#define less_than(fit1, fit2, aux) ((fit1).error < (fit2).error) +static CCV_IMPLEMENT_QSORT(_ccv_bbf_best_qsort, ccv_bbf_gene_t, less_than) +#undef less_than + +static ccv_bbf_gene_t _ccv_bbf_best_gene(ccv_bbf_gene_t* gene, int pnum, int point_min, unsigned char** posdata, int posnum, unsigned char** negdata, int negnum, ccv_size_t size, double* pw, double* nw) +{ + int i; + unsigned int timer = _ccv_bbf_time_measure(); +#ifdef USE_OPENMP +#pragma omp parallel for private(i) schedule(dynamic) +#endif + for (i = 0; i < pnum; i++) + gene[i].error = _ccv_bbf_error_rate(&gene[i].feature, posdata, posnum, negdata, negnum, size, pw, nw); + timer = _ccv_bbf_time_measure() - timer; + _ccv_bbf_best_qsort(gene, pnum, 0); + int min_id = 0; + double min_err = gene[0].error; + for (i = 0; i < pnum; i++) + if (gene[i].nk + gene[i].pk >= point_min) + { + min_id = i; + min_err = gene[i].error; + break; + } + PRINT(CCV_CLI_INFO, "local best bbf feature with error %f\n|-size: %d\n|-positive point: ", min_err, gene[min_id].feature.size); + for (i = 0; i < gene[min_id].feature.size; i++) + PRINT(CCV_CLI_INFO, "(%d %d %d), ", gene[min_id].feature.px[i], gene[min_id].feature.py[i], gene[min_id].feature.pz[i]); + PRINT(CCV_CLI_INFO, "\n|-negative point: "); + for (i = 0; i < gene[min_id].feature.size; i++) + PRINT(CCV_CLI_INFO, "(%d %d %d), ", gene[min_id].feature.nx[i], gene[min_id].feature.ny[i], gene[min_id].feature.nz[i]); + PRINT(CCV_CLI_INFO, "\nthe computation takes %d ms\n", timer / 1000); + return gene[min_id]; +} + +static ccv_bbf_feature_t _ccv_bbf_convex_optimize(unsigned char** posdata, int posnum, unsigned char** negdata, int negnum, ccv_bbf_feature_t* best_feature, ccv_size_t size, double* pw, double* nw) +{ + ccv_bbf_gene_t best_gene; + /* seed (random method) */ + gsl_rng_env_setup(); + gsl_rng* rng = gsl_rng_alloc(gsl_rng_default); + union { unsigned long int li; double db; } dbli; + dbli.db = pw[0] + nw[0]; + gsl_rng_set(rng, dbli.li); + int i, j, k, q, p, g, t; + int rows[] = { size.height, size.height >> 1, size.height >> 2 }; + int cols[] = { size.width, size.width >> 1, size.width >> 2 }; + int pnum = rows[0] * cols[0] + rows[1] * cols[1] + rows[2] * cols[2]; + ccv_bbf_gene_t* gene = (ccv_bbf_gene_t*)ccmalloc((pnum * (CCV_BBF_POINT_MAX * 2 + 1) * 2 + CCV_BBF_POINT_MAX * 2 + 1) * sizeof(ccv_bbf_gene_t)); + if (best_feature == 0) + { + /* bootstrapping the best feature, start from two pixels, one for positive, one for negative + * the bootstrapping process go like this: first, it will assign a random pixel as positive + * and enumerate every possible pixel as negative, and pick the best one. Then, enumerate every + * possible pixel as positive, and pick the best one, until it converges */ + memset(&best_gene, 0, sizeof(ccv_bbf_gene_t)); + for (i = 0; i < CCV_BBF_POINT_MAX; i++) + best_gene.feature.pz[i] = best_gene.feature.nz[i] = -1; + best_gene.pk = 1; + best_gene.nk = 0; + best_gene.feature.size = 1; + best_gene.feature.pz[0] = gsl_rng_uniform_int(rng, 3); + best_gene.feature.px[0] = gsl_rng_uniform_int(rng, cols[best_gene.feature.pz[0]]); + best_gene.feature.py[0] = gsl_rng_uniform_int(rng, rows[best_gene.feature.pz[0]]); + for (t = 0; ; ++t) + { + g = 0; + if (t % 2 == 0) + { + for (i = 0; i < 3; i++) + for (j = 0; j < cols[i]; j++) + for (k = 0; k < rows[i]; k++) + if (i != best_gene.feature.pz[0] || j != best_gene.feature.px[0] || k != best_gene.feature.py[0]) + { + gene[g] = best_gene; + gene[g].pk = gene[g].nk = 1; + gene[g].feature.nz[0] = i; + gene[g].feature.nx[0] = j; + gene[g].feature.ny[0] = k; + g++; + } + } else { + for (i = 0; i < 3; i++) + for (j = 0; j < cols[i]; j++) + for (k = 0; k < rows[i]; k++) + if (i != best_gene.feature.nz[0] || j != best_gene.feature.nx[0] || k != best_gene.feature.ny[0]) + { + gene[g] = best_gene; + gene[g].pk = gene[g].nk = 1; + gene[g].feature.pz[0] = i; + gene[g].feature.px[0] = j; + gene[g].feature.py[0] = k; + g++; + } + } + PRINT(CCV_CLI_INFO, "bootstrapping round : %d\n", t); + ccv_bbf_gene_t local_gene = _ccv_bbf_best_gene(gene, g, 2, posdata, posnum, negdata, negnum, size, pw, nw); + if (local_gene.error >= best_gene.error - 1e-10) + break; + best_gene = local_gene; + } + } else { + best_gene.feature = *best_feature; + best_gene.pk = best_gene.nk = best_gene.feature.size; + for (i = 0; i < CCV_BBF_POINT_MAX; i++) + if (best_feature->pz[i] == -1) + { + best_gene.pk = i; + break; + } + for (i = 0; i < CCV_BBF_POINT_MAX; i++) + if (best_feature->nz[i] == -1) + { + best_gene.nk = i; + break; + } + } + /* after bootstrapping, the float search technique will do the following permutations: + * a). add a new point to positive or negative + * b). remove a point from positive or negative + * c). move an existing point in positive or negative to another position + * the three rules applied exhaustively, no heuristic used. */ + for (t = 0; ; ++t) + { + g = 0; + for (i = 0; i < 3; i++) + for (j = 0; j < cols[i]; j++) + for (k = 0; k < rows[i]; k++) + if (!_ccv_bbf_exist_gene_feature(&best_gene, j, k, i)) + { + /* add positive point */ + if (best_gene.pk < CCV_BBF_POINT_MAX - 1) + { + gene[g] = best_gene; + gene[g].feature.pz[gene[g].pk] = i; + gene[g].feature.px[gene[g].pk] = j; + gene[g].feature.py[gene[g].pk] = k; + gene[g].pk++; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + /* add negative point */ + if (best_gene.nk < CCV_BBF_POINT_MAX - 1) + { + gene[g] = best_gene; + gene[g].feature.nz[gene[g].nk] = i; + gene[g].feature.nx[gene[g].nk] = j; + gene[g].feature.ny[gene[g].nk] = k; + gene[g].nk++; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + /* refine positive point */ + for (q = 0; q < best_gene.pk; q++) + { + gene[g] = best_gene; + gene[g].feature.pz[q] = i; + gene[g].feature.px[q] = j; + gene[g].feature.py[q] = k; + g++; + } + /* add positive point, remove negative point */ + if (best_gene.pk < CCV_BBF_POINT_MAX - 1 && best_gene.nk > 1) + { + for (q = 0; q < best_gene.nk; q++) + { + gene[g] = best_gene; + gene[g].feature.pz[gene[g].pk] = i; + gene[g].feature.px[gene[g].pk] = j; + gene[g].feature.py[gene[g].pk] = k; + gene[g].pk++; + for (p = q; p < best_gene.nk - 1; p++) + { + gene[g].feature.nz[p] = gene[g].feature.nz[p + 1]; + gene[g].feature.nx[p] = gene[g].feature.nx[p + 1]; + gene[g].feature.ny[p] = gene[g].feature.ny[p + 1]; + } + gene[g].feature.nz[gene[g].nk - 1] = -1; + gene[g].nk--; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + } + /* refine negative point */ + for (q = 0; q < best_gene.nk; q++) + { + gene[g] = best_gene; + gene[g].feature.nz[q] = i; + gene[g].feature.nx[q] = j; + gene[g].feature.ny[q] = k; + g++; + } + /* add negative point, remove positive point */ + if (best_gene.pk > 1 && best_gene.nk < CCV_BBF_POINT_MAX - 1) + { + for (q = 0; q < best_gene.pk; q++) + { + gene[g] = best_gene; + gene[g].feature.nz[gene[g].nk] = i; + gene[g].feature.nx[gene[g].nk] = j; + gene[g].feature.ny[gene[g].nk] = k; + gene[g].nk++; + for (p = q; p < best_gene.pk - 1; p++) + { + gene[g].feature.pz[p] = gene[g].feature.pz[p + 1]; + gene[g].feature.px[p] = gene[g].feature.px[p + 1]; + gene[g].feature.py[p] = gene[g].feature.py[p + 1]; + } + gene[g].feature.pz[gene[g].pk - 1] = -1; + gene[g].pk--; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + } + } + if (best_gene.pk > 1) + for (q = 0; q < best_gene.pk; q++) + { + gene[g] = best_gene; + for (i = q; i < best_gene.pk - 1; i++) + { + gene[g].feature.pz[i] = gene[g].feature.pz[i + 1]; + gene[g].feature.px[i] = gene[g].feature.px[i + 1]; + gene[g].feature.py[i] = gene[g].feature.py[i + 1]; + } + gene[g].feature.pz[gene[g].pk - 1] = -1; + gene[g].pk--; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + if (best_gene.nk > 1) + for (q = 0; q < best_gene.nk; q++) + { + gene[g] = best_gene; + for (i = q; i < best_gene.nk - 1; i++) + { + gene[g].feature.nz[i] = gene[g].feature.nz[i + 1]; + gene[g].feature.nx[i] = gene[g].feature.nx[i + 1]; + gene[g].feature.ny[i] = gene[g].feature.ny[i + 1]; + } + gene[g].feature.nz[gene[g].nk - 1] = -1; + gene[g].nk--; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + gene[g] = best_gene; + g++; + PRINT(CCV_CLI_INFO, "float search round : %d\n", t); + ccv_bbf_gene_t local_gene = _ccv_bbf_best_gene(gene, g, CCV_BBF_POINT_MIN, posdata, posnum, negdata, negnum, size, pw, nw); + if (local_gene.error >= best_gene.error - 1e-10) + break; + best_gene = local_gene; + } + ccfree(gene); + gsl_rng_free(rng); + return best_gene.feature; +} + +static int _ccv_write_bbf_stage_classifier(const char* file, ccv_bbf_stage_classifier_t* classifier) +{ + FILE* w = fopen(file, "wb"); + if (w == 0) return -1; + fprintf(w, "%d\n", classifier->count); + union { float fl; int i; } fli; + fli.fl = classifier->threshold; + fprintf(w, "%d\n", fli.i); + int i, j; + for (i = 0; i < classifier->count; i++) + { + fprintf(w, "%d\n", classifier->feature[i].size); + for (j = 0; j < classifier->feature[i].size; j++) + { + fprintf(w, "%d %d %d\n", classifier->feature[i].px[j], classifier->feature[i].py[j], classifier->feature[i].pz[j]); + fprintf(w, "%d %d %d\n", classifier->feature[i].nx[j], classifier->feature[i].ny[j], classifier->feature[i].nz[j]); + } + union { float fl; int i; } flia, flib; + flia.fl = classifier->alpha[i * 2]; + flib.fl = classifier->alpha[i * 2 + 1]; + fprintf(w, "%d %d\n", flia.i, flib.i); + } + fclose(w); + return 0; +} + +static int _ccv_read_background_data(const char* file, unsigned char** negdata, int* negnum, ccv_size_t size) +{ + int stat = 0; + FILE* r = fopen(file, "rb"); + if (r == 0) return -1; + stat |= fread(negnum, sizeof(int), 1, r); + int i; + int isizs012 = _ccv_width_padding(size.width) * size.height + + _ccv_width_padding(size.width >> 1) * (size.height >> 1) + + _ccv_width_padding(size.width >> 2) * (size.height >> 2); + for (i = 0; i < *negnum; i++) + { + negdata[i] = (unsigned char*)ccmalloc(isizs012); + stat |= fread(negdata[i], 1, isizs012, r); + } + fclose(r); + return 0; +} + +static int _ccv_write_background_data(const char* file, unsigned char** negdata, int negnum, ccv_size_t size) +{ + FILE* w = fopen(file, "w"); + if (w == 0) return -1; + fwrite(&negnum, sizeof(int), 1, w); + int i; + int isizs012 = _ccv_width_padding(size.width) * size.height + + _ccv_width_padding(size.width >> 1) * (size.height >> 1) + + _ccv_width_padding(size.width >> 2) * (size.height >> 2); + for (i = 0; i < negnum; i++) + fwrite(negdata[i], 1, isizs012, w); + fclose(w); + return 0; +} + +static int _ccv_resume_bbf_cascade_training_state(const char* file, int* i, int* k, int* bg, double* pw, double* nw, int posnum, int negnum) +{ + int stat = 0; + FILE* r = fopen(file, "r"); + if (r == 0) return -1; + stat |= fscanf(r, "%d %d %d", i, k, bg); + int j; + union { double db; int i[2]; } dbi; + for (j = 0; j < posnum; j++) + { + stat |= fscanf(r, "%d %d", &dbi.i[0], &dbi.i[1]); + pw[j] = dbi.db; + } + for (j = 0; j < negnum; j++) + { + stat |= fscanf(r, "%d %d", &dbi.i[0], &dbi.i[1]); + nw[j] = dbi.db; + } + fclose(r); + return 0; +} + +static int _ccv_save_bbf_cacade_training_state(const char* file, int i, int k, int bg, double* pw, double* nw, int posnum, int negnum) +{ + FILE* w = fopen(file, "w"); + if (w == 0) return -1; + fprintf(w, "%d %d %d\n", i, k, bg); + int j; + union { double db; int i[2]; } dbi; + for (j = 0; j < posnum; ++j) + { + dbi.db = pw[j]; + fprintf(w, "%d %d ", dbi.i[0], dbi.i[1]); + } + fprintf(w, "\n"); + for (j = 0; j < negnum; ++j) + { + dbi.db = nw[j]; + fprintf(w, "%d %d ", dbi.i[0], dbi.i[1]); + } + fprintf(w, "\n"); + fclose(w); + return 0; +} + +void ccv_bbf_classifier_cascade_new(ccv_dense_matrix_t** posimg, int posnum, char** bgfiles, int bgnum, int negnum, ccv_size_t size, const char* dir, ccv_bbf_new_param_t params) +{ + int i, j, k; + /* allocate memory for usage */ + ccv_bbf_classifier_cascade_t* cascade = (ccv_bbf_classifier_cascade_t*)ccmalloc(sizeof(ccv_bbf_classifier_cascade_t)); + cascade->count = 0; + cascade->size = size; + cascade->stage_classifier = (ccv_bbf_stage_classifier_t*)ccmalloc(sizeof(ccv_bbf_stage_classifier_t)); + unsigned char** posdata = (unsigned char**)ccmalloc(posnum * sizeof(unsigned char*)); + unsigned char** negdata = (unsigned char**)ccmalloc(negnum * sizeof(unsigned char*)); + double* pw = (double*)ccmalloc(posnum * sizeof(double)); + double* nw = (double*)ccmalloc(negnum * sizeof(double)); + float* peval = (float*)ccmalloc(posnum * sizeof(float)); + float* neval = (float*)ccmalloc(negnum * sizeof(float)); + double inv_balance_k = 1. / params.balance_k; + /* balance factor k, and weighted with 0.01 */ + params.balance_k *= 0.01; + inv_balance_k *= 0.01; + + int steps[] = { _ccv_width_padding(cascade->size.width), + _ccv_width_padding(cascade->size.width >> 1), + _ccv_width_padding(cascade->size.width >> 2) }; + int isizs0 = steps[0] * cascade->size.height; + int isizs01 = isizs0 + steps[1] * (cascade->size.height >> 1); + + i = 0; + k = 0; + int bg = 0; + int cacheK = 10; + /* state resume code */ + char buf[1024]; + sprintf(buf, "%s/stat.txt", dir); + _ccv_resume_bbf_cascade_training_state(buf, &i, &k, &bg, pw, nw, posnum, negnum); + if (i > 0) + { + cascade->count = i; + ccfree(cascade->stage_classifier); + cascade->stage_classifier = (ccv_bbf_stage_classifier_t*)ccmalloc(i * sizeof(ccv_bbf_stage_classifier_t)); + for (j = 0; j < i; j++) + { + sprintf(buf, "%s/stage-%d.txt", dir, j); + _ccv_read_bbf_stage_classifier(buf, &cascade->stage_classifier[j]); + } + } + if (k > 0) + cacheK = k; + int rpos, rneg = 0; + if (bg) + { + sprintf(buf, "%s/negs.txt", dir); + _ccv_read_background_data(buf, negdata, &rneg, cascade->size); + } + + for (; i < params.layer; i++) + { + if (!bg) + { + rneg = _ccv_prepare_background_data(cascade, bgfiles, bgnum, negdata, negnum); + /* save state of background data */ + sprintf(buf, "%s/negs.txt", dir); + _ccv_write_background_data(buf, negdata, rneg, cascade->size); + bg = 1; + } + double totalw; + /* save state of cascade : level, weight etc. */ + sprintf(buf, "%s/stat.txt", dir); + _ccv_save_bbf_cacade_training_state(buf, i, k, bg, pw, nw, posnum, negnum); + ccv_bbf_stage_classifier_t classifier; + if (k > 0) + { + /* resume state of classifier */ + sprintf( buf, "%s/stage-%d.txt", dir, i ); + _ccv_read_bbf_stage_classifier(buf, &classifier); + } else { + /* initialize classifier */ + for (j = 0; j < posnum; j++) + pw[j] = params.balance_k; + for (j = 0; j < rneg; j++) + nw[j] = inv_balance_k; + classifier.count = k; + classifier.threshold = 0; + classifier.feature = (ccv_bbf_feature_t*)ccmalloc(cacheK * sizeof(ccv_bbf_feature_t)); + classifier.alpha = (float*)ccmalloc(cacheK * 2 * sizeof(float)); + } + _ccv_prepare_positive_data(posimg, posdata, cascade->size, posnum); + rpos = _ccv_prune_positive_data(cascade, posdata, posnum, cascade->size); + PRINT(CCV_CLI_INFO, "%d postivie data and %d negative data in training\n", rpos, rneg); + /* reweight to 1.00 */ + totalw = 0; + for (j = 0; j < rpos; j++) + totalw += pw[j]; + for (j = 0; j < rneg; j++) + totalw += nw[j]; + for (j = 0; j < rpos; j++) + pw[j] = pw[j] / totalw; + for (j = 0; j < rneg; j++) + nw[j] = nw[j] / totalw; + for (; ; k++) + { + /* get overall true-positive, false-positive rate and threshold */ + double tp = 0, fp = 0, etp = 0, efp = 0; + _ccv_bbf_eval_data(&classifier, posdata, rpos, negdata, rneg, cascade->size, peval, neval); + _ccv_sort_32f(peval, rpos, 0); + classifier.threshold = peval[(int)((1. - params.pos_crit) * rpos)] - 1e-6; + for (j = 0; j < rpos; j++) + { + if (peval[j] >= 0) + ++tp; + if (peval[j] >= classifier.threshold) + ++etp; + } + tp /= rpos; etp /= rpos; + for (j = 0; j < rneg; j++) + { + if (neval[j] >= 0) + ++fp; + if (neval[j] >= classifier.threshold) + ++efp; + } + fp /= rneg; efp /= rneg; + PRINT(CCV_CLI_INFO, "stage classifier real TP rate : %f, FP rate : %f\n", tp, fp); + PRINT(CCV_CLI_INFO, "stage classifier TP rate : %f, FP rate : %f at threshold : %f\n", etp, efp, classifier.threshold); + if (k > 0) + { + /* save classifier state */ + sprintf(buf, "%s/stage-%d.txt", dir, i); + _ccv_write_bbf_stage_classifier(buf, &classifier); + sprintf(buf, "%s/stat.txt", dir); + _ccv_save_bbf_cacade_training_state(buf, i, k, bg, pw, nw, posnum, negnum); + } + if (etp > params.pos_crit && efp < params.neg_crit) + break; + /* TODO: more post-process is needed in here */ + + /* select the best feature in current distribution through genetic algorithm optimization */ + ccv_bbf_feature_t best; + if (params.optimizer == CCV_BBF_GENETIC_OPT) + { + best = _ccv_bbf_genetic_optimize(posdata, rpos, negdata, rneg, params.feature_number, cascade->size, pw, nw); + } else if (params.optimizer == CCV_BBF_FLOAT_OPT) { + best = _ccv_bbf_convex_optimize(posdata, rpos, negdata, rneg, 0, cascade->size, pw, nw); + } else { + best = _ccv_bbf_genetic_optimize(posdata, rpos, negdata, rneg, params.feature_number, cascade->size, pw, nw); + best = _ccv_bbf_convex_optimize(posdata, rpos, negdata, rneg, &best, cascade->size, pw, nw); + } + double err = _ccv_bbf_error_rate(&best, posdata, rpos, negdata, rneg, cascade->size, pw, nw); + double rw = (1 - err) / err; + totalw = 0; + /* reweight */ + for (j = 0; j < rpos; j++) + { + unsigned char* u8[] = { posdata[j], posdata[j] + isizs0, posdata[j] + isizs01 }; + if (!_ccv_run_bbf_feature(&best, steps, u8)) + pw[j] *= rw; + pw[j] *= params.balance_k; + totalw += pw[j]; + } + for (j = 0; j < rneg; j++) + { + unsigned char* u8[] = { negdata[j], negdata[j] + isizs0, negdata[j] + isizs01 }; + if (_ccv_run_bbf_feature(&best, steps, u8)) + nw[j] *= rw; + nw[j] *= inv_balance_k; + totalw += nw[j]; + } + for (j = 0; j < rpos; j++) + pw[j] = pw[j] / totalw; + for (j = 0; j < rneg; j++) + nw[j] = nw[j] / totalw; + double c = log(rw); + PRINT(CCV_CLI_INFO, "coefficient of feature %d: %f\n", k + 1, c); + classifier.count = k + 1; + /* resizing classifier */ + if (k >= cacheK) + { + ccv_bbf_feature_t* feature = (ccv_bbf_feature_t*)ccmalloc(cacheK * 2 * sizeof(ccv_bbf_feature_t)); + memcpy(feature, classifier.feature, cacheK * sizeof(ccv_bbf_feature_t)); + ccfree(classifier.feature); + float* alpha = (float*)ccmalloc(cacheK * 4 * sizeof(float)); + memcpy(alpha, classifier.alpha, cacheK * 2 * sizeof(float)); + ccfree(classifier.alpha); + classifier.feature = feature; + classifier.alpha = alpha; + cacheK *= 2; + } + /* setup new feature */ + classifier.feature[k] = best; + classifier.alpha[k * 2] = -c; + classifier.alpha[k * 2 + 1] = c; + } + cascade->count = i + 1; + ccv_bbf_stage_classifier_t* stage_classifier = (ccv_bbf_stage_classifier_t*)ccmalloc(cascade->count * sizeof(ccv_bbf_stage_classifier_t)); + memcpy(stage_classifier, cascade->stage_classifier, i * sizeof(ccv_bbf_stage_classifier_t)); + ccfree(cascade->stage_classifier); + stage_classifier[i] = classifier; + cascade->stage_classifier = stage_classifier; + k = 0; + bg = 0; + for (j = 0; j < rpos; j++) + ccfree(posdata[j]); + for (j = 0; j < rneg; j++) + ccfree(negdata[j]); + } + + ccfree(neval); + ccfree(peval); + ccfree(nw); + ccfree(pw); + ccfree(negdata); + ccfree(posdata); + ccfree(cascade); +} +#else +void ccv_bbf_classifier_cascade_new(ccv_dense_matrix_t** posimg, int posnum, char** bgfiles, int bgnum, int negnum, ccv_size_t size, const char* dir, ccv_bbf_new_param_t params) +{ + fprintf(stderr, " ccv_bbf_classifier_cascade_new requires libgsl support, please compile ccv with libgsl.\n"); +} +#endif + +static int _ccv_is_equal(const void* _r1, const void* _r2, void* data) +{ + const ccv_comp_t* r1 = (const ccv_comp_t*)_r1; + const ccv_comp_t* r2 = (const ccv_comp_t*)_r2; + int distance = (int)(r1->rect.width * 0.25 + 0.5); + + return r2->rect.x <= r1->rect.x + distance && + r2->rect.x >= r1->rect.x - distance && + r2->rect.y <= r1->rect.y + distance && + r2->rect.y >= r1->rect.y - distance && + r2->rect.width <= (int)(r1->rect.width * 1.5 + 0.5) && + (int)(r2->rect.width * 1.5 + 0.5) >= r1->rect.width; +} + +static int _ccv_is_equal_same_class(const void* _r1, const void* _r2, void* data) +{ + const ccv_comp_t* r1 = (const ccv_comp_t*)_r1; + const ccv_comp_t* r2 = (const ccv_comp_t*)_r2; + int distance = (int)(r1->rect.width * 0.25 + 0.5); + + return r2->classification.id == r1->classification.id && + r2->rect.x <= r1->rect.x + distance && + r2->rect.x >= r1->rect.x - distance && + r2->rect.y <= r1->rect.y + distance && + r2->rect.y >= r1->rect.y - distance && + r2->rect.width <= (int)(r1->rect.width * 1.5 + 0.5) && + (int)(r2->rect.width * 1.5 + 0.5) >= r1->rect.width; +} + +ccv_array_t* ccv_bbf_detect_objects(ccv_dense_matrix_t* a, ccv_bbf_classifier_cascade_t** _cascade, int count, ccv_bbf_param_t params) +{ + int hr = a->rows / params.size.height; + int wr = a->cols / params.size.width; + double scale = pow(2., 1. / (params.interval + 1.)); + int next = params.interval + 1; + int scale_upto = (int)(log((double)ccv_min(hr, wr)) / log(scale)); + ccv_dense_matrix_t** pyr = (ccv_dense_matrix_t**)alloca((scale_upto + next * 2) * 4 * sizeof(ccv_dense_matrix_t*)); + memset(pyr, 0, (scale_upto + next * 2) * 4 * sizeof(ccv_dense_matrix_t*)); + if (params.size.height != _cascade[0]->size.height || params.size.width != _cascade[0]->size.width) + ccv_resample(a, &pyr[0], 0, a->rows * _cascade[0]->size.height / params.size.height, a->cols * _cascade[0]->size.width / params.size.width, CCV_INTER_AREA); + else + pyr[0] = a; + int i, j, k, t, x, y, q; + for (i = 1; i < ccv_min(params.interval + 1, scale_upto + next * 2); i++) + ccv_resample(pyr[0], &pyr[i * 4], 0, (int)(pyr[0]->rows / pow(scale, i)), (int)(pyr[0]->cols / pow(scale, i)), CCV_INTER_AREA); + for (i = next; i < scale_upto + next * 2; i++) + ccv_sample_down(pyr[i * 4 - next * 4], &pyr[i * 4], 0, 0, 0); + if (params.accurate) + for (i = next * 2; i < scale_upto + next * 2; i++) + { + ccv_sample_down(pyr[i * 4 - next * 4], &pyr[i * 4 + 1], 0, 1, 0); + ccv_sample_down(pyr[i * 4 - next * 4], &pyr[i * 4 + 2], 0, 0, 1); + ccv_sample_down(pyr[i * 4 - next * 4], &pyr[i * 4 + 3], 0, 1, 1); + } + ccv_array_t* idx_seq; + ccv_array_t* seq = ccv_array_new(sizeof(ccv_comp_t), 64, 0); + ccv_array_t* seq2 = ccv_array_new(sizeof(ccv_comp_t), 64, 0); + ccv_array_t* result_seq = ccv_array_new(sizeof(ccv_comp_t), 64, 0); + /* detect in multi scale */ + for (t = 0; t < count; t++) + { + ccv_bbf_classifier_cascade_t* cascade = _cascade[t]; + float scale_x = (float) params.size.width / (float) cascade->size.width; + float scale_y = (float) params.size.height / (float) cascade->size.height; + ccv_array_clear(seq); + for (i = 0; i < scale_upto; i++) + { + int dx[] = {0, 1, 0, 1}; + int dy[] = {0, 0, 1, 1}; + int i_rows = pyr[i * 4 + next * 8]->rows - (cascade->size.height >> 2); + int steps[] = { pyr[i * 4]->step, pyr[i * 4 + next * 4]->step, pyr[i * 4 + next * 8]->step }; + int i_cols = pyr[i * 4 + next * 8]->cols - (cascade->size.width >> 2); + int paddings[] = { pyr[i * 4]->step * 4 - i_cols * 4, + pyr[i * 4 + next * 4]->step * 2 - i_cols * 2, + pyr[i * 4 + next * 8]->step - i_cols }; + for (q = 0; q < (params.accurate ? 4 : 1); q++) + { + unsigned char* u8[] = { pyr[i * 4]->data.u8 + dx[q] * 2 + dy[q] * pyr[i * 4]->step * 2, pyr[i * 4 + next * 4]->data.u8 + dx[q] + dy[q] * pyr[i * 4 + next * 4]->step, pyr[i * 4 + next * 8 + q]->data.u8 }; + for (y = 0; y < i_rows; y++) + { + for (x = 0; x < i_cols; x++) + { + float sum; + int flag = 1; + ccv_bbf_stage_classifier_t* classifier = cascade->stage_classifier; + for (j = 0; j < cascade->count; ++j, ++classifier) + { + sum = 0; + float* alpha = classifier->alpha; + ccv_bbf_feature_t* feature = classifier->feature; + for (k = 0; k < classifier->count; ++k, alpha += 2, ++feature) + sum += alpha[_ccv_run_bbf_feature(feature, steps, u8)]; + if (sum < classifier->threshold) + { + flag = 0; + break; + } + } + if (flag) + { + ccv_comp_t comp; + comp.rect = ccv_rect((int)((x * 4 + dx[q] * 2) * scale_x + 0.5), (int)((y * 4 + dy[q] * 2) * scale_y + 0.5), (int)(cascade->size.width * scale_x + 0.5), (int)(cascade->size.height * scale_y + 0.5)); + comp.neighbors = 1; + comp.classification.id = t; + comp.classification.confidence = sum; + ccv_array_push(seq, &comp); + } + u8[0] += 4; + u8[1] += 2; + u8[2] += 1; + } + u8[0] += paddings[0]; + u8[1] += paddings[1]; + u8[2] += paddings[2]; + } + } + scale_x *= scale; + scale_y *= scale; + } + + /* the following code from OpenCV's haar feature implementation */ + if(params.min_neighbors == 0) + { + for (i = 0; i < seq->rnum; i++) + { + ccv_comp_t* comp = (ccv_comp_t*)ccv_array_get(seq, i); + ccv_array_push(result_seq, comp); + } + } else { + idx_seq = 0; + ccv_array_clear(seq2); + // group retrieved rectangles in order to filter out noise + int ncomp = ccv_array_group(seq, &idx_seq, _ccv_is_equal_same_class, 0); + ccv_comp_t* comps = (ccv_comp_t*)ccmalloc((ncomp + 1) * sizeof(ccv_comp_t)); + memset(comps, 0, (ncomp + 1) * sizeof(ccv_comp_t)); + + // count number of neighbors + for(i = 0; i < seq->rnum; i++) + { + ccv_comp_t r1 = *(ccv_comp_t*)ccv_array_get(seq, i); + int idx = *(int*)ccv_array_get(idx_seq, i); + + if (comps[idx].neighbors == 0) + comps[idx].classification.confidence = r1.classification.confidence; + + ++comps[idx].neighbors; + + comps[idx].rect.x += r1.rect.x; + comps[idx].rect.y += r1.rect.y; + comps[idx].rect.width += r1.rect.width; + comps[idx].rect.height += r1.rect.height; + comps[idx].classification.id = r1.classification.id; + comps[idx].classification.confidence = ccv_max(comps[idx].classification.confidence, r1.classification.confidence); + } + + // calculate average bounding box + for(i = 0; i < ncomp; i++) + { + int n = comps[i].neighbors; + if(n >= params.min_neighbors) + { + ccv_comp_t comp; + comp.rect.x = (comps[i].rect.x * 2 + n) / (2 * n); + comp.rect.y = (comps[i].rect.y * 2 + n) / (2 * n); + comp.rect.width = (comps[i].rect.width * 2 + n) / (2 * n); + comp.rect.height = (comps[i].rect.height * 2 + n) / (2 * n); + comp.neighbors = comps[i].neighbors; + comp.classification.id = comps[i].classification.id; + comp.classification.confidence = comps[i].classification.confidence; + ccv_array_push(seq2, &comp); + } + } + + // filter out small face rectangles inside large face rectangles + for(i = 0; i < seq2->rnum; i++) + { + ccv_comp_t r1 = *(ccv_comp_t*)ccv_array_get(seq2, i); + int flag = 1; + + for(j = 0; j < seq2->rnum; j++) + { + ccv_comp_t r2 = *(ccv_comp_t*)ccv_array_get(seq2, j); + int distance = (int)(r2.rect.width * 0.25 + 0.5); + + if(i != j && + r1.classification.id == r2.classification.id && + r1.rect.x >= r2.rect.x - distance && + r1.rect.y >= r2.rect.y - distance && + r1.rect.x + r1.rect.width <= r2.rect.x + r2.rect.width + distance && + r1.rect.y + r1.rect.height <= r2.rect.y + r2.rect.height + distance && + (r2.neighbors > ccv_max(3, r1.neighbors) || r1.neighbors < 3)) + { + flag = 0; + break; + } + } + + if(flag) + ccv_array_push(result_seq, &r1); + } + ccv_array_free(idx_seq); + ccfree(comps); + } + } + + ccv_array_free(seq); + ccv_array_free(seq2); + + ccv_array_t* result_seq2; + /* the following code from OpenCV's haar feature implementation */ + if (params.flags & CCV_BBF_NO_NESTED) + { + result_seq2 = ccv_array_new(sizeof(ccv_comp_t), 64, 0); + idx_seq = 0; + // group retrieved rectangles in order to filter out noise + int ncomp = ccv_array_group(result_seq, &idx_seq, _ccv_is_equal, 0); + ccv_comp_t* comps = (ccv_comp_t*)ccmalloc((ncomp + 1) * sizeof(ccv_comp_t)); + memset(comps, 0, (ncomp + 1) * sizeof(ccv_comp_t)); + + // count number of neighbors + for(i = 0; i < result_seq->rnum; i++) + { + ccv_comp_t r1 = *(ccv_comp_t*)ccv_array_get(result_seq, i); + int idx = *(int*)ccv_array_get(idx_seq, i); + + if (comps[idx].neighbors == 0 || comps[idx].classification.confidence < r1.classification.confidence) + { + comps[idx].classification.confidence = r1.classification.confidence; + comps[idx].neighbors = 1; + comps[idx].rect = r1.rect; + comps[idx].classification.id = r1.classification.id; + } + } + + // calculate average bounding box + for(i = 0; i < ncomp; i++) + if(comps[i].neighbors) + ccv_array_push(result_seq2, &comps[i]); + + ccv_array_free(result_seq); + ccfree(comps); + } else { + result_seq2 = result_seq; + } + + for (i = 1; i < scale_upto + next * 2; i++) + ccv_matrix_free(pyr[i * 4]); + if (params.accurate) + for (i = next * 2; i < scale_upto + next * 2; i++) + { + ccv_matrix_free(pyr[i * 4 + 1]); + ccv_matrix_free(pyr[i * 4 + 2]); + ccv_matrix_free(pyr[i * 4 + 3]); + } + if (params.size.height != _cascade[0]->size.height || params.size.width != _cascade[0]->size.width) + ccv_matrix_free(pyr[0]); + + return result_seq2; +} + +ccv_bbf_classifier_cascade_t* ccv_bbf_read_classifier_cascade(const char* directory) +{ + char buf[1024]; + sprintf(buf, "%s/cascade.txt", directory); + int s, i; + FILE* r = fopen(buf, "r"); + if (r == 0) + return 0; + ccv_bbf_classifier_cascade_t* cascade = (ccv_bbf_classifier_cascade_t*)ccmalloc(sizeof(ccv_bbf_classifier_cascade_t)); + s = fscanf(r, "%d %d %d", &cascade->count, &cascade->size.width, &cascade->size.height); + assert(s > 0); + cascade->stage_classifier = (ccv_bbf_stage_classifier_t*)ccmalloc(cascade->count * sizeof(ccv_bbf_stage_classifier_t)); + for (i = 0; i < cascade->count; i++) + { + sprintf(buf, "%s/stage-%d.txt", directory, i); + if (_ccv_read_bbf_stage_classifier(buf, &cascade->stage_classifier[i]) < 0) + { + cascade->count = i; + break; + } + } + fclose(r); + return cascade; +} + +ccv_bbf_classifier_cascade_t* ccv_bbf_classifier_cascade_read_binary(char* s) +{ + int i; + ccv_bbf_classifier_cascade_t* cascade = (ccv_bbf_classifier_cascade_t*)ccmalloc(sizeof(ccv_bbf_classifier_cascade_t)); + memcpy(&cascade->count, s, sizeof(cascade->count)); s += sizeof(cascade->count); + memcpy(&cascade->size.width, s, sizeof(cascade->size.width)); s += sizeof(cascade->size.width); + memcpy(&cascade->size.height, s, sizeof(cascade->size.height)); s += sizeof(cascade->size.height); + ccv_bbf_stage_classifier_t* classifier = cascade->stage_classifier = (ccv_bbf_stage_classifier_t*)ccmalloc(cascade->count * sizeof(ccv_bbf_stage_classifier_t)); + for (i = 0; i < cascade->count; i++, classifier++) + { + memcpy(&classifier->count, s, sizeof(classifier->count)); s += sizeof(classifier->count); + memcpy(&classifier->threshold, s, sizeof(classifier->threshold)); s += sizeof(classifier->threshold); + classifier->feature = (ccv_bbf_feature_t*)ccmalloc(classifier->count * sizeof(ccv_bbf_feature_t)); + classifier->alpha = (float*)ccmalloc(classifier->count * 2 * sizeof(float)); + memcpy(classifier->feature, s, classifier->count * sizeof(ccv_bbf_feature_t)); s += classifier->count * sizeof(ccv_bbf_feature_t); + memcpy(classifier->alpha, s, classifier->count * 2 * sizeof(float)); s += classifier->count * 2 * sizeof(float); + } + return cascade; + +} + +int ccv_bbf_classifier_cascade_write_binary(ccv_bbf_classifier_cascade_t* cascade, char* s, int slen) +{ + int i; + int len = sizeof(cascade->count) + sizeof(cascade->size.width) + sizeof(cascade->size.height); + ccv_bbf_stage_classifier_t* classifier = cascade->stage_classifier; + for (i = 0; i < cascade->count; i++, classifier++) + len += sizeof(classifier->count) + sizeof(classifier->threshold) + classifier->count * sizeof(ccv_bbf_feature_t) + classifier->count * 2 * sizeof(float); + if (slen >= len) + { + memcpy(s, &cascade->count, sizeof(cascade->count)); s += sizeof(cascade->count); + memcpy(s, &cascade->size.width, sizeof(cascade->size.width)); s += sizeof(cascade->size.width); + memcpy(s, &cascade->size.height, sizeof(cascade->size.height)); s += sizeof(cascade->size.height); + classifier = cascade->stage_classifier; + for (i = 0; i < cascade->count; i++, classifier++) + { + memcpy(s, &classifier->count, sizeof(classifier->count)); s += sizeof(classifier->count); + memcpy(s, &classifier->threshold, sizeof(classifier->threshold)); s += sizeof(classifier->threshold); + memcpy(s, classifier->feature, classifier->count * sizeof(ccv_bbf_feature_t)); s += classifier->count * sizeof(ccv_bbf_feature_t); + memcpy(s, classifier->alpha, classifier->count * 2 * sizeof(float)); s += classifier->count * 2 * sizeof(float); + } + } + return len; +} + +void ccv_bbf_classifier_cascade_free(ccv_bbf_classifier_cascade_t* cascade) +{ + int i; + for (i = 0; i < cascade->count; ++i) + { + ccfree(cascade->stage_classifier[i].feature); + ccfree(cascade->stage_classifier[i].alpha); + } + ccfree(cascade->stage_classifier); + ccfree(cascade); +} \ No newline at end of file diff --git a/test/source.cc b/test/source.cc new file mode 100644 index 0000000..f0094b3 --- /dev/null +++ b/test/source.cc @@ -0,0 +1,1573 @@ +#include "ccv.h" +#include "ccv_internal.h" +#include +#ifdef HAVE_GSL +#include +#include +#endif +#ifdef USE_OPENMP +#include +#endif + +const ccv_bbf_param_t ccv_bbf_default_params = { + .interval = 5, + .min_neighbors = 2, + .accurate = 1, + .flags = 0, + .size = { + 24, + 24, + }, +}; + +#define _ccv_width_padding(x) (((x) + 3) & -4) + +static inline int _ccv_run_bbf_feature(ccv_bbf_feature_t *feature, int *step, unsigned char **u8) +{ +#define pf_at(i) (*(u8[feature->pz[i]] + feature->px[i] + feature->py[i] * step[feature->pz[i]])) +#define nf_at(i) (*(u8[feature->nz[i]] + feature->nx[i] + feature->ny[i] * step[feature->nz[i]])) + unsigned char pmin = pf_at(0), nmax = nf_at(0); + /* check if every point in P > every point in N, and take a shortcut */ + if (pmin <= nmax) + return 0; + int i; + for (i = 1; i < feature->size; i++) + { + if (feature->pz[i] >= 0) + { + int p = pf_at(i); + if (p < pmin) + { + if (p <= nmax) + return 0; + pmin = p; + } + } + if (feature->nz[i] >= 0) + { + int n = nf_at(i); + if (n > nmax) + { + if (pmin <= n) + return 0; + nmax = n; + } + } + } +#undef pf_at +#undef nf_at + return 1; +} + +static int _ccv_read_bbf_stage_classifier(const char *file, ccv_bbf_stage_classifier_t *classifier) +{ + FILE *r = fopen(file, "r"); + if (r == 0) + return -1; + int stat = 0; + stat |= fscanf(r, "%d", &classifier->count); + union { + float fl; + int i; + } fli; + stat |= fscanf(r, "%d", &fli.i); + classifier->threshold = fli.fl; + classifier->feature = (ccv_bbf_feature_t *)ccmalloc(classifier->count * sizeof(ccv_bbf_feature_t)); + classifier->alpha = (float *)ccmalloc(classifier->count * 2 * sizeof(float)); + int i, j; + for (i = 0; i < classifier->count; i++) + { + stat |= fscanf(r, "%d", &classifier->feature[i].size); + for (j = 0; j < classifier->feature[i].size; j++) + { + stat |= fscanf(r, "%d %d %d", &classifier->feature[i].px[j], &classifier->feature[i].py[j], &classifier->feature[i].pz[j]); + stat |= fscanf(r, "%d %d %d", &classifier->feature[i].nx[j], &classifier->feature[i].ny[j], &classifier->feature[i].nz[j]); + } + union { + float fl; + int i; + } flia, flib; + stat |= fscanf(r, "%d %d", &flia.i, &flib.i); + classifier->alpha[i * 2] = flia.fl; + classifier->alpha[i * 2 + 1] = flib.fl; + } + fclose(r); + return 0; +} + +#ifdef HAVE_GSL + +static unsigned int _ccv_bbf_time_measure() +{ + struct timeval tv; + gettimeofday(&tv, 0); + return tv.tv_sec * 1000000 + tv.tv_usec; +} + +#define less_than(a, b, aux) ((a) < (b)) +CCV_IMPLEMENT_QSORT(_ccv_sort_32f, float, less_than) +#undef less_than + +static void _ccv_bbf_eval_data(ccv_bbf_stage_classifier_t *classifier, unsigned char **posdata, int posnum, unsigned char **negdata, int negnum, ccv_size_t size, float *peval, float *neval) +{ + int i, j; + int steps[] = {_ccv_width_padding(size.width), + _ccv_width_padding(size.width >> 1), + _ccv_width_padding(size.width >> 2)}; + int isizs0 = steps[0] * size.height; + int isizs01 = isizs0 + steps[1] * (size.height >> 1); + for (i = 0; i < posnum; i++) + { + unsigned char *u8[] = {posdata[i], posdata[i] + isizs0, posdata[i] + isizs01}; + float sum = 0; + float *alpha = classifier->alpha; + ccv_bbf_feature_t *feature = classifier->feature; + for (j = 0; j < classifier->count; ++j, alpha += 2, ++feature) + sum += alpha[_ccv_run_bbf_feature(feature, steps, u8)]; + peval[i] = sum; + } + for (i = 0; i < negnum; i++) + { + unsigned char *u8[] = {negdata[i], negdata[i] + isizs0, negdata[i] + isizs01}; + float sum = 0; + float *alpha = classifier->alpha; + ccv_bbf_feature_t *feature = classifier->feature; + for (j = 0; j < classifier->count; ++j, alpha += 2, ++feature) + sum += alpha[_ccv_run_bbf_feature(feature, steps, u8)]; + neval[i] = sum; + } +} + +static int _ccv_prune_positive_data(ccv_bbf_classifier_cascade_t *cascade, unsigned char **posdata, int posnum, ccv_size_t size) +{ + float *peval = (float *)ccmalloc(posnum * sizeof(float)); + int i, j, k, rpos = posnum; + for (i = 0; i < cascade->count; i++) + { + _ccv_bbf_eval_data(cascade->stage_classifier + i, posdata, rpos, 0, 0, size, peval, 0); + k = 0; + for (j = 0; j < rpos; j++) + if (peval[j] >= cascade->stage_classifier[i].threshold) + { + posdata[k] = posdata[j]; + ++k; + } + else + { + ccfree(posdata[j]); + } + rpos = k; + } + ccfree(peval); + return rpos; +} + +static int _ccv_prepare_background_data(ccv_bbf_classifier_cascade_t *cascade, char **bgfiles, int bgnum, unsigned char **negdata, int negnum) +{ + int t, i, j, k, q; + int negperbg; + int negtotal = 0; + int steps[] = {_ccv_width_padding(cascade->size.width), + _ccv_width_padding(cascade->size.width >> 1), + _ccv_width_padding(cascade->size.width >> 2)}; + int isizs0 = steps[0] * cascade->size.height; + int isizs1 = steps[1] * (cascade->size.height >> 1); + int isizs2 = steps[2] * (cascade->size.height >> 2); + int *idcheck = (int *)ccmalloc(negnum * sizeof(int)); + + gsl_rng_env_setup(); + + gsl_rng *rng = gsl_rng_alloc(gsl_rng_default); + gsl_rng_set(rng, (unsigned long int)idcheck); + + ccv_size_t imgsz = cascade->size; + int rneg = negtotal; + for (t = 0; negtotal < negnum; t++) + { + PRINT(CCV_CLI_INFO, "preparing negative data ... 0%%"); + for (i = 0; i < bgnum; i++) + { + negperbg = (t < 2) ? (negnum - negtotal) / (bgnum - i) + 1 : negnum - negtotal; + ccv_dense_matrix_t *image = 0; + ccv_read(bgfiles[i], &image, CCV_IO_GRAY | CCV_IO_ANY_FILE); + assert((image->type & CCV_C1) && (image->type & CCV_8U)); + if (image == 0) + { + PRINT(CCV_CLI_ERROR, "\n%s file corrupted\n", bgfiles[i]); + continue; + } + if (t % 2 != 0) + ccv_flip(image, 0, 0, CCV_FLIP_X); + if (t % 4 >= 2) + ccv_flip(image, 0, 0, CCV_FLIP_Y); + ccv_bbf_param_t params = {.interval = 3, .min_neighbors = 0, .accurate = 1, .flags = 0, .size = cascade->size}; + ccv_array_t *detected = ccv_bbf_detect_objects(image, &cascade, 1, params); + memset(idcheck, 0, ccv_min(detected->rnum, negperbg) * sizeof(int)); + for (j = 0; j < ccv_min(detected->rnum, negperbg); j++) + { + int r = gsl_rng_uniform_int(rng, detected->rnum); + int flag = 1; + ccv_rect_t *rect = (ccv_rect_t *)ccv_array_get(detected, r); + while (flag) + { + flag = 0; + for (k = 0; k < j; k++) + if (r == idcheck[k]) + { + flag = 1; + r = gsl_rng_uniform_int(rng, detected->rnum); + break; + } + rect = (ccv_rect_t *)ccv_array_get(detected, r); + if ((rect->x < 0) || (rect->y < 0) || (rect->width + rect->x > image->cols) || (rect->height + rect->y > image->rows)) + { + flag = 1; + r = gsl_rng_uniform_int(rng, detected->rnum); + } + } + idcheck[j] = r; + ccv_dense_matrix_t *temp = 0; + ccv_dense_matrix_t *imgs0 = 0; + ccv_dense_matrix_t *imgs1 = 0; + ccv_dense_matrix_t *imgs2 = 0; + ccv_slice(image, (ccv_matrix_t **)&temp, 0, rect->y, rect->x, rect->height, rect->width); + ccv_resample(temp, &imgs0, 0, imgsz.height, imgsz.width, CCV_INTER_AREA); + assert(imgs0->step == steps[0]); + ccv_matrix_free(temp); + ccv_sample_down(imgs0, &imgs1, 0, 0, 0); + assert(imgs1->step == steps[1]); + ccv_sample_down(imgs1, &imgs2, 0, 0, 0); + assert(imgs2->step == steps[2]); + + negdata[negtotal] = (unsigned char *)ccmalloc(isizs0 + isizs1 + isizs2); + unsigned char *u8s0 = negdata[negtotal]; + unsigned char *u8s1 = negdata[negtotal] + isizs0; + unsigned char *u8s2 = negdata[negtotal] + isizs0 + isizs1; + unsigned char *u8[] = {u8s0, u8s1, u8s2}; + memcpy(u8s0, imgs0->data.u8, imgs0->rows * imgs0->step); + ccv_matrix_free(imgs0); + memcpy(u8s1, imgs1->data.u8, imgs1->rows * imgs1->step); + ccv_matrix_free(imgs1); + memcpy(u8s2, imgs2->data.u8, imgs2->rows * imgs2->step); + ccv_matrix_free(imgs2); + + flag = 1; + ccv_bbf_stage_classifier_t *classifier = cascade->stage_classifier; + for (k = 0; k < cascade->count; ++k, ++classifier) + { + float sum = 0; + float *alpha = classifier->alpha; + ccv_bbf_feature_t *feature = classifier->feature; + for (q = 0; q < classifier->count; ++q, alpha += 2, ++feature) + sum += alpha[_ccv_run_bbf_feature(feature, steps, u8)]; + if (sum < classifier->threshold) + { + flag = 0; + break; + } + } + if (!flag) + ccfree(negdata[negtotal]); + else + { + ++negtotal; + if (negtotal >= negnum) + break; + } + } + ccv_array_free(detected); + ccv_matrix_free(image); + ccv_drain_cache(); + PRINT(CCV_CLI_INFO, "\rpreparing negative data ... %2d%%", 100 * negtotal / negnum); + fflush(0); + if (negtotal >= negnum) + break; + } + if (rneg == negtotal) + break; + rneg = negtotal; + PRINT(CCV_CLI_INFO, "\nentering additional round %d\n", t + 1); + } + gsl_rng_free(rng); + ccfree(idcheck); + ccv_drain_cache(); + PRINT(CCV_CLI_INFO, "\n"); + return negtotal; +} + +static void _ccv_prepare_positive_data(ccv_dense_matrix_t **posimg, unsigned char **posdata, ccv_size_t size, int posnum) +{ + PRINT(CCV_CLI_INFO, "preparing positive data ... 0%%"); + int i; + for (i = 0; i < posnum; i++) + { + ccv_dense_matrix_t *imgs0 = posimg[i]; + ccv_dense_matrix_t *imgs1 = 0; + ccv_dense_matrix_t *imgs2 = 0; + assert((imgs0->type & CCV_C1) && (imgs0->type & CCV_8U) && imgs0->rows == size.height && imgs0->cols == size.width); + ccv_sample_down(imgs0, &imgs1, 0, 0, 0); + ccv_sample_down(imgs1, &imgs2, 0, 0, 0); + int isizs0 = imgs0->rows * imgs0->step; + int isizs1 = imgs1->rows * imgs1->step; + int isizs2 = imgs2->rows * imgs2->step; + + posdata[i] = (unsigned char *)ccmalloc(isizs0 + isizs1 + isizs2); + memcpy(posdata[i], imgs0->data.u8, isizs0); + memcpy(posdata[i] + isizs0, imgs1->data.u8, isizs1); + memcpy(posdata[i] + isizs0 + isizs1, imgs2->data.u8, isizs2); + + PRINT(CCV_CLI_INFO, "\rpreparing positive data ... %2d%%", 100 * (i + 1) / posnum); + fflush(0); + + ccv_matrix_free(imgs1); + ccv_matrix_free(imgs2); + } + ccv_drain_cache(); + PRINT(CCV_CLI_INFO, "\n"); +} + +typedef struct +{ + double fitness; + int pk, nk; + int age; + double error; + ccv_bbf_feature_t feature; +} ccv_bbf_gene_t; + +static inline void _ccv_bbf_genetic_fitness(ccv_bbf_gene_t *gene) +{ + gene->fitness = (1 - gene->error) * exp(-0.01 * gene->age) * exp((gene->pk + gene->nk) * log(1.015)); +} + +static inline int _ccv_bbf_exist_gene_feature(ccv_bbf_gene_t *gene, int x, int y, int z) +{ + int i; + for (i = 0; i < gene->pk; i++) + if (z == gene->feature.pz[i] && x == gene->feature.px[i] && y == gene->feature.py[i]) + return 1; + for (i = 0; i < gene->nk; i++) + if (z == gene->feature.nz[i] && x == gene->feature.nx[i] && y == gene->feature.ny[i]) + return 1; + return 0; +} + +static inline void _ccv_bbf_randomize_gene(gsl_rng *rng, ccv_bbf_gene_t *gene, int *rows, int *cols) +{ + int i; + do + { + gene->pk = gsl_rng_uniform_int(rng, CCV_BBF_POINT_MAX - 1) + 1; + gene->nk = gsl_rng_uniform_int(rng, CCV_BBF_POINT_MAX - 1) + 1; + } while (gene->pk + gene->nk < CCV_BBF_POINT_MIN); /* a hard restriction of at least 3 points have to be examed */ + gene->feature.size = ccv_max(gene->pk, gene->nk); + gene->age = 0; + for (i = 0; i < CCV_BBF_POINT_MAX; i++) + { + gene->feature.pz[i] = -1; + gene->feature.nz[i] = -1; + } + int x, y, z; + for (i = 0; i < gene->pk; i++) + { + do + { + z = gsl_rng_uniform_int(rng, 3); + x = gsl_rng_uniform_int(rng, cols[z]); + y = gsl_rng_uniform_int(rng, rows[z]); + } while (_ccv_bbf_exist_gene_feature(gene, x, y, z)); + gene->feature.pz[i] = z; + gene->feature.px[i] = x; + gene->feature.py[i] = y; + } + for (i = 0; i < gene->nk; i++) + { + do + { + z = gsl_rng_uniform_int(rng, 3); + x = gsl_rng_uniform_int(rng, cols[z]); + y = gsl_rng_uniform_int(rng, rows[z]); + } while (_ccv_bbf_exist_gene_feature(gene, x, y, z)); + gene->feature.nz[i] = z; + gene->feature.nx[i] = x; + gene->feature.ny[i] = y; + } +} + +static inline double _ccv_bbf_error_rate(ccv_bbf_feature_t *feature, unsigned char **posdata, int posnum, unsigned char **negdata, int negnum, ccv_size_t size, double *pw, double *nw) +{ + int i; + int steps[] = {_ccv_width_padding(size.width), + _ccv_width_padding(size.width >> 1), + _ccv_width_padding(size.width >> 2)}; + int isizs0 = steps[0] * size.height; + int isizs01 = isizs0 + steps[1] * (size.height >> 1); + double error = 0; + for (i = 0; i < posnum; i++) + { + unsigned char *u8[] = {posdata[i], posdata[i] + isizs0, posdata[i] + isizs01}; + if (!_ccv_run_bbf_feature(feature, steps, u8)) + error += pw[i]; + } + for (i = 0; i < negnum; i++) + { + unsigned char *u8[] = {negdata[i], negdata[i] + isizs0, negdata[i] + isizs01}; + if (_ccv_run_bbf_feature(feature, steps, u8)) + error += nw[i]; + } + return error; +} + +#define less_than(fit1, fit2, aux) ((fit1).fitness >= (fit2).fitness) +static CCV_IMPLEMENT_QSORT(_ccv_bbf_genetic_qsort, ccv_bbf_gene_t, less_than) +#undef less_than + + static ccv_bbf_feature_t _ccv_bbf_genetic_optimize(unsigned char **posdata, int posnum, unsigned char **negdata, int negnum, int ftnum, ccv_size_t size, double *pw, double *nw) +{ + ccv_bbf_feature_t best; + /* seed (random method) */ + gsl_rng_env_setup(); + gsl_rng *rng = gsl_rng_alloc(gsl_rng_default); + union { + unsigned long int li; + double db; + } dbli; + dbli.db = pw[0] + nw[0]; + gsl_rng_set(rng, dbli.li); + int i, j; + int pnum = ftnum * 100; + assert(pnum > 0); + ccv_bbf_gene_t *gene = (ccv_bbf_gene_t *)ccmalloc(pnum * sizeof(ccv_bbf_gene_t)); + int rows[] = {size.height, size.height >> 1, size.height >> 2}; + int cols[] = {size.width, size.width >> 1, size.width >> 2}; + for (i = 0; i < pnum; i++) + _ccv_bbf_randomize_gene(rng, &gene[i], rows, cols); + unsigned int timer = _ccv_bbf_time_measure(); +#ifdef USE_OPENMP +#pragma omp parallel for private(i) schedule(dynamic) +#endif + for (i = 0; i < pnum; i++) + gene[i].error = _ccv_bbf_error_rate(&gene[i].feature, posdata, posnum, negdata, negnum, size, pw, nw); + timer = _ccv_bbf_time_measure() - timer; + for (i = 0; i < pnum; i++) + _ccv_bbf_genetic_fitness(&gene[i]); + double best_err = 1; + int rnum = ftnum * 39; /* number of randomize */ + int mnum = ftnum * 40; /* number of mutation */ + int hnum = ftnum * 20; /* number of hybrid */ + /* iteration stop crit : best no change in 40 iterations */ + int it = 0, t; + for (t = 0; it < 40; ++it, ++t) + { + int min_id = 0; + double min_err = gene[0].error; + for (i = 1; i < pnum; i++) + if (gene[i].error < min_err) + { + min_id = i; + min_err = gene[i].error; + } + min_err = gene[min_id].error = _ccv_bbf_error_rate(&gene[min_id].feature, posdata, posnum, negdata, negnum, size, pw, nw); + if (min_err < best_err) + { + best_err = min_err; + memcpy(&best, &gene[min_id].feature, sizeof(best)); + PRINT(CCV_CLI_INFO, "best bbf feature with error %f\n|-size: %d\n|-positive point: ", best_err, best.size); + for (i = 0; i < best.size; i++) + PRINT(CCV_CLI_INFO, "(%d %d %d), ", best.px[i], best.py[i], best.pz[i]); + PRINT(CCV_CLI_INFO, "\n|-negative point: "); + for (i = 0; i < best.size; i++) + PRINT(CCV_CLI_INFO, "(%d %d %d), ", best.nx[i], best.ny[i], best.nz[i]); + PRINT(CCV_CLI_INFO, "\n"); + it = 0; + } + PRINT(CCV_CLI_INFO, "minimum error achieved in round %d(%d) : %f with %d ms\n", t, it, min_err, timer / 1000); + _ccv_bbf_genetic_qsort(gene, pnum, 0); + for (i = 0; i < ftnum; i++) + ++gene[i].age; + for (i = ftnum; i < ftnum + mnum; i++) + { + int parent = gsl_rng_uniform_int(rng, ftnum); + memcpy(gene + i, gene + parent, sizeof(ccv_bbf_gene_t)); + /* three mutation strategy : 1. add, 2. remove, 3. refine */ + int pnm, pn = gsl_rng_uniform_int(rng, 2); + int *pnk[] = {&gene[i].pk, &gene[i].nk}; + int *pnx[] = {gene[i].feature.px, gene[i].feature.nx}; + int *pny[] = {gene[i].feature.py, gene[i].feature.ny}; + int *pnz[] = {gene[i].feature.pz, gene[i].feature.nz}; + int x, y, z; + int victim, decay = 1; + do + { + switch (gsl_rng_uniform_int(rng, 3)) + { + case 0: /* add */ + if (gene[i].pk == CCV_BBF_POINT_MAX && gene[i].nk == CCV_BBF_POINT_MAX) + break; + while (*pnk[pn] + 1 > CCV_BBF_POINT_MAX) + pn = gsl_rng_uniform_int(rng, 2); + do + { + z = gsl_rng_uniform_int(rng, 3); + x = gsl_rng_uniform_int(rng, cols[z]); + y = gsl_rng_uniform_int(rng, rows[z]); + } while (_ccv_bbf_exist_gene_feature(&gene[i], x, y, z)); + pnz[pn][*pnk[pn]] = z; + pnx[pn][*pnk[pn]] = x; + pny[pn][*pnk[pn]] = y; + ++(*pnk[pn]); + gene[i].feature.size = ccv_max(gene[i].pk, gene[i].nk); + decay = gene[i].age = 0; + break; + case 1: /* remove */ + if (gene[i].pk + gene[i].nk <= CCV_BBF_POINT_MIN) /* at least 3 points have to be examed */ + break; + while (*pnk[pn] - 1 <= 0) // || *pnk[pn] + *pnk[!pn] - 1 < CCV_BBF_POINT_MIN) + pn = gsl_rng_uniform_int(rng, 2); + victim = gsl_rng_uniform_int(rng, *pnk[pn]); + for (j = victim; j < *pnk[pn] - 1; j++) + { + pnz[pn][j] = pnz[pn][j + 1]; + pnx[pn][j] = pnx[pn][j + 1]; + pny[pn][j] = pny[pn][j + 1]; + } + pnz[pn][*pnk[pn] - 1] = -1; + --(*pnk[pn]); + gene[i].feature.size = ccv_max(gene[i].pk, gene[i].nk); + decay = gene[i].age = 0; + break; + case 2: /* refine */ + pnm = gsl_rng_uniform_int(rng, *pnk[pn]); + do + { + z = gsl_rng_uniform_int(rng, 3); + x = gsl_rng_uniform_int(rng, cols[z]); + y = gsl_rng_uniform_int(rng, rows[z]); + } while (_ccv_bbf_exist_gene_feature(&gene[i], x, y, z)); + pnz[pn][pnm] = z; + pnx[pn][pnm] = x; + pny[pn][pnm] = y; + decay = gene[i].age = 0; + break; + } + } while (decay); + } + for (i = ftnum + mnum; i < ftnum + mnum + hnum; i++) + { + /* hybrid strategy: taking positive points from dad, negative points from mum */ + int dad, mum; + do + { + dad = gsl_rng_uniform_int(rng, ftnum); + mum = gsl_rng_uniform_int(rng, ftnum); + } while (dad == mum || gene[dad].pk + gene[mum].nk < CCV_BBF_POINT_MIN); /* at least 3 points have to be examed */ + for (j = 0; j < CCV_BBF_POINT_MAX; j++) + { + gene[i].feature.pz[j] = -1; + gene[i].feature.nz[j] = -1; + } + gene[i].pk = gene[dad].pk; + for (j = 0; j < gene[i].pk; j++) + { + gene[i].feature.pz[j] = gene[dad].feature.pz[j]; + gene[i].feature.px[j] = gene[dad].feature.px[j]; + gene[i].feature.py[j] = gene[dad].feature.py[j]; + } + gene[i].nk = gene[mum].nk; + for (j = 0; j < gene[i].nk; j++) + { + gene[i].feature.nz[j] = gene[mum].feature.nz[j]; + gene[i].feature.nx[j] = gene[mum].feature.nx[j]; + gene[i].feature.ny[j] = gene[mum].feature.ny[j]; + } + gene[i].feature.size = ccv_max(gene[i].pk, gene[i].nk); + gene[i].age = 0; + } + for (i = ftnum + mnum + hnum; i < ftnum + mnum + hnum + rnum; i++) + _ccv_bbf_randomize_gene(rng, &gene[i], rows, cols); + timer = _ccv_bbf_time_measure(); +#ifdef USE_OPENMP +#pragma omp parallel for private(i) schedule(dynamic) +#endif + for (i = 0; i < pnum; i++) + gene[i].error = _ccv_bbf_error_rate(&gene[i].feature, posdata, posnum, negdata, negnum, size, pw, nw); + timer = _ccv_bbf_time_measure() - timer; + for (i = 0; i < pnum; i++) + _ccv_bbf_genetic_fitness(&gene[i]); + } + ccfree(gene); + gsl_rng_free(rng); + return best; +} + +#define less_than(fit1, fit2, aux) ((fit1).error < (fit2).error) +static CCV_IMPLEMENT_QSORT(_ccv_bbf_best_qsort, ccv_bbf_gene_t, less_than) +#undef less_than + + static ccv_bbf_gene_t _ccv_bbf_best_gene(ccv_bbf_gene_t *gene, int pnum, int point_min, unsigned char **posdata, int posnum, unsigned char **negdata, int negnum, ccv_size_t size, double *pw, double *nw) +{ + int i; + unsigned int timer = _ccv_bbf_time_measure(); +#ifdef USE_OPENMP +#pragma omp parallel for private(i) schedule(dynamic) +#endif + for (i = 0; i < pnum; i++) + gene[i].error = _ccv_bbf_error_rate(&gene[i].feature, posdata, posnum, negdata, negnum, size, pw, nw); + timer = _ccv_bbf_time_measure() - timer; + _ccv_bbf_best_qsort(gene, pnum, 0); + int min_id = 0; + double min_err = gene[0].error; + for (i = 0; i < pnum; i++) + if (gene[i].nk + gene[i].pk >= point_min) + { + min_id = i; + min_err = gene[i].error; + break; + } + PRINT(CCV_CLI_INFO, "local best bbf feature with error %f\n|-size: %d\n|-positive point: ", min_err, gene[min_id].feature.size); + for (i = 0; i < gene[min_id].feature.size; i++) + PRINT(CCV_CLI_INFO, "(%d %d %d), ", gene[min_id].feature.px[i], gene[min_id].feature.py[i], gene[min_id].feature.pz[i]); + PRINT(CCV_CLI_INFO, "\n|-negative point: "); + for (i = 0; i < gene[min_id].feature.size; i++) + PRINT(CCV_CLI_INFO, "(%d %d %d), ", gene[min_id].feature.nx[i], gene[min_id].feature.ny[i], gene[min_id].feature.nz[i]); + PRINT(CCV_CLI_INFO, "\nthe computation takes %d ms\n", timer / 1000); + return gene[min_id]; +} + +static ccv_bbf_feature_t _ccv_bbf_convex_optimize(unsigned char **posdata, int posnum, unsigned char **negdata, int negnum, ccv_bbf_feature_t *best_feature, ccv_size_t size, double *pw, double *nw) +{ + ccv_bbf_gene_t best_gene; + /* seed (random method) */ + gsl_rng_env_setup(); + gsl_rng *rng = gsl_rng_alloc(gsl_rng_default); + union { + unsigned long int li; + double db; + } dbli; + dbli.db = pw[0] + nw[0]; + gsl_rng_set(rng, dbli.li); + int i, j, k, q, p, g, t; + int rows[] = {size.height, size.height >> 1, size.height >> 2}; + int cols[] = {size.width, size.width >> 1, size.width >> 2}; + int pnum = rows[0] * cols[0] + rows[1] * cols[1] + rows[2] * cols[2]; + ccv_bbf_gene_t *gene = (ccv_bbf_gene_t *)ccmalloc((pnum * (CCV_BBF_POINT_MAX * 2 + 1) * 2 + CCV_BBF_POINT_MAX * 2 + 1) * sizeof(ccv_bbf_gene_t)); + if (best_feature == 0) + { + /* bootstrapping the best feature, start from two pixels, one for positive, one for negative + * the bootstrapping process go like this: first, it will assign a random pixel as positive + * and enumerate every possible pixel as negative, and pick the best one. Then, enumerate every + * possible pixel as positive, and pick the best one, until it converges */ + memset(&best_gene, 0, sizeof(ccv_bbf_gene_t)); + for (i = 0; i < CCV_BBF_POINT_MAX; i++) + best_gene.feature.pz[i] = best_gene.feature.nz[i] = -1; + best_gene.pk = 1; + best_gene.nk = 0; + best_gene.feature.size = 1; + best_gene.feature.pz[0] = gsl_rng_uniform_int(rng, 3); + best_gene.feature.px[0] = gsl_rng_uniform_int(rng, cols[best_gene.feature.pz[0]]); + best_gene.feature.py[0] = gsl_rng_uniform_int(rng, rows[best_gene.feature.pz[0]]); + for (t = 0;; ++t) + { + g = 0; + if (t % 2 == 0) + { + for (i = 0; i < 3; i++) + for (j = 0; j < cols[i]; j++) + for (k = 0; k < rows[i]; k++) + if (i != best_gene.feature.pz[0] || j != best_gene.feature.px[0] || k != best_gene.feature.py[0]) + { + gene[g] = best_gene; + gene[g].pk = gene[g].nk = 1; + gene[g].feature.nz[0] = i; + gene[g].feature.nx[0] = j; + gene[g].feature.ny[0] = k; + g++; + } + } + else + { + for (i = 0; i < 3; i++) + for (j = 0; j < cols[i]; j++) + for (k = 0; k < rows[i]; k++) + if (i != best_gene.feature.nz[0] || j != best_gene.feature.nx[0] || k != best_gene.feature.ny[0]) + { + gene[g] = best_gene; + gene[g].pk = gene[g].nk = 1; + gene[g].feature.pz[0] = i; + gene[g].feature.px[0] = j; + gene[g].feature.py[0] = k; + g++; + } + } + PRINT(CCV_CLI_INFO, "bootstrapping round : %d\n", t); + ccv_bbf_gene_t local_gene = _ccv_bbf_best_gene(gene, g, 2, posdata, posnum, negdata, negnum, size, pw, nw); + if (local_gene.error >= best_gene.error - 1e-10) + break; + best_gene = local_gene; + } + } + else + { + best_gene.feature = *best_feature; + best_gene.pk = best_gene.nk = best_gene.feature.size; + for (i = 0; i < CCV_BBF_POINT_MAX; i++) + if (best_feature->pz[i] == -1) + { + best_gene.pk = i; + break; + } + for (i = 0; i < CCV_BBF_POINT_MAX; i++) + if (best_feature->nz[i] == -1) + { + best_gene.nk = i; + break; + } + } + /* after bootstrapping, the float search technique will do the following permutations: + * a). add a new point to positive or negative + * b). remove a point from positive or negative + * c). move an existing point in positive or negative to another position + * the three rules applied exhaustively, no heuristic used. */ + for (t = 0;; ++t) + { + g = 0; + for (i = 0; i < 3; i++) + for (j = 0; j < cols[i]; j++) + for (k = 0; k < rows[i]; k++) + if (!_ccv_bbf_exist_gene_feature(&best_gene, j, k, i)) + { + /* add positive point */ + if (best_gene.pk < CCV_BBF_POINT_MAX - 1) + { + gene[g] = best_gene; + gene[g].feature.pz[gene[g].pk] = i; + gene[g].feature.px[gene[g].pk] = j; + gene[g].feature.py[gene[g].pk] = k; + gene[g].pk++; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + /* add negative point */ + if (best_gene.nk < CCV_BBF_POINT_MAX - 1) + { + gene[g] = best_gene; + gene[g].feature.nz[gene[g].nk] = i; + gene[g].feature.nx[gene[g].nk] = j; + gene[g].feature.ny[gene[g].nk] = k; + gene[g].nk++; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + /* refine positive point */ + for (q = 0; q < best_gene.pk; q++) + { + gene[g] = best_gene; + gene[g].feature.pz[q] = i; + gene[g].feature.px[q] = j; + gene[g].feature.py[q] = k; + g++; + } + /* add positive point, remove negative point */ + if (best_gene.pk < CCV_BBF_POINT_MAX - 1 && best_gene.nk > 1) + { + for (q = 0; q < best_gene.nk; q++) + { + gene[g] = best_gene; + gene[g].feature.pz[gene[g].pk] = i; + gene[g].feature.px[gene[g].pk] = j; + gene[g].feature.py[gene[g].pk] = k; + gene[g].pk++; + for (p = q; p < best_gene.nk - 1; p++) + { + gene[g].feature.nz[p] = gene[g].feature.nz[p + 1]; + gene[g].feature.nx[p] = gene[g].feature.nx[p + 1]; + gene[g].feature.ny[p] = gene[g].feature.ny[p + 1]; + } + gene[g].feature.nz[gene[g].nk - 1] = -1; + gene[g].nk--; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + } + /* refine negative point */ + for (q = 0; q < best_gene.nk; q++) + { + gene[g] = best_gene; + gene[g].feature.nz[q] = i; + gene[g].feature.nx[q] = j; + gene[g].feature.ny[q] = k; + g++; + } + /* add negative point, remove positive point */ + if (best_gene.pk > 1 && best_gene.nk < CCV_BBF_POINT_MAX - 1) + { + for (q = 0; q < best_gene.pk; q++) + { + gene[g] = best_gene; + gene[g].feature.nz[gene[g].nk] = i; + gene[g].feature.nx[gene[g].nk] = j; + gene[g].feature.ny[gene[g].nk] = k; + gene[g].nk++; + for (p = q; p < best_gene.pk - 1; p++) + { + gene[g].feature.pz[p] = gene[g].feature.pz[p + 1]; + gene[g].feature.px[p] = gene[g].feature.px[p + 1]; + gene[g].feature.py[p] = gene[g].feature.py[p + 1]; + } + gene[g].feature.pz[gene[g].pk - 1] = -1; + gene[g].pk--; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + } + } + if (best_gene.pk > 1) + for (q = 0; q < best_gene.pk; q++) + { + gene[g] = best_gene; + for (i = q; i < best_gene.pk - 1; i++) + { + gene[g].feature.pz[i] = gene[g].feature.pz[i + 1]; + gene[g].feature.px[i] = gene[g].feature.px[i + 1]; + gene[g].feature.py[i] = gene[g].feature.py[i + 1]; + } + gene[g].feature.pz[gene[g].pk - 1] = -1; + gene[g].pk--; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + if (best_gene.nk > 1) + for (q = 0; q < best_gene.nk; q++) + { + gene[g] = best_gene; + for (i = q; i < best_gene.nk - 1; i++) + { + gene[g].feature.nz[i] = gene[g].feature.nz[i + 1]; + gene[g].feature.nx[i] = gene[g].feature.nx[i + 1]; + gene[g].feature.ny[i] = gene[g].feature.ny[i + 1]; + } + gene[g].feature.nz[gene[g].nk - 1] = -1; + gene[g].nk--; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + gene[g] = best_gene; + g++; + PRINT(CCV_CLI_INFO, "float search round : %d\n", t); + ccv_bbf_gene_t local_gene = _ccv_bbf_best_gene(gene, g, CCV_BBF_POINT_MIN, posdata, posnum, negdata, negnum, size, pw, nw); + if (local_gene.error >= best_gene.error - 1e-10) + break; + best_gene = local_gene; + } + ccfree(gene); + gsl_rng_free(rng); + return best_gene.feature; +} + +static int _ccv_write_bbf_stage_classifier(const char *file, ccv_bbf_stage_classifier_t *classifier) +{ + FILE *w = fopen(file, "wb"); + if (w == 0) + return -1; + fprintf(w, "%d\n", classifier->count); + union { + float fl; + int i; + } fli; + fli.fl = classifier->threshold; + fprintf(w, "%d\n", fli.i); + int i, j; + for (i = 0; i < classifier->count; i++) + { + fprintf(w, "%d\n", classifier->feature[i].size); + for (j = 0; j < classifier->feature[i].size; j++) + { + fprintf(w, "%d %d %d\n", classifier->feature[i].px[j], classifier->feature[i].py[j], classifier->feature[i].pz[j]); + fprintf(w, "%d %d %d\n", classifier->feature[i].nx[j], classifier->feature[i].ny[j], classifier->feature[i].nz[j]); + } + union { + float fl; + int i; + } flia, flib; + flia.fl = classifier->alpha[i * 2]; + flib.fl = classifier->alpha[i * 2 + 1]; + fprintf(w, "%d %d\n", flia.i, flib.i); + } + fclose(w); + return 0; +} + +static int _ccv_read_background_data(const char *file, unsigned char **negdata, int *negnum, ccv_size_t size) +{ + int stat = 0; + FILE *r = fopen(file, "rb"); + if (r == 0) + return -1; + stat |= fread(negnum, sizeof(int), 1, r); + int i; + int isizs012 = _ccv_width_padding(size.width) * size.height + + _ccv_width_padding(size.width >> 1) * (size.height >> 1) + + _ccv_width_padding(size.width >> 2) * (size.height >> 2); + for (i = 0; i < *negnum; i++) + { + negdata[i] = (unsigned char *)ccmalloc(isizs012); + stat |= fread(negdata[i], 1, isizs012, r); + } + fclose(r); + return 0; +} + +static int _ccv_write_background_data(const char *file, unsigned char **negdata, int negnum, ccv_size_t size) +{ + FILE *w = fopen(file, "w"); + if (w == 0) + return -1; + fwrite(&negnum, sizeof(int), 1, w); + int i; + int isizs012 = _ccv_width_padding(size.width) * size.height + + _ccv_width_padding(size.width >> 1) * (size.height >> 1) + + _ccv_width_padding(size.width >> 2) * (size.height >> 2); + for (i = 0; i < negnum; i++) + fwrite(negdata[i], 1, isizs012, w); + fclose(w); + return 0; +} + +static int _ccv_resume_bbf_cascade_training_state(const char *file, int *i, int *k, int *bg, double *pw, double *nw, int posnum, int negnum) +{ + int stat = 0; + FILE *r = fopen(file, "r"); + if (r == 0) + return -1; + stat |= fscanf(r, "%d %d %d", i, k, bg); + int j; + union { + double db; + int i[2]; + } dbi; + for (j = 0; j < posnum; j++) + { + stat |= fscanf(r, "%d %d", &dbi.i[0], &dbi.i[1]); + pw[j] = dbi.db; + } + for (j = 0; j < negnum; j++) + { + stat |= fscanf(r, "%d %d", &dbi.i[0], &dbi.i[1]); + nw[j] = dbi.db; + } + fclose(r); + return 0; +} + +static int _ccv_save_bbf_cacade_training_state(const char *file, int i, int k, int bg, double *pw, double *nw, int posnum, int negnum) +{ + FILE *w = fopen(file, "w"); + if (w == 0) + return -1; + fprintf(w, "%d %d %d\n", i, k, bg); + int j; + union { + double db; + int i[2]; + } dbi; + for (j = 0; j < posnum; ++j) + { + dbi.db = pw[j]; + fprintf(w, "%d %d ", dbi.i[0], dbi.i[1]); + } + fprintf(w, "\n"); + for (j = 0; j < negnum; ++j) + { + dbi.db = nw[j]; + fprintf(w, "%d %d ", dbi.i[0], dbi.i[1]); + } + fprintf(w, "\n"); + fclose(w); + return 0; +} + +void ccv_bbf_classifier_cascade_new(ccv_dense_matrix_t **posimg, int posnum, char **bgfiles, int bgnum, int negnum, ccv_size_t size, const char *dir, ccv_bbf_new_param_t params) +{ + int i, j, k; + /* allocate memory for usage */ + ccv_bbf_classifier_cascade_t *cascade = (ccv_bbf_classifier_cascade_t *)ccmalloc(sizeof(ccv_bbf_classifier_cascade_t)); + cascade->count = 0; + cascade->size = size; + cascade->stage_classifier = (ccv_bbf_stage_classifier_t *)ccmalloc(sizeof(ccv_bbf_stage_classifier_t)); + unsigned char **posdata = (unsigned char **)ccmalloc(posnum * sizeof(unsigned char *)); + unsigned char **negdata = (unsigned char **)ccmalloc(negnum * sizeof(unsigned char *)); + double *pw = (double *)ccmalloc(posnum * sizeof(double)); + double *nw = (double *)ccmalloc(negnum * sizeof(double)); + float *peval = (float *)ccmalloc(posnum * sizeof(float)); + float *neval = (float *)ccmalloc(negnum * sizeof(float)); + double inv_balance_k = 1. / params.balance_k; + /* balance factor k, and weighted with 0.01 */ + params.balance_k *= 0.01; + inv_balance_k *= 0.01; + + int steps[] = {_ccv_width_padding(cascade->size.width), + _ccv_width_padding(cascade->size.width >> 1), + _ccv_width_padding(cascade->size.width >> 2)}; + int isizs0 = steps[0] * cascade->size.height; + int isizs01 = isizs0 + steps[1] * (cascade->size.height >> 1); + + i = 0; + k = 0; + int bg = 0; + int cacheK = 10; + /* state resume code */ + char buf[1024]; + sprintf(buf, "%s/stat.txt", dir); + _ccv_resume_bbf_cascade_training_state(buf, &i, &k, &bg, pw, nw, posnum, negnum); + if (i > 0) + { + cascade->count = i; + ccfree(cascade->stage_classifier); + cascade->stage_classifier = (ccv_bbf_stage_classifier_t *)ccmalloc(i * sizeof(ccv_bbf_stage_classifier_t)); + for (j = 0; j < i; j++) + { + sprintf(buf, "%s/stage-%d.txt", dir, j); + _ccv_read_bbf_stage_classifier(buf, &cascade->stage_classifier[j]); + } + } + if (k > 0) + cacheK = k; + int rpos, rneg = 0; + if (bg) + { + sprintf(buf, "%s/negs.txt", dir); + _ccv_read_background_data(buf, negdata, &rneg, cascade->size); + } + + for (; i < params.layer; i++) + { + if (!bg) + { + rneg = _ccv_prepare_background_data(cascade, bgfiles, bgnum, negdata, negnum); + /* save state of background data */ + sprintf(buf, "%s/negs.txt", dir); + _ccv_write_background_data(buf, negdata, rneg, cascade->size); + bg = 1; + } + double totalw; + /* save state of cascade : level, weight etc. */ + sprintf(buf, "%s/stat.txt", dir); + _ccv_save_bbf_cacade_training_state(buf, i, k, bg, pw, nw, posnum, negnum); + ccv_bbf_stage_classifier_t classifier; + if (k > 0) + { + /* resume state of classifier */ + sprintf(buf, "%s/stage-%d.txt", dir, i); + _ccv_read_bbf_stage_classifier(buf, &classifier); + } + else + { + /* initialize classifier */ + for (j = 0; j < posnum; j++) + pw[j] = params.balance_k; + for (j = 0; j < rneg; j++) + nw[j] = inv_balance_k; + classifier.count = k; + classifier.threshold = 0; + classifier.feature = (ccv_bbf_feature_t *)ccmalloc(cacheK * sizeof(ccv_bbf_feature_t)); + classifier.alpha = (float *)ccmalloc(cacheK * 2 * sizeof(float)); + } + _ccv_prepare_positive_data(posimg, posdata, cascade->size, posnum); + rpos = _ccv_prune_positive_data(cascade, posdata, posnum, cascade->size); + PRINT(CCV_CLI_INFO, "%d postivie data and %d negative data in training\n", rpos, rneg); + /* reweight to 1.00 */ + totalw = 0; + for (j = 0; j < rpos; j++) + totalw += pw[j]; + for (j = 0; j < rneg; j++) + totalw += nw[j]; + for (j = 0; j < rpos; j++) + pw[j] = pw[j] / totalw; + for (j = 0; j < rneg; j++) + nw[j] = nw[j] / totalw; + for (;; k++) + { + /* get overall true-positive, false-positive rate and threshold */ + double tp = 0, fp = 0, etp = 0, efp = 0; + _ccv_bbf_eval_data(&classifier, posdata, rpos, negdata, rneg, cascade->size, peval, neval); + _ccv_sort_32f(peval, rpos, 0); + classifier.threshold = peval[(int)((1. - params.pos_crit) * rpos)] - 1e-6; + for (j = 0; j < rpos; j++) + { + if (peval[j] >= 0) + ++tp; + if (peval[j] >= classifier.threshold) + ++etp; + } + tp /= rpos; + etp /= rpos; + for (j = 0; j < rneg; j++) + { + if (neval[j] >= 0) + ++fp; + if (neval[j] >= classifier.threshold) + ++efp; + } + fp /= rneg; + efp /= rneg; + PRINT(CCV_CLI_INFO, "stage classifier real TP rate : %f, FP rate : %f\n", tp, fp); + PRINT(CCV_CLI_INFO, "stage classifier TP rate : %f, FP rate : %f at threshold : %f\n", etp, efp, classifier.threshold); + if (k > 0) + { + /* save classifier state */ + sprintf(buf, "%s/stage-%d.txt", dir, i); + _ccv_write_bbf_stage_classifier(buf, &classifier); + sprintf(buf, "%s/stat.txt", dir); + _ccv_save_bbf_cacade_training_state(buf, i, k, bg, pw, nw, posnum, negnum); + } + if (etp > params.pos_crit && efp < params.neg_crit) + break; + /* TODO: more post-process is needed in here */ + + /* select the best feature in current distribution through genetic algorithm optimization */ + ccv_bbf_feature_t best; + if (params.optimizer == CCV_BBF_GENETIC_OPT) + { + best = _ccv_bbf_genetic_optimize(posdata, rpos, negdata, rneg, params.feature_number, cascade->size, pw, nw); + } + else if (params.optimizer == CCV_BBF_FLOAT_OPT) + { + best = _ccv_bbf_convex_optimize(posdata, rpos, negdata, rneg, 0, cascade->size, pw, nw); + } + else + { + best = _ccv_bbf_genetic_optimize(posdata, rpos, negdata, rneg, params.feature_number, cascade->size, pw, nw); + best = _ccv_bbf_convex_optimize(posdata, rpos, negdata, rneg, &best, cascade->size, pw, nw); + } + double err = _ccv_bbf_error_rate(&best, posdata, rpos, negdata, rneg, cascade->size, pw, nw); + double rw = (1 - err) / err; + totalw = 0; + /* reweight */ + for (j = 0; j < rpos; j++) + { + unsigned char *u8[] = {posdata[j], posdata[j] + isizs0, posdata[j] + isizs01}; + if (!_ccv_run_bbf_feature(&best, steps, u8)) + pw[j] *= rw; + pw[j] *= params.balance_k; + totalw += pw[j]; + } + for (j = 0; j < rneg; j++) + { + unsigned char *u8[] = {negdata[j], negdata[j] + isizs0, negdata[j] + isizs01}; + if (_ccv_run_bbf_feature(&best, steps, u8)) + nw[j] *= rw; + nw[j] *= inv_balance_k; + totalw += nw[j]; + } + for (j = 0; j < rpos; j++) + pw[j] = pw[j] / totalw; + for (j = 0; j < rneg; j++) + nw[j] = nw[j] / totalw; + double c = log(rw); + PRINT(CCV_CLI_INFO, "coefficient of feature %d: %f\n", k + 1, c); + classifier.count = k + 1; + /* resizing classifier */ + if (k >= cacheK) + { + ccv_bbf_feature_t *feature = (ccv_bbf_feature_t *)ccmalloc(cacheK * 2 * sizeof(ccv_bbf_feature_t)); + memcpy(feature, classifier.feature, cacheK * sizeof(ccv_bbf_feature_t)); + ccfree(classifier.feature); + float *alpha = (float *)ccmalloc(cacheK * 4 * sizeof(float)); + memcpy(alpha, classifier.alpha, cacheK * 2 * sizeof(float)); + ccfree(classifier.alpha); + classifier.feature = feature; + classifier.alpha = alpha; + cacheK *= 2; + } + /* setup new feature */ + classifier.feature[k] = best; + classifier.alpha[k * 2] = -c; + classifier.alpha[k * 2 + 1] = c; + } + cascade->count = i + 1; + ccv_bbf_stage_classifier_t *stage_classifier = (ccv_bbf_stage_classifier_t *)ccmalloc(cascade->count * sizeof(ccv_bbf_stage_classifier_t)); + memcpy(stage_classifier, cascade->stage_classifier, i * sizeof(ccv_bbf_stage_classifier_t)); + ccfree(cascade->stage_classifier); + stage_classifier[i] = classifier; + cascade->stage_classifier = stage_classifier; + k = 0; + bg = 0; + for (j = 0; j < rpos; j++) + ccfree(posdata[j]); + for (j = 0; j < rneg; j++) + ccfree(negdata[j]); + } + + ccfree(neval); + ccfree(peval); + ccfree(nw); + ccfree(pw); + ccfree(negdata); + ccfree(posdata); + ccfree(cascade); +} +#else +void ccv_bbf_classifier_cascade_new(ccv_dense_matrix_t **posimg, int posnum, char **bgfiles, int bgnum, int negnum, ccv_size_t size, const char *dir, ccv_bbf_new_param_t params) +{ + fprintf(stderr, " ccv_bbf_classifier_cascade_new requires libgsl support, please compile ccv with libgsl.\n"); +} +#endif + +static int _ccv_is_equal(const void *_r1, const void *_r2, void *data) +{ + const ccv_comp_t *r1 = (const ccv_comp_t *)_r1; + const ccv_comp_t *r2 = (const ccv_comp_t *)_r2; + int distance = (int)(r1->rect.width * 0.25 + 0.5); + + return r2->rect.x <= r1->rect.x + distance && + r2->rect.x >= r1->rect.x - distance && + r2->rect.y <= r1->rect.y + distance && + r2->rect.y >= r1->rect.y - distance && + r2->rect.width <= (int)(r1->rect.width * 1.5 + 0.5) && + (int)(r2->rect.width * 1.5 + 0.5) >= r1->rect.width; +} + +static int _ccv_is_equal_same_class(const void *_r1, const void *_r2, void *data) +{ + const ccv_comp_t *r1 = (const ccv_comp_t *)_r1; + const ccv_comp_t *r2 = (const ccv_comp_t *)_r2; + int distance = (int)(r1->rect.width * 0.25 + 0.5); + + return r2->classification.id == r1->classification.id && + r2->rect.x <= r1->rect.x + distance && + r2->rect.x >= r1->rect.x - distance && + r2->rect.y <= r1->rect.y + distance && + r2->rect.y >= r1->rect.y - distance && + r2->rect.width <= (int)(r1->rect.width * 1.5 + 0.5) && + (int)(r2->rect.width * 1.5 + 0.5) >= r1->rect.width; +} + +ccv_array_t *ccv_bbf_detect_objects(ccv_dense_matrix_t *a, ccv_bbf_classifier_cascade_t **_cascade, int count, ccv_bbf_param_t params) +{ + int hr = a->rows / params.size.height; + int wr = a->cols / params.size.width; + double scale = pow(2., 1. / (params.interval + 1.)); + int next = params.interval + 1; + int scale_upto = (int)(log((double)ccv_min(hr, wr)) / log(scale)); + ccv_dense_matrix_t **pyr = (ccv_dense_matrix_t **)alloca((scale_upto + next * 2) * 4 * sizeof(ccv_dense_matrix_t *)); + memset(pyr, 0, (scale_upto + next * 2) * 4 * sizeof(ccv_dense_matrix_t *)); + if (params.size.height != _cascade[0]->size.height || params.size.width != _cascade[0]->size.width) + ccv_resample(a, &pyr[0], 0, a->rows * _cascade[0]->size.height / params.size.height, a->cols * _cascade[0]->size.width / params.size.width, CCV_INTER_AREA); + else + pyr[0] = a; + int i, j, k, t, x, y, q; + for (i = 1; i < ccv_min(params.interval + 1, scale_upto + next * 2); i++) + ccv_resample(pyr[0], &pyr[i * 4], 0, (int)(pyr[0]->rows / pow(scale, i)), (int)(pyr[0]->cols / pow(scale, i)), CCV_INTER_AREA); + for (i = next; i < scale_upto + next * 2; i++) + ccv_sample_down(pyr[i * 4 - next * 4], &pyr[i * 4], 0, 0, 0); + if (params.accurate) + for (i = next * 2; i < scale_upto + next * 2; i++) + { + ccv_sample_down(pyr[i * 4 - next * 4], &pyr[i * 4 + 1], 0, 1, 0); + ccv_sample_down(pyr[i * 4 - next * 4], &pyr[i * 4 + 2], 0, 0, 1); + ccv_sample_down(pyr[i * 4 - next * 4], &pyr[i * 4 + 3], 0, 1, 1); + } + ccv_array_t *idx_seq; + ccv_array_t *seq = ccv_array_new(sizeof(ccv_comp_t), 64, 0); + ccv_array_t *seq2 = ccv_array_new(sizeof(ccv_comp_t), 64, 0); + ccv_array_t *result_seq = ccv_array_new(sizeof(ccv_comp_t), 64, 0); + /* detect in multi scale */ + for (t = 0; t < count; t++) + { + ccv_bbf_classifier_cascade_t *cascade = _cascade[t]; + float scale_x = (float)params.size.width / (float)cascade->size.width; + float scale_y = (float)params.size.height / (float)cascade->size.height; + ccv_array_clear(seq); + for (i = 0; i < scale_upto; i++) + { + int dx[] = {0, 1, 0, 1}; + int dy[] = {0, 0, 1, 1}; + int i_rows = pyr[i * 4 + next * 8]->rows - (cascade->size.height >> 2); + int steps[] = {pyr[i * 4]->step, pyr[i * 4 + next * 4]->step, pyr[i * 4 + next * 8]->step}; + int i_cols = pyr[i * 4 + next * 8]->cols - (cascade->size.width >> 2); + int paddings[] = {pyr[i * 4]->step * 4 - i_cols * 4, + pyr[i * 4 + next * 4]->step * 2 - i_cols * 2, + pyr[i * 4 + next * 8]->step - i_cols}; + for (q = 0; q < (params.accurate ? 4 : 1); q++) + { + unsigned char *u8[] = {pyr[i * 4]->data.u8 + dx[q] * 2 + dy[q] * pyr[i * 4]->step * 2, pyr[i * 4 + next * 4]->data.u8 + dx[q] + dy[q] * pyr[i * 4 + next * 4]->step, pyr[i * 4 + next * 8 + q]->data.u8}; + for (y = 0; y < i_rows; y++) + { + for (x = 0; x < i_cols; x++) + { + float sum; + int flag = 1; + ccv_bbf_stage_classifier_t *classifier = cascade->stage_classifier; + for (j = 0; j < cascade->count; ++j, ++classifier) + { + sum = 0; + float *alpha = classifier->alpha; + ccv_bbf_feature_t *feature = classifier->feature; + for (k = 0; k < classifier->count; ++k, alpha += 2, ++feature) + sum += alpha[_ccv_run_bbf_feature(feature, steps, u8)]; + if (sum < classifier->threshold) + { + flag = 0; + break; + } + } + if (flag) + { + ccv_comp_t comp; + comp.rect = ccv_rect((int)((x * 4 + dx[q] * 2) * scale_x + 0.5), (int)((y * 4 + dy[q] * 2) * scale_y + 0.5), (int)(cascade->size.width * scale_x + 0.5), (int)(cascade->size.height * scale_y + 0.5)); + comp.neighbors = 1; + comp.classification.id = t; + comp.classification.confidence = sum; + ccv_array_push(seq, &comp); + } + u8[0] += 4; + u8[1] += 2; + u8[2] += 1; + } + u8[0] += paddings[0]; + u8[1] += paddings[1]; + u8[2] += paddings[2]; + } + } + scale_x *= scale; + scale_y *= scale; + } + + /* the following code from OpenCV's haar feature implementation */ + if (params.min_neighbors == 0) + { + for (i = 0; i < seq->rnum; i++) + { + ccv_comp_t *comp = (ccv_comp_t *)ccv_array_get(seq, i); + ccv_array_push(result_seq, comp); + } + } + else + { + idx_seq = 0; + ccv_array_clear(seq2); + // group retrieved rectangles in order to filter out noise + int ncomp = ccv_array_group(seq, &idx_seq, _ccv_is_equal_same_class, 0); + ccv_comp_t *comps = (ccv_comp_t *)ccmalloc((ncomp + 1) * sizeof(ccv_comp_t)); + memset(comps, 0, (ncomp + 1) * sizeof(ccv_comp_t)); + + // count number of neighbors + for (i = 0; i < seq->rnum; i++) + { + ccv_comp_t r1 = *(ccv_comp_t *)ccv_array_get(seq, i); + int idx = *(int *)ccv_array_get(idx_seq, i); + + if (comps[idx].neighbors == 0) + comps[idx].classification.confidence = r1.classification.confidence; + + ++comps[idx].neighbors; + + comps[idx].rect.x += r1.rect.x; + comps[idx].rect.y += r1.rect.y; + comps[idx].rect.width += r1.rect.width; + comps[idx].rect.height += r1.rect.height; + comps[idx].classification.id = r1.classification.id; + comps[idx].classification.confidence = ccv_max(comps[idx].classification.confidence, r1.classification.confidence); + } + + // calculate average bounding box + for (i = 0; i < ncomp; i++) + { + int n = comps[i].neighbors; + if (n >= params.min_neighbors) + { + ccv_comp_t comp; + comp.rect.x = (comps[i].rect.x * 2 + n) / (2 * n); + comp.rect.y = (comps[i].rect.y * 2 + n) / (2 * n); + comp.rect.width = (comps[i].rect.width * 2 + n) / (2 * n); + comp.rect.height = (comps[i].rect.height * 2 + n) / (2 * n); + comp.neighbors = comps[i].neighbors; + comp.classification.id = comps[i].classification.id; + comp.classification.confidence = comps[i].classification.confidence; + ccv_array_push(seq2, &comp); + } + } + + // filter out small face rectangles inside large face rectangles + for (i = 0; i < seq2->rnum; i++) + { + ccv_comp_t r1 = *(ccv_comp_t *)ccv_array_get(seq2, i); + int flag = 1; + + for (j = 0; j < seq2->rnum; j++) + { + ccv_comp_t r2 = *(ccv_comp_t *)ccv_array_get(seq2, j); + int distance = (int)(r2.rect.width * 0.25 + 0.5); + + if (i != j && + r1.classification.id == r2.classification.id && + r1.rect.x >= r2.rect.x - distance && + r1.rect.y >= r2.rect.y - distance && + r1.rect.x + r1.rect.width <= r2.rect.x + r2.rect.width + distance && + r1.rect.y + r1.rect.height <= r2.rect.y + r2.rect.height + distance && + (r2.neighbors > ccv_max(3, r1.neighbors) || r1.neighbors < 3)) + { + flag = 0; + break; + } + } + + if (flag) + ccv_array_push(result_seq, &r1); + } + ccv_array_free(idx_seq); + ccfree(comps); + } + } + + ccv_array_free(seq); + ccv_array_free(seq2); + + ccv_array_t *result_seq2; + /* the following code from OpenCV's haar feature implementation */ + if (params.flags & CCV_BBF_NO_NESTED) + { + result_seq2 = ccv_array_new(sizeof(ccv_comp_t), 64, 0); + idx_seq = 0; + // group retrieved rectangles in order to filter out noise + int ncomp = ccv_array_group(result_seq, &idx_seq, _ccv_is_equal, 0); + ccv_comp_t *comps = (ccv_comp_t *)ccmalloc((ncomp + 1) * sizeof(ccv_comp_t)); + memset(comps, 0, (ncomp + 1) * sizeof(ccv_comp_t)); + + // count number of neighbors + for (i = 0; i < result_seq->rnum; i++) + { + ccv_comp_t r1 = *(ccv_comp_t *)ccv_array_get(result_seq, i); + int idx = *(int *)ccv_array_get(idx_seq, i); + + if (comps[idx].neighbors == 0 || comps[idx].classification.confidence < r1.classification.confidence) + { + comps[idx].classification.confidence = r1.classification.confidence; + comps[idx].neighbors = 1; + comps[idx].rect = r1.rect; + comps[idx].classification.id = r1.classification.id; + } + } + + // calculate average bounding box + for (i = 0; i < ncomp; i++) + if (comps[i].neighbors) + ccv_array_push(result_seq2, &comps[i]); + + ccv_array_free(result_seq); + ccfree(comps); + } + else + { + result_seq2 = result_seq; + } + + for (i = 1; i < scale_upto + next * 2; i++) + ccv_matrix_free(pyr[i * 4]); + if (params.accurate) + for (i = next * 2; i < scale_upto + next * 2; i++) + { + ccv_matrix_free(pyr[i * 4 + 1]); + ccv_matrix_free(pyr[i * 4 + 2]); + ccv_matrix_free(pyr[i * 4 + 3]); + } + if (params.size.height != _cascade[0]->size.height || params.size.width != _cascade[0]->size.width) + ccv_matrix_free(pyr[0]); + + return result_seq2; +} + +ccv_bbf_classifier_cascade_t *ccv_bbf_read_classifier_cascade(const char *directory) +{ + char buf[1024]; + sprintf(buf, "%s/cascade.txt", directory); + int s, i; + FILE *r = fopen(buf, "r"); + if (r == 0) + return 0; + ccv_bbf_classifier_cascade_t *cascade = (ccv_bbf_classifier_cascade_t *)ccmalloc(sizeof(ccv_bbf_classifier_cascade_t)); + s = fscanf(r, "%d %d %d", &cascade->count, &cascade->size.width, &cascade->size.height); + assert(s > 0); + cascade->stage_classifier = (ccv_bbf_stage_classifier_t *)ccmalloc(cascade->count * sizeof(ccv_bbf_stage_classifier_t)); + for (i = 0; i < cascade->count; i++) + { + sprintf(buf, "%s/stage-%d.txt", directory, i); + if (_ccv_read_bbf_stage_classifier(buf, &cascade->stage_classifier[i]) < 0) + { + cascade->count = i; + break; + } + } + fclose(r); + return cascade; +} + +ccv_bbf_classifier_cascade_t *ccv_bbf_classifier_cascade_read_binary(char *s) +{ + int i; + ccv_bbf_classifier_cascade_t *cascade = (ccv_bbf_classifier_cascade_t *)ccmalloc(sizeof(ccv_bbf_classifier_cascade_t)); + memcpy(&cascade->count, s, sizeof(cascade->count)); + s += sizeof(cascade->count); + memcpy(&cascade->size.width, s, sizeof(cascade->size.width)); + s += sizeof(cascade->size.width); + memcpy(&cascade->size.height, s, sizeof(cascade->size.height)); + s += sizeof(cascade->size.height); + ccv_bbf_stage_classifier_t *classifier = cascade->stage_classifier = (ccv_bbf_stage_classifier_t *)ccmalloc(cascade->count * sizeof(ccv_bbf_stage_classifier_t)); + for (i = 0; i < cascade->count; i++, classifier++) + { + memcpy(&classifier->count, s, sizeof(classifier->count)); + s += sizeof(classifier->count); + memcpy(&classifier->threshold, s, sizeof(classifier->threshold)); + s += sizeof(classifier->threshold); + classifier->feature = (ccv_bbf_feature_t *)ccmalloc(classifier->count * sizeof(ccv_bbf_feature_t)); + classifier->alpha = (float *)ccmalloc(classifier->count * 2 * sizeof(float)); + memcpy(classifier->feature, s, classifier->count * sizeof(ccv_bbf_feature_t)); + s += classifier->count * sizeof(ccv_bbf_feature_t); + memcpy(classifier->alpha, s, classifier->count * 2 * sizeof(float)); + s += classifier->count * 2 * sizeof(float); + } + return cascade; +} + +int ccv_bbf_classifier_cascade_write_binary(ccv_bbf_classifier_cascade_t *cascade, char *s, int slen) +{ + int i; + int len = sizeof(cascade->count) + sizeof(cascade->size.width) + sizeof(cascade->size.height); + ccv_bbf_stage_classifier_t *classifier = cascade->stage_classifier; + for (i = 0; i < cascade->count; i++, classifier++) + len += sizeof(classifier->count) + sizeof(classifier->threshold) + classifier->count * sizeof(ccv_bbf_feature_t) + classifier->count * 2 * sizeof(float); + if (slen >= len) + { + memcpy(s, &cascade->count, sizeof(cascade->count)); + s += sizeof(cascade->count); + memcpy(s, &cascade->size.width, sizeof(cascade->size.width)); + s += sizeof(cascade->size.width); + memcpy(s, &cascade->size.height, sizeof(cascade->size.height)); + s += sizeof(cascade->size.height); + classifier = cascade->stage_classifier; + for (i = 0; i < cascade->count; i++, classifier++) + { + memcpy(s, &classifier->count, sizeof(classifier->count)); + s += sizeof(classifier->count); + memcpy(s, &classifier->threshold, sizeof(classifier->threshold)); + s += sizeof(classifier->threshold); + memcpy(s, classifier->feature, classifier->count * sizeof(ccv_bbf_feature_t)); + s += classifier->count * sizeof(ccv_bbf_feature_t); + memcpy(s, classifier->alpha, classifier->count * 2 * sizeof(float)); + s += classifier->count * 2 * sizeof(float); + } + } + return len; +} + +void ccv_bbf_classifier_cascade_free(ccv_bbf_classifier_cascade_t *cascade) +{ + int i; + for (i = 0; i < cascade->count; ++i) + { + ccfree(cascade->stage_classifier[i].feature); + ccfree(cascade->stage_classifier[i].alpha); + } + ccfree(cascade->stage_classifier); + ccfree(cascade); +} \ No newline at end of file diff --git a/test/source.clj b/test/source.clj new file mode 100644 index 0000000..e69de29 diff --git a/test/source.coffee b/test/source.coffee new file mode 100644 index 0000000..e69de29 diff --git a/test/source.cpp b/test/source.cpp new file mode 100644 index 0000000..793837f --- /dev/null +++ b/test/source.cpp @@ -0,0 +1,1582 @@ +#include "ccv.h" +#include "ccv_internal.h" +#include +#ifdef HAVE_GSL +#include +#include +#endif +#ifdef USE_OPENMP +#include +#endif +const ; + +finitario crear_finitario(info_t i) { + finitario nuevo = new rep_finitario; + nuevo->dato = i; + nuevo->primerio = NULL; + return nuevo; +} + + +const ccv_bbf_param_t ccv_bbf_default_params = { + .interval = 5, + .min_neighbors = 2, + .accurate = 1, + .flags = 0, + .size = { + 24, + 24, + }, +}; + +#define _ccv_width_padding(x) (((x) + 3) & -4) + +static inline int _ccv_run_bbf_feature(ccv_bbf_feature_t *feature, int *step, unsigned char **u8) +{ +#define pf_at(i) (*(u8[feature->pz[i]] + feature->px[i] + feature->py[i] * step[feature->pz[i]])) +#define nf_at(i) (*(u8[feature->nz[i]] + feature->nx[i] + feature->ny[i] * step[feature->nz[i]])) + unsigned char pmin = pf_at(0), nmax = nf_at(0); + /* check if every point in P > every point in N, and take a shortcut */ + if (pmin <= nmax) + return 0; + int i; + for (i = 1; i < feature->size; i++) + { + if (feature->pz[i] >= 0) + { + int p = pf_at(i); + if (p < pmin) + { + if (p <= nmax) + return 0; + pmin = p; + } + } + if (feature->nz[i] >= 0) + { + int n = nf_at(i); + if (n > nmax) + { + if (pmin <= n) + return 0; + nmax = n; + } + } + } +#undef pf_at +#undef nf_at + return 1; +} + +static int _ccv_read_bbf_stage_classifier(const char *file, ccv_bbf_stage_classifier_t *classifier) +{ + FILE *r = fopen(file, "r"); + if (r == 0) + return -1; + int stat = 0; + stat |= fscanf(r, "%d", &classifier->count); + union { + float fl; + int i; + } fli; + stat |= fscanf(r, "%d", &fli.i); + classifier->threshold = fli.fl; + classifier->feature = (ccv_bbf_feature_t *)ccmalloc(classifier->count * sizeof(ccv_bbf_feature_t)); + classifier->alpha = (float *)ccmalloc(classifier->count * 2 * sizeof(float)); + int i, j; + for (i = 0; i < classifier->count; i++) + { + stat |= fscanf(r, "%d", &classifier->feature[i].size); + for (j = 0; j < classifier->feature[i].size; j++) + { + stat |= fscanf(r, "%d %d %d", &classifier->feature[i].px[j], &classifier->feature[i].py[j], &classifier->feature[i].pz[j]); + stat |= fscanf(r, "%d %d %d", &classifier->feature[i].nx[j], &classifier->feature[i].ny[j], &classifier->feature[i].nz[j]); + } + union { + float fl; + int i; + } flia, flib; + stat |= fscanf(r, "%d %d", &flia.i, &flib.i); + classifier->alpha[i * 2] = flia.fl; + classifier->alpha[i * 2 + 1] = flib.fl; + } + fclose(r); + return 0; +} + +#ifdef HAVE_GSL + +static unsigned int _ccv_bbf_time_measure() +{ + struct timeval tv; + gettimeofday(&tv, 0); + return tv.tv_sec * 1000000 + tv.tv_usec; +} + +#define less_than(a, b, aux) ((a) < (b)) +CCV_IMPLEMENT_QSORT(_ccv_sort_32f, float, less_than) +#undef less_than + +static void _ccv_bbf_eval_data(ccv_bbf_stage_classifier_t *classifier, unsigned char **posdata, int posnum, unsigned char **negdata, int negnum, ccv_size_t size, float *peval, float *neval) +{ + int i, j; + int steps[] = {_ccv_width_padding(size.width), + _ccv_width_padding(size.width >> 1), + _ccv_width_padding(size.width >> 2)}; + int isizs0 = steps[0] * size.height; + int isizs01 = isizs0 + steps[1] * (size.height >> 1); + for (i = 0; i < posnum; i++) + { + unsigned char *u8[] = {posdata[i], posdata[i] + isizs0, posdata[i] + isizs01}; + float sum = 0; + float *alpha = classifier->alpha; + ccv_bbf_feature_t *feature = classifier->feature; + for (j = 0; j < classifier->count; ++j, alpha += 2, ++feature) + sum += alpha[_ccv_run_bbf_feature(feature, steps, u8)]; + peval[i] = sum; + } + for (i = 0; i < negnum; i++) + { + unsigned char *u8[] = {negdata[i], negdata[i] + isizs0, negdata[i] + isizs01}; + float sum = 0; + float *alpha = classifier->alpha; + ccv_bbf_feature_t *feature = classifier->feature; + for (j = 0; j < classifier->count; ++j, alpha += 2, ++feature) + sum += alpha[_ccv_run_bbf_feature(feature, steps, u8)]; + neval[i] = sum; + } +} + +static int _ccv_prune_positive_data(ccv_bbf_classifier_cascade_t *cascade, unsigned char **posdata, int posnum, ccv_size_t size) +{ + float *peval = (float *)ccmalloc(posnum * sizeof(float)); + int i, j, k, rpos = posnum; + for (i = 0; i < cascade->count; i++) + { + _ccv_bbf_eval_data(cascade->stage_classifier + i, posdata, rpos, 0, 0, size, peval, 0); + k = 0; + for (j = 0; j < rpos; j++) + if (peval[j] >= cascade->stage_classifier[i].threshold) + { + posdata[k] = posdata[j]; + ++k; + } + else + { + ccfree(posdata[j]); + } + rpos = k; + } + ccfree(peval); + return rpos; +} + +static int _ccv_prepare_background_data(ccv_bbf_classifier_cascade_t *cascade, char **bgfiles, int bgnum, unsigned char **negdata, int negnum) +{ + int t, i, j, k, q; + int negperbg; + int negtotal = 0; + int steps[] = {_ccv_width_padding(cascade->size.width), + _ccv_width_padding(cascade->size.width >> 1), + _ccv_width_padding(cascade->size.width >> 2)}; + int isizs0 = steps[0] * cascade->size.height; + int isizs1 = steps[1] * (cascade->size.height >> 1); + int isizs2 = steps[2] * (cascade->size.height >> 2); + int *idcheck = (int *)ccmalloc(negnum * sizeof(int)); + + gsl_rng_env_setup(); + + gsl_rng *rng = gsl_rng_alloc(gsl_rng_default); + gsl_rng_set(rng, (unsigned long int)idcheck); + + ccv_size_t imgsz = cascade->size; + int rneg = negtotal; + for (t = 0; negtotal < negnum; t++) + { + PRINT(CCV_CLI_INFO, "preparing negative data ... 0%%"); + for (i = 0; i < bgnum; i++) + { + negperbg = (t < 2) ? (negnum - negtotal) / (bgnum - i) + 1 : negnum - negtotal; + ccv_dense_matrix_t *image = 0; + ccv_read(bgfiles[i], &image, CCV_IO_GRAY | CCV_IO_ANY_FILE); + assert((image->type & CCV_C1) && (image->type & CCV_8U)); + if (image == 0) + { + PRINT(CCV_CLI_ERROR, "\n%s file corrupted\n", bgfiles[i]); + continue; + } + if (t % 2 != 0) + ccv_flip(image, 0, 0, CCV_FLIP_X); + if (t % 4 >= 2) + ccv_flip(image, 0, 0, CCV_FLIP_Y); + ccv_bbf_param_t params = {.interval = 3, .min_neighbors = 0, .accurate = 1, .flags = 0, .size = cascade->size}; + ccv_array_t *detected = ccv_bbf_detect_objects(image, &cascade, 1, params); + memset(idcheck, 0, ccv_min(detected->rnum, negperbg) * sizeof(int)); + for (j = 0; j < ccv_min(detected->rnum, negperbg); j++) + { + int r = gsl_rng_uniform_int(rng, detected->rnum); + int flag = 1; + ccv_rect_t *rect = (ccv_rect_t *)ccv_array_get(detected, r); + while (flag) + { + flag = 0; + for (k = 0; k < j; k++) + if (r == idcheck[k]) + { + flag = 1; + r = gsl_rng_uniform_int(rng, detected->rnum); + break; + } + rect = (ccv_rect_t *)ccv_array_get(detected, r); + if ((rect->x < 0) || (rect->y < 0) || (rect->width + rect->x > image->cols) || (rect->height + rect->y > image->rows)) + { + flag = 1; + r = gsl_rng_uniform_int(rng, detected->rnum); + } + } + idcheck[j] = r; + ccv_dense_matrix_t *temp = 0; + ccv_dense_matrix_t *imgs0 = 0; + ccv_dense_matrix_t *imgs1 = 0; + ccv_dense_matrix_t *imgs2 = 0; + ccv_slice(image, (ccv_matrix_t **)&temp, 0, rect->y, rect->x, rect->height, rect->width); + ccv_resample(temp, &imgs0, 0, imgsz.height, imgsz.width, CCV_INTER_AREA); + assert(imgs0->step == steps[0]); + ccv_matrix_free(temp); + ccv_sample_down(imgs0, &imgs1, 0, 0, 0); + assert(imgs1->step == steps[1]); + ccv_sample_down(imgs1, &imgs2, 0, 0, 0); + assert(imgs2->step == steps[2]); + + negdata[negtotal] = (unsigned char *)ccmalloc(isizs0 + isizs1 + isizs2); + unsigned char *u8s0 = negdata[negtotal]; + unsigned char *u8s1 = negdata[negtotal] + isizs0; + unsigned char *u8s2 = negdata[negtotal] + isizs0 + isizs1; + unsigned char *u8[] = {u8s0, u8s1, u8s2}; + memcpy(u8s0, imgs0->data.u8, imgs0->rows * imgs0->step); + ccv_matrix_free(imgs0); + memcpy(u8s1, imgs1->data.u8, imgs1->rows * imgs1->step); + ccv_matrix_free(imgs1); + memcpy(u8s2, imgs2->data.u8, imgs2->rows * imgs2->step); + ccv_matrix_free(imgs2); + + flag = 1; + ccv_bbf_stage_classifier_t *classifier = cascade->stage_classifier; + for (k = 0; k < cascade->count; ++k, ++classifier) + { + float sum = 0; + float *alpha = classifier->alpha; + ccv_bbf_feature_t *feature = classifier->feature; + for (q = 0; q < classifier->count; ++q, alpha += 2, ++feature) + sum += alpha[_ccv_run_bbf_feature(feature, steps, u8)]; + if (sum < classifier->threshold) + { + flag = 0; + break; + } + } + if (!flag) + ccfree(negdata[negtotal]); + else + { + ++negtotal; + if (negtotal >= negnum) + break; + } + } + ccv_array_free(detected); + ccv_matrix_free(image); + ccv_drain_cache(); + PRINT(CCV_CLI_INFO, "\rpreparing negative data ... %2d%%", 100 * negtotal / negnum); + fflush(0); + if (negtotal >= negnum) + break; + } + if (rneg == negtotal) + break; + rneg = negtotal; + PRINT(CCV_CLI_INFO, "\nentering additional round %d\n", t + 1); + } + gsl_rng_free(rng); + ccfree(idcheck); + ccv_drain_cache(); + PRINT(CCV_CLI_INFO, "\n"); + return negtotal; +} + +static void _ccv_prepare_positive_data(ccv_dense_matrix_t **posimg, unsigned char **posdata, ccv_size_t size, int posnum) +{ + PRINT(CCV_CLI_INFO, "preparing positive data ... 0%%"); + int i; + for (i = 0; i < posnum; i++) + { + ccv_dense_matrix_t *imgs0 = posimg[i]; + ccv_dense_matrix_t *imgs1 = 0; + ccv_dense_matrix_t *imgs2 = 0; + assert((imgs0->type & CCV_C1) && (imgs0->type & CCV_8U) && imgs0->rows == size.height && imgs0->cols == size.width); + ccv_sample_down(imgs0, &imgs1, 0, 0, 0); + ccv_sample_down(imgs1, &imgs2, 0, 0, 0); + int isizs0 = imgs0->rows * imgs0->step; + int isizs1 = imgs1->rows * imgs1->step; + int isizs2 = imgs2->rows * imgs2->step; + + posdata[i] = (unsigned char *)ccmalloc(isizs0 + isizs1 + isizs2); + memcpy(posdata[i], imgs0->data.u8, isizs0); + memcpy(posdata[i] + isizs0, imgs1->data.u8, isizs1); + memcpy(posdata[i] + isizs0 + isizs1, imgs2->data.u8, isizs2); + + PRINT(CCV_CLI_INFO, "\rpreparing positive data ... %2d%%", 100 * (i + 1) / posnum); + fflush(0); + + ccv_matrix_free(imgs1); + ccv_matrix_free(imgs2); + } + ccv_drain_cache(); + PRINT(CCV_CLI_INFO, "\n"); +} + +typedef struct +{ + double fitness; + int pk, nk; + int age; + double error; + ccv_bbf_feature_t feature; +} ccv_bbf_gene_t; + +static inline void _ccv_bbf_genetic_fitness(ccv_bbf_gene_t *gene) +{ + gene->fitness = (1 - gene->error) * exp(-0.01 * gene->age) * exp((gene->pk + gene->nk) * log(1.015)); +} + +static inline int _ccv_bbf_exist_gene_feature(ccv_bbf_gene_t *gene, int x, int y, int z) +{ + int i; + for (i = 0; i < gene->pk; i++) + if (z == gene->feature.pz[i] && x == gene->feature.px[i] && y == gene->feature.py[i]) + return 1; + for (i = 0; i < gene->nk; i++) + if (z == gene->feature.nz[i] && x == gene->feature.nx[i] && y == gene->feature.ny[i]) + return 1; + return 0; +} + +static inline void _ccv_bbf_randomize_gene(gsl_rng *rng, ccv_bbf_gene_t *gene, int *rows, int *cols) +{ + int i; + do + { + gene->pk = gsl_rng_uniform_int(rng, CCV_BBF_POINT_MAX - 1) + 1; + gene->nk = gsl_rng_uniform_int(rng, CCV_BBF_POINT_MAX - 1) + 1; + } while (gene->pk + gene->nk < CCV_BBF_POINT_MIN); /* a hard restriction of at least 3 points have to be examed */ + gene->feature.size = ccv_max(gene->pk, gene->nk); + gene->age = 0; + for (i = 0; i < CCV_BBF_POINT_MAX; i++) + { + gene->feature.pz[i] = -1; + gene->feature.nz[i] = -1; + } + int x, y, z; + for (i = 0; i < gene->pk; i++) + { + do + { + z = gsl_rng_uniform_int(rng, 3); + x = gsl_rng_uniform_int(rng, cols[z]); + y = gsl_rng_uniform_int(rng, rows[z]); + } while (_ccv_bbf_exist_gene_feature(gene, x, y, z)); + gene->feature.pz[i] = z; + gene->feature.px[i] = x; + gene->feature.py[i] = y; + } + for (i = 0; i < gene->nk; i++) + { + do + { + z = gsl_rng_uniform_int(rng, 3); + x = gsl_rng_uniform_int(rng, cols[z]); + y = gsl_rng_uniform_int(rng, rows[z]); + } while (_ccv_bbf_exist_gene_feature(gene, x, y, z)); + gene->feature.nz[i] = z; + gene->feature.nx[i] = x; + gene->feature.ny[i] = y; + } +} + +static inline double _ccv_bbf_error_rate(ccv_bbf_feature_t *feature, unsigned char **posdata, int posnum, unsigned char **negdata, int negnum, ccv_size_t size, double *pw, double *nw) +{ + int i; + int steps[] = {_ccv_width_padding(size.width), + _ccv_width_padding(size.width >> 1), + _ccv_width_padding(size.width >> 2)}; + int isizs0 = steps[0] * size.height; + int isizs01 = isizs0 + steps[1] * (size.height >> 1); + double error = 0; + for (i = 0; i < posnum; i++) + { + unsigned char *u8[] = {posdata[i], posdata[i] + isizs0, posdata[i] + isizs01}; + if (!_ccv_run_bbf_feature(feature, steps, u8)) + error += pw[i]; + } + for (i = 0; i < negnum; i++) + { + unsigned char *u8[] = {negdata[i], negdata[i] + isizs0, negdata[i] + isizs01}; + if (_ccv_run_bbf_feature(feature, steps, u8)) + error += nw[i]; + } + return error; +} + +#define less_than(fit1, fit2, aux) ((fit1).fitness >= (fit2).fitness) +static CCV_IMPLEMENT_QSORT(_ccv_bbf_genetic_qsort, ccv_bbf_gene_t, less_than) +#undef less_than + + static ccv_bbf_feature_t _ccv_bbf_genetic_optimize(unsigned char **posdata, int posnum, unsigned char **negdata, int negnum, int ftnum, ccv_size_t size, double *pw, double *nw) +{ + ccv_bbf_feature_t best; + /* seed (random method) */ + gsl_rng_env_setup(); + gsl_rng *rng = gsl_rng_alloc(gsl_rng_default); + union { + unsigned long int li; + double db; + } dbli; + dbli.db = pw[0] + nw[0]; + gsl_rng_set(rng, dbli.li); + int i, j; + int pnum = ftnum * 100; + assert(pnum > 0); + ccv_bbf_gene_t *gene = (ccv_bbf_gene_t *)ccmalloc(pnum * sizeof(ccv_bbf_gene_t)); + int rows[] = {size.height, size.height >> 1, size.height >> 2}; + int cols[] = {size.width, size.width >> 1, size.width >> 2}; + for (i = 0; i < pnum; i++) + _ccv_bbf_randomize_gene(rng, &gene[i], rows, cols); + unsigned int timer = _ccv_bbf_time_measure(); +#ifdef USE_OPENMP +#pragma omp parallel for private(i) schedule(dynamic) +#endif + for (i = 0; i < pnum; i++) + gene[i].error = _ccv_bbf_error_rate(&gene[i].feature, posdata, posnum, negdata, negnum, size, pw, nw); + timer = _ccv_bbf_time_measure() - timer; + for (i = 0; i < pnum; i++) + _ccv_bbf_genetic_fitness(&gene[i]); + double best_err = 1; + int rnum = ftnum * 39; /* number of randomize */ + int mnum = ftnum * 40; /* number of mutation */ + int hnum = ftnum * 20; /* number of hybrid */ + /* iteration stop crit : best no change in 40 iterations */ + int it = 0, t; + for (t = 0; it < 40; ++it, ++t) + { + int min_id = 0; + double min_err = gene[0].error; + for (i = 1; i < pnum; i++) + if (gene[i].error < min_err) + { + min_id = i; + min_err = gene[i].error; + } + min_err = gene[min_id].error = _ccv_bbf_error_rate(&gene[min_id].feature, posdata, posnum, negdata, negnum, size, pw, nw); + if (min_err < best_err) + { + best_err = min_err; + memcpy(&best, &gene[min_id].feature, sizeof(best)); + PRINT(CCV_CLI_INFO, "best bbf feature with error %f\n|-size: %d\n|-positive point: ", best_err, best.size); + for (i = 0; i < best.size; i++) + PRINT(CCV_CLI_INFO, "(%d %d %d), ", best.px[i], best.py[i], best.pz[i]); + PRINT(CCV_CLI_INFO, "\n|-negative point: "); + for (i = 0; i < best.size; i++) + PRINT(CCV_CLI_INFO, "(%d %d %d), ", best.nx[i], best.ny[i], best.nz[i]); + PRINT(CCV_CLI_INFO, "\n"); + it = 0; + } + PRINT(CCV_CLI_INFO, "minimum error achieved in round %d(%d) : %f with %d ms\n", t, it, min_err, timer / 1000); + _ccv_bbf_genetic_qsort(gene, pnum, 0); + for (i = 0; i < ftnum; i++) + ++gene[i].age; + for (i = ftnum; i < ftnum + mnum; i++) + { + int parent = gsl_rng_uniform_int(rng, ftnum); + memcpy(gene + i, gene + parent, sizeof(ccv_bbf_gene_t)); + /* three mutation strategy : 1. add, 2. remove, 3. refine */ + int pnm, pn = gsl_rng_uniform_int(rng, 2); + int *pnk[] = {&gene[i].pk, &gene[i].nk}; + int *pnx[] = {gene[i].feature.px, gene[i].feature.nx}; + int *pny[] = {gene[i].feature.py, gene[i].feature.ny}; + int *pnz[] = {gene[i].feature.pz, gene[i].feature.nz}; + int x, y, z; + int victim, decay = 1; + do + { + switch (gsl_rng_uniform_int(rng, 3)) + { + case 0: /* add */ + if (gene[i].pk == CCV_BBF_POINT_MAX && gene[i].nk == CCV_BBF_POINT_MAX) + break; + while (*pnk[pn] + 1 > CCV_BBF_POINT_MAX) + pn = gsl_rng_uniform_int(rng, 2); + do + { + z = gsl_rng_uniform_int(rng, 3); + x = gsl_rng_uniform_int(rng, cols[z]); + y = gsl_rng_uniform_int(rng, rows[z]); + } while (_ccv_bbf_exist_gene_feature(&gene[i], x, y, z)); + pnz[pn][*pnk[pn]] = z; + pnx[pn][*pnk[pn]] = x; + pny[pn][*pnk[pn]] = y; + ++(*pnk[pn]); + gene[i].feature.size = ccv_max(gene[i].pk, gene[i].nk); + decay = gene[i].age = 0; + break; + case 1: /* remove */ + if (gene[i].pk + gene[i].nk <= CCV_BBF_POINT_MIN) /* at least 3 points have to be examed */ + break; + while (*pnk[pn] - 1 <= 0) // || *pnk[pn] + *pnk[!pn] - 1 < CCV_BBF_POINT_MIN) + pn = gsl_rng_uniform_int(rng, 2); + victim = gsl_rng_uniform_int(rng, *pnk[pn]); + for (j = victim; j < *pnk[pn] - 1; j++) + { + pnz[pn][j] = pnz[pn][j + 1]; + pnx[pn][j] = pnx[pn][j + 1]; + pny[pn][j] = pny[pn][j + 1]; + } + pnz[pn][*pnk[pn] - 1] = -1; + --(*pnk[pn]); + gene[i].feature.size = ccv_max(gene[i].pk, gene[i].nk); + decay = gene[i].age = 0; + break; + case 2: /* refine */ + pnm = gsl_rng_uniform_int(rng, *pnk[pn]); + do + { + z = gsl_rng_uniform_int(rng, 3); + x = gsl_rng_uniform_int(rng, cols[z]); + y = gsl_rng_uniform_int(rng, rows[z]); + } while (_ccv_bbf_exist_gene_feature(&gene[i], x, y, z)); + pnz[pn][pnm] = z; + pnx[pn][pnm] = x; + pny[pn][pnm] = y; + decay = gene[i].age = 0; + break; + } + } while (decay); + } + for (i = ftnum + mnum; i < ftnum + mnum + hnum; i++) + { + /* hybrid strategy: taking positive points from dad, negative points from mum */ + int dad, mum; + do + { + dad = gsl_rng_uniform_int(rng, ftnum); + mum = gsl_rng_uniform_int(rng, ftnum); + } while (dad == mum || gene[dad].pk + gene[mum].nk < CCV_BBF_POINT_MIN); /* at least 3 points have to be examed */ + for (j = 0; j < CCV_BBF_POINT_MAX; j++) + { + gene[i].feature.pz[j] = -1; + gene[i].feature.nz[j] = -1; + } + gene[i].pk = gene[dad].pk; + for (j = 0; j < gene[i].pk; j++) + { + gene[i].feature.pz[j] = gene[dad].feature.pz[j]; + gene[i].feature.px[j] = gene[dad].feature.px[j]; + gene[i].feature.py[j] = gene[dad].feature.py[j]; + } + gene[i].nk = gene[mum].nk; + for (j = 0; j < gene[i].nk; j++) + { + gene[i].feature.nz[j] = gene[mum].feature.nz[j]; + gene[i].feature.nx[j] = gene[mum].feature.nx[j]; + gene[i].feature.ny[j] = gene[mum].feature.ny[j]; + } + gene[i].feature.size = ccv_max(gene[i].pk, gene[i].nk); + gene[i].age = 0; + } + for (i = ftnum + mnum + hnum; i < ftnum + mnum + hnum + rnum; i++) + _ccv_bbf_randomize_gene(rng, &gene[i], rows, cols); + timer = _ccv_bbf_time_measure(); +#ifdef USE_OPENMP +#pragma omp parallel for private(i) schedule(dynamic) +#endif + for (i = 0; i < pnum; i++) + gene[i].error = _ccv_bbf_error_rate(&gene[i].feature, posdata, posnum, negdata, negnum, size, pw, nw); + timer = _ccv_bbf_time_measure() - timer; + for (i = 0; i < pnum; i++) + _ccv_bbf_genetic_fitness(&gene[i]); + } + ccfree(gene); + gsl_rng_free(rng); + return best; +} + +#define less_than(fit1, fit2, aux) ((fit1).error < (fit2).error) +static CCV_IMPLEMENT_QSORT(_ccv_bbf_best_qsort, ccv_bbf_gene_t, less_than) +#undef less_than + + static ccv_bbf_gene_t _ccv_bbf_best_gene(ccv_bbf_gene_t *gene, int pnum, int point_min, unsigned char **posdata, int posnum, unsigned char **negdata, int negnum, ccv_size_t size, double *pw, double *nw) +{ + int i; + unsigned int timer = _ccv_bbf_time_measure(); +#ifdef USE_OPENMP +#pragma omp parallel for private(i) schedule(dynamic) +#endif + for (i = 0; i < pnum; i++) + gene[i].error = _ccv_bbf_error_rate(&gene[i].feature, posdata, posnum, negdata, negnum, size, pw, nw); + timer = _ccv_bbf_time_measure() - timer; + _ccv_bbf_best_qsort(gene, pnum, 0); + int min_id = 0; + double min_err = gene[0].error; + for (i = 0; i < pnum; i++) + if (gene[i].nk + gene[i].pk >= point_min) + { + min_id = i; + min_err = gene[i].error; + break; + } + PRINT(CCV_CLI_INFO, "local best bbf feature with error %f\n|-size: %d\n|-positive point: ", min_err, gene[min_id].feature.size); + for (i = 0; i < gene[min_id].feature.size; i++) + PRINT(CCV_CLI_INFO, "(%d %d %d), ", gene[min_id].feature.px[i], gene[min_id].feature.py[i], gene[min_id].feature.pz[i]); + PRINT(CCV_CLI_INFO, "\n|-negative point: "); + for (i = 0; i < gene[min_id].feature.size; i++) + PRINT(CCV_CLI_INFO, "(%d %d %d), ", gene[min_id].feature.nx[i], gene[min_id].feature.ny[i], gene[min_id].feature.nz[i]); + PRINT(CCV_CLI_INFO, "\nthe computation takes %d ms\n", timer / 1000); + return gene[min_id]; +} + +static ccv_bbf_feature_t _ccv_bbf_convex_optimize(unsigned char **posdata, int posnum, unsigned char **negdata, int negnum, ccv_bbf_feature_t *best_feature, ccv_size_t size, double *pw, double *nw) +{ + ccv_bbf_gene_t best_gene; + /* seed (random method) */ + gsl_rng_env_setup(); + gsl_rng *rng = gsl_rng_alloc(gsl_rng_default); + union { + unsigned long int li; + double db; + } dbli; + dbli.db = pw[0] + nw[0]; + gsl_rng_set(rng, dbli.li); + int i, j, k, q, p, g, t; + int rows[] = {size.height, size.height >> 1, size.height >> 2}; + int cols[] = {size.width, size.width >> 1, size.width >> 2}; + int pnum = rows[0] * cols[0] + rows[1] * cols[1] + rows[2] * cols[2]; + ccv_bbf_gene_t *gene = (ccv_bbf_gene_t *)ccmalloc((pnum * (CCV_BBF_POINT_MAX * 2 + 1) * 2 + CCV_BBF_POINT_MAX * 2 + 1) * sizeof(ccv_bbf_gene_t)); + if (best_feature == 0) + { + /* bootstrapping the best feature, start from two pixels, one for positive, one for negative + * the bootstrapping process go like this: first, it will assign a random pixel as positive + * and enumerate every possible pixel as negative, and pick the best one. Then, enumerate every + * possible pixel as positive, and pick the best one, until it converges */ + memset(&best_gene, 0, sizeof(ccv_bbf_gene_t)); + for (i = 0; i < CCV_BBF_POINT_MAX; i++) + best_gene.feature.pz[i] = best_gene.feature.nz[i] = -1; + best_gene.pk = 1; + best_gene.nk = 0; + best_gene.feature.size = 1; + best_gene.feature.pz[0] = gsl_rng_uniform_int(rng, 3); + best_gene.feature.px[0] = gsl_rng_uniform_int(rng, cols[best_gene.feature.pz[0]]); + best_gene.feature.py[0] = gsl_rng_uniform_int(rng, rows[best_gene.feature.pz[0]]); + for (t = 0;; ++t) + { + g = 0; + if (t % 2 == 0) + { + for (i = 0; i < 3; i++) + for (j = 0; j < cols[i]; j++) + for (k = 0; k < rows[i]; k++) + if (i != best_gene.feature.pz[0] || j != best_gene.feature.px[0] || k != best_gene.feature.py[0]) + { + gene[g] = best_gene; + gene[g].pk = gene[g].nk = 1; + gene[g].feature.nz[0] = i; + gene[g].feature.nx[0] = j; + gene[g].feature.ny[0] = k; + g++; + } + } + else + { + for (i = 0; i < 3; i++) + for (j = 0; j < cols[i]; j++) + for (k = 0; k < rows[i]; k++) + if (i != best_gene.feature.nz[0] || j != best_gene.feature.nx[0] || k != best_gene.feature.ny[0]) + { + gene[g] = best_gene; + gene[g].pk = gene[g].nk = 1; + gene[g].feature.pz[0] = i; + gene[g].feature.px[0] = j; + gene[g].feature.py[0] = k; + g++; + } + } + PRINT(CCV_CLI_INFO, "bootstrapping round : %d\n", t); + ccv_bbf_gene_t local_gene = _ccv_bbf_best_gene(gene, g, 2, posdata, posnum, negdata, negnum, size, pw, nw); + if (local_gene.error >= best_gene.error - 1e-10) + break; + best_gene = local_gene; + } + } + else + { + best_gene.feature = *best_feature; + best_gene.pk = best_gene.nk = best_gene.feature.size; + for (i = 0; i < CCV_BBF_POINT_MAX; i++) + if (best_feature->pz[i] == -1) + { + best_gene.pk = i; + break; + } + for (i = 0; i < CCV_BBF_POINT_MAX; i++) + if (best_feature->nz[i] == -1) + { + best_gene.nk = i; + break; + } + } + /* after bootstrapping, the float search technique will do the following permutations: + * a). add a new point to positive or negative + * b). remove a point from positive or negative + * c). move an existing point in positive or negative to another position + * the three rules applied exhaustively, no heuristic used. */ + for (t = 0;; ++t) + { + g = 0; + for (i = 0; i < 3; i++) + for (j = 0; j < cols[i]; j++) + for (k = 0; k < rows[i]; k++) + if (!_ccv_bbf_exist_gene_feature(&best_gene, j, k, i)) + { + /* add positive point */ + if (best_gene.pk < CCV_BBF_POINT_MAX - 1) + { + gene[g] = best_gene; + gene[g].feature.pz[gene[g].pk] = i; + gene[g].feature.px[gene[g].pk] = j; + gene[g].feature.py[gene[g].pk] = k; + gene[g].pk++; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + /* add negative point */ + if (best_gene.nk < CCV_BBF_POINT_MAX - 1) + { + gene[g] = best_gene; + gene[g].feature.nz[gene[g].nk] = i; + gene[g].feature.nx[gene[g].nk] = j; + gene[g].feature.ny[gene[g].nk] = k; + gene[g].nk++; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + /* refine positive point */ + for (q = 0; q < best_gene.pk; q++) + { + gene[g] = best_gene; + gene[g].feature.pz[q] = i; + gene[g].feature.px[q] = j; + gene[g].feature.py[q] = k; + g++; + } + /* add positive point, remove negative point */ + if (best_gene.pk < CCV_BBF_POINT_MAX - 1 && best_gene.nk > 1) + { + for (q = 0; q < best_gene.nk; q++) + { + gene[g] = best_gene; + gene[g].feature.pz[gene[g].pk] = i; + gene[g].feature.px[gene[g].pk] = j; + gene[g].feature.py[gene[g].pk] = k; + gene[g].pk++; + for (p = q; p < best_gene.nk - 1; p++) + { + gene[g].feature.nz[p] = gene[g].feature.nz[p + 1]; + gene[g].feature.nx[p] = gene[g].feature.nx[p + 1]; + gene[g].feature.ny[p] = gene[g].feature.ny[p + 1]; + } + gene[g].feature.nz[gene[g].nk - 1] = -1; + gene[g].nk--; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + } + /* refine negative point */ + for (q = 0; q < best_gene.nk; q++) + { + gene[g] = best_gene; + gene[g].feature.nz[q] = i; + gene[g].feature.nx[q] = j; + gene[g].feature.ny[q] = k; + g++; + } + /* add negative point, remove positive point */ + if (best_gene.pk > 1 && best_gene.nk < CCV_BBF_POINT_MAX - 1) + { + for (q = 0; q < best_gene.pk; q++) + { + gene[g] = best_gene; + gene[g].feature.nz[gene[g].nk] = i; + gene[g].feature.nx[gene[g].nk] = j; + gene[g].feature.ny[gene[g].nk] = k; + gene[g].nk++; + for (p = q; p < best_gene.pk - 1; p++) + { + gene[g].feature.pz[p] = gene[g].feature.pz[p + 1]; + gene[g].feature.px[p] = gene[g].feature.px[p + 1]; + gene[g].feature.py[p] = gene[g].feature.py[p + 1]; + } + gene[g].feature.pz[gene[g].pk - 1] = -1; + gene[g].pk--; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + } + } + if (best_gene.pk > 1) + for (q = 0; q < best_gene.pk; q++) + { + gene[g] = best_gene; + for (i = q; i < best_gene.pk - 1; i++) + { + gene[g].feature.pz[i] = gene[g].feature.pz[i + 1]; + gene[g].feature.px[i] = gene[g].feature.px[i + 1]; + gene[g].feature.py[i] = gene[g].feature.py[i + 1]; + } + gene[g].feature.pz[gene[g].pk - 1] = -1; + gene[g].pk--; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + if (best_gene.nk > 1) + for (q = 0; q < best_gene.nk; q++) + { + gene[g] = best_gene; + for (i = q; i < best_gene.nk - 1; i++) + { + gene[g].feature.nz[i] = gene[g].feature.nz[i + 1]; + gene[g].feature.nx[i] = gene[g].feature.nx[i + 1]; + gene[g].feature.ny[i] = gene[g].feature.ny[i + 1]; + } + gene[g].feature.nz[gene[g].nk - 1] = -1; + gene[g].nk--; + gene[g].feature.size = ccv_max(gene[g].pk, gene[g].nk); + g++; + } + gene[g] = best_gene; + g++; + PRINT(CCV_CLI_INFO, "float search round : %d\n", t); + ccv_bbf_gene_t local_gene = _ccv_bbf_best_gene(gene, g, CCV_BBF_POINT_MIN, posdata, posnum, negdata, negnum, size, pw, nw); + if (local_gene.error >= best_gene.error - 1e-10) + break; + best_gene = local_gene; + } + ccfree(gene); + gsl_rng_free(rng); + return best_gene.feature; +} + +static int _ccv_write_bbf_stage_classifier(const char *file, ccv_bbf_stage_classifier_t *classifier) +{ + FILE *w = fopen(file, "wb"); + if (w == 0) + return -1; + fprintf(w, "%d\n", classifier->count); + union { + float fl; + int i; + } fli; + fli.fl = classifier->threshold; + fprintf(w, "%d\n", fli.i); + int i, j; + for (i = 0; i < classifier->count; i++) + { + fprintf(w, "%d\n", classifier->feature[i].size); + for (j = 0; j < classifier->feature[i].size; j++) + { + fprintf(w, "%d %d %d\n", classifier->feature[i].px[j], classifier->feature[i].py[j], classifier->feature[i].pz[j]); + fprintf(w, "%d %d %d\n", classifier->feature[i].nx[j], classifier->feature[i].ny[j], classifier->feature[i].nz[j]); + } + union { + float fl; + int i; + } flia, flib; + flia.fl = classifier->alpha[i * 2]; + flib.fl = classifier->alpha[i * 2 + 1]; + fprintf(w, "%d %d\n", flia.i, flib.i); + } + fclose(w); + return 0; +} + +static int _ccv_read_background_data(const char *file, unsigned char **negdata, int *negnum, ccv_size_t size) +{ + int stat = 0; + FILE *r = fopen(file, "rb"); + if (r == 0) + return -1; + stat |= fread(negnum, sizeof(int), 1, r); + int i; + int isizs012 = _ccv_width_padding(size.width) * size.height + + _ccv_width_padding(size.width >> 1) * (size.height >> 1) + + _ccv_width_padding(size.width >> 2) * (size.height >> 2); + for (i = 0; i < *negnum; i++) + { + negdata[i] = (unsigned char *)ccmalloc(isizs012); + stat |= fread(negdata[i], 1, isizs012, r); + } + fclose(r); + return 0; +} + +static int _ccv_write_background_data(const char *file, unsigned char **negdata, int negnum, ccv_size_t size) +{ + FILE *w = fopen(file, "w"); + if (w == 0) + return -1; + fwrite(&negnum, sizeof(int), 1, w); + int i; + int isizs012 = _ccv_width_padding(size.width) * size.height + + _ccv_width_padding(size.width >> 1) * (size.height >> 1) + + _ccv_width_padding(size.width >> 2) * (size.height >> 2); + for (i = 0; i < negnum; i++) + fwrite(negdata[i], 1, isizs012, w); + fclose(w); + return 0; +} + +static int _ccv_resume_bbf_cascade_training_state(const char *file, int *i, int *k, int *bg, double *pw, double *nw, int posnum, int negnum) +{ + int stat = 0; + FILE *r = fopen(file, "r"); + if (r == 0) + return -1; + stat |= fscanf(r, "%d %d %d", i, k, bg); + int j; + union { + double db; + int i[2]; + } dbi; + for (j = 0; j < posnum; j++) + { + stat |= fscanf(r, "%d %d", &dbi.i[0], &dbi.i[1]); + pw[j] = dbi.db; + } + for (j = 0; j < negnum; j++) + { + stat |= fscanf(r, "%d %d", &dbi.i[0], &dbi.i[1]); + nw[j] = dbi.db; + } + fclose(r); + return 0; +} + +static int _ccv_save_bbf_cacade_training_state(const char *file, int i, int k, int bg, double *pw, double *nw, int posnum, int negnum) +{ + FILE *w = fopen(file, "w"); + if (w == 0) + return -1; + fprintf(w, "%d %d %d\n", i, k, bg); + int j; + union { + double db; + int i[2]; + } dbi; + for (j = 0; j < posnum; ++j) + { + dbi.db = pw[j]; + fprintf(w, "%d %d ", dbi.i[0], dbi.i[1]); + } + fprintf(w, "\n"); + for (j = 0; j < negnum; ++j) + { + dbi.db = nw[j]; + fprintf(w, "%d %d ", dbi.i[0], dbi.i[1]); + } + fprintf(w, "\n"); + fclose(w); + return 0; +} + +void ccv_bbf_classifier_cascade_new(ccv_dense_matrix_t **posimg, int posnum, char **bgfiles, int bgnum, int negnum, ccv_size_t size, const char *dir, ccv_bbf_new_param_t params) +{ + int i, j, k; + /* allocate memory for usage */ + ccv_bbf_classifier_cascade_t *cascade = (ccv_bbf_classifier_cascade_t *)ccmalloc(sizeof(ccv_bbf_classifier_cascade_t)); + cascade->count = 0; + cascade->size = size; + cascade->stage_classifier = (ccv_bbf_stage_classifier_t *)ccmalloc(sizeof(ccv_bbf_stage_classifier_t)); + unsigned char **posdata = (unsigned char **)ccmalloc(posnum * sizeof(unsigned char *)); + unsigned char **negdata = (unsigned char **)ccmalloc(negnum * sizeof(unsigned char *)); + double *pw = (double *)ccmalloc(posnum * sizeof(double)); + double *nw = (double *)ccmalloc(negnum * sizeof(double)); + float *peval = (float *)ccmalloc(posnum * sizeof(float)); + float *neval = (float *)ccmalloc(negnum * sizeof(float)); + double inv_balance_k = 1. / params.balance_k; + /* balance factor k, and weighted with 0.01 */ + params.balance_k *= 0.01; + inv_balance_k *= 0.01; + + int steps[] = {_ccv_width_padding(cascade->size.width), + _ccv_width_padding(cascade->size.width >> 1), + _ccv_width_padding(cascade->size.width >> 2)}; + int isizs0 = steps[0] * cascade->size.height; + int isizs01 = isizs0 + steps[1] * (cascade->size.height >> 1); + + i = 0; + k = 0; + int bg = 0; + int cacheK = 10; + /* state resume code */ + char buf[1024]; + sprintf(buf, "%s/stat.txt", dir); + _ccv_resume_bbf_cascade_training_state(buf, &i, &k, &bg, pw, nw, posnum, negnum); + if (i > 0) + { + cascade->count = i; + ccfree(cascade->stage_classifier); + cascade->stage_classifier = (ccv_bbf_stage_classifier_t *)ccmalloc(i * sizeof(ccv_bbf_stage_classifier_t)); + for (j = 0; j < i; j++) + { + sprintf(buf, "%s/stage-%d.txt", dir, j); + _ccv_read_bbf_stage_classifier(buf, &cascade->stage_classifier[j]); + } + } + if (k > 0) + cacheK = k; + int rpos, rneg = 0; + if (bg) + { + sprintf(buf, "%s/negs.txt", dir); + _ccv_read_background_data(buf, negdata, &rneg, cascade->size); + } + + for (; i < params.layer; i++) + { + if (!bg) + { + rneg = _ccv_prepare_background_data(cascade, bgfiles, bgnum, negdata, negnum); + /* save state of background data */ + sprintf(buf, "%s/negs.txt", dir); + _ccv_write_background_data(buf, negdata, rneg, cascade->size); + bg = 1; + } + double totalw; + /* save state of cascade : level, weight etc. */ + sprintf(buf, "%s/stat.txt", dir); + _ccv_save_bbf_cacade_training_state(buf, i, k, bg, pw, nw, posnum, negnum); + ccv_bbf_stage_classifier_t classifier; + if (k > 0) + { + /* resume state of classifier */ + sprintf(buf, "%s/stage-%d.txt", dir, i); + _ccv_read_bbf_stage_classifier(buf, &classifier); + } + else + { + /* initialize classifier */ + for (j = 0; j < posnum; j++) + pw[j] = params.balance_k; + for (j = 0; j < rneg; j++) + nw[j] = inv_balance_k; + classifier.count = k; + classifier.threshold = 0; + classifier.feature = (ccv_bbf_feature_t *)ccmalloc(cacheK * sizeof(ccv_bbf_feature_t)); + classifier.alpha = (float *)ccmalloc(cacheK * 2 * sizeof(float)); + } + _ccv_prepare_positive_data(posimg, posdata, cascade->size, posnum); + rpos = _ccv_prune_positive_data(cascade, posdata, posnum, cascade->size); + PRINT(CCV_CLI_INFO, "%d postivie data and %d negative data in training\n", rpos, rneg); + /* reweight to 1.00 */ + totalw = 0; + for (j = 0; j < rpos; j++) + totalw += pw[j]; + for (j = 0; j < rneg; j++) + totalw += nw[j]; + for (j = 0; j < rpos; j++) + pw[j] = pw[j] / totalw; + for (j = 0; j < rneg; j++) + nw[j] = nw[j] / totalw; + for (;; k++) + { + /* get overall true-positive, false-positive rate and threshold */ + double tp = 0, fp = 0, etp = 0, efp = 0; + _ccv_bbf_eval_data(&classifier, posdata, rpos, negdata, rneg, cascade->size, peval, neval); + _ccv_sort_32f(peval, rpos, 0); + classifier.threshold = peval[(int)((1. - params.pos_crit) * rpos)] - 1e-6; + for (j = 0; j < rpos; j++) + { + if (peval[j] >= 0) + ++tp; + if (peval[j] >= classifier.threshold) + ++etp; + } + tp /= rpos; + etp /= rpos; + for (j = 0; j < rneg; j++) + { + if (neval[j] >= 0) + ++fp; + if (neval[j] >= classifier.threshold) + ++efp; + } + fp /= rneg; + efp /= rneg; + PRINT(CCV_CLI_INFO, "stage classifier real TP rate : %f, FP rate : %f\n", tp, fp); + PRINT(CCV_CLI_INFO, "stage classifier TP rate : %f, FP rate : %f at threshold : %f\n", etp, efp, classifier.threshold); + if (k > 0) + { + /* save classifier state */ + sprintf(buf, "%s/stage-%d.txt", dir, i); + _ccv_write_bbf_stage_classifier(buf, &classifier); + sprintf(buf, "%s/stat.txt", dir); + _ccv_save_bbf_cacade_training_state(buf, i, k, bg, pw, nw, posnum, negnum); + } + if (etp > params.pos_crit && efp < params.neg_crit) + break; + /* TODO: more post-process is needed in here */ + + /* select the best feature in current distribution through genetic algorithm optimization */ + ccv_bbf_feature_t best; + if (params.optimizer == CCV_BBF_GENETIC_OPT) + { + best = _ccv_bbf_genetic_optimize(posdata, rpos, negdata, rneg, params.feature_number, cascade->size, pw, nw); + } + else if (params.optimizer == CCV_BBF_FLOAT_OPT) + { + best = _ccv_bbf_convex_optimize(posdata, rpos, negdata, rneg, 0, cascade->size, pw, nw); + } + else + { + best = _ccv_bbf_genetic_optimize(posdata, rpos, negdata, rneg, params.feature_number, cascade->size, pw, nw); + best = _ccv_bbf_convex_optimize(posdata, rpos, negdata, rneg, &best, cascade->size, pw, nw); + } + double err = _ccv_bbf_error_rate(&best, posdata, rpos, negdata, rneg, cascade->size, pw, nw); + double rw = (1 - err) / err; + totalw = 0; + /* reweight */ + for (j = 0; j < rpos; j++) + { + unsigned char *u8[] = {posdata[j], posdata[j] + isizs0, posdata[j] + isizs01}; + if (!_ccv_run_bbf_feature(&best, steps, u8)) + pw[j] *= rw; + pw[j] *= params.balance_k; + totalw += pw[j]; + } + for (j = 0; j < rneg; j++) + { + unsigned char *u8[] = {negdata[j], negdata[j] + isizs0, negdata[j] + isizs01}; + if (_ccv_run_bbf_feature(&best, steps, u8)) + nw[j] *= rw; + nw[j] *= inv_balance_k; + totalw += nw[j]; + } + for (j = 0; j < rpos; j++) + pw[j] = pw[j] / totalw; + for (j = 0; j < rneg; j++) + nw[j] = nw[j] / totalw; + double c = log(rw); + PRINT(CCV_CLI_INFO, "coefficient of feature %d: %f\n", k + 1, c); + classifier.count = k + 1; + /* resizing classifier */ + if (k >= cacheK) + { + ccv_bbf_feature_t *feature = (ccv_bbf_feature_t *)ccmalloc(cacheK * 2 * sizeof(ccv_bbf_feature_t)); + memcpy(feature, classifier.feature, cacheK * sizeof(ccv_bbf_feature_t)); + ccfree(classifier.feature); + float *alpha = (float *)ccmalloc(cacheK * 4 * sizeof(float)); + memcpy(alpha, classifier.alpha, cacheK * 2 * sizeof(float)); + ccfree(classifier.alpha); + classifier.feature = feature; + classifier.alpha = alpha; + cacheK *= 2; + } + /* setup new feature */ + classifier.feature[k] = best; + classifier.alpha[k * 2] = -c; + classifier.alpha[k * 2 + 1] = c; + } + cascade->count = i + 1; + ccv_bbf_stage_classifier_t *stage_classifier = (ccv_bbf_stage_classifier_t *)ccmalloc(cascade->count * sizeof(ccv_bbf_stage_classifier_t)); + memcpy(stage_classifier, cascade->stage_classifier, i * sizeof(ccv_bbf_stage_classifier_t)); + ccfree(cascade->stage_classifier); + stage_classifier[i] = classifier; + cascade->stage_classifier = stage_classifier; + k = 0; + bg = 0; + for (j = 0; j < rpos; j++) + ccfree(posdata[j]); + for (j = 0; j < rneg; j++) + ccfree(negdata[j]); + } + + ccfree(neval); + ccfree(peval); + ccfree(nw); + ccfree(pw); + ccfree(negdata); + ccfree(posdata); + ccfree(cascade); +} +#else +void ccv_bbf_classifier_cascade_new(ccv_dense_matrix_t **posimg, int posnum, char **bgfiles, int bgnum, int negnum, ccv_size_t size, const char *dir, ccv_bbf_new_param_t params) +{ + fprintf(stderr, " ccv_bbf_classifier_cascade_new requires libgsl support, please compile ccv with libgsl.\n"); +} +#endif + +static int _ccv_is_equal(const void *_r1, const void *_r2, void *data) +{ + const ccv_comp_t *r1 = (const ccv_comp_t *)_r1; + const ccv_comp_t *r2 = (const ccv_comp_t *)_r2; + int distance = (int)(r1->rect.width * 0.25 + 0.5); + + return r2->rect.x <= r1->rect.x + distance && + r2->rect.x >= r1->rect.x - distance && + r2->rect.y <= r1->rect.y + distance && + r2->rect.y >= r1->rect.y - distance && + r2->rect.width <= (int)(r1->rect.width * 1.5 + 0.5) && + (int)(r2->rect.width * 1.5 + 0.5) >= r1->rect.width; +} + +static int _ccv_is_equal_same_class(const void *_r1, const void *_r2, void *data) +{ + const ccv_comp_t *r1 = (const ccv_comp_t *)_r1; + const ccv_comp_t *r2 = (const ccv_comp_t *)_r2; + int distance = (int)(r1->rect.width * 0.25 + 0.5); + + return r2->classification.id == r1->classification.id && + r2->rect.x <= r1->rect.x + distance && + r2->rect.x >= r1->rect.x - distance && + r2->rect.y <= r1->rect.y + distance && + r2->rect.y >= r1->rect.y - distance && + r2->rect.width <= (int)(r1->rect.width * 1.5 + 0.5) && + (int)(r2->rect.width * 1.5 + 0.5) >= r1->rect.width; +} + +ccv_array_t *ccv_bbf_detect_objects(ccv_dense_matrix_t *a, ccv_bbf_classifier_cascade_t **_cascade, int count, ccv_bbf_param_t params) +{ + int hr = a->rows / params.size.height; + int wr = a->cols / params.size.width; + double scale = pow(2., 1. / (params.interval + 1.)); + int next = params.interval + 1; + int scale_upto = (int)(log((double)ccv_min(hr, wr)) / log(scale)); + ccv_dense_matrix_t **pyr = (ccv_dense_matrix_t **)alloca((scale_upto + next * 2) * 4 * sizeof(ccv_dense_matrix_t *)); + memset(pyr, 0, (scale_upto + next * 2) * 4 * sizeof(ccv_dense_matrix_t *)); + if (params.size.height != _cascade[0]->size.height || params.size.width != _cascade[0]->size.width) + ccv_resample(a, &pyr[0], 0, a->rows * _cascade[0]->size.height / params.size.height, a->cols * _cascade[0]->size.width / params.size.width, CCV_INTER_AREA); + else + pyr[0] = a; + int i, j, k, t, x, y, q; + for (i = 1; i < ccv_min(params.interval + 1, scale_upto + next * 2); i++) + ccv_resample(pyr[0], &pyr[i * 4], 0, (int)(pyr[0]->rows / pow(scale, i)), (int)(pyr[0]->cols / pow(scale, i)), CCV_INTER_AREA); + for (i = next; i < scale_upto + next * 2; i++) + ccv_sample_down(pyr[i * 4 - next * 4], &pyr[i * 4], 0, 0, 0); + if (params.accurate) + for (i = next * 2; i < scale_upto + next * 2; i++) + { + ccv_sample_down(pyr[i * 4 - next * 4], &pyr[i * 4 + 1], 0, 1, 0); + ccv_sample_down(pyr[i * 4 - next * 4], &pyr[i * 4 + 2], 0, 0, 1); + ccv_sample_down(pyr[i * 4 - next * 4], &pyr[i * 4 + 3], 0, 1, 1); + } + ccv_array_t *idx_seq; + ccv_array_t *seq = ccv_array_new(sizeof(ccv_comp_t), 64, 0); + ccv_array_t *seq2 = ccv_array_new(sizeof(ccv_comp_t), 64, 0); + ccv_array_t *result_seq = ccv_array_new(sizeof(ccv_comp_t), 64, 0); + /* detect in multi scale */ + for (t = 0; t < count; t++) + { + ccv_bbf_classifier_cascade_t *cascade = _cascade[t]; + float scale_x = (float)params.size.width / (float)cascade->size.width; + float scale_y = (float)params.size.height / (float)cascade->size.height; + ccv_array_clear(seq); + for (i = 0; i < scale_upto; i++) + { + int dx[] = {0, 1, 0, 1}; + int dy[] = {0, 0, 1, 1}; + int i_rows = pyr[i * 4 + next * 8]->rows - (cascade->size.height >> 2); + int steps[] = {pyr[i * 4]->step, pyr[i * 4 + next * 4]->step, pyr[i * 4 + next * 8]->step}; + int i_cols = pyr[i * 4 + next * 8]->cols - (cascade->size.width >> 2); + int paddings[] = {pyr[i * 4]->step * 4 - i_cols * 4, + pyr[i * 4 + next * 4]->step * 2 - i_cols * 2, + pyr[i * 4 + next * 8]->step - i_cols}; + for (q = 0; q < (params.accurate ? 4 : 1); q++) + { + unsigned char *u8[] = {pyr[i * 4]->data.u8 + dx[q] * 2 + dy[q] * pyr[i * 4]->step * 2, pyr[i * 4 + next * 4]->data.u8 + dx[q] + dy[q] * pyr[i * 4 + next * 4]->step, pyr[i * 4 + next * 8 + q]->data.u8}; + for (y = 0; y < i_rows; y++) + { + for (x = 0; x < i_cols; x++) + { + float sum; + int flag = 1; + ccv_bbf_stage_classifier_t *classifier = cascade->stage_classifier; + for (j = 0; j < cascade->count; ++j, ++classifier) + { + sum = 0; + float *alpha = classifier->alpha; + ccv_bbf_feature_t *feature = classifier->feature; + for (k = 0; k < classifier->count; ++k, alpha += 2, ++feature) + sum += alpha[_ccv_run_bbf_feature(feature, steps, u8)]; + if (sum < classifier->threshold) + { + flag = 0; + break; + } + } + if (flag) + { + ccv_comp_t comp; + comp.rect = ccv_rect((int)((x * 4 + dx[q] * 2) * scale_x + 0.5), (int)((y * 4 + dy[q] * 2) * scale_y + 0.5), (int)(cascade->size.width * scale_x + 0.5), (int)(cascade->size.height * scale_y + 0.5)); + comp.neighbors = 1; + comp.classification.id = t; + comp.classification.confidence = sum; + ccv_array_push(seq, &comp); + } + u8[0] += 4; + u8[1] += 2; + u8[2] += 1; + } + u8[0] += paddings[0]; + u8[1] += paddings[1]; + u8[2] += paddings[2]; + } + } + scale_x *= scale; + scale_y *= scale; + } + + /* the following code from OpenCV's haar feature implementation */ + if (params.min_neighbors == 0) + { + for (i = 0; i < seq->rnum; i++) + { + ccv_comp_t *comp = (ccv_comp_t *)ccv_array_get(seq, i); + ccv_array_push(result_seq, comp); + } + } + else + { + idx_seq = 0; + ccv_array_clear(seq2); + // group retrieved rectangles in order to filter out noise + int ncomp = ccv_array_group(seq, &idx_seq, _ccv_is_equal_same_class, 0); + ccv_comp_t *comps = (ccv_comp_t *)ccmalloc((ncomp + 1) * sizeof(ccv_comp_t)); + memset(comps, 0, (ncomp + 1) * sizeof(ccv_comp_t)); + + // count number of neighbors + for (i = 0; i < seq->rnum; i++) + { + ccv_comp_t r1 = *(ccv_comp_t *)ccv_array_get(seq, i); + int idx = *(int *)ccv_array_get(idx_seq, i); + + if (comps[idx].neighbors == 0) + comps[idx].classification.confidence = r1.classification.confidence; + + ++comps[idx].neighbors; + + comps[idx].rect.x += r1.rect.x; + comps[idx].rect.y += r1.rect.y; + comps[idx].rect.width += r1.rect.width; + comps[idx].rect.height += r1.rect.height; + comps[idx].classification.id = r1.classification.id; + comps[idx].classification.confidence = ccv_max(comps[idx].classification.confidence, r1.classification.confidence); + } + + // calculate average bounding box + for (i = 0; i < ncomp; i++) + { + int n = comps[i].neighbors; + if (n >= params.min_neighbors) + { + ccv_comp_t comp; + comp.rect.x = (comps[i].rect.x * 2 + n) / (2 * n); + comp.rect.y = (comps[i].rect.y * 2 + n) / (2 * n); + comp.rect.width = (comps[i].rect.width * 2 + n) / (2 * n); + comp.rect.height = (comps[i].rect.height * 2 + n) / (2 * n); + comp.neighbors = comps[i].neighbors; + comp.classification.id = comps[i].classification.id; + comp.classification.confidence = comps[i].classification.confidence; + ccv_array_push(seq2, &comp); + } + } + + // filter out small face rectangles inside large face rectangles + for (i = 0; i < seq2->rnum; i++) + { + ccv_comp_t r1 = *(ccv_comp_t *)ccv_array_get(seq2, i); + int flag = 1; + + for (j = 0; j < seq2->rnum; j++) + { + ccv_comp_t r2 = *(ccv_comp_t *)ccv_array_get(seq2, j); + int distance = (int)(r2.rect.width * 0.25 + 0.5); + + if (i != j && + r1.classification.id == r2.classification.id && + r1.rect.x >= r2.rect.x - distance && + r1.rect.y >= r2.rect.y - distance && + r1.rect.x + r1.rect.width <= r2.rect.x + r2.rect.width + distance && + r1.rect.y + r1.rect.height <= r2.rect.y + r2.rect.height + distance && + (r2.neighbors > ccv_max(3, r1.neighbors) || r1.neighbors < 3)) + { + flag = 0; + break; + } + } + + if (flag) + ccv_array_push(result_seq, &r1); + } + ccv_array_free(idx_seq); + ccfree(comps); + } + } + + ccv_array_free(seq); + ccv_array_free(seq2); + + ccv_array_t *result_seq2; + /* the following code from OpenCV's haar feature implementation */ + if (params.flags & CCV_BBF_NO_NESTED) + { + result_seq2 = ccv_array_new(sizeof(ccv_comp_t), 64, 0); + idx_seq = 0; + // group retrieved rectangles in order to filter out noise + int ncomp = ccv_array_group(result_seq, &idx_seq, _ccv_is_equal, 0); + ccv_comp_t *comps = (ccv_comp_t *)ccmalloc((ncomp + 1) * sizeof(ccv_comp_t)); + memset(comps, 0, (ncomp + 1) * sizeof(ccv_comp_t)); + + // count number of neighbors + for (i = 0; i < result_seq->rnum; i++) + { + ccv_comp_t r1 = *(ccv_comp_t *)ccv_array_get(result_seq, i); + int idx = *(int *)ccv_array_get(idx_seq, i); + + if (comps[idx].neighbors == 0 || comps[idx].classification.confidence < r1.classification.confidence) + { + comps[idx].classification.confidence = r1.classification.confidence; + comps[idx].neighbors = 1; + comps[idx].rect = r1.rect; + comps[idx].classification.id = r1.classification.id; + } + } + + // calculate average bounding box + for (i = 0; i < ncomp; i++) + if (comps[i].neighbors) + ccv_array_push(result_seq2, &comps[i]); + + ccv_array_free(result_seq); + ccfree(comps); + } + else + { + result_seq2 = result_seq; + } + + for (i = 1; i < scale_upto + next * 2; i++) + ccv_matrix_free(pyr[i * 4]); + if (params.accurate) + for (i = next * 2; i < scale_upto + next * 2; i++) + { + ccv_matrix_free(pyr[i * 4 + 1]); + ccv_matrix_free(pyr[i * 4 + 2]); + ccv_matrix_free(pyr[i * 4 + 3]); + } + if (params.size.height != _cascade[0]->size.height || params.size.width != _cascade[0]->size.width) + ccv_matrix_free(pyr[0]); + + return result_seq2; +} + +ccv_bbf_classifier_cascade_t *ccv_bbf_read_classifier_cascade(const char *directory) +{ + char buf[1024]; + sprintf(buf, "%s/cascade.txt", directory); + int s, i; + FILE *r = fopen(buf, "r"); + if (r == 0) + return 0; + ccv_bbf_classifier_cascade_t *cascade = (ccv_bbf_classifier_cascade_t *)ccmalloc(sizeof(ccv_bbf_classifier_cascade_t)); + s = fscanf(r, "%d %d %d", &cascade->count, &cascade->size.width, &cascade->size.height); + assert(s > 0); + cascade->stage_classifier = (ccv_bbf_stage_classifier_t *)ccmalloc(cascade->count * sizeof(ccv_bbf_stage_classifier_t)); + for (i = 0; i < cascade->count; i++) + { + sprintf(buf, "%s/stage-%d.txt", directory, i); + if (_ccv_read_bbf_stage_classifier(buf, &cascade->stage_classifier[i]) < 0) + { + cascade->count = i; + break; + } + } + fclose(r); + return cascade; +} + +ccv_bbf_classifier_cascade_t *ccv_bbf_classifier_cascade_read_binary(char *s) +{ + int i; + ccv_bbf_classifier_cascade_t *cascade = (ccv_bbf_classifier_cascade_t *)ccmalloc(sizeof(ccv_bbf_classifier_cascade_t)); + memcpy(&cascade->count, s, sizeof(cascade->count)); + s += sizeof(cascade->count); + memcpy(&cascade->size.width, s, sizeof(cascade->size.width)); + s += sizeof(cascade->size.width); + memcpy(&cascade->size.height, s, sizeof(cascade->size.height)); + s += sizeof(cascade->size.height); + ccv_bbf_stage_classifier_t *classifier = cascade->stage_classifier = (ccv_bbf_stage_classifier_t *)ccmalloc(cascade->count * sizeof(ccv_bbf_stage_classifier_t)); + for (i = 0; i < cascade->count; i++, classifier++) + { + memcpy(&classifier->count, s, sizeof(classifier->count)); + s += sizeof(classifier->count); + memcpy(&classifier->threshold, s, sizeof(classifier->threshold)); + s += sizeof(classifier->threshold); + classifier->feature = (ccv_bbf_feature_t *)ccmalloc(classifier->count * sizeof(ccv_bbf_feature_t)); + classifier->alpha = (float *)ccmalloc(classifier->count * 2 * sizeof(float)); + memcpy(classifier->feature, s, classifier->count * sizeof(ccv_bbf_feature_t)); + s += classifier->count * sizeof(ccv_bbf_feature_t); + memcpy(classifier->alpha, s, classifier->count * 2 * sizeof(float)); + s += classifier->count * 2 * sizeof(float); + } + return cascade; +} + +int ccv_bbf_classifier_cascade_write_binary(ccv_bbf_classifier_cascade_t *cascade, char *s, int slen) +{ + int i; + int len = sizeof(cascade->count) + sizeof(cascade->size.width) + sizeof(cascade->size.height); + ccv_bbf_stage_classifier_t *classifier = cascade->stage_classifier; + for (i = 0; i < cascade->count; i++, classifier++) + len += sizeof(classifier->count) + sizeof(classifier->threshold) + classifier->count * sizeof(ccv_bbf_feature_t) + classifier->count * 2 * sizeof(float); + if (slen >= len) + { + memcpy(s, &cascade->count, sizeof(cascade->count)); + s += sizeof(cascade->count); + memcpy(s, &cascade->size.width, sizeof(cascade->size.width)); + s += sizeof(cascade->size.width); + memcpy(s, &cascade->size.height, sizeof(cascade->size.height)); + s += sizeof(cascade->size.height); + classifier = cascade->stage_classifier; + for (i = 0; i < cascade->count; i++, classifier++) + { + memcpy(s, &classifier->count, sizeof(classifier->count)); + s += sizeof(classifier->count); + memcpy(s, &classifier->threshold, sizeof(classifier->threshold)); + s += sizeof(classifier->threshold); + memcpy(s, classifier->feature, classifier->count * sizeof(ccv_bbf_feature_t)); + s += classifier->count * sizeof(ccv_bbf_feature_t); + memcpy(s, classifier->alpha, classifier->count * 2 * sizeof(float)); + s += classifier->count * 2 * sizeof(float); + } + } + return len; +} + +void ccv_bbf_classifier_cascade_free(ccv_bbf_classifier_cascade_t *cascade) +{ + int i; + for (i = 0; i < cascade->count; ++i) + { + ccfree(cascade->stage_classifier[i].feature); + ccfree(cascade->stage_classifier[i].alpha); + } + ccfree(cascade->stage_classifier); + ccfree(cascade); +} \ No newline at end of file diff --git a/test/source.cs b/test/source.cs new file mode 100644 index 0000000..b2aad3b --- /dev/null +++ b/test/source.cs @@ -0,0 +1,259 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.IO.Compression; +using System.Runtime.InteropServices; +using System.Windows.Forms; +using Microsoft.Win32; +using Shadowsocks.Controller; + +namespace Shadowsocks.Util +{ + public struct BandwidthScaleInfo + { + public float value; + public string unitName; + public long unit; + + public BandwidthScaleInfo(float value, string unitName, long unit) + { + this.value = value; + this.unitName = unitName; + this.unit = unit; + } + } + + public static class Utils + { + private static string _tempPath = null; + + // return path to store temporary files + public static string GetTempPath() + { + if (_tempPath == null) + { + try + { + Directory.CreateDirectory(Path.Combine(Application.StartupPath, "ss_win_temp")); + // don't use "/", it will fail when we call explorer /select xxx/ss_win_temp\xxx.log + _tempPath = Path.Combine(Application.StartupPath, "ss_win_temp"); + } + catch (Exception e) + { + Logging.Error(e); + throw; + } + } + return _tempPath; + } + + // return a full path with filename combined which pointed to the temporary directory + public static string GetTempPath(string filename) + { + return Path.Combine(GetTempPath(), filename); + } + + public static void ReleaseMemory(bool removePages) + { + // release any unused pages + // making the numbers look good in task manager + // this is totally nonsense in programming + // but good for those users who care + // making them happier with their everyday life + // which is part of user experience + GC.Collect(GC.MaxGeneration); + GC.WaitForPendingFinalizers(); + if (removePages) + { + // as some users have pointed out + // removing pages from working set will cause some IO + // which lowered user experience for another group of users + // + // so we do 2 more things here to satisfy them: + // 1. only remove pages once when configuration is changed + // 2. add more comments here to tell users that calling + // this function will not be more frequent than + // IM apps writing chat logs, or web browsers writing cache files + // if they're so concerned about their disk, they should + // uninstall all IM apps and web browsers + // + // please open an issue if you're worried about anything else in your computer + // no matter it's GPU performance, monitor contrast, audio fidelity + // or anything else in the task manager + // we'll do as much as we can to help you + // + // just kidding + SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, + (UIntPtr)0xFFFFFFFF, + (UIntPtr)0xFFFFFFFF); + } + } + + public static string UnGzip(byte[] buf) + { + byte[] buffer = new byte[1024]; + int n; + using (MemoryStream sb = new MemoryStream()) + { + using (GZipStream input = new GZipStream(new MemoryStream(buf), + CompressionMode.Decompress, + false)) + { + while ((n = input.Read(buffer, 0, buffer.Length)) > 0) + { + sb.Write(buffer, 0, n); + } + } + return System.Text.Encoding.UTF8.GetString(sb.ToArray()); + } + } + + public static string FormatBandwidth(long n) + { + var result = GetBandwidthScale(n); + return $"{result.value:0.##}{result.unitName}"; + } + + public static string FormatBytes(long bytes) + { + const long K = 1024L; + const long M = K * 1024L; + const long G = M * 1024L; + const long T = G * 1024L; + const long P = T * 1024L; + const long E = P * 1024L; + + if (bytes >= P * 990) + return (bytes / (double)E).ToString("F5") + "EiB"; + if (bytes >= T * 990) + return (bytes / (double)P).ToString("F5") + "PiB"; + if (bytes >= G * 990) + return (bytes / (double)T).ToString("F5") + "TiB"; + if (bytes >= M * 990) + { + return (bytes / (double)G).ToString("F4") + "GiB"; + } + if (bytes >= M * 100) + { + return (bytes / (double)M).ToString("F1") + "MiB"; + } + if (bytes >= M * 10) + { + return (bytes / (double)M).ToString("F2") + "MiB"; + } + if (bytes >= K * 990) + { + return (bytes / (double)M).ToString("F3") + "MiB"; + } + if (bytes > K * 2) + { + return (bytes / (double)K).ToString("F1") + "KiB"; + } + return bytes.ToString() + "B"; + } + + /// + /// Return scaled bandwidth + /// + /// Raw bandwidth + /// + /// The BandwidthScaleInfo struct + /// + public static BandwidthScaleInfo GetBandwidthScale(long n) + { + long scale = 1; + float f = n; + string unit = "B"; + if (f > 1024) + { + f = f / 1024; + scale <<= 10; + unit = "KiB"; + } + if (f > 1024) + { + f = f / 1024; + scale <<= 10; + unit = "MiB"; + } + if (f > 1024) + { + f = f / 1024; + scale <<= 10; + unit = "GiB"; + } + if (f > 1024) + { + f = f / 1024; + scale <<= 10; + unit = "TiB"; + } + return new BandwidthScaleInfo(f, unit, scale); + } + + public static RegistryKey OpenRegKey(string name, bool writable, RegistryHive hive = RegistryHive.CurrentUser) + { + // we are building x86 binary for both x86 and x64, which will + // cause problem when opening registry key + // detect operating system instead of CPU + if (name.IsNullOrEmpty()) throw new ArgumentException(nameof(name)); + try + { + RegistryKey userKey = RegistryKey.OpenBaseKey(hive, + Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32) + .OpenSubKey(name, writable); + return userKey; + } + catch (ArgumentException ae) + { + MessageBox.Show("OpenRegKey: " + ae.ToString()); + return null; + } + catch (Exception e) + { + Logging.LogUsefulException(e); + return null; + } + } + + public static bool IsWinVistaOrHigher() + { + return Environment.OSVersion.Version.Major > 5; + } + + [DllImport("kernel32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + private static extern bool SetProcessWorkingSetSize(IntPtr process, + UIntPtr minimumWorkingSetSize, UIntPtr maximumWorkingSetSize); + + + // See: https://msdn.microsoft.com/en-us/library/hh925568(v=vs.110).aspx + public static bool IsSupportedRuntimeVersion() + { + /* + * +-----------------------------------------------------------------+----------------------------+ + * | Version | Value of the Release DWORD | + * +-----------------------------------------------------------------+----------------------------+ + * | .NET Framework 4.6.2 installed on Windows 10 Anniversary Update | 394802 | + * | .NET Framework 4.6.2 installed on all other Windows OS versions | 394806 | + * +-----------------------------------------------------------------+----------------------------+ + */ + const int minSupportedRelease = 394802; + + const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\"; + using (var ndpKey = OpenRegKey(subkey, false, RegistryHive.LocalMachine)) + { + if (ndpKey?.GetValue("Release") != null) + { + var releaseKey = (int)ndpKey.GetValue("Release"); + + if (releaseKey >= minSupportedRelease) + { + return true; + } + } + } + return false; + } + } +} \ No newline at end of file diff --git a/test/source.css b/test/source.css new file mode 100644 index 0000000..8214563 --- /dev/null +++ b/test/source.css @@ -0,0 +1,61 @@ + +body { + font-family: arial; +} + +h1, p, table { + background-color:#CCC; + border: 1px solid; + color:#39F; + text-align: center; + width: 100%; +} + +.addon-store .pagehead h1 +.addon-store .addon-summary:after { clear: both } + +#addon-store .pagehead .electrocat-small { + bottom: -7px; + position: absolute; + right: 0; +} + +.addon-store .addons-nav a.selected { + border-bottom-color: #d26911; + color: #333; + font-weight: bold; + padding: 0 0 14px; +} + +.addon-store .addon-icon { + background: #fff; + border: 1px solid #ddd; + box-shadow: 0 1px 2px rgba(0,0,0,0.15); + float: left; + height: 80px; + margin-right: 14px; + width: 80px; +} + +.addon-store .developer-callout { + background-color: #f1f1f1; + background-image: -moz-linear-gradient(#fafafa, #f1f1f1); + background-image: -webkit-linear-gradient(#fafafa, #f1f1f1); + background-image: linear-gradient(#fafafa, #f1f1f1); + background-repeat: repeat-x; + border: 1px solid #ddd; + border-bottom: 1px solid #ccc; + border-radius: 3px; + box-shadow: inset 0 1px 0 #fff, 0 1px 5px #f1f1f1; + margin-top: 40px; + text-shadow: 0 1px 0 #fff; +} + +.addon-field-editor .addon-field-list, .addon-field-editor .addon-new-field { + -moz-box-sizing: border-box; + border-radius: 3px; + box-sizing: border-box; + display: inline-block; + text-align: center; + width: 595px; +} \ No newline at end of file diff --git a/test/source.csx b/test/source.csx new file mode 100644 index 0000000..e69de29 diff --git a/test/source.d b/test/source.d new file mode 100644 index 0000000..e69de29 diff --git a/test/source.do b/test/source.do new file mode 100644 index 0000000..e69de29 diff --git a/test/source.dot b/test/source.dot new file mode 100644 index 0000000..e69de29 diff --git a/test/source.erl b/test/source.erl new file mode 100644 index 0000000..e69de29 diff --git a/test/source.ex b/test/source.ex new file mode 100644 index 0000000..e69de29 diff --git a/test/source.go b/test/source.go new file mode 100644 index 0000000..e69de29 diff --git a/test/source.gql b/test/source.gql new file mode 100644 index 0000000..e69de29 diff --git a/test/source.gradle b/test/source.gradle new file mode 100644 index 0000000..e69de29 diff --git a/test/source.graphql b/test/source.graphql new file mode 100644 index 0000000..e69de29 diff --git a/test/source.groovy b/test/source.groovy new file mode 100644 index 0000000..e69de29 diff --git a/test/source.h b/test/source.h new file mode 100644 index 0000000..e69de29 diff --git a/test/source.haml b/test/source.haml new file mode 100644 index 0000000..e69de29 diff --git a/test/source.hs b/test/source.hs new file mode 100644 index 0000000..e69de29 diff --git a/test/source.html b/test/source.html new file mode 100644 index 0000000..e69de29 diff --git a/test/source.html.eex b/test/source.html.eex new file mode 100644 index 0000000..e69de29 diff --git a/test/source.hx b/test/source.hx new file mode 100644 index 0000000..e69de29 diff --git a/test/source.jade b/test/source.jade new file mode 100644 index 0000000..e69de29 diff --git a/test/source.java b/test/source.java new file mode 100644 index 0000000..e69de29 diff --git a/test/source.jl b/test/source.jl new file mode 100644 index 0000000..e69de29 diff --git a/test/source.json b/test/source.json new file mode 100644 index 0000000..e69de29 diff --git a/test/source.jsp b/test/source.jsp new file mode 100644 index 0000000..e69de29 diff --git a/test/source.jsx b/test/source.jsx new file mode 100644 index 0000000..8337712 --- /dev/null +++ b/test/source.jsx @@ -0,0 +1 @@ +// diff --git a/test/source.less b/test/source.less new file mode 100644 index 0000000..e69de29 diff --git a/test/source.liquid b/test/source.liquid new file mode 100644 index 0000000..e69de29 diff --git a/test/source.lisp b/test/source.lisp new file mode 100644 index 0000000..e69de29 diff --git a/test/source.lsl b/test/source.lsl new file mode 100644 index 0000000..e69de29 diff --git a/test/source.lua b/test/source.lua new file mode 100644 index 0000000..e69de29 diff --git a/test/source.m b/test/source.m new file mode 100644 index 0000000..e69de29 diff --git a/test/source.matlab b/test/source.matlab new file mode 100644 index 0000000..e69de29 diff --git a/test/source.mjs b/test/source.mjs new file mode 100644 index 0000000..e69de29 diff --git a/test/source.ml b/test/source.ml new file mode 100644 index 0000000..e69de29 diff --git a/test/source.mustache b/test/source.mustache new file mode 100644 index 0000000..e69de29 diff --git a/test/source.note b/test/source.note new file mode 100644 index 0000000..e69de29 diff --git a/test/source.pcss b/test/source.pcss new file mode 100644 index 0000000..e69de29 diff --git a/test/source.php b/test/source.php new file mode 100644 index 0000000..c20c54a --- /dev/null +++ b/test/source.php @@ -0,0 +1,57 @@ +edible = $edible; + $this->color = $color; + } + + function is_edible() + { + return $this->edible; + } + + function what_color() + { + return $this->color; + } + +} // end of class Vegetable + +// extends the base class +class Spinach extends Vegetable { + + + var $cooked = false; + + function Spinach() + { + $this->Vegetable(true, "green"); + } + + function cook_it() + { + $this->cooked = true; + } + + function is_cooked() + { + return $this->cooked; + } + +} // end of class Spinach + +?> + diff --git a/test/source.pl b/test/source.pl new file mode 100644 index 0000000..e69de29 diff --git a/test/source.postcss b/test/source.postcss new file mode 100644 index 0000000..e69de29 diff --git a/test/source.pp b/test/source.pp new file mode 100644 index 0000000..e69de29 diff --git a/test/source.pug b/test/source.pug new file mode 100644 index 0000000..e69de29 diff --git a/test/source.py b/test/source.py new file mode 100644 index 0000000..e69de29 diff --git a/test/source.r b/test/source.r new file mode 100644 index 0000000..e69de29 diff --git a/test/source.rails b/test/source.rails new file mode 100644 index 0000000..e69de29 diff --git a/test/source.rb b/test/source.rb new file mode 100644 index 0000000..e69de29 diff --git a/test/source.re b/test/source.re new file mode 100644 index 0000000..e69de29 diff --git a/test/source.rei b/test/source.rei new file mode 100644 index 0000000..e69de29 diff --git a/test/source.rs b/test/source.rs new file mode 100644 index 0000000..e69de29 diff --git a/test/source.sass b/test/source.sass new file mode 100644 index 0000000..e69de29 diff --git a/test/source.scala b/test/source.scala new file mode 100644 index 0000000..e69de29 diff --git a/test/source.scss b/test/source.scss new file mode 100644 index 0000000..e69de29 diff --git a/test/source.slim b/test/source.slim new file mode 100644 index 0000000..e69de29 diff --git a/test/source.sql b/test/source.sql new file mode 100644 index 0000000..e69de29 diff --git a/test/source.styl b/test/source.styl new file mode 100644 index 0000000..e69de29 diff --git a/test/source.swift b/test/source.swift new file mode 100644 index 0000000..e69de29 diff --git a/test/source.swig b/test/source.swig new file mode 100644 index 0000000..e69de29 diff --git a/test/source.tcl b/test/source.tcl new file mode 100644 index 0000000..e69de29 diff --git a/test/source.tex b/test/source.tex new file mode 100644 index 0000000..e69de29 diff --git a/test/source.textile b/test/source.textile new file mode 100644 index 0000000..e69de29 diff --git a/test/source.ts b/test/source.ts new file mode 100644 index 0000000..e69de29 diff --git a/test/source.twig b/test/source.twig new file mode 100644 index 0000000..e69de29 diff --git a/test/source.vue b/test/source.vue new file mode 100644 index 0000000..e69de29 diff --git a/test/source.xml b/test/source.xml new file mode 100644 index 0000000..e69de29 diff --git a/test/source.yml b/test/source.yml new file mode 100644 index 0000000..e69de29 diff --git a/test/sublime.sublime-settings b/test/sublime.sublime-settings new file mode 100644 index 0000000..e69de29 diff --git a/test/text.md b/test/text.md new file mode 100644 index 0000000..e69de29 diff --git a/test/text.txt b/test/text.txt new file mode 100644 index 0000000..e69de29 diff --git a/test/windows.bat b/test/windows.bat new file mode 100644 index 0000000..e69de29 diff --git a/test/windows.cmd b/test/windows.cmd new file mode 100644 index 0000000..e69de29 diff --git a/test/yarn.lock b/test/yarn.lock new file mode 100644 index 0000000..e69de29 diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..7c6e2b7 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "lib": [ + "es2015" + ], + "module": "commonjs", + "allowUnreachableCode": false, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitAny": true, + "sourceMap": true, + "target": "es6" + }, + "include": [ + "./**/*", + "./.gulp/**/*" + ], + "exclude": [ + "node_modules", + "out" + ] +} \ No newline at end of file diff --git a/typings/gulp-bump/gulp-bump.d.ts b/typings/gulp-bump/gulp-bump.d.ts new file mode 100644 index 0000000..2ddc86a --- /dev/null +++ b/typings/gulp-bump/gulp-bump.d.ts @@ -0,0 +1,7 @@ +declare module "gulp-bump" { + function gulpBump (... args: any[]): any; + + namespace gulpBump {} + + export = gulpBump; +} \ No newline at end of file diff --git a/typings/gulp-conventional-changelog/gulp-conventional-changelog.d.ts b/typings/gulp-conventional-changelog/gulp-conventional-changelog.d.ts new file mode 100644 index 0000000..5718744 --- /dev/null +++ b/typings/gulp-conventional-changelog/gulp-conventional-changelog.d.ts @@ -0,0 +1,5 @@ +declare module "gulp-conventional-changelog" { + function changelog(... args: any[]): any; + namespace changelog {} + export = changelog; +} \ No newline at end of file diff --git a/typings/gulp-stats/gulp-stats.d.ts b/typings/gulp-stats/gulp-stats.d.ts new file mode 100644 index 0000000..4622b92 --- /dev/null +++ b/typings/gulp-stats/gulp-stats.d.ts @@ -0,0 +1,5 @@ +declare module "gulp-stats" { + function gulpStats(... args: any[]): any; + namespace gulpStats {} + export = gulpStats; +} \ No newline at end of file