From ebb5ad04da16ffa9dc8bff51809672595cad9a83 Mon Sep 17 00:00:00 2001 From: Hubert Nusser Date: Tue, 8 Feb 2022 20:50:24 +0100 Subject: [PATCH] make webui work with non-root context path Signed-off-by: Hubert Nusser --- bundles/org.openhab.ui.basic/gulpfile.js | 7 +++++- .../web-src/tile.png} | Bin bundles/org.openhab.ui/web/.eslintrc.js | 3 ++- .../web/build/webpack.config.js | 15 ++++++++----- .../org.openhab.ui/web/src/components/app.vue | 3 ++- .../web/src/components/auth-mixin.js | 8 +++---- .../src/components/widgets/system/oh-icon.vue | 4 ++-- bundles/org.openhab.ui/web/src/css/icons.css | 6 ++--- .../web/src/{res => images}/icons/128x128.png | Bin .../web/src/{res => images}/icons/144x144.png | Bin .../web/src/{res => images}/icons/152x152.png | Bin .../web/src/{res => images}/icons/192x192.png | Bin .../web/src/{res => images}/icons/256x256.png | Bin .../web/src/{res => images}/icons/512x512.png | Bin .../icons/apple-touch-icon.png | Bin .../web/src/{res => images}/icons/favicon.svg | 0 bundles/org.openhab.ui/web/src/index.html | 21 +++++++++++++----- bundles/org.openhab.ui/web/src/js/app.js | 1 + .../org.openhab.ui/web/src/js/openhab/api.js | 16 ++++++------- .../org.openhab.ui/web/src/js/openhab/auth.js | 6 ++--- .../org.openhab.ui/web/src/js/openhab/sse.js | 4 ++-- .../org.openhab.ui/web/src/js/public-path.js | 2 ++ bundles/org.openhab.ui/web/src/js/routes.js | 2 +- bundles/org.openhab.ui/web/src/manifest.json | 12 +++++----- .../org.openhab.ui/web/src/pages/about.vue | 2 +- .../web/src/pages/panel-right.vue | 6 ++++- .../org.openhab.ui/web/src/pages/profile.vue | 12 +++++++--- .../web/src/res/img/cometvisu.png | Bin 42279 -> 0 bytes 28 files changed, 82 insertions(+), 48 deletions(-) rename bundles/{org.openhab.ui/web/src/res/img/basicui.png => org.openhab.ui.basic/web-src/tile.png} (100%) rename bundles/org.openhab.ui/web/src/{res => images}/icons/128x128.png (100%) rename bundles/org.openhab.ui/web/src/{res => images}/icons/144x144.png (100%) rename bundles/org.openhab.ui/web/src/{res => images}/icons/152x152.png (100%) rename bundles/org.openhab.ui/web/src/{res => images}/icons/192x192.png (100%) rename bundles/org.openhab.ui/web/src/{res => images}/icons/256x256.png (100%) rename bundles/org.openhab.ui/web/src/{res => images}/icons/512x512.png (100%) rename bundles/org.openhab.ui/web/src/{res => images}/icons/apple-touch-icon.png (100%) rename bundles/org.openhab.ui/web/src/{res => images}/icons/favicon.svg (100%) create mode 100644 bundles/org.openhab.ui/web/src/js/public-path.js delete mode 100644 bundles/org.openhab.ui/web/src/res/img/cometvisu.png diff --git a/bundles/org.openhab.ui.basic/gulpfile.js b/bundles/org.openhab.ui.basic/gulpfile.js index 1667955636..58e75b430b 100644 --- a/bundles/org.openhab.ui.basic/gulpfile.js +++ b/bundles/org.openhab.ui.basic/gulpfile.js @@ -33,6 +33,11 @@ .pipe(gulp.dest("./src/main/resources/web")); }); + gulp.task("tile", function() { + return gulp.src("web-src/tile.png") + .pipe(gulp.dest("./src/main/resources/web")); + }); + gulp.task("eslint", function() { return gulp.src(sources.js) .pipe(eslint({ @@ -48,5 +53,5 @@ .pipe(gulp.dest("./src/main/resources/web")); }); - gulp.task("default", gulp.parallel("css", "copyFontLibs", gulp.series("eslint", "js"))); + gulp.task("default", gulp.parallel("css", "tile", "copyFontLibs", gulp.series("eslint", "js"))); })(); diff --git a/bundles/org.openhab.ui/web/src/res/img/basicui.png b/bundles/org.openhab.ui.basic/web-src/tile.png similarity index 100% rename from bundles/org.openhab.ui/web/src/res/img/basicui.png rename to bundles/org.openhab.ui.basic/web-src/tile.png diff --git a/bundles/org.openhab.ui/web/.eslintrc.js b/bundles/org.openhab.ui/web/.eslintrc.js index d8ee6f16e5..c8011e51d4 100644 --- a/bundles/org.openhab.ui/web/.eslintrc.js +++ b/bundles/org.openhab.ui/web/.eslintrc.js @@ -31,7 +31,8 @@ module.exports = { 'ga': true, // Google Analytics 'cordova': true, '__statics': true, - 'process': true + 'process': true, + 'baseUrl': true }, // add your custom rules here diff --git a/bundles/org.openhab.ui/web/build/webpack.config.js b/bundles/org.openhab.ui/web/build/webpack.config.js index f77dd59c91..b641fcfb2b 100644 --- a/bundles/org.openhab.ui/web/build/webpack.config.js +++ b/bundles/org.openhab.ui/web/build/webpack.config.js @@ -20,7 +20,7 @@ const target = process.env.TARGET || 'web' const buildSourceMaps = process.env.SOURCE_MAPS || false const isCordova = target === 'cordova' -const apiBaseUrl = process.env.OH_APIBASE || 'http://localhost:8080' +const apiBaseUrl = process.env.OH_APIBASE || 'http://hubsibase:8080' module.exports = { mode: env, @@ -48,12 +48,15 @@ module.exports = { // compress: true, contentBase: '/www/', disableHostCheck: true, - historyApiFallback: true, + historyApiFallback: { index: '/proxypath/' }, + publicPath: '/proxypath/', + headers: { "Set-Cookie": "X-OPENHAB-BASEURL=/proxypath;" }, // watchOptions: { // poll: 1000, // }, proxy: [{ - context: ['/auth', '/rest', '/chart', '/proxy', '/icon', '/static', '/changePassword', '/createApiToken'], + context: ['/proxypath/auth', '/proxypath/rest', '/proxypath/chart', '/proxypath/proxy', '/proxypath/icon', '/proxypath/static', '/proxypath/changePassword', '/proxypath/createApiToken', '/proxypath/habpanel', '/proxypath/basicui'], + pathRewrite: { '^/proxypath' : '' }, target: apiBaseUrl }] }, @@ -204,7 +207,7 @@ module.exports = { new HtmlWebpackPlugin({ filename: './index.html', template: './src/index.html', - inject: true, + inject: false, minify: env === 'production' ? { collapseWhitespace: true, removeComments: true, @@ -219,8 +222,8 @@ module.exports = { }), new CopyWebpackPlugin([ { - from: resolvePath('src/res'), - to: resolvePath(isCordova ? 'cordova/www/res' : 'www/res') + from: resolvePath('src/images'), + to: resolvePath(isCordova ? 'cordova/www/images' : 'www/images') }, { from: resolvePath('src/manifest.json'), diff --git a/bundles/org.openhab.ui/web/src/components/app.vue b/bundles/org.openhab.ui/web/src/components/app.vue index b107de8124..4bf08aa550 100644 --- a/bundles/org.openhab.ui/web/src/components/app.vue +++ b/bundles/org.openhab.ui/web/src/components/app.vue @@ -307,6 +307,7 @@ export default { iosSwipeBack: !this.$device.ios || this.$device.cordova, auroraSwipeBack: !this.$device.ios || this.$device.cordova, pushState: true, // !this.$device.cordova + pushStateRoot: baseUrl, pushStateSeparator: '' }, // Enable panel left visibility breakpoint @@ -510,7 +511,7 @@ export default { this.cleanSession().then(() => { this.loggedIn = false this.$f7.views.main.router.navigate('/', { animate: false, clearPreviousHistory: true }) - window.location = window.location.origin + window.location = window.location.origin + baseUrl + '/' if (this.$device.cordova) { this.loginScreenOpened = true } diff --git a/bundles/org.openhab.ui/web/src/components/auth-mixin.js b/bundles/org.openhab.ui/web/src/components/auth-mixin.js index 7d9c6920ea..95c1033805 100644 --- a/bundles/org.openhab.ui/web/src/components/auth-mixin.js +++ b/bundles/org.openhab.ui/web/src/components/auth-mixin.js @@ -31,8 +31,8 @@ export default { const payload = Utils.serializeObject({ 'grant_type': 'authorization_code', - 'client_id': window.location.origin, - 'redirect_uri': window.location.origin, + 'client_id': window.location.origin + baseUrl, + 'redirect_uri': window.location.origin + baseUrl + '/', 'code': queryParams.code, 'code_verifier': codeVerifier }) @@ -65,8 +65,8 @@ export default { const refreshToken = this.getRefreshToken() const payload = Utils.serializeObject({ 'grant_type': 'refresh_token', - 'client_id': window.location.origin, - 'redirect_uri': window.location.origin, + 'client_id': window.location.origin + baseUrl, + 'redirect_uri': window.location.origin + baseUrl + '/', 'refresh_token': refreshToken }) diff --git a/bundles/org.openhab.ui/web/src/components/widgets/system/oh-icon.vue b/bundles/org.openhab.ui/web/src/components/widgets/system/oh-icon.vue index df3857627e..c1ddbba5fd 100644 --- a/bundles/org.openhab.ui/web/src/components/widgets/system/oh-icon.vue +++ b/bundles/org.openhab.ui/web/src/components/widgets/system/oh-icon.vue @@ -89,8 +89,8 @@ export default { updateIcon () { if (!this.currentIcon) return this.$oh.media.getIcon(this.currentIcon, this.iconFormat, this.currentState).then((url) => { - if (url !== this.iconUrl) { - this.iconUrl = url + if (baseUrl + url !== this.iconUrl) { + this.iconUrl = baseUrl + url } }) } diff --git a/bundles/org.openhab.ui/web/src/css/icons.css b/bundles/org.openhab.ui/web/src/css/icons.css index f3c1e7645f..cad1ffa3b1 100644 --- a/bundles/org.openhab.ui/web/src/css/icons.css +++ b/bundles/org.openhab.ui/web/src/css/icons.css @@ -5,9 +5,9 @@ font-weight: 400; src: local('Material Icons'), local('MaterialIcons-Regular'), - url(../fonts/MaterialIcons-Regular.woff2) format('woff2'), - url(../fonts/MaterialIcons-Regular.woff) format('woff'), - url(../fonts/MaterialIcons-Regular.ttf) format('truetype'); + url("../fonts/MaterialIcons-Regular.woff2") format('woff2'), + url("../fonts/MaterialIcons-Regular.woff") format('woff'), + url("../fonts/MaterialIcons-Regular.ttf") format('truetype'); } .material-icons { font-family: 'Material Icons'; diff --git a/bundles/org.openhab.ui/web/src/res/icons/128x128.png b/bundles/org.openhab.ui/web/src/images/icons/128x128.png similarity index 100% rename from bundles/org.openhab.ui/web/src/res/icons/128x128.png rename to bundles/org.openhab.ui/web/src/images/icons/128x128.png diff --git a/bundles/org.openhab.ui/web/src/res/icons/144x144.png b/bundles/org.openhab.ui/web/src/images/icons/144x144.png similarity index 100% rename from bundles/org.openhab.ui/web/src/res/icons/144x144.png rename to bundles/org.openhab.ui/web/src/images/icons/144x144.png diff --git a/bundles/org.openhab.ui/web/src/res/icons/152x152.png b/bundles/org.openhab.ui/web/src/images/icons/152x152.png similarity index 100% rename from bundles/org.openhab.ui/web/src/res/icons/152x152.png rename to bundles/org.openhab.ui/web/src/images/icons/152x152.png diff --git a/bundles/org.openhab.ui/web/src/res/icons/192x192.png b/bundles/org.openhab.ui/web/src/images/icons/192x192.png similarity index 100% rename from bundles/org.openhab.ui/web/src/res/icons/192x192.png rename to bundles/org.openhab.ui/web/src/images/icons/192x192.png diff --git a/bundles/org.openhab.ui/web/src/res/icons/256x256.png b/bundles/org.openhab.ui/web/src/images/icons/256x256.png similarity index 100% rename from bundles/org.openhab.ui/web/src/res/icons/256x256.png rename to bundles/org.openhab.ui/web/src/images/icons/256x256.png diff --git a/bundles/org.openhab.ui/web/src/res/icons/512x512.png b/bundles/org.openhab.ui/web/src/images/icons/512x512.png similarity index 100% rename from bundles/org.openhab.ui/web/src/res/icons/512x512.png rename to bundles/org.openhab.ui/web/src/images/icons/512x512.png diff --git a/bundles/org.openhab.ui/web/src/res/icons/apple-touch-icon.png b/bundles/org.openhab.ui/web/src/images/icons/apple-touch-icon.png similarity index 100% rename from bundles/org.openhab.ui/web/src/res/icons/apple-touch-icon.png rename to bundles/org.openhab.ui/web/src/images/icons/apple-touch-icon.png diff --git a/bundles/org.openhab.ui/web/src/res/icons/favicon.svg b/bundles/org.openhab.ui/web/src/images/icons/favicon.svg similarity index 100% rename from bundles/org.openhab.ui/web/src/res/icons/favicon.svg rename to bundles/org.openhab.ui/web/src/images/icons/favicon.svg diff --git a/bundles/org.openhab.ui/web/src/index.html b/bundles/org.openhab.ui/web/src/index.html index 756e93531b..38d27a0de7 100644 --- a/bundles/org.openhab.ui/web/src/index.html +++ b/bundles/org.openhab.ui/web/src/index.html @@ -21,18 +21,29 @@ <% if (process.env.TARGET === 'web') { %> - - - - + + + + <% } %> +
<% if (process.env.TARGET === 'cordova') { %> <% } %> - + diff --git a/bundles/org.openhab.ui/web/src/js/app.js b/bundles/org.openhab.ui/web/src/js/app.js index 8d2306d17b..54da7c8a6a 100644 --- a/bundles/org.openhab.ui/web/src/js/app.js +++ b/bundles/org.openhab.ui/web/src/js/app.js @@ -1,3 +1,4 @@ +import './public-path.js' import './compatibility' // Import Vue diff --git a/bundles/org.openhab.ui/web/src/js/openhab/api.js b/bundles/org.openhab.ui/web/src/js/openhab/api.js index c7a803c240..7cfdb80f3b 100644 --- a/bundles/org.openhab.ui/web/src/js/openhab/api.js +++ b/bundles/org.openhab.ui/web/src/js/openhab/api.js @@ -28,24 +28,24 @@ Framework7.request.setup({ export default { get (uri, data) { - return wrapPromise(Framework7.request.promise.json(uri, data)) + return wrapPromise(Framework7.request.promise.json(baseUrl + uri, data)) }, getPlain (uri, data, contentType) { return wrapPromise(Framework7.request.promise({ method: 'GET', - url: uri, + url: baseUrl + uri, data, processData: false, contentType: contentType || 'text/plain' })) }, post (uri, data, dataType) { - return wrapPromise(Framework7.request.promise.postJSON(uri, data, dataType)) + return wrapPromise(Framework7.request.promise.postJSON(baseUrl + uri, data, dataType)) }, postPlain (uri, data, dataType, contentType) { return wrapPromise(Framework7.request.promise({ method: 'POST', - url: uri, + url: baseUrl + uri, data, processData: false, contentType: contentType || 'text/plain', @@ -55,7 +55,7 @@ export default { put (uri, data) { return wrapPromise(Framework7.request.promise({ method: 'PUT', - url: uri, + url: baseUrl + uri, data: JSON.stringify(data), processData: false, // dataType: 'json', @@ -65,7 +65,7 @@ export default { putPlain (uri, data, dataType, contentType) { return wrapPromise(Framework7.request.promise({ method: 'PUT', - url: uri, + url: baseUrl + uri, data, processData: false, // dataType: 'json', @@ -76,13 +76,13 @@ export default { head (uri) { return wrapPromise(Framework7.request.promise({ method: 'HEAD', - url: uri + url: baseUrl + uri })) }, delete (uri, data) { return wrapPromise(Framework7.request.promise({ method: 'DELETE', - url: uri, + url: baseUrl + uri, processData: false, // dataType: 'json', contentType: 'application/json' diff --git a/bundles/org.openhab.ui/web/src/js/openhab/auth.js b/bundles/org.openhab.ui/web/src/js/openhab/auth.js index c8f2461fad..1c0cc8ce6a 100644 --- a/bundles/org.openhab.ui/web/src/js/openhab/auth.js +++ b/bundles/org.openhab.ui/web/src/js/openhab/auth.js @@ -35,10 +35,10 @@ export function authorize (setup) { sessionStorage.setItem('openhab.ui:codeVerifier', pkceChallenge.code_verifier) sessionStorage.setItem('openhab.ui:authState', authState) - window.location = '/auth' + + window.location = baseUrl + '/auth' + '?response_type=code' + - '&client_id=' + encodeURIComponent(window.location.origin) + - '&redirect_uri=' + encodeURIComponent(window.location.origin) + + '&client_id=' + encodeURIComponent(window.location.origin + baseUrl) + + '&redirect_uri=' + encodeURIComponent(window.location.origin + baseUrl + '/') + '&scope=admin' + '&code_challenge_method=S256' + '&code_challenge=' + encodeURIComponent(pkceChallenge.code_challenge) + diff --git a/bundles/org.openhab.ui/web/src/js/openhab/sse.js b/bundles/org.openhab.ui/web/src/js/openhab/sse.js index 4444b7b24b..256a7e87a1 100644 --- a/bundles/org.openhab.ui/web/src/js/openhab/sse.js +++ b/bundles/org.openhab.ui/web/src/js/openhab/sse.js @@ -53,10 +53,10 @@ function newSSEConnection (path, readyCallback, messageCallback, errorCallback) export default { connect (path, topics, messageCallback, errorCallback) { - return newSSEConnection(path, null, messageCallback, errorCallback) + return newSSEConnection(baseUrl + path, null, messageCallback, errorCallback) }, connectStateTracker (path, readyCallback, updateCallback, errorCallback) { - return newSSEConnection(path, readyCallback, updateCallback, errorCallback) + return newSSEConnection(baseUrl + path, readyCallback, updateCallback, errorCallback) }, close (client, callback) { if (!client) return diff --git a/bundles/org.openhab.ui/web/src/js/public-path.js b/bundles/org.openhab.ui/web/src/js/public-path.js new file mode 100644 index 0000000000..40ddec01d7 --- /dev/null +++ b/bundles/org.openhab.ui/web/src/js/public-path.js @@ -0,0 +1,2 @@ +/* global __webpack_public_path__:writable */ +__webpack_public_path__ = baseUrl + '/' diff --git a/bundles/org.openhab.ui/web/src/js/routes.js b/bundles/org.openhab.ui/web/src/js/routes.js index 72409641fd..58d338c4cf 100644 --- a/bundles/org.openhab.ui/web/src/js/routes.js +++ b/bundles/org.openhab.ui/web/src/js/routes.js @@ -299,7 +299,7 @@ export default [ }, /* For Cordova */ { - path: '/res/(.*)', + path: '/images/(.*)', redirect: '/' }, { diff --git a/bundles/org.openhab.ui/web/src/manifest.json b/bundles/org.openhab.ui/web/src/manifest.json index b5104ecff0..00b5fd721e 100644 --- a/bundles/org.openhab.ui/web/src/manifest.json +++ b/bundles/org.openhab.ui/web/src/manifest.json @@ -9,32 +9,32 @@ "theme_color": "#e64a19", "icons": [ { - "src": "/res/icons/128x128.png", + "src": "images/icons/128x128.png", "sizes": "128x128", "type": "image/png" }, { - "src": "/res/icons/144x144.png", + "src": "images/icons/144x144.png", "sizes": "144x144", "type": "image/png" }, { - "src": "/res/icons/152x152.png", + "src": "images/icons/152x152.png", "sizes": "152x152", "type": "image/png" }, { - "src": "/res/icons/192x192.png", + "src": "images/icons/192x192.png", "sizes": "192x192", "type": "image/png" }, { - "src": "/res/icons/256x256.png", + "src": "images/icons/256x256.png", "sizes": "256x256", "type": "image/png" }, { - "src": "/res/icons/512x512.png", + "src": "images/icons/512x512.png", "sizes": "512x512", "type": "image/png" } diff --git a/bundles/org.openhab.ui/web/src/pages/about.vue b/bundles/org.openhab.ui/web/src/pages/about.vue index 9818f0007f..faa7db76bc 100644 --- a/bundles/org.openhab.ui/web/src/pages/about.vue +++ b/bundles/org.openhab.ui/web/src/pages/about.vue @@ -6,7 +6,7 @@ - +

openHAB {{ $store.state.runtimeInfo.version }}
{{ $store.state.runtimeInfo.buildString }}

diff --git a/bundles/org.openhab.ui/web/src/pages/panel-right.vue b/bundles/org.openhab.ui/web/src/pages/panel-right.vue index 1ea7f8d669..50faa0867c 100644 --- a/bundles/org.openhab.ui/web/src/pages/panel-right.vue +++ b/bundles/org.openhab.ui/web/src/pages/panel-right.vue @@ -24,7 +24,11 @@ export default { }, created () { this.$oh.api.get('/rest/ui/tiles').then((data) => { - this.apps = data + this.apps = data.map((tile) => { + tile.url = baseUrl + tile.url + tile.imageUrl = baseUrl + tile.imageUrl + return tile + }) }) } } diff --git a/bundles/org.openhab.ui/web/src/pages/profile.vue b/bundles/org.openhab.ui/web/src/pages/profile.vue index 492edd9bca..245173cfcf 100644 --- a/bundles/org.openhab.ui/web/src/pages/profile.vue +++ b/bundles/org.openhab.ui/web/src/pages/profile.vue @@ -20,7 +20,7 @@ - + {{ $t('profile.changePassword') }} @@ -77,7 +77,7 @@ - + {{ $t('profile.apiTokens.create') }} @@ -216,7 +216,7 @@ export default { this.cleanSession().then(() => { this.loggedIn = false this.$f7.views.main.router.navigate('/', { animate: false, clearPreviousHistory: true }) - window.location = window.location.origin + window.location = window.location.origin + baseUrl if (this.$device.cordova) { this.loginScreenOpened = true } @@ -224,6 +224,12 @@ export default { this.$f7.preloader.hide() this.$f7.dialog.alert(this.$t('profile.sessions.signOut.error') + err) }) + }, + changePasswordUrl () { + return baseUrl + '/changePassword' + }, + createApiTokenUrl () { + return baseUrl + '/createApiToken' } } } diff --git a/bundles/org.openhab.ui/web/src/res/img/cometvisu.png b/bundles/org.openhab.ui/web/src/res/img/cometvisu.png deleted file mode 100644 index 80247b42b0d74af4968771d12ea7d77558f03682..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42279 zcmaI7b9Cjwvo9Lk$;7s~W82Qews$zOZQBz~Jh5$SV%xS~e&^nE@B8DOx7S{Ke^FIk z-BsPI`cu^rN(z#QaJXqR z?mXWD?95z@h~4dM?VWkt`APpvF3{g`1oEKQdTZ8NMkPoIUJajNBRQoyq=Nf|!}JiIbIs zixtqG_&*YjjDfB${G{KS{;w|BIs6~7_Rjx%n7#*$$=%3-iG`8*KVAB7LV5ZBe^NWU z|3mHUqGI-c_5J@8?5yVDV8*0k<_vUoGWj-~IoW@ja^MklGBa`kI;jDHw*NhfN|rzu zptB{=fml?PgP2;w%H9;{=1lWn^z!mN()P|SM)oFV(qjCi-x3(DtW0@WxHwo@SlPtH zn7P?lSi}J$+*|+=76}PaE>2-?VG+Q8^NImYT!!e|x*rw_6K2G|Pg36l6(@39GrUo_9iL>n@~Fei|R><`lLSt52bgNfD#K z!6ekjOd2|5*7Em0o=00;5PZ2=eA$>>xi6m8@)HKJKt+QlplaceV`ytJxK91l zyH&B~nOt5j?$&5p%+pOIUv?VeHO+s-d$jI=^pSJrJ$&|X`rv7OF6N9|h2itG@#Ga6 zDAD;#?g=WWSF7HfL8plxA4yf5N0Hn_jyj<~qZKjMW$xP2J z4=rJwq)9EdsC54vjUR0SK;FW)>=QkBjWpp~^Pa6;&1^x-d@k*|8DljWjDiBGkc3!i z$bKUQl;Dn*o;q97gyV|~cHEeQgM&nJv(tCx2-aa3gmEYQurpYQ@ZTeMd`cj3g9aS( z0(ndra4D&&r!G9Y{&bG;pOi_`4;KjiAjZk5CoUeF?7#Y=uJI}5UkYMM91(F#W-Sq* zz+cltEU{z)%(Q$U(}VO)FlL|}z%SR_H*=v3Gt35(rDE)**%aoO>wRH+(NKG0O~%Pm-nJ;Q;=1zCoK{82Jqb zFJl_91iX)jSwIdBj>E_VIaN}sTl{>Xps(-&jh{bvz;h#jP|(mU@$r4^Hj9;d?T^K2 z`m2pLSU74U6amP$zq}<(K|dN+Y<;_lfML9|MQs$5uwHlKL!YXbGHwB*&CIQ5t*V#{}`sWo59ZaEhlh1)`Qhsk=LP z?+_PYvd%xC`~#u2=`kHt)VmV6)xlIx@Z}{qZ}jgwuBN`?-c3RpZ+@b!93c4i7f zT7hC&j-Z=TN}p`740)Wu&3|R8UY?$-YilGwTH^>1fx=N(Ow~0tKr5>NO*B+m>st@1 z00r2}5i@agm&_i|u>PCpy*LBsN%m*7JioWKEp;_DuAC`3`~+%g5H1J$Y0)aK-;tC_ zu>DY6=>k4H=imu{b%32ezTS`gJ}s~jcbQOj{4Eok_w;pNdccvr-*1N9d8>zIx4!-K z^V2uKUo&Q6W@e^RtG>GX({mgC^W||3xR>$G6P~1^qLOGcf34{9>+yWWzaus_c5zYtethpn$f8o6ZWYAr+pLgv zJ&*_k;HC0eP&4G~M7 z#QgETx~<ICO*ef{@%=Fq#BzFm4#8Z&f*sYNfU})nPyp)fbyn5f(>xKIkN6Dh3#|>d8LKkN za^He|>|X#;0~fE+fW8N5b90yXg^w0^>Eh~o5Nnk%1q~>Ih;c|=0uc^?^EuPm@;t8{ zuB(<1V>TIz_In@p3zifj1siM{Y3P~j32B(`L4ANq*v8@c>-*uUX^TBnn(JwOIFZ3j z5KqpUJ&>VM0Qx0{0!p+4{CWhUCJH&+KzNJNFSnY&<)dXHQjjn*I);+;LL=e(r}j+= z5#1^@ihyow?DbFO@RFRN7+As!RO+^(dBQwUT0Up=1jh=kr_pPHQAJ^M9uq3TDyXL7 z7GAm2R0n8^-uMd_*#-Z2PGKg8$DN^N-v6F{?tPyhZ;qf5J`Py9e~ky>^0_1AF)ZV0 zVs`JwGiHQ#on0K(n(W+pvElIpLW5jAJffIx&_M_k@G)3bzgSw_!8(wgRxI-af@838 z?_)=Xj)TO|nxSF6XJd3eq%f6?8h*VQ1Wg&s2aARBahjurWCg2lj!S)2*uu#fE-(}_bb>e zh@Oz&6F?UqT8Tmx$VK1%^>KC8dPJysdz9x#$j~e5Psw~3PxX#IJxT`}uf~TT3+4NB z_u^iSy0&!2tC8{3X>X2d1=O}|-xCV4M2{9r&ArlyjaP7l3ylbWz0^+6L;!!hZ+em=@wC;C` zbcCk76W&1;06tU)6*}%UdNuTNg3(|_FHvAYtF1C`EW87j5S8;tj}EJ2ke73*xI`e- zdWc1$C0%pS5wQ?koA-w666(FA;*RWZEC*W_MoU;yjBQo{jGwRX!r=Mu=dDl(Y)~L= zF+ddf9?yzEFso3QJ|xk}e`l({=`E8NA{w@O;xnYU_LHa-Lx1;42qSINZ_Dz*Rnv3@ z6qDA4=Y^N4m0k+PfBJna`3+u+F5D=>pa3uvVBRqXhLpBD0%18j*O6B9C7?3bso!fJXzr%R5rMHJyd|T9KFl0^oo__V-vjQJM{oL5%1ol}5E>n;V zyE7Zjfuiu-dfP0vcvSb5p?N(poruHXVzp81+#g1Xdzr2!a7INc9as2|IW*@kqkF`2 zwAaF;_g&W3z*9UGHa?7``g(;3I80m%?M6K#H+x~KT1RgSv{y!Q>}b0X|>R3 zA@Iw=XWQk!MmM{I?!5Pr2oRT$o`)9%ROIS5?5?$J3U^ zQFo+^Kt74MGU{If6@yoM>W|zyKN=Xkeny7|9rl!B3$ZAwa~rmZ_S zZvWC@B0qd>x7&Sbmw0CAnV#81VwEy-Z`(`+>Q^vz|4t&Gd(@T-r`BBeUD#mQ8I|`* z8(^;r-*v9nWdL5c{RYopFa@}EYO&-N!sl26(1F6*g>Au^qNXOyJkS+Wi{WDp%xgFo ze0oT!0y1}8Eu`VKo&18g0SX#V#G?dLlF@K5M3Y2;L80+FYMLE0!7#5Ov})ORD|2W4mhnLU>C){ICo*3qk?!be?)d43r=s z2XOO!2oIP~;ZZ8Sz3lgSm*@9#kS6#Y;<489j6Dbfz+=ekQ;0iIpTMj~+YokWC1&z> zDkbFeILBBUc>Exse)BtgBLVJU(UfcWBlgJ&o8e14jCHz*7~nb}Pw|++BF`!5k<+#u ze_??yFVlXpD2Jm|dGD8Q-SCJ+9{_T#UmFcp=zl?2VV~gkqJZ|D59)P^A;6J2MdjjY ztlBaZ1NJcezlNauKQJ@)T%j0_kY5X~e;ge2fGr5;r|hBG0u|lpF_+E|neW8NjU&|T z%390YRpAyFwJmMqCxQo>8!s}@ZG@ju!VQd<%u+`S~R#Mz)aODZezu|zLMU3g$4oUe-K z+k(yG_4?~X5;u@gf){Cgx&D$}amWmI#tmX?|5_#>H0a4cw^!c|Fv6))xWdJriD}u& zSUhXIF5h-YNl7_z#qBt&w}{4}OoYnjK5iMQZW?D2 z^;R-H4JXc8RF%WYw-hfmAWLtyP%Kfi1obcZ+O}gpk9x& z!$1nBFzY8>x&vueQPU$F>+&iFfN~6RiTF(_+T)Auy^fSZ1`mD84Zlus3oT1$b3xhF z*r->^CS-O3co%9R3sh6qqZ~lp9PrSD$~;`=Ljz$!BmXta4$pttB^BB0MWRTKHgqNt zX`4cksF^O=V4$859!hiEhJXc&Cg+?Tx_mbQLYqWfS8GX~8GnvxqM=Ace|jBEEq*d@ z0dX5iL&(L2ZJQ35w<=L=ZW`VlfHwI`p= zdos#k5J&t-S&->r;}d436XW2Zrb{k^m}cpaDD}?Rw5Km+Q9dDtf`!Y`5YVJVLkb}q zyAM+zFXbh#w`z$lrBYo1w6o?zz>KAFjom}p%@ASVzRcT)h=EBcs~zh1{G>QV6;D0t zCxHN~>$gHrAwVWYK}ZzJ@gV)Ai7FGKF6Yd2Pj%#)D3F@7{7aq$i?#_yc8%|XEE=cJ z1^}P^{j=g{(M_dNkqX}s3?Uhmv<*#;V1+L;iO<2=7MyF-xuB;mkU3aXnQ&1tb)2qT zocrWfInMj$^D|eJBBs9dXDU9>F04fpA@lYYZX~kIcz3sTz8%R&jn`r&+X`J^(`~op z;cTpNwlHTCEsKUQ%K2nZlqUy@b>LPzM?H!fWSQuu4KHo|dfCAH^4hD0=Hj*icypm=XMI{IJ@7*-3U962+TE3v(5>5<>BwM55;Rc0DItJ{5Al7-0-J|7`Q%RRG2loEr??_x1C?{zGN zr<>+3GjofdkvaL>eWIpWVawsJjiSE%K-2PTR@K+<__4i9a}XYSmA4U}?ttt{X)7Dj zMuX9AE^CaEGu8gXAuL&j25r(R5Hyb(Rw(;?2^JO@-Fc9@R-LuBEO^Ybv4|5(Zu^J^ zGSri=Q_2?U!ipO!RYpE(18FvxJa-$-gduy@g@K5Gb6WHA2IT*>-8tz)!m@p`B%kRz zT_Uds{nRF6lqneskzKcLjUg#z0I?Y5tEl|8UDAf}ff6OLO$ zj~Fz|j1uPquO7e>@B{K~`jz*W?olh#&bdp=NpRaVvaTh|P$J^nHOOxImR0)Rx-J=5 z*kvjo{7p;E@_hYJ?$+qPKAfvN>>M7avnF!i1~nOM5WTX8eg1%o`q5l}{rkaFBad!* z`FR28$2+Lw;{#r?RF%WyoU3O3SFUBqe%Cu7UmrNf7TBxqWV@B?BN?kDH?$MPL(lnd z&1ZL{mWEC}MIlew%8gO~wKeool>hU1wGr>K{S3-Y@oU4ty>j4~S;tPV%1i%wzJetu z!(_^734Jtp;e2M~{Zz;PeXpjiyhQ(NX8m@4m^WMD?D1)9-K$~Pp51)<0=A4q@hepF zt8Q_=?jc5l&RlNo?~ZfTBvJA|wJnb$epQPng)F|4D!~u?wO)?WjclMNy~L;|o;QgA zpV{K>T*eZWs1F_1)Jy(@5HGzk)NzK=-fDvS^br$h*P0xRPw{k zzR#DbZf@Es{8k8t&dWCWR%uLp^=;m>zcaGz+uiP_3h6NYHkFOafVM3cO);RI#aA;4 zPffmmntAI2^VCR5iu#J@)wh;S*FQ%WnfPDRO3-Y2h_X3-)LYt37TL!OJN2eJADapX zJk-5Y;qbYgDrY5_+CBDy77$saqT zOPX%R4L)~?az96Tb&#_rG10;X6V=?Qy^jd;>ecI0sM;%Bobg=w6^lGMd_RR1&mtBt zr$*(`PpK9k+$2S+3s&yT>9v)X-a7M;pbE`J9k1qFU~>ty3P2v85Zzr$9^4Fup*k-- zZ4NH(H1LkoXK60|-jP#blQUMQM#>8K6*`<8i!N{(Npu zb@k2&zF&9SdhC=1sDDMoT2>ATR5*=wa@x`^wD`7fxL)LNDjd=SFMRne8SVb+WObq@ zQF<*9Q?R9AmWIu*J3L*)u*0{-b`Zu7Ojqg8``sp8c*PYXWa?VxyM~JLZn=%$lg0Tq zhMAd9XNZc&HD>deBBc84z#DLAhUfwLg0KZs<_>bWweDf`dn>F%Vo;bb{x*BFz`Lhu%tGg$z5RAO7`yL zU#IhCp|kAFu=er$y4eOt{z~e-;9hs_F{(50n*VJA{nT@#oXX5CcH&K&5=>Wv z@3(hRe})h2t~XneM^<0BD9c{ozdTKH_vl@H*;IqQlBL|!!G6Z&?gSsh-|D{0@bmE8 z5RDUXzq-(mu;O(RgBw`XZLTvvY3uCv-gPTmLKAwd2f-DhOjcWB&~%*qhqj^WC1CGi zx7}ujPHDh-^_)Nkk5wHd>B+<66$_Ds{ILzJkiW501a{uE>8R^+wil7RJ`Xqs2ZtjG zpNmqSNnK<+gf@3{594`pQH7(PW0)caW_iz z{vaCjvm3bKr8bPE!7|(_lCX&+xwNp*TZx7 zPczJmP4LO=Q56F%i+XDx(IAG>HoCLZD%@8!Ad&HD^45_ojF!GA0Jkic+3e;WCk&aO zy1Zh3tgMshitXn=#%y-0v-T?})#OlM!v5l@! z<)>$pP@l)WA3H@O&K@Q6J1*l5j=g=5_~-`>m^Aos?6`OoaE{Y>YR%ULxlz4(6K4%YI1+*Hag$Pqz|wdf$|N-QDz}Uj}sPD~k0yn+KKrv$j3E>&r@_NSM{B7@w@F+EBHi z&r}8qIGnp{ZMZY)>@FWRmd1ubL2is4>%9+HSpU3L;&sz3+R4 z;hoxa5R_VVx}Kh&bZ+q1It3_0lED{+)=%1DmC4 z_+qSC^jRe?+y&f;272Px1)Rxj)|j*z%f@SFH0cOqF8*lF-11o+hLRv?!!r;gldG>^}wpPZ10?oV}hAtZB&L8@5ZGEzSNrf6!GsRf8=ya)p6vTR4PjiBs zCiM~wyz1E#_G5)jY2omE5MD<3$b{0AG6YngeE?rhbSb&a;;{=ZGx^swe}^ml49JO?~1f2zAah3Y=Z=qhrGMdJ9*QE{N0M%bgF(LR!!`}de z+vU0ze#D(DWoJpBmB7XxP2F!PNY%l8$T6)5Wy<}LVh3_{b>%*r2dLN(H-Qo_qu6sR z(s5sL9>MB-a=ZuJutDq;SKFHb|4r$qNc(b_PrypM^ok|;4x*e-Zd1a@}sUfSB*(N7ox z#a6UP`cm<@MfOh(nKgBE+FefO%FD~uSQS`07K|eY_xMU}cOnK8vn7~{f5RrQW<@7b zW4`DVk?JiT3n^$IAt0P@cD6S+r%f<8V3h9Lt1^Kx{##h6(rf>=6~g^f+Rp_Xz-?LT zJY`|;mGjH)YnD2bz11eF`B;Um?RbQJXRlH;WTaZrc&3y@@pqc;8-Vv1Pi4^4(~G>y zFA6IPEeOa4>eQLS3bbro#!qv4T;8s#7+rOl6c-;zL=~v(C~Ih#q*68woTkdvb-ll{ z2}jI13_9dXiMO58;3H*CnkUYZVMgI-9z6eJ29PI>exn+Fgl}>bEKE%H0>GgWJSDh? zrO*(MU3h|ex1Zidh5N-wFCU)q#_7zbv(Md-BOT)kf772_y|oB3+ZZKH%<*(Gq9NUh z*A#rKr4nwc4Tb?DqP8N@WYiyO$SgHiTn3-&K(#Bq9nxz&*YfJA+ELuqM$Wv9m6RdI zXV#?M7>ylKT3wWKw_cvDf%k*kA*JS=SeLl0Ac-Wdz<$a>8YV_UG?Fa-o)<7FWz0&b zNIM+Dotx^#t1Xtgr$qq_qIMahui4Q$6p<4>lph9U3KJ-rkV}I>ODVKPb>(VfLl3nI zV>c(2YFNvvxB0a2cS?!ntF#dY~-mQd;Ct z@+HB(zN2LpEUG3-3WUa+t;00X=;4xFj9C`R)GX~?6ewBVw~jKRKud*gvN(byS6frX zvA%gRmLZvN;dh1O6aOhXJ(4(9SH&)h|4lnucm(2r$l+H+ zT2gqABfaWdJcBCloG~%EzUQEv4wfW7S6gT%CR6uXBO|x?3<(CRf>6%9xNT*sldgUH zW}E@vSRU9$M9&26H0Wk&IbvRq`apfYP_&1Y03MxKCr#|-{1aycSN;XT%+Y_{vUzPf z=i-*l(Sxr!4+|+C%)oj}avD@+2$WSR9nLf~>E!nqM%oMB=#5itI+`qc8}!?BE=dZz z^_|o&Hg;uN*OCr-Nl9pFppO5Q&~0OahHj;0Qc)6>nY+iq1SuODwA2$Dw-BvX-$@pq zhm#T6AEb}LU67RmMekIX>K;W%Aw&l?P-52n$K-8oFE8HgF6ku7-X4ra|EOv(YgZ?< z&GMpHsZ_W>@)Q}u(mV!9qiX&hT;u!+^W50Zpsm*^YH0`|fkwr? z$^bOD;JzaHJ*q^6TrTl@98%)~L+-5H11|JXR6FG>NU~@Nvg^46C$m25fFeE-xUj(E z9P+#eKI5EVw#`qEq8+Nz@oCh;DjuYA@Az5OHos88(+iZc@0A82b?t&OYX{z@|8ICt zBc=*yHxsUG(bh1zv9cevSRC`Br7<5q5)|14S8#xw^R}Jom?(i|Akqm&7rFAq^>KxR zbTG6JG_=%^-ELA`SaNp0;{Z{;t?6 zsXB&=7M#MOYqBh?&i>Td`m^_^`jT++g_=|9T5$nxp_$4mr-02oDyLXHZfUs0OCdCG zT|BY9ZyC(7cOC4|1O|jnh7=?siK2#+%j)&qI_z*J!9+Sj9m|+Fk%mN^1x`u&$hA&J z9$B6%zYo+1%mwt;im4X%CY%XnsCfXC$S!VpqCG#8Bl_;Eiphhc*uWwSAj@;1u*h7W-?OP6Fiq@04p6}rn>J&9k<;uvJ0Z8yaXEpdT@7nTR`bx(_?I88&qNH z<>l!P`w_zyeu56#tc8=1GAKnZ*E!7j%cQ60w%$XcsU8?Cc86C)EOiL5kiWQ}VRtu6g_cI)#|J9y) zgg_a!VXcHleYDr(VH8MC`OY%g`Q&r6DqdevLEE1jKo*9S#woAYY`If**xxH;m|r@K zg#hi7E1Wh=bp7<;(umKmU2nL8SaFoi<4c-~hLcGjxCW3GJumP%XPBc%$btN(!M&Y z)%#;L<)Sq939)TQ_x|bO9vR{B@zL`mz_4d)VP)s$rGG~Ws1dfdm-J)HdjenSr;rhd zycHs5lyd3paW(~#4CW{WmI%ny1pAEcqNq5@sP&|3$<*@adiTRA)%*V2R`PCOy_LD& zS}nDi_RQAqT?=8yTY@C-D@FG>gSGm)`}pq_R|dP>!HOCnZ_7hx6%ihTdK>Y`M7Gm- zG-VH4{R+N=D^yY&Tt#XsMCMX9p6Bo>d-lPf6GuW+rey!Ljne0M+j;uKYOJo&?;~e$LzM97ALQ4)n}JvT%fIqQyx%#)uVm2~ zuxWjPrLLzASifN<(~BW_@42=0OO6xve_W=-yubIc6-)wJFV8O-YAQLdZRKuW z2Ay5H|C)8|;0>xp&MKs{+6`A9Z3n;bzWD#5``8L{6U3` zLf+QoG}1NzWogAYDlM&@Z5&$IG=rjlEv!iadl>#Z97^2t@#bC!5gS=ww*#9%?>)TY zABS$7f&>d1Rk{2R7g%{2^@qJ-oYltjcTFu)~bC>FA z<@0e;r+x1;QTLai;7c#Ke7dnuN zU%Wv4rm2pTP1k1f{!wr$-qzbloFr?^%9hTj9E95}mRdmaF(+!9j3c_vU4eI0b zC+EKRBMYwoqE8^9F|t=q_-oIy;_$zQ+`2xIZLFKSo{NfXyw7{vJ9CImo{aX^ zSJ-2c1eP7s4=0~CTWPYdFZh>#a=LJ&vAH-9PdXFfd*=;Kl(R=W?2w*>T zIixJzJHX1lJE6Vo^wRrnrqSAeTd~z4l*Y;MKKJ^`FA!5Oc6O<#GE|NJ_DI0TZnY?< zg)wZxcGn}=mu=Z+>6ES|aEyatYUbufm@VtJgO9={Q`5_i(Q#6e)te{8$36IGuOU@M z^>?>her1O~x^ugCLS3D9_#c(uspiu)OYvuf$nBYdC^4|=l90v`@zavUwX8r+_@<0g zJ!4wNlWfkKO!+}k(yam6fYVh8Ju|c6Tss#Erp~L5 z#X_v^dZU+IJDm(Af!Gt?p8p=KmTm+p}DL zxmWb-CBZSB3b|g%!uZg-J7jR^&vyRWX9q-8*tbLy<41%F~#8VZE z5}m$IuyTD*mTNI{s!TukBXe`fb}avtSF6)E(3Z8CmyAKM_@BUXP@>&a06f(lpuvRo zOR-c(*FP)%7=ReCo;fooFJIkk)Hz;UF6COCIc>N-Reine5%Jyb*XQ}2+wfB%e=eL6 zt$Wn^rAJDG zHNFUbwd@65q`1zXWh=-KQcvWKWzvi!gUUpLNHYwEkd~GLYjgB zE#rT6dU_kt3T3S3^_gZY2M=NAzhp^qZ-UXxlfLT#xX+QkV}D`>wya4A;<_e|{G3`# z@>I3OM`~%g68NDC__t>p0Ir^uwWTF>z9lPR2-SA6K%QdhQW*GV*XE}X;GwbmwTa8& zek;$*=W&9@hd;+tr&Vhlp(U)`=FAnJEO!a=+NG8#6=Q_Lb(D=ezp^y6A8pVQ&{3xc z=$y-l2(tW&K&N6xC@wCBbO2GT*RDF5G!gDhb!&%$3iVD|Xw+6eJ#o&Er>x(ATEA@% zllv7mn}2a~lB!u1YTrvrHXcL{Ys@J;UsfV&}KW~r%H>@(VY&`bh_HY#zGkz zZ#nHaO|ka$9|=%9;!n2uVv}uml=R(G_M`cnO*A8~JNY7(KRRLIs$-%18W1g&e_$0wQQ4mRS;?!DL+ z%v9FbuV$Pvy)ahd7Wypj3(_YN^u^!8D8c@&@l#K5_R4hY;(H?bYeYY6(}>GT!|d5f z%-d*G3VI3BLJz7$B#t7?Ct6+^=qfZcHYO7_sM3>4rDE4nTkGiHz>Iq@mtJeCiP)16 z83~s!YGFaeqT9NfyU_1^?!-i&4}veksF=f3EU0S!x?Z80p^DIgiVw<24#%^eVDVw@ z9)%UhiSk5lL-^c*z60_PuM2PGkJD4JZ3sEE%w z$sH5n0Fh!2M`Q zIl7LZn!hJQF5(Fy_R0sJ@6NM-%0SfFy1KH@1f1)R(FJstjwwqK;%(G;@110?2l#L!Ui+(APx**-m!wj6RLo zAzRxYMxR1?N`k<^N&_$7J?P>n=7#mBwt>U!AS?Q+YmD+UHVBJoyH)J={8UM}(k4Gq0homlvRq17>Q zU)-B%n2FNRBiJo;XO~6{3LPP5ih0^n4uenJMXe>&$x{G&^J{ZsSc6%3I{+!142HG* z$Z~2GQ94H&1{Bo_2<+Ab6;Jqvs01yp!CaWLCTSU!OvhCz0r3n(0(sNs_3}A9?Dd{0 zb;=qLi8CH&T;Fh!cpH8pY#sB?jr%s7&#Ee#yM472dNs14b)9fI%N&+J%DKA-QXy~uY^_96fktPh~ z41MtA@2$1scXji3?OK_d^|#lj$l&6$-<2rvw76L~kM|6>bIKAxD<+z_9+Sa&``XBlxpHTjbSvr`6w(1;e8t^oE;VvV+1;$%oW3tLj0DYMa)>21T>J~qg8y1_Yju)>Z;OBFlf%01qFY5f6onLM9>~AEcES1?!!^( zpiHOf9&r5R*DZZ#`$(*B;zP7RY;B9M#ZjP4f+S{sqH^cRi`TZS;CcZ^=fML*LT zfV)F$p0oH<(9|NCl1NGNR?%5WS+bD#De*2mzeSTv@{nVEb!#(jUJ z;?zH*l@t-(GU_#K&@pOWB4dA0@WkmX#*+f63zRcmJ|j93CJtOx#4m`sL%7wS!OyI% ztrhYFE^gd=gnkf&mnfg?(V0BFJ9cu*e|&s!WHHoBKbLKnBx);`D&#n|Zy<$%qorB_ zq)-`%mF*wp?@^h4KolbAh3T1JQJ^$p-)tceAQl~Rz#2l^CrJS*%*K)ia3$9rIhWPn z4&@V`GIVCH%%C~FDQIqf`aTP?NfyT^0zo{#1fu``VDR-Y&IGJ3FLUN0sI`nrNvYFrJ=8Q-1s~CiQNc|G4gtEB3yq>1fV5!p_*_D_ z{XfpRJu|zVl-vA&TO-__#l<5?s@`c-wtPLFA=`S{Tt(Q^;(WRv<%Uy#XOvk>MbT8! zYLHn}SYQrhwGbfR6M_xvwHeI&xuNJ(SEh2f;CCP+kCGvKLkO3wAoGKHmZ!k4^kuCJWyL zIZ^>t`hbTN4FmI>yHrNZ5>AFpb|Yn3$*&Fy*);`x4t055=FykKGo9~6uylvftQI?B zFCkw;NBhg~>&mYMsq3NJ_p`yaf#zXIq9=sj3Y$BH_`nfaUgz(r&eGJ&eEsy}s|jYO z1R;*S1R`SH8bQ~^6mMYeBC;ER*YzY9|74OI9Y?dM!yI|AdIRyC81#rHTZE9K$g859|%|N|1mSh%ZUH-ytyqPlb{p#u38_l}%s3q*ncVD18g%wH@v}kbAW$^E%ax-yd{vcA8T^fP= zK2#XkZFb;H`yCgAt=m6+=iy+t9s-~ViC5%*2xcUDzP?s#b<`DqAa{!15Pf}Z5uHEq zyzLf;Gh2td{6Eq z3OigDPXD-V7f!`*_Nq`>sFc0jR{4KN4jn;DjN7cW(P$qT5mo{TI_-$m0(#hyZ!KXq}Q&Dhli3l z%fF`Y_wYd=?~J+s5Xt1mnr_#1X)^tFvl5|jBwN#Qk*$=3R-_Eq!#%;9uW2&V;-hzf z8Kpm*XVPYV?*xh5?7iE;%ek?-{Z|Z17ihmWno&v5U+ynrN0p{ijb;43z4G0Q;cRMd z)}c@R4jm81)80OOg}{yB%t8X^CHQhApXM7WD7rr%{Hk>UZ~L>N{MjQ;yCJ+W9F87be z_n`?LMG1$v+gS8kbr4|r3)Wegnctabsk%cPHuLWzcX}B!C0b-@Tt4Lo{S2i?x?VaA z=pSi*FCiQDRb@3;A^#4tgfH;vY{rJzNGO!G>t{hQsUS0O0xAYd@qP*kvzcL9-x1}$ zy^A6@c;6pB_Uj>Ku`O}@0gK0bJ+LcRFC{v@!iV`wXU^jV&AW?cQy_`)u#O9V;x}@i z$!?SX_`Q=iuP68pg;`Of1~HlRbu~1w5TG2{L?+$&VynR@QM@l#>Z$a0XiwpT$7##o zbA^G#rtDebnVcuBV&sX5C&8pT^ugJC=}KIo@d*BgP0Nj$va4pq^}XBvy@n$?hhox% zWfO&9xceR25qRHwQgM}g^GjiW#sqR4ZeD%M*y44@G)@#620G`}Dy?=x={^Mnl=l`- zOT8f{WSSdO0IqXZ`M=d0cWMP1tOz5PvzJN{ouXxBSy}jV!GO03H1@xUF)=alnDj6q zBKyY#pNXA>?kClH?Q`ws?DPztox=JR5y9`$I6LrhQuA87)GaML#r0Ccw^;|$3{?~L z{#D6!N+~tCZ1w|E9-W&LGTf%zAnW5BaN@;o6i@}?L84Gmh{mGh9;doH`XfI=5o9u3 z%|esa$Lwe)|EjQ}g-49(wo-HFOjTYaTGE=jIyj(w5?j#*gnrkhlBtIyJTSB0)g9py z|7FGgJAr>TG zZsuGAY{2Q$r<_dUa2}YsmuJtEm`!%U_na>CT7L( zLMjQIH5iS#Y0bdZXf)c_*M|@+YeO`C0=|RQ_$gPe?9MW0X~miExm>xzaFD`onP!0a zCTJ?c{5(z7I<$Ia=Mg*zSrW7MM3H^8y}iAV$;`Qi%!YA!Q4>zYNUP6FT z2Qe@(Kz726si}Y%ST;13EI(yWj;2?<2`*6S6>Ie;l4o2+x4g6QmphRfVzAO?vw2LC z117)-gGJD{EUuF5tUwJsnSku*9}6AE5ZBh$=K3k*R3w0-u%=>U&rt}H%bMsq_tf$g zpEH&es)5cxbKpLVem5tH+$Kzz04-H(PpJg%LtIGZzH`h-<%MaW32_LsPHmCcr@Fct zV?5TT;^M5Ps#|51YU$_Pc74Um0C)}{h7Kcc8vS4qe1rjqSCw1L0^a~?D=RAtkSkbt z_@O|S+=_LisSqmok7I2rK*4Uet4&q${nKg4Om~2U4Aj+4Bq{^f#>xsZfj82?gSQx6 z1oj1>71>U5L7Pf;@=|AZG+gC`!P4vXV=~3+h>RovU@VEp$2wRAghT#bdWoc19 z>v&b>G~_v^ov+mS2(mhe;EikvRli554=<7IAh==*B4!P4=HjKg-FxJHxbziS7?K!B zlJR&XA&*9*B=jyIDa)lS0B0X8RO;1bAFopP-VF^6<>mq-cb1ivk=-v>m{<^8Kw!mZ zWT3$RS(fYQXh*NDR%=#jgDlRB^iA#=M^z6qXMp}ZYk_2lola-wIsdG;L;3@OfYMR>4!B@6=ws2C+dafw=yAJ&EE-ZZ(o+kNnO2hMeaoe=n$6Cc%-*<;q-;Qa8O2 zuc4=>XTydKk3RaS-|ts{BCP_ZJn_U6FTVIvbxn29?+Jt=XtmK~aoEhM^cf!XK}aQ& z(P&Dfbw;J8nO1LLFZon2%FdLOz)(UomW;*|JVVvf`k|AR~!{O1Ky%=NzN2%77{c7p}9AMyNIhSB3t}j7>`34d!f{K!ku~F`SyF z+=t@VpZ)A-i9}?`tG)Twhn6p$ad_{p&6_v7VpK_Ki5L&Ne36+mXDnH|@JMrWQZ`I1 zGwt1XkkgwiCPUEgrC2RY4ozKhn`DSe_yfTyvllL(Kke9&7N^71<8sS1(|NqvY_)1# zilYQ@R7Xx7TJo8Uv6^Bt^Ba;k1*AQjG#SLFi916VG;T7R%~0=c+qRXIl;lDKIe7^k zm^N)%-X~O5RYf9UuiG_g=HiVTZW6HH`vo(T03dlHS>gEZ&%OI z#7RwEClB=n5)QjfOh!Y|q}66O==e+RG>zgmCL%gp{f#qf-9tmP&hXYNf2y8#?Yiq1 zwzZy`ux33McMtfJj3AtF5133wvgL&EGgknJRH$>h7+DN=UI9?WKotP;_ku!$!{OMq zYu9go`&+fhWsciRb9r4FAYw2Wq|#L@s59w?@d!L96bhw7Zc(JI3!7%W^XiKWmtDJh z>EeD-e|q0eLwVE9i%Q#194VW!@mn`8dG?7HJ34!(%w1Y(mOk9If5nX(=+NND`wm$h z_Dc;Kh?gHrQ8VUG)*4N#R@`Zk`=g7cmV>RQn)fHgIKf&n(wP9C8+&I(4P^Tu-0#fn zy~I09r3v0jCN8Lgb>VtSUX(fGnB~oqw4(SYIYvR8KGJtMqQsF71cLMCEKZ&{(yGy} zS+^=d>n$2#&+(p{)^CglT%A$ru}8nwwe8Ihb{~>;wv8+1?%npGzH-W{rm}r|_Jm@T zfoJ4POaKHS9*GF|KK!Lf@9}5f|75|UrDf$!o9?-%>(IxcQkzDqnUONJ?*HJhGAAV( z4GhV!lx5`A1Jq<8P<7LY0H{|I84%J0g;GI*BznBi37l2mByWl!a=a?fG$aw7p`oGY zpMQS;{{6tSb?eq0KYskwsZ)qB7cN|w7F|xMS;I0bu3g$a7@R$C*)`=Qr>DTrn0|Wi z>so5^^v0@zzOHE#r!8K2OCTO8=L5@@uF+UaS<$28;&1LeS>~`@YS56*i_51{?t@1L zos~n!4xPAb-Rj0UwR6HNKG^)m6*F(2Io9f2L#Ee2#2RD#!3Q6_@x~kY=bANZ@Xxp2 zdJFe%+_-T#5|Jf;ICRbY`L4qUon_P3Z>$NsTUT$queQ|q@>}mLoIE)dc9qsPE>2X~ zO;r8-rs}#$6((bKLrqnM?Ki)9nlGtj=u6Eu$aW+9&c{bqFKFCwtuV0g#%Z?X2fMaz z+;GeLul)Aq-Tn7};pW<=Wy^abzc_rzJ2?LAASfg z2%@lO&mO=8JgBdJ^{eDiKwMX^zXj=50C8^gV=imF%R|e`U*36&$(w2j=-F&Gr3rHCW2i*PC4a--& z^UCl2F5k9YyC%$cU+a{*NGZ+Y;`eet8l7dhCb?x4!#+ w*ot==954Y}g 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 hsaVKjHvc~X1^{K