diff --git a/.eslintignore b/.eslintignore index b96f79011..e4cade21c 100644 --- a/.eslintignore +++ b/.eslintignore @@ -2,4 +2,5 @@ app/scripts/lib/extension-instance.js test/integration/bundle.js test/integration/jquery-3.1.0.min.js test/integration/helpers.js -test/integration/lib/first-time.js \ No newline at end of file +test/integration/lib/first-time.js +ui/lib/blockies.js \ No newline at end of file diff --git a/.gitignore b/.gitignore index 08a544449..92b3f2875 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,8 @@ app/bower_components test/bower_components package +.idea + temp .tmp .sass-cache diff --git a/CHANGELOG.md b/CHANGELOG.md index ee9548606..3c1c1dcb4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,32 @@ ## Current Master +- Fix bug that prevented updating custom token details. +- No longer mark long-pending transactions as failed, since we now have button to retry with higher gas. + +## 3.13.3 2017-12-14 + +- Show tokens that are held that have no balance. +- Reduce load on Infura by using a new block polling endpoint. + +## 3.13.2 2017-12-9 + +- Reduce new block polling interval to 8000 ms, to ease server load. + +## 3.13.1 2017-12-7 + +- Allow Dapps to specify a transaction nonce, allowing dapps to propose resubmit and force-cancel transactions. + +## 3.13.0 2017-12-7 + +- Allow resubmitting transactions that are taking long to complete. + +## 3.12.1 2017-11-29 + +- Fix bug where a user could be shown two different seed phrases. +- Detect when multiple web3 extensions are active, and provide useful error. +- Adds notice about seed phrase backup. + ## 3.12.0 2017-10-25 - Add support for alternative ENS TLDs (Ethereum Name Service Top-Level Domains). diff --git a/ISSUE_TEMPLATE b/ISSUE_TEMPLATE index d0ff3c08e..b56d08d95 100644 --- a/ISSUE_TEMPLATE +++ b/ISSUE_TEMPLATE @@ -1,7 +1,7 @@ + open + Created with Sketch. + + + + + + + + + + \ No newline at end of file diff --git a/app/manifest.json b/app/manifest.json index ff595c717..8ae27fe8b 100644 --- a/app/manifest.json +++ b/app/manifest.json @@ -1,7 +1,7 @@ { "name": "MetaMask", "short_name": "Metamask", - "version": "4.0.4", + "version": "4.0.5", "manifest_version": 2, "author": "https://metamask.io", "description": "Ethereum Browser Extension", diff --git a/app/scripts/background.js b/app/scripts/background.js index 3e560d302..da022c490 100644 --- a/app/scripts/background.js +++ b/app/scripts/background.js @@ -1,10 +1,11 @@ const urlUtil = require('url') const endOfStream = require('end-of-stream') -const pipe = require('pump') +const pump = require('pump') const log = require('loglevel') const extension = require('extensionizer') const LocalStorageStore = require('obs-store/lib/localStorage') const storeTransform = require('obs-store/lib/transform') +const asStream = require('obs-store/lib/asStream') const ExtensionPlatform = require('./platforms/extension') const Migrator = require('./lib/migrator/') const migrations = require('./migrations/') @@ -72,10 +73,10 @@ function setupController (initState) { global.metamaskController = controller // setup state persistence - pipe( - controller.store, + pump( + asStream(controller.store), storeTransform(versionifyData), - diskStore + asStream(diskStore) ) function versionifyData (state) { diff --git a/app/scripts/config.js b/app/scripts/config.js index 1d4ff7c0d..74c5b576e 100644 --- a/app/scripts/config.js +++ b/app/scripts/config.js @@ -4,6 +4,15 @@ const KOVAN_RPC_URL = 'https://kovan.infura.io/metamask' const RINKEBY_RPC_URL = 'https://rinkeby.infura.io/metamask' const LOCALHOST_RPC_URL = 'http://localhost:8545' +const MAINET_RPC_URL_BETA = 'https://mainnet.infura.io/metamask2' +const ROPSTEN_RPC_URL_BETA = 'https://ropsten.infura.io/metamask2' +const KOVAN_RPC_URL_BETA = 'https://kovan.infura.io/metamask2' +const RINKEBY_RPC_URL_BETA = 'https://rinkeby.infura.io/metamask2' + +const DEFAULT_RPC = 'rinkeby' +const OLD_UI_NETWORK_TYPE = 'network' +const BETA_UI_NETWORK_TYPE = 'networkBeta' + global.METAMASK_DEBUG = 'GULP_METAMASK_DEBUG' module.exports = { @@ -14,9 +23,22 @@ module.exports = { kovan: KOVAN_RPC_URL, rinkeby: RINKEBY_RPC_URL, }, + // Used for beta UI + networkBeta: { + localhost: LOCALHOST_RPC_URL, + mainnet: MAINET_RPC_URL_BETA, + ropsten: ROPSTEN_RPC_URL_BETA, + kovan: KOVAN_RPC_URL_BETA, + rinkeby: RINKEBY_RPC_URL_BETA, + }, networkNames: { 3: 'Ropsten', 4: 'Rinkeby', 42: 'Kovan', }, + enums: { + DEFAULT_RPC, + OLD_UI_NETWORK_TYPE, + BETA_UI_NETWORK_TYPE, + }, } diff --git a/app/scripts/contentscript.js b/app/scripts/contentscript.js index ffbbc73cc..2ed7c87b6 100644 --- a/app/scripts/contentscript.js +++ b/app/scripts/contentscript.js @@ -96,7 +96,7 @@ function logStreamDisconnectWarning (remoteLabel, err) { } function shouldInjectWeb3 () { - return doctypeCheck() || suffixCheck() + return doctypeCheck() && suffixCheck() && documentElementCheck() } function doctypeCheck () { @@ -104,7 +104,7 @@ function doctypeCheck () { if (doctype) { return doctype.name === 'html' } else { - return false + return true } } @@ -121,6 +121,14 @@ function suffixCheck () { return true } +function documentElementCheck () { + var documentElement = document.documentElement.nodeName + if (documentElement) { + return documentElement.toLowerCase() === 'html' + } + return true +} + function redirectToPhishingWarning () { console.log('MetaMask - redirecting to phishing warning') window.location.href = 'https://metamask.io/phishing.html' diff --git a/app/scripts/controllers/network.js b/app/scripts/controllers/network.js index 23afdc12b..db1a5b374 100644 --- a/app/scripts/controllers/network.js +++ b/app/scripts/controllers/network.js @@ -1,18 +1,25 @@ const assert = require('assert') const EventEmitter = require('events') const createMetamaskProvider = require('web3-provider-engine/zero.js') +const createInfuraProvider = require('eth-json-rpc-infura/src/createProvider') const ObservableStore = require('obs-store') const ComposedStore = require('obs-store/lib/composed') const extend = require('xtend') const EthQuery = require('eth-query') const createEventEmitterProxy = require('../lib/events-proxy.js') -const RPC_ADDRESS_LIST = require('../config.js').network -const DEFAULT_RPC = RPC_ADDRESS_LIST['rinkeby'] +const networkConfig = require('../config.js') +const { OLD_UI_NETWORK_TYPE, DEFAULT_RPC } = networkConfig.enums +const INFURA_PROVIDER_TYPES = ['ropsten', 'rinkeby', 'kovan', 'mainnet'] module.exports = class NetworkController extends EventEmitter { constructor (config) { super() + + this._networkEndpointVersion = OLD_UI_NETWORK_TYPE + this._networkEndpoints = this.getNetworkEndpoints(OLD_UI_NETWORK_TYPE) + this._defaultRpc = this._networkEndpoints[DEFAULT_RPC] + config.provider.rpcTarget = this.getRpcAddressForType(config.provider.type, config.provider) this.networkStore = new ObservableStore('loading') this.providerStore = new ObservableStore(config.provider) @@ -22,10 +29,32 @@ module.exports = class NetworkController extends EventEmitter { this.on('networkDidChange', this.lookupNetwork) } + async setNetworkEndpoints (version) { + if (version === this._networkEndpointVersion) { + return + } + + this._networkEndpointVersion = version + this._networkEndpoints = this.getNetworkEndpoints(version) + this._defaultRpc = this._networkEndpoints[DEFAULT_RPC] + const { type } = this.getProviderConfig() + + return this.setProviderType(type, true) + } + + getNetworkEndpoints (version = OLD_UI_NETWORK_TYPE) { + return networkConfig[version] + } + initializeProvider (_providerParams) { this._baseProviderParams = _providerParams - const rpcUrl = this.getCurrentRpcAddress() - this._configureStandardProvider({ rpcUrl }) + const { type, rpcTarget } = this.providerStore.getState() + // map rpcTarget to rpcUrl + const opts = { + type, + rpcUrl: rpcTarget, + } + this._configureProvider(opts) this._proxy.on('block', this._logBlock.bind(this)) this._proxy.on('error', this.verifyNetwork.bind(this)) this.ethQuery = new EthQuery(this._proxy) @@ -53,7 +82,7 @@ module.exports = class NetworkController extends EventEmitter { lookupNetwork () { // Prevent firing when provider is not defined. if (!this.ethQuery || !this.ethQuery.sendAsync) { - return + return log.warn('NetworkController - lookupNetwork aborted due to missing ethQuery') } this.ethQuery.sendAsync({ method: 'net_version' }, (err, network) => { if (err) return this.setNetworkState('loading') @@ -76,14 +105,17 @@ module.exports = class NetworkController extends EventEmitter { return this.getRpcAddressForType(provider.type) } - async setProviderType (type) { + async setProviderType (type, forceUpdate = false) { assert(type !== 'rpc', `NetworkController.setProviderType - cannot connect by type "rpc"`) // skip if type already matches - if (type === this.getProviderConfig().type) return + if (type === this.getProviderConfig().type && !forceUpdate) { + return + } + const rpcTarget = this.getRpcAddressForType(type) assert(rpcTarget, `NetworkController - unknown rpc address for type "${type}"`) this.providerStore.updateState({ type, rpcTarget }) - this._switchNetwork({ rpcUrl: rpcTarget }) + this._switchNetwork({ type }) } getProviderConfig () { @@ -91,22 +123,65 @@ module.exports = class NetworkController extends EventEmitter { } getRpcAddressForType (type, provider = this.getProviderConfig()) { - if (RPC_ADDRESS_LIST[type]) return RPC_ADDRESS_LIST[type] - return provider && provider.rpcTarget ? provider.rpcTarget : DEFAULT_RPC + if (this._networkEndpoints[type]) { + return this._networkEndpoints[type] + } + + return provider && provider.rpcTarget ? provider.rpcTarget : this._defaultRpc } // // Private // - _switchNetwork (providerParams) { + _switchNetwork (opts) { this.setNetworkState('loading') - this._configureStandardProvider(providerParams) + this._configureProvider(opts) this.emit('networkDidChange') } - _configureStandardProvider (_providerParams) { - const providerParams = extend(this._baseProviderParams, _providerParams) + _configureProvider (opts) { + // type-based rpc endpoints + const { type } = opts + if (type) { + // type-based infura rpc endpoints + const isInfura = INFURA_PROVIDER_TYPES.includes(type) + opts.rpcUrl = this.getRpcAddressForType(type) + if (isInfura) { + this._configureInfuraProvider(opts) + // other type-based rpc endpoints + } else { + this._configureStandardProvider(opts) + } + // url-based rpc endpoints + } else { + this._configureStandardProvider(opts) + } + } + + _configureInfuraProvider (opts) { + log.info('_configureInfuraProvider', opts) + const blockTrackerProvider = createInfuraProvider({ + network: opts.type, + }) + const providerParams = extend(this._baseProviderParams, { + rpcUrl: opts.rpcUrl, + engineParams: { + pollingInterval: 8000, + blockTrackerProvider, + }, + }) + const provider = createMetamaskProvider(providerParams) + this._setProvider(provider) + } + + _configureStandardProvider ({ rpcUrl }) { + const providerParams = extend(this._baseProviderParams, { + rpcUrl, + engineParams: { + pollingInterval: 8000, + }, + }) const provider = createMetamaskProvider(providerParams) this._setProvider(provider) } diff --git a/app/scripts/controllers/preferences.js b/app/scripts/controllers/preferences.js index 10004caad..39d15fd83 100644 --- a/app/scripts/controllers/preferences.js +++ b/app/scripts/controllers/preferences.js @@ -9,11 +9,21 @@ class PreferencesController { frequentRpcList: [], currentAccountTab: 'history', tokens: [], + useBlockie: false, + featureFlags: {}, }, opts.initState) this.store = new ObservableStore(initState) } // PUBLIC METHODS + setUseBlockie (val) { + this.store.updateState({ useBlockie: val }) + } + + getUseBlockie () { + return this.store.getState().useBlockie + } + setSelectedAddress (_address) { return new Promise((resolve, reject) => { const address = normalizeAddress(_address) @@ -26,22 +36,24 @@ class PreferencesController { return this.store.getState().selectedAddress } - addToken (rawAddress, symbol, decimals) { + async addToken (rawAddress, symbol, decimals) { const address = normalizeAddress(rawAddress) const newEntry = { address, symbol, decimals } const tokens = this.store.getState().tokens - const previousIndex = tokens.find((token, index) => { + const previousEntry = tokens.find((token, index) => { return token.address === address }) + const previousIndex = tokens.indexOf(previousEntry) - if (previousIndex) { + if (previousEntry) { tokens[previousIndex] = newEntry } else { tokens.push(newEntry) } this.store.updateState({ tokens }) + return Promise.resolve(tokens) } @@ -91,6 +103,22 @@ class PreferencesController { getFrequentRpcList () { return this.store.getState().frequentRpcList } + + setFeatureFlag (feature, activated) { + const currentFeatureFlags = this.store.getState().featureFlags + const updatedFeatureFlags = { + ...currentFeatureFlags, + [feature]: activated, + } + + this.store.updateState({ featureFlags: updatedFeatureFlags }) + + return Promise.resolve(updatedFeatureFlags) + } + + getFeatureFlags () { + return this.store.getState().featureFlags + } // // PRIVATE METHODS // diff --git a/app/scripts/controllers/recent-blocks.js b/app/scripts/controllers/recent-blocks.js new file mode 100644 index 000000000..4a906261e --- /dev/null +++ b/app/scripts/controllers/recent-blocks.js @@ -0,0 +1,44 @@ +const ObservableStore = require('obs-store') +const extend = require('xtend') + +class RecentBlocksController { + + constructor (opts = {}) { + const { blockTracker } = opts + this.blockTracker = blockTracker + this.historyLength = opts.historyLength || 40 + + const initState = extend({ + recentBlocks: [], + }, opts.initState) + this.store = new ObservableStore(initState) + + this.blockTracker.on('block', this.processBlock.bind(this)) + } + + resetState () { + this.store.updateState({ + recentBlocks: [], + }) + } + + processBlock (newBlock) { + const block = extend(newBlock, { + gasPrices: newBlock.transactions.map((tx) => { + return tx.gasPrice + }), + }) + delete block.transactions + + const state = this.store.getState() + state.recentBlocks.push(block) + + while (state.recentBlocks.length > this.historyLength) { + state.recentBlocks.shift() + } + + this.store.updateState(state) + } +} + +module.exports = RecentBlocksController diff --git a/app/scripts/controllers/transactions.js b/app/scripts/controllers/transactions.js index a861c0342..7f3130540 100644 --- a/app/scripts/controllers/transactions.js +++ b/app/scripts/controllers/transactions.js @@ -59,7 +59,6 @@ module.exports = class TransactionController extends EventEmitter { this.pendingTxTracker = new PendingTransactionTracker({ provider: this.provider, nonceTracker: this.nonceTracker, - retryTimePeriod: 86400000, // Retry 3500 blocks, or about 1 day. publishTransaction: (rawTx) => this.query.sendRawTransaction(rawTx), getPendingTransactions: this.txStateManager.getPendingTransactions.bind(this.txStateManager), getCompletedTransactions: this.txStateManager.getConfirmedTransactions.bind(this.txStateManager), @@ -72,6 +71,12 @@ module.exports = class TransactionController extends EventEmitter { }) this.pendingTxTracker.on('tx:failed', this.txStateManager.setTxStatusFailed.bind(this.txStateManager)) this.pendingTxTracker.on('tx:confirmed', this.txStateManager.setTxStatusConfirmed.bind(this.txStateManager)) + this.pendingTxTracker.on('tx:block-update', (txMeta, latestBlockNumber) => { + if (!txMeta.firstRetryBlockNumber) { + txMeta.firstRetryBlockNumber = latestBlockNumber + this.txStateManager.updateTx(txMeta, 'transactions/pending-tx-tracker#event: tx:block-update') + } + }) this.pendingTxTracker.on('tx:retry', (txMeta) => { if (!('retryCount' in txMeta)) txMeta.retryCount = 0 txMeta.retryCount++ @@ -132,18 +137,20 @@ module.exports = class TransactionController extends EventEmitter { async newUnapprovedTransaction (txParams) { log.debug(`MetaMaskController newUnapprovedTransaction ${JSON.stringify(txParams)}`) - const txMeta = await this.addUnapprovedTransaction(txParams) - this.emit('newUnapprovedTx', txMeta) + const initialTxMeta = await this.addUnapprovedTransaction(txParams) + this.emit('newUnapprovedTx', initialTxMeta) // listen for tx completion (success, fail) return new Promise((resolve, reject) => { - this.txStateManager.once(`${txMeta.id}:finished`, (completedTx) => { - switch (completedTx.status) { + this.txStateManager.once(`${initialTxMeta.id}:finished`, (finishedTxMeta) => { + switch (finishedTxMeta.status) { case 'submitted': - return resolve(completedTx.hash) + return resolve(finishedTxMeta.hash) case 'rejected': return reject(new Error('MetaMask Tx Signature: User denied transaction signature.')) + case 'failed': + return reject(new Error(finishedTxMeta.err.message)) default: - return reject(new Error(`MetaMask Tx Signature: Unknown problem: ${JSON.stringify(completedTx.txParams)}`)) + return reject(new Error(`MetaMask Tx Signature: Unknown problem: ${JSON.stringify(finishedTxMeta.txParams)}`)) } }) }) @@ -171,6 +178,7 @@ module.exports = class TransactionController extends EventEmitter { const txParams = txMeta.txParams // ensure value txMeta.gasPriceSpecified = Boolean(txParams.gasPrice) + txMeta.nonceSpecified = Boolean(txParams.nonce) const gasPrice = txParams.gasPrice || await this.query.gasPrice() txParams.gasPrice = ethUtil.addHexPrefix(gasPrice.toString(16)) txParams.value = txParams.value || '0x0' @@ -178,6 +186,17 @@ module.exports = class TransactionController extends EventEmitter { return await this.txGasUtil.analyzeGasUsage(txMeta) } + async retryTransaction (txId) { + this.txStateManager.setTxStatusUnapproved(txId) + const txMeta = this.txStateManager.getTx(txId) + txMeta.lastGasPrice = txMeta.txParams.gasPrice + this.txStateManager.updateTx(txMeta, 'retryTransaction: manual retry') + } + + async updateTransaction (txMeta) { + this.txStateManager.updateTx(txMeta, 'confTx: user updated transaction') + } + async updateAndApproveTransaction (txMeta) { this.txStateManager.updateTx(txMeta, 'confTx: user approved transaction') await this.approveTransaction(txMeta.id) @@ -194,7 +213,12 @@ module.exports = class TransactionController extends EventEmitter { // wait for a nonce nonceLock = await this.nonceTracker.getNonceLock(fromAddress) // add nonce to txParams - txMeta.txParams.nonce = ethUtil.addHexPrefix(nonceLock.nextNonce.toString(16)) + const nonce = txMeta.nonceSpecified ? txMeta.txParams.nonce : nonceLock.nextNonce + if (nonce > nonceLock.nextNonce) { + const message = `Specified nonce may not be larger than account's next valid nonce.` + throw new Error(message) + } + txMeta.txParams.nonce = ethUtil.addHexPrefix(nonce.toString(16)) // add nonce debugging information to txMeta txMeta.nonceDetails = nonceLock.nonceDetails this.txStateManager.updateTx(txMeta, 'transactions#approveTransaction') diff --git a/app/scripts/inpage.js b/app/scripts/inpage.js index b6889b00f..9261e7d64 100644 --- a/app/scripts/inpage.js +++ b/app/scripts/inpage.js @@ -31,6 +31,13 @@ var inpageProvider = new MetamaskInpageProvider(metamaskStream) // setup web3 // +if (typeof window.web3 !== 'undefined') { + throw new Error(`MetaMask detected another web3. + MetaMask will not work reliably with another web3 extension. + This usually happens if you have two MetaMasks installed, + or MetaMask and another web3 extension. Please remove one + and try again.`) +} var web3 = new Web3(inpageProvider) web3.setProvider = function () { log.debug('MetaMask - overrode web3.setProvider') diff --git a/app/scripts/lib/account-tracker.js b/app/scripts/lib/account-tracker.js index ce6642150..8c3dd8c71 100644 --- a/app/scripts/lib/account-tracker.js +++ b/app/scripts/lib/account-tracker.js @@ -117,8 +117,6 @@ class AccountTracker extends EventEmitter { const query = this._query async.parallel({ balance: query.getBalance.bind(query, address), - nonce: query.getTransactionCount.bind(query, address), - code: query.getCode.bind(query, address), }, cb) } diff --git a/app/scripts/lib/inpage-provider.js b/app/scripts/lib/inpage-provider.js index da75c4be2..99cc5d2cf 100644 --- a/app/scripts/lib/inpage-provider.js +++ b/app/scripts/lib/inpage-provider.js @@ -3,6 +3,7 @@ const RpcEngine = require('json-rpc-engine') const createIdRemapMiddleware = require('json-rpc-engine/src/idRemapMiddleware') const createStreamMiddleware = require('json-rpc-middleware-stream') const LocalStorageStore = require('obs-store') +const asStream = require('obs-store/lib/asStream') const ObjectMultiplex = require('obj-multiplex') module.exports = MetamaskInpageProvider @@ -21,9 +22,10 @@ function MetamaskInpageProvider (connectionStream) { // subscribe to metamask public config (one-way) self.publicConfigStore = new LocalStorageStore({ storageKey: 'MetaMask-Config' }) + pump( mux.createStream('publicConfig'), - self.publicConfigStore, + asStream(self.publicConfigStore), (err) => logStreamDisconnectWarning('MetaMask PublicConfigStore', err) ) diff --git a/app/scripts/lib/pending-tx-tracker.js b/app/scripts/lib/pending-tx-tracker.js index 0d7c6a92c..7956a3329 100644 --- a/app/scripts/lib/pending-tx-tracker.js +++ b/app/scripts/lib/pending-tx-tracker.js @@ -23,7 +23,6 @@ module.exports = class PendingTransactionTracker extends EventEmitter { this.query = new EthQuery(config.provider) this.nonceTracker = config.nonceTracker // default is one day - this.retryTimePeriod = config.retryTimePeriod || 86400000 this.getPendingTransactions = config.getPendingTransactions this.getCompletedTransactions = config.getCompletedTransactions this.publishTransaction = config.publishTransaction @@ -65,11 +64,11 @@ module.exports = class PendingTransactionTracker extends EventEmitter { } - resubmitPendingTxs () { + resubmitPendingTxs (block) { const pending = this.getPendingTransactions() // only try resubmitting if their are transactions to resubmit if (!pending.length) return - pending.forEach((txMeta) => this._resubmitTx(txMeta).catch((err) => { + pending.forEach((txMeta) => this._resubmitTx(txMeta, block.number).catch((err) => { /* Dont marked as failed if the error is a "known" transaction warning "there is already a transaction with the same sender-nonce @@ -101,13 +100,19 @@ module.exports = class PendingTransactionTracker extends EventEmitter { })) } - async _resubmitTx (txMeta) { - if (Date.now() > txMeta.time + this.retryTimePeriod) { - const hours = (this.retryTimePeriod / 3.6e+6).toFixed(1) - const err = new Error(`Gave up submitting after ${hours} hours.`) - return this.emit('tx:failed', txMeta.id, err) + async _resubmitTx (txMeta, latestBlockNumber) { + if (!txMeta.firstRetryBlockNumber) { + this.emit('tx:block-update', txMeta, latestBlockNumber) } + const firstRetryBlockNumber = txMeta.firstRetryBlockNumber || latestBlockNumber + const txBlockDistance = Number.parseInt(latestBlockNumber, 16) - Number.parseInt(firstRetryBlockNumber, 16) + + const retryCount = txMeta.retryCount || 0 + + // Exponential backoff to limit retries at publishing + if (txBlockDistance <= Math.pow(2, retryCount) - 1) return + // Only auto-submit already-signed txs: if (!('rawTx' in txMeta)) return diff --git a/app/scripts/lib/tx-gas-utils.js b/app/scripts/lib/tx-gas-utils.js index 7e72ea71d..56bee19f7 100644 --- a/app/scripts/lib/tx-gas-utils.js +++ b/app/scripts/lib/tx-gas-utils.js @@ -22,7 +22,11 @@ module.exports = class txProvideUtil { try { estimatedGasHex = await this.estimateTxGas(txMeta, block.gasLimit) } catch (err) { - if (err.message.includes('Transaction execution error.')) { + const simulationFailed = ( + err.message.includes('Transaction execution error.') || + err.message.includes('gas required exceeds allowance or always failing transaction') + ) + if ( simulationFailed ) { txMeta.simulationFails = true return txMeta } diff --git a/app/scripts/lib/tx-state-manager.js b/app/scripts/lib/tx-state-manager.js index 0fd6bed4b..a8ef39891 100644 --- a/app/scripts/lib/tx-state-manager.js +++ b/app/scripts/lib/tx-state-manager.js @@ -187,6 +187,10 @@ module.exports = class TransactionStateManger extends EventEmitter { this._setTxStatus(txId, 'rejected') } + // should update the status of the tx to 'unapproved'. + setTxStatusUnapproved (txId) { + this._setTxStatus(txId, 'unapproved') + } // should update the status of the tx to 'approved'. setTxStatusApproved (txId) { this._setTxStatus(txId, 'approved') @@ -236,7 +240,7 @@ module.exports = class TransactionStateManger extends EventEmitter { txMeta.status = status this.emit(`${txMeta.id}:${status}`, txId) this.emit(`tx:status-update`, txId, status) - if (status === 'submitted' || status === 'rejected') { + if (['submitted', 'rejected', 'failed'].includes(status)) { this.emit(`${txMeta.id}:finished`, txMeta) } this.updateTx(txMeta, `txStateManager: setting status to ${status}`) diff --git a/app/scripts/metamask-controller.js b/app/scripts/metamask-controller.js index bd71da8e0..b50a04703 100644 --- a/app/scripts/metamask-controller.js +++ b/app/scripts/metamask-controller.js @@ -3,6 +3,7 @@ const extend = require('xtend') const pump = require('pump') const Dnode = require('dnode') const ObservableStore = require('obs-store') +const asStream = require('obs-store/lib/asStream') const AccountTracker = require('./lib/account-tracker') const EthQuery = require('eth-query') const RpcEngine = require('json-rpc-engine') @@ -22,6 +23,7 @@ const ShapeShiftController = require('./controllers/shapeshift') const AddressBookController = require('./controllers/address-book') const InfuraController = require('./controllers/infura') const BlacklistController = require('./controllers/blacklist') +const RecentBlocksController = require('./controllers/recent-blocks') const MessageManager = require('./lib/message-manager') const PersonalMessageManager = require('./lib/personal-message-manager') const TypedMessageManager = require('./lib/typed-message-manager') @@ -31,6 +33,7 @@ const ConfigManager = require('./lib/config-manager') const nodeify = require('./lib/nodeify') const accountImporter = require('./account-import-strategies') const getBuyEthUrl = require('./lib/buy-eth-url') +const Mutex = require('await-semaphore').Mutex const version = require('../manifest.json').version module.exports = class MetamaskController extends EventEmitter { @@ -38,10 +41,12 @@ module.exports = class MetamaskController extends EventEmitter { constructor (opts) { super() + this.sendUpdate = debounce(this.privateSendUpdate.bind(this), 200) this.opts = opts const initState = opts.initState || {} + this.recordFirstTimeInfo(initState) // platform-specific api this.platform = opts.platform @@ -49,6 +54,9 @@ module.exports = class MetamaskController extends EventEmitter { // observable state store this.store = new ObservableStore(initState) + // lock to ensure only one vault created at once + this.createVaultMutex = new Mutex() + // network store this.networkController = new NetworkController(initState.NetworkController) @@ -84,6 +92,10 @@ module.exports = class MetamaskController extends EventEmitter { this.provider = this.initializeProvider() this.blockTracker = this.provider._blockTracker + this.recentBlocksController = new RecentBlocksController({ + blockTracker: this.blockTracker, + }) + // eth data query tools this.ethQuery = new EthQuery(this.provider) // account tracker watches balances, nonces, and any code at their address. @@ -144,6 +156,8 @@ module.exports = class MetamaskController extends EventEmitter { // notices this.noticeController = new NoticeController({ initState: initState.NoticeController, + version, + firstVersion: initState.firstTimeInfo.version, }) this.noticeController.updateNoticesList() // to be uncommented when retrieving notices from a remote server. @@ -187,25 +201,30 @@ module.exports = class MetamaskController extends EventEmitter { this.blacklistController.store.subscribe((state) => { this.store.updateState({ BlacklistController: state }) }) + this.recentBlocksController.store.subscribe((state) => { + this.store.updateState({ RecentBlocks: state }) + }) this.infuraController.store.subscribe((state) => { this.store.updateState({ InfuraController: state }) }) // manual mem state subscriptions - this.networkController.store.subscribe(this.sendUpdate.bind(this)) - this.accountTracker.store.subscribe(this.sendUpdate.bind(this)) - this.txController.memStore.subscribe(this.sendUpdate.bind(this)) - this.balancesController.store.subscribe(this.sendUpdate.bind(this)) - this.messageManager.memStore.subscribe(this.sendUpdate.bind(this)) - this.personalMessageManager.memStore.subscribe(this.sendUpdate.bind(this)) - this.typedMessageManager.memStore.subscribe(this.sendUpdate.bind(this)) - this.keyringController.memStore.subscribe(this.sendUpdate.bind(this)) - this.preferencesController.store.subscribe(this.sendUpdate.bind(this)) - this.addressBookController.store.subscribe(this.sendUpdate.bind(this)) - this.currencyController.store.subscribe(this.sendUpdate.bind(this)) - this.noticeController.memStore.subscribe(this.sendUpdate.bind(this)) - this.shapeshiftController.store.subscribe(this.sendUpdate.bind(this)) - this.infuraController.store.subscribe(this.sendUpdate.bind(this)) + const sendUpdate = this.sendUpdate.bind(this) + this.networkController.store.subscribe(sendUpdate) + this.accountTracker.store.subscribe(sendUpdate) + this.txController.memStore.subscribe(sendUpdate) + this.balancesController.store.subscribe(sendUpdate) + this.messageManager.memStore.subscribe(sendUpdate) + this.personalMessageManager.memStore.subscribe(sendUpdate) + this.typedMessageManager.memStore.subscribe(sendUpdate) + this.keyringController.memStore.subscribe(sendUpdate) + this.preferencesController.store.subscribe(sendUpdate) + this.recentBlocksController.store.subscribe(sendUpdate) + this.addressBookController.store.subscribe(sendUpdate) + this.currencyController.store.subscribe(sendUpdate) + this.noticeController.memStore.subscribe(sendUpdate) + this.shapeshiftController.store.subscribe(sendUpdate) + this.infuraController.store.subscribe(sendUpdate) } // @@ -289,6 +308,7 @@ module.exports = class MetamaskController extends EventEmitter { this.currencyController.store.getState(), this.noticeController.memStore.getState(), this.infuraController.store.getState(), + this.recentBlocksController.store.getState(), // config manager this.configManager.getConfig(), this.shapeshiftController.store.getState(), @@ -315,6 +335,7 @@ module.exports = class MetamaskController extends EventEmitter { // etc getState: (cb) => cb(null, this.getState()), setCurrentCurrency: this.setCurrentCurrency.bind(this), + setUseBlockie: this.setUseBlockie.bind(this), markAccountsFound: this.markAccountsFound.bind(this), // coinbase @@ -332,6 +353,7 @@ module.exports = class MetamaskController extends EventEmitter { submitPassword: nodeify(keyringController.submitPassword, keyringController), // network management + setNetworkEndpoints: nodeify(networkController.setNetworkEndpoints, networkController), setProviderType: nodeify(networkController.setProviderType, networkController), setCustomRpc: nodeify(this.setCustomRpc, this), @@ -340,6 +362,7 @@ module.exports = class MetamaskController extends EventEmitter { addToken: nodeify(preferencesController.addToken, preferencesController), removeToken: nodeify(preferencesController.removeToken, preferencesController), setCurrentAccountTab: nodeify(preferencesController.setCurrentAccountTab, preferencesController), + setFeatureFlag: nodeify(preferencesController.setFeatureFlag, preferencesController), // AddressController setAddressBook: nodeify(addressBookController.setAddressBook, addressBookController), @@ -354,7 +377,9 @@ module.exports = class MetamaskController extends EventEmitter { // txController cancelTransaction: nodeify(txController.cancelTransaction, txController), + updateTransaction: nodeify(txController.updateTransaction, txController), updateAndApproveTransaction: nodeify(txController.updateAndApproveTransaction, txController), + retryTransaction: nodeify(this.retryTransaction, this), // messageManager signMessage: nodeify(this.signMessage, this), @@ -452,7 +477,7 @@ module.exports = class MetamaskController extends EventEmitter { setupPublicConfig (outStream) { pump( - this.publicConfigStore, + asStream(this.publicConfigStore), outStream, (err) => { if (err) log.error(err) @@ -468,15 +493,34 @@ module.exports = class MetamaskController extends EventEmitter { // Vault Management // - async createNewVaultAndKeychain (password, cb) { - const vault = await this.keyringController.createNewVaultAndKeychain(password) - this.selectFirstIdentity(vault) + async createNewVaultAndKeychain (password) { + const release = await this.createVaultMutex.acquire() + let vault + + try { + const accounts = await this.keyringController.getAccounts() + + if (accounts.length > 0) { + vault = await this.keyringController.fullUpdate() + + } else { + vault = await this.keyringController.createNewVaultAndKeychain(password) + this.selectFirstIdentity(vault) + } + release() + } catch (err) { + release() + throw err + } + return vault } - async createNewVaultAndRestore (password, seed, cb) { + async createNewVaultAndRestore (password, seed) { + const release = await this.createVaultMutex.acquire() const vault = await this.keyringController.createNewVaultAndRestore(password, seed) this.selectFirstIdentity(vault) + release() return vault } @@ -546,6 +590,14 @@ module.exports = class MetamaskController extends EventEmitter { // // Identity Management // + // + + async retryTransaction (txId, cb) { + await this.txController.retryTransaction(txId) + const state = await this.getState() + return state + } + newUnsignedMessage (msgParams, cb) { const msgId = this.messageManager.addUnapprovedMessage(msgParams) @@ -774,4 +826,22 @@ module.exports = class MetamaskController extends EventEmitter { return rpcTarget } + setUseBlockie (val, cb) { + try { + this.preferencesController.setUseBlockie(val) + cb(null) + } catch (err) { + cb(err) + } + } + + recordFirstTimeInfo (initState) { + if (!('firstTimeInfo' in initState)) { + initState.firstTimeInfo = { + version, + date: Date.now(), + } + } + } + } diff --git a/app/scripts/migrations/020.js b/app/scripts/migrations/020.js new file mode 100644 index 000000000..8159b3e70 --- /dev/null +++ b/app/scripts/migrations/020.js @@ -0,0 +1,41 @@ +const version = 20 + +/* + +This migration ensures previous installations +get a `firstTimeInfo` key on the metamask state, +so that we can version notices in the future. + +*/ + +const clone = require('clone') + +module.exports = { + version, + + migrate: function (originalVersionedData) { + const versionedData = clone(originalVersionedData) + versionedData.meta.version = version + try { + const state = versionedData.data + const newState = transformState(state) + versionedData.data = newState + } catch (err) { + console.warn(`MetaMask Migration #${version}` + err.stack) + } + return Promise.resolve(versionedData) + }, +} + +function transformState (state) { + const newState = state + if ('metamask' in newState && + !('firstTimeInfo' in newState.metamask)) { + newState.metamask.firstTimeInfo = { + version: '3.12.0', + date: Date.now(), + } + } + return newState +} + diff --git a/app/scripts/migrations/index.js b/app/scripts/migrations/index.js index e9cbd7b98..9d0631042 100644 --- a/app/scripts/migrations/index.js +++ b/app/scripts/migrations/index.js @@ -30,4 +30,5 @@ module.exports = [ require('./017'), require('./018'), require('./019'), + require('./020'), ] diff --git a/app/scripts/notice-controller.js b/app/scripts/notice-controller.js index 57aad40c5..db2b8c4f4 100644 --- a/app/scripts/notice-controller.js +++ b/app/scripts/notice-controller.js @@ -1,13 +1,17 @@ const EventEmitter = require('events').EventEmitter +const semver = require('semver') const extend = require('xtend') const ObservableStore = require('obs-store') const hardCodedNotices = require('../../notices/notices.json') +const uniqBy = require('lodash.uniqby') module.exports = class NoticeController extends EventEmitter { constructor (opts) { super() this.noticePoller = null + this.firstVersion = opts.firstVersion + this.version = opts.version const initState = extend({ noticesList: [], }, opts.initState) @@ -30,9 +34,9 @@ module.exports = class NoticeController extends EventEmitter { return unreadNotices[unreadNotices.length - 1] } - setNoticesList (noticesList) { + async setNoticesList (noticesList) { this.store.updateState({ noticesList }) - return Promise.resolve(true) + return true } markNoticeRead (noticeToMark, cb) { @@ -50,12 +54,14 @@ module.exports = class NoticeController extends EventEmitter { } } - updateNoticesList () { - return this._retrieveNoticeData().then((newNotices) => { - var oldNotices = this.getNoticesList() - var combinedNotices = this._mergeNotices(oldNotices, newNotices) - return Promise.resolve(this.setNoticesList(combinedNotices)) - }) + async updateNoticesList () { + const newNotices = await this._retrieveNoticeData() + const oldNotices = this.getNoticesList() + const combinedNotices = this._mergeNotices(oldNotices, newNotices) + const filteredNotices = this._filterNotices(combinedNotices) + const result = this.setNoticesList(filteredNotices) + this._updateMemstore() + return result } startPolling () { @@ -68,22 +74,30 @@ module.exports = class NoticeController extends EventEmitter { } _mergeNotices (oldNotices, newNotices) { - var noticeMap = this._mapNoticeIds(oldNotices) - newNotices.forEach((notice) => { - if (noticeMap.indexOf(notice.id) === -1) { - oldNotices.push(notice) + return uniqBy(oldNotices.concat(newNotices), 'id') + } + + _filterNotices(notices) { + return notices.filter((newNotice) => { + if ('version' in newNotice) { + const satisfied = semver.satisfies(this.version, newNotice.version) + return satisfied + } + if ('firstVersion' in newNotice) { + const satisfied = semver.satisfies(this.firstVersion, newNotice.firstVersion) + return satisfied } + return true }) - return oldNotices } _mapNoticeIds (notices) { return notices.map((notice) => notice.id) } - _retrieveNoticeData () { + async _retrieveNoticeData () { // Placeholder for the API. - return Promise.resolve(hardCodedNotices) + return hardCodedNotices } _updateMemstore () { diff --git a/app/scripts/platforms/extension.js b/app/scripts/platforms/extension.js index 2f47512eb..f5cc255d1 100644 --- a/app/scripts/platforms/extension.js +++ b/app/scripts/platforms/extension.js @@ -17,6 +17,11 @@ class ExtensionPlatform { return extension.runtime.getManifest().version } + openExtensionInBrowser () { + const extensionURL = extension.runtime.getURL('home.html') + this.openWindow({ url: extensionURL }) + } + getPlatformInfo (cb) { try { extension.runtime.getPlatformInfo((platform) => { diff --git a/app/scripts/popup.js b/app/scripts/popup.js index 5f17f0651..d0952af6a 100644 --- a/app/scripts/popup.js +++ b/app/scripts/popup.js @@ -1,5 +1,6 @@ const injectCss = require('inject-css') -const MetaMaskUiCss = require('../../ui/css') +const OldMetaMaskUiCss = require('../../old-ui/css') +const NewMetaMaskUiCss = require('../../ui/css') const startPopup = require('./popup-core') const PortStream = require('./lib/port-stream.js') const isPopupOrNotification = require('./lib/is-popup-or-notification') @@ -11,10 +12,6 @@ const notificationManager = new NotificationManager() // create platform global global.platform = new ExtensionPlatform() -// inject css -const css = MetaMaskUiCss() -injectCss(css) - // identify window type (popup, notification) const windowType = isPopupOrNotification() global.METAMASK_UI_TYPE = windowType @@ -28,8 +25,21 @@ const connectionStream = new PortStream(extensionPort) const container = document.getElementById('app-content') startPopup({ container, connectionStream }, (err, store) => { if (err) return displayCriticalError(err) + + let betaUIState = store.getState().metamask.featureFlags.betaUI + let css = betaUIState ? NewMetaMaskUiCss() : OldMetaMaskUiCss() + let deleteInjectedCss = injectCss(css) + let newBetaUIState + store.subscribe(() => { const state = store.getState() + newBetaUIState = state.metamask.featureFlags.betaUI + if (newBetaUIState !== betaUIState) { + deleteInjectedCss() + betaUIState = newBetaUIState + css = betaUIState ? NewMetaMaskUiCss() : OldMetaMaskUiCss() + deleteInjectedCss = injectCss(css) + } if (state.appState.shouldClose) notificationManager.closePopup() }) }) diff --git a/development/states/first-time.json b/development/states/first-time.json index b2cc8ef8f..480839d59 100644 --- a/development/states/first-time.json +++ b/development/states/first-time.json @@ -8,6 +8,7 @@ "frequentRpcList": [], "unapprovedTxs": {}, "currentCurrency": "USD", + "featureFlags": {"betaUI": true}, "conversionRate": 12.7527416, "conversionDate": 1487624341, "noActiveNotices": false, diff --git a/development/states/pending-tx.json b/development/states/pending-tx.json new file mode 100644 index 000000000..bfa93f7ae --- /dev/null +++ b/development/states/pending-tx.json @@ -0,0 +1,739 @@ +{ + "metamask": { + "isInitialized": true, + "isUnlocked": true, + "isMascara": false, + "rpcTarget": "https://rawtestrpc.metamask.io/", + "identities": { + "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825": { + "address": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825", + "name": "Account 1" + } + }, + "unapprovedTxs": {}, + "noActiveNotices": true, + "frequentRpcList": [ + "http://192.168.1.34:7545/" + ], + "addressBook": [], + "tokenExchangeRates": {}, + "coinOptions": {}, + "provider": { + "type": "mainnet", + "rpcTarget": "https://mainnet.infura.io/metamask" + }, + "network": "1", + "accounts": { + "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825": { + "code": "0x", + "balance": "0x1b3f641ed0c2f62", + "nonce": "0x35", + "address": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825" + } + }, + "currentBlockGasLimit": "0x66df83", + "selectedAddressTxList": [ + { + "id": 3516145537630216, + "time": 1512615655535, + "status": "submitted", + "metamaskNetworkId": "1", + "txParams": { + "from": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825", + "to": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825", + "value": "0x16345785d8a0000", + "gasPrice": "0xc1b710800", + "gas": "0x7b0c", + "nonce": "0x35", + "chainId": "0x1" + }, + "gasPriceSpecified": false, + "gasLimitSpecified": false, + "estimatedGas": "5208", + "history": [ + { + "id": 3516145537630216, + "time": 1512615655535, + "status": "unapproved", + "metamaskNetworkId": "1", + "txParams": { + "from": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825", + "to": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825", + "value": "0x16345785d8a0000", + "gasPrice": "0xe6f7cec00", + "gas": "0x7b0c" + }, + "gasPriceSpecified": false, + "gasLimitSpecified": false, + "estimatedGas": "5208" + }, + [ + { + "op": "replace", + "path": "/txParams/gasPrice", + "value": "0xc1b710800", + "note": "confTx: user approved transaction" + } + ], + [ + { + "op": "replace", + "path": "/status", + "value": "approved", + "note": "txStateManager: setting status to approved" + } + ], + [ + { + "op": "add", + "path": "/txParams/nonce", + "value": "0x35", + "note": "transactions#approveTransaction" + }, + { + "op": "add", + "path": "/nonceDetails", + "value": { + "params": { + "highestLocalNonce": 53, + "highestSuggested": 53, + "nextNetworkNonce": 53 + }, + "local": { + "name": "local", + "nonce": 53, + "details": { + "startPoint": 53, + "highest": 53 + } + }, + "network": { + "name": "network", + "nonce": 53, + "details": { + "baseCount": 53 + } + } + } + } + ], + [ + { + "op": "add", + "path": "/txParams/chainId", + "value": "0x1", + "note": "txStateManager: setting status to signed" + }, + { + "op": "replace", + "path": "/status", + "value": "signed" + } + ], + [ + { + "op": "add", + "path": "/rawTx", + "value": "0xf86c35850c1b710800827b0c94fdea65c8e26263f6d9a1b5de9555d2931a33b82588016345785d8a00008026a0f5142ba79a13ca7ec65548953017edafb217803244bbf9821d9ad077d89921e9a03afcb614169c90be9905d5b469d06984825c76675d3a535937cdb8f2ad1c0a95", + "note": "transactions#publishTransaction" + } + ], + [ + { + "op": "add", + "path": "/hash", + "value": "0x7ce19c0d128ca11293b44a4e6d3cc9063665c00ea8c8eb400f548e132c147353", + "note": "transactions#setTxHash" + } + ], + [ + { + "op": "replace", + "path": "/status", + "value": "submitted", + "note": "txStateManager: setting status to submitted" + } + ], + [ + { + "op": "add", + "path": "/firstRetryBlockNumber", + "value": "0x478ab3", + "note": "transactions/pending-tx-tracker#event: tx:block-update" + } + ] + ], + "nonceDetails": { + "params": { + "highestLocalNonce": 53, + "highestSuggested": 53, + "nextNetworkNonce": 53 + }, + "local": { + "name": "local", + "nonce": 53, + "details": { + "startPoint": 53, + "highest": 53 + } + }, + "network": { + "name": "network", + "nonce": 53, + "details": { + "baseCount": 53 + } + } + }, + "rawTx": "0xf86c35850c1b710800827b0c94fdea65c8e26263f6d9a1b5de9555d2931a33b82588016345785d8a00008026a0f5142ba79a13ca7ec65548953017edafb217803244bbf9821d9ad077d89921e9a03afcb614169c90be9905d5b469d06984825c76675d3a535937cdb8f2ad1c0a95", + "hash": "0x7ce19c0d128ca11293b44a4e6d3cc9063665c00ea8c8eb400f548e132c147353", + "firstRetryBlockNumber": "0x478ab3" + }, + { + "id": 3516145537630211, + "time": 1512613432658, + "status": "confirmed", + "metamaskNetworkId": "1", + "txParams": { + "from": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825", + "to": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825", + "value": "0x16345785d8a0000", + "gasPrice": "0xba43b7400", + "gas": "0x7b0c", + "nonce": "0x34", + "chainId": "0x1" + }, + "gasPriceSpecified": false, + "gasLimitSpecified": false, + "estimatedGas": "5208", + "history": [ + { + "id": 3516145537630211, + "time": 1512613432658, + "status": "unapproved", + "metamaskNetworkId": "1", + "txParams": { + "from": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825", + "to": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825", + "value": "0x16345785d8a0000", + "gasPrice": "0xdf8475800", + "gas": "0x7b0c" + }, + "gasPriceSpecified": false, + "gasLimitSpecified": false, + "estimatedGas": "5208" + }, + [ + { + "op": "replace", + "path": "/txParams/gasPrice", + "value": "0xba43b7400", + "note": "confTx: user approved transaction" + } + ], + [ + { + "op": "replace", + "path": "/status", + "value": "approved", + "note": "txStateManager: setting status to approved" + } + ], + [ + { + "op": "add", + "path": "/txParams/nonce", + "value": "0x34", + "note": "transactions#approveTransaction" + }, + { + "op": "add", + "path": "/nonceDetails", + "value": { + "params": { + "highestLocalNonce": 52, + "highestSuggested": 52, + "nextNetworkNonce": 52 + }, + "local": { + "name": "local", + "nonce": 52, + "details": { + "startPoint": 52, + "highest": 52 + } + }, + "network": { + "name": "network", + "nonce": 52, + "details": { + "baseCount": 52 + } + } + } + } + ], + [ + { + "op": "add", + "path": "/txParams/chainId", + "value": "0x1", + "note": "txStateManager: setting status to signed" + }, + { + "op": "replace", + "path": "/status", + "value": "signed" + } + ], + [ + { + "op": "add", + "path": "/rawTx", + "value": "0xf86c34850ba43b7400827b0c94fdea65c8e26263f6d9a1b5de9555d2931a33b82588016345785d8a00008026a073a4afdb8e8ad32b0cf9039af56c66baffd60d30e75cee5c1b783208824eafb8a0021ca6c1714a2c71281333ab77f776d3514348ab77967280fca8a5b4be44285e", + "note": "transactions#publishTransaction" + } + ], + [ + { + "op": "add", + "path": "/hash", + "value": "0x5c98409883fdfd3cd24058a83b91470da6c40ffae41a40eb90d7dee0b837d26d", + "note": "transactions#setTxHash" + } + ], + [ + { + "op": "replace", + "path": "/status", + "value": "submitted", + "note": "txStateManager: setting status to submitted" + } + ], + [ + { + "op": "add", + "path": "/firstRetryBlockNumber", + "value": "0x478a2c", + "note": "transactions/pending-tx-tracker#event: tx:block-update" + } + ], + [ + { + "op": "replace", + "path": "/status", + "value": "confirmed", + "note": "txStateManager: setting status to confirmed" + } + ] + ], + "nonceDetails": { + "params": { + "highestLocalNonce": 52, + "highestSuggested": 52, + "nextNetworkNonce": 52 + }, + "local": { + "name": "local", + "nonce": 52, + "details": { + "startPoint": 52, + "highest": 52 + } + }, + "network": { + "name": "network", + "nonce": 52, + "details": { + "baseCount": 52 + } + } + }, + "rawTx": "0xf86c34850ba43b7400827b0c94fdea65c8e26263f6d9a1b5de9555d2931a33b82588016345785d8a00008026a073a4afdb8e8ad32b0cf9039af56c66baffd60d30e75cee5c1b783208824eafb8a0021ca6c1714a2c71281333ab77f776d3514348ab77967280fca8a5b4be44285e", + "hash": "0x5c98409883fdfd3cd24058a83b91470da6c40ffae41a40eb90d7dee0b837d26d", + "firstRetryBlockNumber": "0x478a2c" + }, + { + "id": 3516145537630210, + "time": 1512612826136, + "status": "confirmed", + "metamaskNetworkId": "1", + "txParams": { + "from": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825", + "to": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825", + "value": "0x16345785d8a0000", + "gasPrice": "0xa7a358200", + "gas": "0x7b0c", + "nonce": "0x33", + "chainId": "0x1" + }, + "gasPriceSpecified": false, + "gasLimitSpecified": false, + "estimatedGas": "5208", + "history": [ + { + "id": 3516145537630210, + "time": 1512612826136, + "status": "unapproved", + "metamaskNetworkId": "1", + "txParams": { + "from": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825", + "to": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825", + "value": "0x16345785d8a0000", + "gasPrice": "0xba43b7400", + "gas": "0x7b0c" + }, + "gasPriceSpecified": false, + "gasLimitSpecified": false, + "estimatedGas": "5208" + }, + [ + { + "op": "replace", + "path": "/txParams/gasPrice", + "value": "0xa7a358200", + "note": "confTx: user approved transaction" + } + ], + [ + { + "op": "replace", + "path": "/status", + "value": "approved", + "note": "txStateManager: setting status to approved" + } + ], + [ + { + "op": "add", + "path": "/txParams/nonce", + "value": "0x33", + "note": "transactions#approveTransaction" + }, + { + "op": "add", + "path": "/nonceDetails", + "value": { + "params": { + "highestLocalNonce": 0, + "highestSuggested": 51, + "nextNetworkNonce": 51 + }, + "local": { + "name": "local", + "nonce": 51, + "details": { + "startPoint": 51, + "highest": 51 + } + }, + "network": { + "name": "network", + "nonce": 51, + "details": { + "baseCount": 51 + } + } + } + } + ], + [ + { + "op": "add", + "path": "/txParams/chainId", + "value": "0x1", + "note": "txStateManager: setting status to signed" + }, + { + "op": "replace", + "path": "/status", + "value": "signed" + } + ], + [ + { + "op": "add", + "path": "/rawTx", + "value": "0xf86c33850a7a358200827b0c94fdea65c8e26263f6d9a1b5de9555d2931a33b82588016345785d8a00008026a0021a8cd6c10208cc593e22af53637e5d127cee5cc6f9443a3e758a02afff1d7ca025f7420e974d3f2c668c165040987c72543a8e709bfea3528a62836a6ced9ce8", + "note": "transactions#publishTransaction" + } + ], + [ + { + "op": "add", + "path": "/hash", + "value": "0x289772800898bc9cd414530d8581c0da257a9055e4aaaa6d10d92d700bfbd044", + "note": "transactions#setTxHash" + } + ], + [ + { + "op": "replace", + "path": "/status", + "value": "submitted", + "note": "txStateManager: setting status to submitted" + } + ], + [ + { + "op": "add", + "path": "/firstRetryBlockNumber", + "value": "0x478a04", + "note": "transactions/pending-tx-tracker#event: tx:block-update" + } + ], + [ + { + "op": "replace", + "path": "/status", + "value": "confirmed", + "note": "txStateManager: setting status to confirmed" + } + ] + ], + "nonceDetails": { + "params": { + "highestLocalNonce": 0, + "highestSuggested": 51, + "nextNetworkNonce": 51 + }, + "local": { + "name": "local", + "nonce": 51, + "details": { + "startPoint": 51, + "highest": 51 + } + }, + "network": { + "name": "network", + "nonce": 51, + "details": { + "baseCount": 51 + } + } + }, + "rawTx": "0xf86c33850a7a358200827b0c94fdea65c8e26263f6d9a1b5de9555d2931a33b82588016345785d8a00008026a0021a8cd6c10208cc593e22af53637e5d127cee5cc6f9443a3e758a02afff1d7ca025f7420e974d3f2c668c165040987c72543a8e709bfea3528a62836a6ced9ce8", + "hash": "0x289772800898bc9cd414530d8581c0da257a9055e4aaaa6d10d92d700bfbd044", + "firstRetryBlockNumber": "0x478a04" + }, + { + "id": 3516145537630209, + "time": 1512612809252, + "status": "failed", + "metamaskNetworkId": "1", + "txParams": { + "from": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825", + "to": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825", + "value": "0x16345785d8a0000", + "gasPrice": "0x77359400", + "gas": "0x7b0c", + "nonce": "0x33", + "chainId": "0x1" + }, + "gasPriceSpecified": false, + "gasLimitSpecified": false, + "estimatedGas": "5208", + "history": [ + { + "id": 3516145537630209, + "time": 1512612809252, + "status": "unapproved", + "metamaskNetworkId": "1", + "txParams": { + "from": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825", + "to": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825", + "value": "0x16345785d8a0000", + "gasPrice": "0xba43b7400", + "gas": "0x7b0c" + }, + "gasPriceSpecified": false, + "gasLimitSpecified": false, + "estimatedGas": "5208" + }, + [ + { + "op": "replace", + "path": "/txParams/gasPrice", + "value": "0x77359400", + "note": "confTx: user approved transaction" + } + ], + [ + { + "op": "replace", + "path": "/status", + "value": "approved", + "note": "txStateManager: setting status to approved" + } + ], + [ + { + "op": "add", + "path": "/txParams/nonce", + "value": "0x33", + "note": "transactions#approveTransaction" + }, + { + "op": "add", + "path": "/nonceDetails", + "value": { + "params": { + "highestLocalNonce": 0, + "highestSuggested": 51, + "nextNetworkNonce": 51 + }, + "local": { + "name": "local", + "nonce": 51, + "details": { + "startPoint": 51, + "highest": 51 + } + }, + "network": { + "name": "network", + "nonce": 51, + "details": { + "baseCount": 51 + } + } + } + } + ], + [ + { + "op": "add", + "path": "/txParams/chainId", + "value": "0x1", + "note": "txStateManager: setting status to signed" + }, + { + "op": "replace", + "path": "/status", + "value": "signed" + } + ], + [ + { + "op": "add", + "path": "/rawTx", + "value": "0xf86b338477359400827b0c94fdea65c8e26263f6d9a1b5de9555d2931a33b82588016345785d8a00008025a098624a27ae79b2b1adc63b913850f266a920cb9d93e6588b8df9b8883eb1b323a00cc6fd855723a234f4f93b48caf7a7659366d09e5c5887f0a4c2e5fa68012cd7", + "note": "transactions#publishTransaction" + } + ], + [ + { + "op": "add", + "path": "/err", + "value": { + "message": "Error: [ethjs-rpc] rpc error with payload {\"id\":7801900228852,\"jsonrpc\":\"2.0\",\"params\":[\"0xf86b338477359400827b0c94fdea65c8e26263f6d9a1b5de9555d2931a33b82588016345785d8a00008025a098624a27ae79b2b1adc63b913850f266a920cb9d93e6588b8df9b8883eb1b323a00cc6fd855723a234f4f93b48caf7a7659366d09e5c5887f0a4c2e5fa68012cd7\"],\"method\":\"eth_sendRawTransaction\"} Error: transaction underpriced", + "stack": "Error: [ethjs-rpc] rpc error with payload {\"id\":7801900228852,\"jsonrpc\":\"2.0\",\"params\":[\"0xf86b338477359400827b0c94fdea65c8e26263f6d9a1b5de9555d2931a33b82588016345785d8a00008025a098624a27ae79b2b1adc63b913850f266a920cb9d93e6588b8df9b8883eb1b323a00cc6fd855723a234f4f93b48caf7a7659366d09e5c5887f0a4c2e5fa68012cd7\"],\"method\":\"eth_sendRawTransaction\"} Error: transaction underpriced\n at chrome-extension://ebjbdknjcgcbchkagneicjfpneaghdhb/scripts/background.js:60327:26\n at chrome-extension://ebjbdknjcgcbchkagneicjfpneaghdhb/scripts/background.js:88030:9\n at chrome-extension://ebjbdknjcgcbchkagneicjfpneaghdhb/scripts/background.js:16678:16\n at replenish (chrome-extension://ebjbdknjcgcbchkagneicjfpneaghdhb/scripts/background.js:16522:25)\n at iterateeCallback (chrome-extension://ebjbdknjcgcbchkagneicjfpneaghdhb/scripts/background.js:16512:17)\n at chrome-extension://ebjbdknjcgcbchkagneicjfpneaghdhb/scripts/background.js:16694:16\n at resultObj.id (chrome-extension://ebjbdknjcgcbchkagneicjfpneaghdhb/scripts/background.js:88012:9)\n at chrome-extension://ebjbdknjcgcbchkagneicjfpneaghdhb/scripts/background.js:16813:16\n at replenish (chrome-extension://ebjbdknjcgcbchkagneicjfpneaghdhb/scripts/background.js:16527:17)\n at iterateeCallback (chrome-extension://ebjbdknjcgcbchkagneicjfpneaghdhb/scripts/background.js:16512:17)" + } + } + ], + [ + { + "op": "replace", + "path": "/status", + "value": "failed", + "note": "txStateManager: setting status to failed" + } + ] + ], + "nonceDetails": { + "params": { + "highestLocalNonce": 0, + "highestSuggested": 51, + "nextNetworkNonce": 51 + }, + "local": { + "name": "local", + "nonce": 51, + "details": { + "startPoint": 51, + "highest": 51 + } + }, + "network": { + "name": "network", + "nonce": 51, + "details": { + "baseCount": 51 + } + } + }, + "rawTx": "0xf86b338477359400827b0c94fdea65c8e26263f6d9a1b5de9555d2931a33b82588016345785d8a00008025a098624a27ae79b2b1adc63b913850f266a920cb9d93e6588b8df9b8883eb1b323a00cc6fd855723a234f4f93b48caf7a7659366d09e5c5887f0a4c2e5fa68012cd7", + "err": { + "message": "Error: [ethjs-rpc] rpc error with payload {\"id\":7801900228852,\"jsonrpc\":\"2.0\",\"params\":[\"0xf86b338477359400827b0c94fdea65c8e26263f6d9a1b5de9555d2931a33b82588016345785d8a00008025a098624a27ae79b2b1adc63b913850f266a920cb9d93e6588b8df9b8883eb1b323a00cc6fd855723a234f4f93b48caf7a7659366d09e5c5887f0a4c2e5fa68012cd7\"],\"method\":\"eth_sendRawTransaction\"} Error: transaction underpriced", + "stack": "Error: [ethjs-rpc] rpc error with payload {\"id\":7801900228852,\"jsonrpc\":\"2.0\",\"params\":[\"0xf86b338477359400827b0c94fdea65c8e26263f6d9a1b5de9555d2931a33b82588016345785d8a00008025a098624a27ae79b2b1adc63b913850f266a920cb9d93e6588b8df9b8883eb1b323a00cc6fd855723a234f4f93b48caf7a7659366d09e5c5887f0a4c2e5fa68012cd7\"],\"method\":\"eth_sendRawTransaction\"} Error: transaction underpriced\n at chrome-extension://ebjbdknjcgcbchkagneicjfpneaghdhb/scripts/background.js:60327:26\n at chrome-extension://ebjbdknjcgcbchkagneicjfpneaghdhb/scripts/background.js:88030:9\n at chrome-extension://ebjbdknjcgcbchkagneicjfpneaghdhb/scripts/background.js:16678:16\n at replenish (chrome-extension://ebjbdknjcgcbchkagneicjfpneaghdhb/scripts/background.js:16522:25)\n at iterateeCallback (chrome-extension://ebjbdknjcgcbchkagneicjfpneaghdhb/scripts/background.js:16512:17)\n at chrome-extension://ebjbdknjcgcbchkagneicjfpneaghdhb/scripts/background.js:16694:16\n at resultObj.id (chrome-extension://ebjbdknjcgcbchkagneicjfpneaghdhb/scripts/background.js:88012:9)\n at chrome-extension://ebjbdknjcgcbchkagneicjfpneaghdhb/scripts/background.js:16813:16\n at replenish (chrome-extension://ebjbdknjcgcbchkagneicjfpneaghdhb/scripts/background.js:16527:17)\n at iterateeCallback (chrome-extension://ebjbdknjcgcbchkagneicjfpneaghdhb/scripts/background.js:16512:17)" + } + } + ], + "unapprovedMsgs": {}, + "unapprovedMsgCount": 0, + "unapprovedPersonalMsgs": {}, + "unapprovedPersonalMsgCount": 0, + "unapprovedTypedMessages": {}, + "unapprovedTypedMessagesCount": 0, + "keyringTypes": [ + "Simple Key Pair", + "HD Key Tree" + ], + "keyrings": [ + { + "type": "HD Key Tree", + "accounts": [ + "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825" + ] + } + ], + "computedBalances": {}, + "currentAccountTab": "history", + "tokens": [ + { + "address": "0x0d8775f648430679a709e98d2b0cb6250d2887ef", + "symbol": "BAT", + "decimals": "18" + } + ], + "selectedAddress": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825", + "currentCurrency": "usd", + "conversionRate": 418.62, + "conversionDate": 1512615622, + "infuraNetworkStatus": { + "mainnet": "ok", + "ropsten": "ok", + "kovan": "ok", + "rinkeby": "ok" + }, + "shapeShiftTxList": [], + "lostAccounts": [] + }, + "appState": { + "shouldClose": true, + "menuOpen": false, + "currentView": { + "name": "accountDetail", + "context": "0xfdea65c8e26263f6d9a1b5de9555d2931a33b825" + }, + "accountDetail": { + "subview": "transactions", + "accountExport": "none", + "privateKey": "" + }, + "transForward": false, + "isLoading": false, + "warning": null, + "forgottenPassword": false, + "scrollToBottom": false + }, + "identities": {}, + "version": "3.12.1", + "platform": { + "arch": "x86-64", + "nacl_arch": "x86-64", + "os": "mac" + }, + "browser": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36" +} \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index 620b9b663..195e3f3ca 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -126,11 +126,17 @@ gulp.task('manifest:production', function() { './dist/firefox/manifest.json', './dist/chrome/manifest.json', './dist/edge/manifest.json', + './dist/opera/manifest.json', ],{base: './dist/'}) + + // Exclude chromereload script in production: .pipe(gulpif(!debug,jsoneditor(function(json) { - json.background.scripts = ["scripts/background.js"] + json.background.scripts = json.background.scripts.filter((script) => { + return !script.includes('chromereload') + }) return json }))) + .pipe(gulp.dest('./dist/', { overwrite: true })) }) diff --git a/mascara/src/app/first-time/notice-screen.js b/mascara/src/app/first-time/notice-screen.js index 713f3f242..d09070a95 100644 --- a/mascara/src/app/first-time/notice-screen.js +++ b/mascara/src/app/first-time/notice-screen.js @@ -64,7 +64,7 @@ class NoticeScreen extends Component {
{title}
diff --git a/notices/archive/notice_3.md b/notices/archive/notice_3.md new file mode 100644 index 000000000..59dd0f5c7 --- /dev/null +++ b/notices/archive/notice_3.md @@ -0,0 +1,11 @@ +Please take a moment to [back up your seed phrase again](https://support.metamask.io/kb/article/28-abbu-always-be-backed-up-how-to-make-sure-your-12-word-metamask-seed-phrase-is-backed-up). + +MetaMask has become aware of a previous issue where a very small number of users were shown the wrong seed phrase to back up. The only way to protect yourself from this issue, is to back up your seed phrase again now. + +You can follow the guide at this link: + +[https://support.metamask.io/kb/article/28-abbu-always-be-backed-up-how-to-make-sure-your-12-word-metamask-seed-phrase-is-backed-up](https://support.metamask.io/kb/article/28-abbu-always-be-backed-up-how-to-make-sure-your-12-word-metamask-seed-phrase-is-backed-up) + +We have fixed the known issue, but will be issuing ongoing bug bounties to help prevent this kind of problem in the future. + +For more information on this issue, [see this blog post](https://medium.com/metamask/seed-phrase-issue-bounty-awarded-e1986e811021) diff --git a/notices/notice-nonce.json b/notices/notice-nonce.json index e440e5c84..bf0d87ab1 100644 --- a/notices/notice-nonce.json +++ b/notices/notice-nonce.json @@ -1 +1 @@ -3 \ No newline at end of file +4 \ No newline at end of file diff --git a/notices/notices.json b/notices/notices.json index e7f74c925..c1fe64f4e 100644 --- a/notices/notices.json +++ b/notices/notices.json @@ -1 +1 @@ -[{"read":false,"date":"Thu Feb 09 2017","title":"Terms of Use","body":"# Terms of Use #\n\n**THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION AND A WAIVER OF CLASS ACTION RIGHTS AS DETAILED IN SECTION 13. PLEASE READ THE AGREEMENT CAREFULLY.**\n\n_Our Terms of Use have been updated as of September 5, 2016_\n\n## 1. Acceptance of Terms ##\n\nMetaMask provides a platform for managing Ethereum (or \"ETH\") accounts, and allowing ordinary websites to interact with the Ethereum blockchain, while keeping the user in control over what transactions they approve, through our website located at[ ](http://metamask.io)[https://metamask.io/](https://metamask.io/) and browser plugin (the \"Site\") — which includes text, images, audio, code and other materials (collectively, the “Contentâ€) and all of the features, and services provided. The Site, and any other features, tools, materials, or other services offered from time to time by MetaMask are referred to here as the “Service.†Please read these Terms of Use (the “Terms†or “Terms of Useâ€) carefully before using the Service. By using or otherwise accessing the Services, or clicking to accept or agree to these Terms where that option is made available, you (1) accept and agree to these Terms (2) consent to the collection, use, disclosure and other handling of information as described in our Privacy Policy and (3) any additional terms, rules and conditions of participation issued by MetaMask from time to time. If you do not agree to the Terms, then you may not access or use the Content or Services.\n\n## 2. Modification of Terms of Use ##\n\nExcept for Section 13, providing for binding arbitration and waiver of class action rights, MetaMask reserves the right, at its sole discretion, to modify or replace the Terms of Use at any time. The most current version of these Terms will be posted on our Site. You shall be responsible for reviewing and becoming familiar with any such modifications. Use of the Services by you after any modification to the Terms constitutes your acceptance of the Terms of Use as modified.\n\n\n\n## 3. Eligibility ##\n\nYou hereby represent and warrant that you are fully able and competent to enter into the terms, conditions, obligations, affirmations, representations and warranties set forth in these Terms and to abide by and comply with these Terms.\n\nMetaMask is a global platform and by accessing the Content or Services, you are representing and warranting that, you are of the legal age of majority in your jurisdiction as is required to access such Services and Content and enter into arrangements as provided by the Service. You further represent that you are otherwise legally permitted to use the service in your jurisdiction including owning cryptographic tokens of value, and interacting with the Services or Content in any way. You further represent you are responsible for ensuring compliance with the laws of your jurisdiction and acknowledge that MetaMask is not liable for your compliance with such laws.\n\n## 4 Account Password and Security ##\n\nWhen setting up an account within MetaMask, you will be responsible for keeping your own account secrets, which may be a twelve-word seed phrase, an account file, or other locally stored secret information. MetaMask encrypts this information locally with a password you provide, that we never send to our servers. You agree to (a) never use the same password for MetaMask that you have ever used outside of this service; (b) keep your secret information and password confidential and do not share them with anyone else; (c) immediately notify MetaMask of any unauthorized use of your account or breach of security. MetaMask cannot and will not be liable for any loss or damage arising from your failure to comply with this section.\n\n## 5. Representations, Warranties, and Risks ##\n\n### 5.1. Warranty Disclaimer ###\n\nYou expressly understand and agree that your use of the Service is at your sole risk. The Service (including the Service and the Content) are provided on an \"AS IS\" and \"as available\" basis, without warranties of any kind, either express or implied, including, without limitation, implied warranties of merchantability, fitness for a particular purpose or non-infringement. You acknowledge that MetaMask has no control over, and no duty to take any action regarding: which users gain access to or use the Service; what effects the Content may have on you; how you may interpret or use the Content; or what actions you may take as a result of having been exposed to the Content. You release MetaMask from all liability for you having acquired or not acquired Content through the Service. MetaMask makes no representations concerning any Content contained in or accessed through the Service, and MetaMask will not be responsible or liable for the accuracy, copyright compliance, legality or decency of material contained in or accessed through the Service.\n\n### 5.2 Sophistication and Risk of Cryptographic Systems ###\n\nBy utilizing the Service or interacting with the Content or platform in any way, you represent that you understand the inherent risks associated with cryptographic systems; and warrant that you have an understanding of the usage and intricacies of native cryptographic tokens, like Ether (ETH) and Bitcoin (BTC), smart contract based tokens such as those that follow the Ethereum Token Standard (https://github.com/ethereum/EIPs/issues/20), and blockchain-based software systems.\n\n### 5.3 Risk of Regulatory Actions in One or More Jurisdictions ###\n\nMetaMask and ETH could be impacted by one or more regulatory inquiries or regulatory action, which could impede or limit the ability of MetaMask to continue to develop, or which could impede or limit your ability to access or use the Service or Ethereum blockchain.\n\n### 5.4 Risk of Weaknesses or Exploits in the Field of Cryptography ###\n\nYou acknowledge and understand that Cryptography is a progressing field. Advances in code cracking or technical advances such as the development of quantum computers may present risks to cryptocurrencies and Services of Content, which could result in the theft or loss of your cryptographic tokens or property. To the extent possible, MetaMask intends to update the protocol underlying Services to account for any advances in cryptography and to incorporate additional security measures, but does not guarantee or otherwise represent full security of the system. By using the Service or accessing Content, you acknowledge these inherent risks.\n\n### 5.5 Volatility of Crypto Currencies ###\n\nYou understand that Ethereum and other blockchain technologies and associated currencies or tokens are highly volatile due to many factors including but not limited to adoption, speculation, technology and security risks. You also acknowledge that the cost of transacting on such technologies is variable and may increase at any time causing impact to any activities taking place on the Ethereum blockchain. You acknowledge these risks and represent that MetaMask cannot be held liable for such fluctuations or increased costs.\n\n### 5.6 Application Security ###\n\nYou acknowledge that Ethereum applications are code subject to flaws and acknowledge that you are solely responsible for evaluating any code provided by the Services or Content and the trustworthiness of any third-party websites, products, smart-contracts, or Content you access or use through the Service. You further expressly acknowledge and represent that Ethereum applications can be written maliciously or negligently, that MetaMask cannot be held liable for your interaction with such applications and that such applications may cause the loss of property or even identity. This warning and others later provided by MetaMask in no way evidence or represent an on-going duty to alert you to all of the potential risks of utilizing the Service or Content.\n\n## 6. Indemnity ##\n\nYou agree to release and to indemnify, defend and hold harmless MetaMask and its parents, subsidiaries, affiliates and agencies, as well as the officers, directors, employees, shareholders and representatives of any of the foregoing entities, from and against any and all losses, liabilities, expenses, damages, costs (including attorneys’ fees and court costs) claims or actions of any kind whatsoever arising or resulting from your use of the Service, your violation of these Terms of Use, and any of your acts or omissions that implicate publicity rights, defamation or invasion of privacy. MetaMask reserves the right, at its own expense, to assume exclusive defense and control of any matter otherwise subject to indemnification by you and, in such case, you agree to cooperate with MetaMask in the defense of such matter.\n\n## 7. Limitation on liability ##\n\nYOU ACKNOWLEDGE AND AGREE THAT YOU ASSUME FULL RESPONSIBILITY FOR YOUR USE OF THE SITE AND SERVICE. YOU ACKNOWLEDGE AND AGREE THAT ANY INFORMATION YOU SEND OR RECEIVE DURING YOUR USE OF THE SITE AND SERVICE MAY NOT BE SECURE AND MAY BE INTERCEPTED OR LATER ACQUIRED BY UNAUTHORIZED PARTIES. YOU ACKNOWLEDGE AND AGREE THAT YOUR USE OF THE SITE AND SERVICE IS AT YOUR OWN RISK. RECOGNIZING SUCH, YOU UNDERSTAND AND AGREE THAT, TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, NEITHER METAMASK NOR ITS SUPPLIERS OR LICENSORS WILL BE LIABLE TO YOU FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY OR OTHER DAMAGES OF ANY KIND, INCLUDING WITHOUT LIMITATION DAMAGES FOR LOSS OF PROFITS, GOODWILL, USE, DATA OR OTHER TANGIBLE OR INTANGIBLE LOSSES OR ANY OTHER DAMAGES BASED ON CONTRACT, TORT, STRICT LIABILITY OR ANY OTHER THEORY (EVEN IF METAMASK HAD BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES), RESULTING FROM THE SITE OR SERVICE; THE USE OR THE INABILITY TO USE THE SITE OR SERVICE; UNAUTHORIZED ACCESS TO OR ALTERATION OF YOUR TRANSMISSIONS OR DATA; STATEMENTS OR CONDUCT OF ANY THIRD PARTY ON THE SITE OR SERVICE; ANY ACTIONS WE TAKE OR FAIL TO TAKE AS A RESULT OF COMMUNICATIONS YOU SEND TO US; HUMAN ERRORS; TECHNICAL MALFUNCTIONS; FAILURES, INCLUDING PUBLIC UTILITY OR TELEPHONE OUTAGES; OMISSIONS, INTERRUPTIONS, LATENCY, DELETIONS OR DEFECTS OF ANY DEVICE OR NETWORK, PROVIDERS, OR SOFTWARE (INCLUDING, BUT NOT LIMITED TO, THOSE THAT DO NOT PERMIT PARTICIPATION IN THE SERVICE); ANY INJURY OR DAMAGE TO COMPUTER EQUIPMENT; INABILITY TO FULLY ACCESS THE SITE OR SERVICE OR ANY OTHER WEBSITE; THEFT, TAMPERING, DESTRUCTION, OR UNAUTHORIZED ACCESS TO, IMAGES OR OTHER CONTENT OF ANY KIND; DATA THAT IS PROCESSED LATE OR INCORRECTLY OR IS INCOMPLETE OR LOST; TYPOGRAPHICAL, PRINTING OR OTHER ERRORS, OR ANY COMBINATION THEREOF; OR ANY OTHER MATTER RELATING TO THE SITE OR SERVICE.\n\nSOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF CERTAIN WARRANTIES OR THE LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES. ACCORDINGLY, SOME OF THE ABOVE LIMITATIONS MAY NOT APPLY TO YOU.\n\n## 8. Our Proprietary Rights ##\n\nAll title, ownership and intellectual property rights in and to the Service are owned by MetaMask or its licensors. You acknowledge and agree that the Service contains proprietary and confidential information that is protected by applicable intellectual property and other laws. Except as expressly authorized by MetaMask, you agree not to copy, modify, rent, lease, loan, sell, distribute, perform, display or create derivative works based on the Service, in whole or in part. MetaMask issues a license for MetaMask, found [here](https://github.com/MetaMask/metamask-plugin/blob/master/LICENSE). For information on other licenses utilized in the development of MetaMask, please see our attribution page at: [https://metamask.io/attributions.html](https://metamask.io/attributions.html)\n\n## 9. Links ##\n\nThe Service provides, or third parties may provide, links to other World Wide Web or accessible sites, applications or resources. Because MetaMask has no control over such sites, applications and resources, you acknowledge and agree that MetaMask is not responsible for the availability of such external sites, applications or resources, and does not endorse and is not responsible or liable for any content, advertising, products or other materials on or available from such sites or resources. You further acknowledge and agree that MetaMask shall not be responsible or liable, directly or indirectly, for any damage or loss caused or alleged to be caused by or in connection with use of or reliance on any such content, goods or services available on or through any such site or resource.\n\n## 10. Termination and Suspension ##\n\nMetaMask may terminate or suspend all or part of the Service and your MetaMask access immediately, without prior notice or liability, if you breach any of the terms or conditions of the Terms. Upon termination of your access, your right to use the Service will immediately cease.\n\nThe following provisions of the Terms survive any termination of these Terms: INDEMNITY; WARRANTY DISCLAIMERS; LIMITATION ON LIABILITY; OUR PROPRIETARY RIGHTS; LINKS; TERMINATION; NO THIRD PARTY BENEFICIARIES; BINDING ARBITRATION AND CLASS ACTION WAIVER; GENERAL INFORMATION.\n\n## 11. No Third Party Beneficiaries ##\n\nYou agree that, except as otherwise expressly provided in these Terms, there shall be no third party beneficiaries to the Terms.\n\n## 12. Notice and Procedure For Making Claims of Copyright Infringement ##\n\nIf you believe that your copyright or the copyright of a person on whose behalf you are authorized to act has been infringed, please provide MetaMask’s Copyright Agent a written Notice containing the following information:\n\n· an electronic or physical signature of the person authorized to act on behalf of the owner of the copyright or other intellectual property interest;\n\n· a description of the copyrighted work or other intellectual property that you claim has been infringed;\n\n· a description of where the material that you claim is infringing is located on the Service;\n\n· your address, telephone number, and email address;\n\n· a statement by you that you have a good faith belief that the disputed use is not authorized by the copyright owner, its agent, or the law;\n\n· a statement by you, made under penalty of perjury, that the above information in your Notice is accurate and that you are the copyright or intellectual property owner or authorized to act on the copyright or intellectual property owner's behalf.\n\nMetaMask’s Copyright Agent can be reached at:\n\nEmail: copyright [at] metamask [dot] io\n\nMail:\n\nAttention:\n\nMetaMask Copyright â„… ConsenSys\n\n49 Bogart Street\n\nBrooklyn, NY 11206\n\n## 13. Binding Arbitration and Class Action Waiver ##\n\nPLEASE READ THIS SECTION CAREFULLY – IT MAY SIGNIFICANTLY AFFECT YOUR LEGAL RIGHTS, INCLUDING YOUR RIGHT TO FILE A LAWSUIT IN COURT\n\n### 13.1 Initial Dispute Resolution ###\n\nThe parties shall use their best efforts to engage directly to settle any dispute, claim, question, or disagreement and engage in good faith negotiations which shall be a condition to either party initiating a lawsuit or arbitration.\n\n### 13.2 Binding Arbitration ###\n\nIf the parties do not reach an agreed upon solution within a period of 30 days from the time informal dispute resolution under the Initial Dispute Resolution provision begins, then either party may initiate binding arbitration as the sole means to resolve claims, subject to the terms set forth below. Specifically, all claims arising out of or relating to these Terms (including their formation, performance and breach), the parties’ relationship with each other and/or your use of the Service shall be finally settled by binding arbitration administered by the American Arbitration Association in accordance with the provisions of its Commercial Arbitration Rules and the supplementary procedures for consumer related disputes of the American Arbitration Association (the \"AAA\"), excluding any rules or procedures governing or permitting class actions.\n\nThe arbitrator, and not any federal, state or local court or agency, shall have exclusive authority to resolve all disputes arising out of or relating to the interpretation, applicability, enforceability or formation of these Terms, including, but not limited to any claim that all or any part of these Terms are void or voidable, or whether a claim is subject to arbitration. The arbitrator shall be empowered to grant whatever relief would be available in a court under law or in equity. The arbitrator’s award shall be written, and binding on the parties and may be entered as a judgment in any court of competent jurisdiction.\n\nThe parties understand that, absent this mandatory provision, they would have the right to sue in court and have a jury trial. They further understand that, in some instances, the costs of arbitration could exceed the costs of litigation and the right to discovery may be more limited in arbitration than in court.\n\n### 13.3 Location ###\n\nBinding arbitration shall take place in New York. You agree to submit to the personal jurisdiction of any federal or state court in New York County, New York, in order to compel arbitration, to stay proceedings pending arbitration, or to confirm, modify, vacate or enter judgment on the award entered by the arbitrator.\n\n### 13.4 Class Action Waiver ###\n\nThe parties further agree that any arbitration shall be conducted in their individual capacities only and not as a class action or other representative action, and the parties expressly waive their right to file a class action or seek relief on a class basis. YOU AND METAMASK AGREE THAT EACH MAY BRING CLAIMS AGAINST THE OTHER ONLY IN YOUR OR ITS INDIVIDUAL CAPACITY, AND NOT AS A PLAINTIFF OR CLASS MEMBER IN ANY PURPORTED CLASS OR REPRESENTATIVE PROCEEDING. If any court or arbitrator determines that the class action waiver set forth in this paragraph is void or unenforceable for any reason or that an arbitration can proceed on a class basis, then the arbitration provision set forth above shall be deemed null and void in its entirety and the parties shall be deemed to have not agreed to arbitrate disputes.\n\n### 13.5 Exception - Litigation of Intellectual Property and Small Claims Court Claims ###\n\nNotwithstanding the parties' decision to resolve all disputes through arbitration, either party may bring an action in state or federal court to protect its intellectual property rights (\"intellectual property rights\" means patents, copyrights, moral rights, trademarks, and trade secrets, but not privacy or publicity rights). Either party may also seek relief in a small claims court for disputes or claims within the scope of that court’s jurisdiction.\n\n### 13.6 30-Day Right to Opt Out ###\n\nYou have the right to opt-out and not be bound by the arbitration and class action waiver provisions set forth above by sending written notice of your decision to opt-out to the following address: MetaMask â„… ConsenSys, 49 Bogart Street, Brooklyn NY 11206 and via email at legal-opt@metamask.io. The notice must be sent within 30 days of September 6, 2016 or your first use of the Service, whichever is later, otherwise you shall be bound to arbitrate disputes in accordance with the terms of those paragraphs. If you opt-out of these arbitration provisions, MetaMask also will not be bound by them.\n\n### 13.7 Changes to This Section ###\n\nMetaMask will provide 60-days’ notice of any changes to this section. Changes will become effective on the 60th day, and will apply prospectively only to any claims arising after the 60th day.\n\nFor any dispute not subject to arbitration you and MetaMask agree to submit to the personal and exclusive jurisdiction of and venue in the federal and state courts located in New York, New York. You further agree to accept service of process by mail, and hereby waive any and all jurisdictional and venue defenses otherwise available.\n\nThe Terms and the relationship between you and MetaMask shall be governed by the laws of the State of New York without regard to conflict of law provisions.\n\n## 14. General Information ##\n\n### 14.1 Entire Agreement ###\n\nThese Terms (and any additional terms, rules and conditions of participation that MetaMask may post on the Service) constitute the entire agreement between you and MetaMask with respect to the Service and supersedes any prior agreements, oral or written, between you and MetaMask. In the event of a conflict between these Terms and the additional terms, rules and conditions of participation, the latter will prevail over the Terms to the extent of the conflict.\n\n### 14.2 Waiver and Severability of Terms ###\n\nThe failure of MetaMask to exercise or enforce any right or provision of the Terms shall not constitute a waiver of such right or provision. If any provision of the Terms is found by an arbitrator or court of competent jurisdiction to be invalid, the parties nevertheless agree that the arbitrator or court should endeavor to give effect to the parties' intentions as reflected in the provision, and the other provisions of the Terms remain in full force and effect.\n\n### 14.3 Statute of Limitations ###\n\nYou agree that regardless of any statute or law to the contrary, any claim or cause of action arising out of or related to the use of the Service or the Terms must be filed within one (1) year after such claim or cause of action arose or be forever barred.\n\n### 14.4 Section Titles ###\n\nThe section titles in the Terms are for convenience only and have no legal or contractual effect.\n\n### 14.5 Communications ###\n\nUsers with questions, complaints or claims with respect to the Service may contact us using the relevant contact information set forth above and at communications@metamask.io.\n\n## 15 Related Links ##\n\n**[Terms of Use](https://metamask.io/terms.html)**\n\n**[Privacy](https://metamask.io/privacy.html)**\n\n**[Attributions](https://metamask.io/attributions.html)**\n\n","id":0},{"read":false,"date":"Mon May 08 2017","title":"Privacy Notice","body":"MetaMask is beta software. \n\nWhen you log in to MetaMask, your current account is visible to every new site you visit.\n\nFor your privacy, for now, please sign out of MetaMask when you're done using a site.\n\nAlso, by default, you will be signed in to a test network. To use real Ether, you must connect to the main network manually in the top left network menu.\n\n","id":2}] \ No newline at end of file +[{"read":false,"date":"Thu Feb 09 2017","title":"Terms of Use","body":"# Terms of Use #\n\n**THIS AGREEMENT IS SUBJECT TO BINDING ARBITRATION AND A WAIVER OF CLASS ACTION RIGHTS AS DETAILED IN SECTION 13. PLEASE READ THE AGREEMENT CAREFULLY.**\n\n_Our Terms of Use have been updated as of September 5, 2016_\n\n## 1. Acceptance of Terms ##\n\nMetaMask provides a platform for managing Ethereum (or \"ETH\") accounts, and allowing ordinary websites to interact with the Ethereum blockchain, while keeping the user in control over what transactions they approve, through our website located at[ ](http://metamask.io)[https://metamask.io/](https://metamask.io/) and browser plugin (the \"Site\") — which includes text, images, audio, code and other materials (collectively, the “Contentâ€) and all of the features, and services provided. The Site, and any other features, tools, materials, or other services offered from time to time by MetaMask are referred to here as the “Service.†Please read these Terms of Use (the “Terms†or “Terms of Useâ€) carefully before using the Service. By using or otherwise accessing the Services, or clicking to accept or agree to these Terms where that option is made available, you (1) accept and agree to these Terms (2) consent to the collection, use, disclosure and other handling of information as described in our Privacy Policy and (3) any additional terms, rules and conditions of participation issued by MetaMask from time to time. If you do not agree to the Terms, then you may not access or use the Content or Services.\n\n## 2. Modification of Terms of Use ##\n\nExcept for Section 13, providing for binding arbitration and waiver of class action rights, MetaMask reserves the right, at its sole discretion, to modify or replace the Terms of Use at any time. The most current version of these Terms will be posted on our Site. You shall be responsible for reviewing and becoming familiar with any such modifications. Use of the Services by you after any modification to the Terms constitutes your acceptance of the Terms of Use as modified.\n\n\n\n## 3. Eligibility ##\n\nYou hereby represent and warrant that you are fully able and competent to enter into the terms, conditions, obligations, affirmations, representations and warranties set forth in these Terms and to abide by and comply with these Terms.\n\nMetaMask is a global platform and by accessing the Content or Services, you are representing and warranting that, you are of the legal age of majority in your jurisdiction as is required to access such Services and Content and enter into arrangements as provided by the Service. You further represent that you are otherwise legally permitted to use the service in your jurisdiction including owning cryptographic tokens of value, and interacting with the Services or Content in any way. You further represent you are responsible for ensuring compliance with the laws of your jurisdiction and acknowledge that MetaMask is not liable for your compliance with such laws.\n\n## 4 Account Password and Security ##\n\nWhen setting up an account within MetaMask, you will be responsible for keeping your own account secrets, which may be a twelve-word seed phrase, an account file, or other locally stored secret information. MetaMask encrypts this information locally with a password you provide, that we never send to our servers. You agree to (a) never use the same password for MetaMask that you have ever used outside of this service; (b) keep your secret information and password confidential and do not share them with anyone else; (c) immediately notify MetaMask of any unauthorized use of your account or breach of security. MetaMask cannot and will not be liable for any loss or damage arising from your failure to comply with this section.\n\n## 5. Representations, Warranties, and Risks ##\n\n### 5.1. Warranty Disclaimer ###\n\nYou expressly understand and agree that your use of the Service is at your sole risk. The Service (including the Service and the Content) are provided on an \"AS IS\" and \"as available\" basis, without warranties of any kind, either express or implied, including, without limitation, implied warranties of merchantability, fitness for a particular purpose or non-infringement. You acknowledge that MetaMask has no control over, and no duty to take any action regarding: which users gain access to or use the Service; what effects the Content may have on you; how you may interpret or use the Content; or what actions you may take as a result of having been exposed to the Content. You release MetaMask from all liability for you having acquired or not acquired Content through the Service. MetaMask makes no representations concerning any Content contained in or accessed through the Service, and MetaMask will not be responsible or liable for the accuracy, copyright compliance, legality or decency of material contained in or accessed through the Service.\n\n### 5.2 Sophistication and Risk of Cryptographic Systems ###\n\nBy utilizing the Service or interacting with the Content or platform in any way, you represent that you understand the inherent risks associated with cryptographic systems; and warrant that you have an understanding of the usage and intricacies of native cryptographic tokens, like Ether (ETH) and Bitcoin (BTC), smart contract based tokens such as those that follow the Ethereum Token Standard (https://github.com/ethereum/EIPs/issues/20), and blockchain-based software systems.\n\n### 5.3 Risk of Regulatory Actions in One or More Jurisdictions ###\n\nMetaMask and ETH could be impacted by one or more regulatory inquiries or regulatory action, which could impede or limit the ability of MetaMask to continue to develop, or which could impede or limit your ability to access or use the Service or Ethereum blockchain.\n\n### 5.4 Risk of Weaknesses or Exploits in the Field of Cryptography ###\n\nYou acknowledge and understand that Cryptography is a progressing field. Advances in code cracking or technical advances such as the development of quantum computers may present risks to cryptocurrencies and Services of Content, which could result in the theft or loss of your cryptographic tokens or property. To the extent possible, MetaMask intends to update the protocol underlying Services to account for any advances in cryptography and to incorporate additional security measures, but does not guarantee or otherwise represent full security of the system. By using the Service or accessing Content, you acknowledge these inherent risks.\n\n### 5.5 Volatility of Crypto Currencies ###\n\nYou understand that Ethereum and other blockchain technologies and associated currencies or tokens are highly volatile due to many factors including but not limited to adoption, speculation, technology and security risks. You also acknowledge that the cost of transacting on such technologies is variable and may increase at any time causing impact to any activities taking place on the Ethereum blockchain. You acknowledge these risks and represent that MetaMask cannot be held liable for such fluctuations or increased costs.\n\n### 5.6 Application Security ###\n\nYou acknowledge that Ethereum applications are code subject to flaws and acknowledge that you are solely responsible for evaluating any code provided by the Services or Content and the trustworthiness of any third-party websites, products, smart-contracts, or Content you access or use through the Service. You further expressly acknowledge and represent that Ethereum applications can be written maliciously or negligently, that MetaMask cannot be held liable for your interaction with such applications and that such applications may cause the loss of property or even identity. This warning and others later provided by MetaMask in no way evidence or represent an on-going duty to alert you to all of the potential risks of utilizing the Service or Content.\n\n## 6. Indemnity ##\n\nYou agree to release and to indemnify, defend and hold harmless MetaMask and its parents, subsidiaries, affiliates and agencies, as well as the officers, directors, employees, shareholders and representatives of any of the foregoing entities, from and against any and all losses, liabilities, expenses, damages, costs (including attorneys’ fees and court costs) claims or actions of any kind whatsoever arising or resulting from your use of the Service, your violation of these Terms of Use, and any of your acts or omissions that implicate publicity rights, defamation or invasion of privacy. MetaMask reserves the right, at its own expense, to assume exclusive defense and control of any matter otherwise subject to indemnification by you and, in such case, you agree to cooperate with MetaMask in the defense of such matter.\n\n## 7. Limitation on liability ##\n\nYOU ACKNOWLEDGE AND AGREE THAT YOU ASSUME FULL RESPONSIBILITY FOR YOUR USE OF THE SITE AND SERVICE. YOU ACKNOWLEDGE AND AGREE THAT ANY INFORMATION YOU SEND OR RECEIVE DURING YOUR USE OF THE SITE AND SERVICE MAY NOT BE SECURE AND MAY BE INTERCEPTED OR LATER ACQUIRED BY UNAUTHORIZED PARTIES. YOU ACKNOWLEDGE AND AGREE THAT YOUR USE OF THE SITE AND SERVICE IS AT YOUR OWN RISK. RECOGNIZING SUCH, YOU UNDERSTAND AND AGREE THAT, TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, NEITHER METAMASK NOR ITS SUPPLIERS OR LICENSORS WILL BE LIABLE TO YOU FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY OR OTHER DAMAGES OF ANY KIND, INCLUDING WITHOUT LIMITATION DAMAGES FOR LOSS OF PROFITS, GOODWILL, USE, DATA OR OTHER TANGIBLE OR INTANGIBLE LOSSES OR ANY OTHER DAMAGES BASED ON CONTRACT, TORT, STRICT LIABILITY OR ANY OTHER THEORY (EVEN IF METAMASK HAD BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES), RESULTING FROM THE SITE OR SERVICE; THE USE OR THE INABILITY TO USE THE SITE OR SERVICE; UNAUTHORIZED ACCESS TO OR ALTERATION OF YOUR TRANSMISSIONS OR DATA; STATEMENTS OR CONDUCT OF ANY THIRD PARTY ON THE SITE OR SERVICE; ANY ACTIONS WE TAKE OR FAIL TO TAKE AS A RESULT OF COMMUNICATIONS YOU SEND TO US; HUMAN ERRORS; TECHNICAL MALFUNCTIONS; FAILURES, INCLUDING PUBLIC UTILITY OR TELEPHONE OUTAGES; OMISSIONS, INTERRUPTIONS, LATENCY, DELETIONS OR DEFECTS OF ANY DEVICE OR NETWORK, PROVIDERS, OR SOFTWARE (INCLUDING, BUT NOT LIMITED TO, THOSE THAT DO NOT PERMIT PARTICIPATION IN THE SERVICE); ANY INJURY OR DAMAGE TO COMPUTER EQUIPMENT; INABILITY TO FULLY ACCESS THE SITE OR SERVICE OR ANY OTHER WEBSITE; THEFT, TAMPERING, DESTRUCTION, OR UNAUTHORIZED ACCESS TO, IMAGES OR OTHER CONTENT OF ANY KIND; DATA THAT IS PROCESSED LATE OR INCORRECTLY OR IS INCOMPLETE OR LOST; TYPOGRAPHICAL, PRINTING OR OTHER ERRORS, OR ANY COMBINATION THEREOF; OR ANY OTHER MATTER RELATING TO THE SITE OR SERVICE.\n\nSOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF CERTAIN WARRANTIES OR THE LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES. ACCORDINGLY, SOME OF THE ABOVE LIMITATIONS MAY NOT APPLY TO YOU.\n\n## 8. Our Proprietary Rights ##\n\nAll title, ownership and intellectual property rights in and to the Service are owned by MetaMask or its licensors. You acknowledge and agree that the Service contains proprietary and confidential information that is protected by applicable intellectual property and other laws. Except as expressly authorized by MetaMask, you agree not to copy, modify, rent, lease, loan, sell, distribute, perform, display or create derivative works based on the Service, in whole or in part. MetaMask issues a license for MetaMask, found [here](https://github.com/MetaMask/metamask-plugin/blob/master/LICENSE). For information on other licenses utilized in the development of MetaMask, please see our attribution page at: [https://metamask.io/attributions.html](https://metamask.io/attributions.html)\n\n## 9. Links ##\n\nThe Service provides, or third parties may provide, links to other World Wide Web or accessible sites, applications or resources. Because MetaMask has no control over such sites, applications and resources, you acknowledge and agree that MetaMask is not responsible for the availability of such external sites, applications or resources, and does not endorse and is not responsible or liable for any content, advertising, products or other materials on or available from such sites or resources. You further acknowledge and agree that MetaMask shall not be responsible or liable, directly or indirectly, for any damage or loss caused or alleged to be caused by or in connection with use of or reliance on any such content, goods or services available on or through any such site or resource.\n\n## 10. Termination and Suspension ##\n\nMetaMask may terminate or suspend all or part of the Service and your MetaMask access immediately, without prior notice or liability, if you breach any of the terms or conditions of the Terms. Upon termination of your access, your right to use the Service will immediately cease.\n\nThe following provisions of the Terms survive any termination of these Terms: INDEMNITY; WARRANTY DISCLAIMERS; LIMITATION ON LIABILITY; OUR PROPRIETARY RIGHTS; LINKS; TERMINATION; NO THIRD PARTY BENEFICIARIES; BINDING ARBITRATION AND CLASS ACTION WAIVER; GENERAL INFORMATION.\n\n## 11. No Third Party Beneficiaries ##\n\nYou agree that, except as otherwise expressly provided in these Terms, there shall be no third party beneficiaries to the Terms.\n\n## 12. Notice and Procedure For Making Claims of Copyright Infringement ##\n\nIf you believe that your copyright or the copyright of a person on whose behalf you are authorized to act has been infringed, please provide MetaMask’s Copyright Agent a written Notice containing the following information:\n\n· an electronic or physical signature of the person authorized to act on behalf of the owner of the copyright or other intellectual property interest;\n\n· a description of the copyrighted work or other intellectual property that you claim has been infringed;\n\n· a description of where the material that you claim is infringing is located on the Service;\n\n· your address, telephone number, and email address;\n\n· a statement by you that you have a good faith belief that the disputed use is not authorized by the copyright owner, its agent, or the law;\n\n· a statement by you, made under penalty of perjury, that the above information in your Notice is accurate and that you are the copyright or intellectual property owner or authorized to act on the copyright or intellectual property owner's behalf.\n\nMetaMask’s Copyright Agent can be reached at:\n\nEmail: copyright [at] metamask [dot] io\n\nMail:\n\nAttention:\n\nMetaMask Copyright â„… ConsenSys\n\n49 Bogart Street\n\nBrooklyn, NY 11206\n\n## 13. Binding Arbitration and Class Action Waiver ##\n\nPLEASE READ THIS SECTION CAREFULLY – IT MAY SIGNIFICANTLY AFFECT YOUR LEGAL RIGHTS, INCLUDING YOUR RIGHT TO FILE A LAWSUIT IN COURT\n\n### 13.1 Initial Dispute Resolution ###\n\nThe parties shall use their best efforts to engage directly to settle any dispute, claim, question, or disagreement and engage in good faith negotiations which shall be a condition to either party initiating a lawsuit or arbitration.\n\n### 13.2 Binding Arbitration ###\n\nIf the parties do not reach an agreed upon solution within a period of 30 days from the time informal dispute resolution under the Initial Dispute Resolution provision begins, then either party may initiate binding arbitration as the sole means to resolve claims, subject to the terms set forth below. Specifically, all claims arising out of or relating to these Terms (including their formation, performance and breach), the parties’ relationship with each other and/or your use of the Service shall be finally settled by binding arbitration administered by the American Arbitration Association in accordance with the provisions of its Commercial Arbitration Rules and the supplementary procedures for consumer related disputes of the American Arbitration Association (the \"AAA\"), excluding any rules or procedures governing or permitting class actions.\n\nThe arbitrator, and not any federal, state or local court or agency, shall have exclusive authority to resolve all disputes arising out of or relating to the interpretation, applicability, enforceability or formation of these Terms, including, but not limited to any claim that all or any part of these Terms are void or voidable, or whether a claim is subject to arbitration. The arbitrator shall be empowered to grant whatever relief would be available in a court under law or in equity. The arbitrator’s award shall be written, and binding on the parties and may be entered as a judgment in any court of competent jurisdiction.\n\nThe parties understand that, absent this mandatory provision, they would have the right to sue in court and have a jury trial. They further understand that, in some instances, the costs of arbitration could exceed the costs of litigation and the right to discovery may be more limited in arbitration than in court.\n\n### 13.3 Location ###\n\nBinding arbitration shall take place in New York. You agree to submit to the personal jurisdiction of any federal or state court in New York County, New York, in order to compel arbitration, to stay proceedings pending arbitration, or to confirm, modify, vacate or enter judgment on the award entered by the arbitrator.\n\n### 13.4 Class Action Waiver ###\n\nThe parties further agree that any arbitration shall be conducted in their individual capacities only and not as a class action or other representative action, and the parties expressly waive their right to file a class action or seek relief on a class basis. YOU AND METAMASK AGREE THAT EACH MAY BRING CLAIMS AGAINST THE OTHER ONLY IN YOUR OR ITS INDIVIDUAL CAPACITY, AND NOT AS A PLAINTIFF OR CLASS MEMBER IN ANY PURPORTED CLASS OR REPRESENTATIVE PROCEEDING. If any court or arbitrator determines that the class action waiver set forth in this paragraph is void or unenforceable for any reason or that an arbitration can proceed on a class basis, then the arbitration provision set forth above shall be deemed null and void in its entirety and the parties shall be deemed to have not agreed to arbitrate disputes.\n\n### 13.5 Exception - Litigation of Intellectual Property and Small Claims Court Claims ###\n\nNotwithstanding the parties' decision to resolve all disputes through arbitration, either party may bring an action in state or federal court to protect its intellectual property rights (\"intellectual property rights\" means patents, copyrights, moral rights, trademarks, and trade secrets, but not privacy or publicity rights). Either party may also seek relief in a small claims court for disputes or claims within the scope of that court’s jurisdiction.\n\n### 13.6 30-Day Right to Opt Out ###\n\nYou have the right to opt-out and not be bound by the arbitration and class action waiver provisions set forth above by sending written notice of your decision to opt-out to the following address: MetaMask â„… ConsenSys, 49 Bogart Street, Brooklyn NY 11206 and via email at legal-opt@metamask.io. The notice must be sent within 30 days of September 6, 2016 or your first use of the Service, whichever is later, otherwise you shall be bound to arbitrate disputes in accordance with the terms of those paragraphs. If you opt-out of these arbitration provisions, MetaMask also will not be bound by them.\n\n### 13.7 Changes to This Section ###\n\nMetaMask will provide 60-days’ notice of any changes to this section. Changes will become effective on the 60th day, and will apply prospectively only to any claims arising after the 60th day.\n\nFor any dispute not subject to arbitration you and MetaMask agree to submit to the personal and exclusive jurisdiction of and venue in the federal and state courts located in New York, New York. You further agree to accept service of process by mail, and hereby waive any and all jurisdictional and venue defenses otherwise available.\n\nThe Terms and the relationship between you and MetaMask shall be governed by the laws of the State of New York without regard to conflict of law provisions.\n\n## 14. General Information ##\n\n### 14.1 Entire Agreement ###\n\nThese Terms (and any additional terms, rules and conditions of participation that MetaMask may post on the Service) constitute the entire agreement between you and MetaMask with respect to the Service and supersedes any prior agreements, oral or written, between you and MetaMask. In the event of a conflict between these Terms and the additional terms, rules and conditions of participation, the latter will prevail over the Terms to the extent of the conflict.\n\n### 14.2 Waiver and Severability of Terms ###\n\nThe failure of MetaMask to exercise or enforce any right or provision of the Terms shall not constitute a waiver of such right or provision. If any provision of the Terms is found by an arbitrator or court of competent jurisdiction to be invalid, the parties nevertheless agree that the arbitrator or court should endeavor to give effect to the parties' intentions as reflected in the provision, and the other provisions of the Terms remain in full force and effect.\n\n### 14.3 Statute of Limitations ###\n\nYou agree that regardless of any statute or law to the contrary, any claim or cause of action arising out of or related to the use of the Service or the Terms must be filed within one (1) year after such claim or cause of action arose or be forever barred.\n\n### 14.4 Section Titles ###\n\nThe section titles in the Terms are for convenience only and have no legal or contractual effect.\n\n### 14.5 Communications ###\n\nUsers with questions, complaints or claims with respect to the Service may contact us using the relevant contact information set forth above and at communications@metamask.io.\n\n## 15 Related Links ##\n\n**[Terms of Use](https://metamask.io/terms.html)**\n\n**[Privacy](https://metamask.io/privacy.html)**\n\n**[Attributions](https://metamask.io/attributions.html)**\n\n","id":0},{"read":false,"date":"Mon May 08 2017","title":"Privacy Notice","body":"MetaMask is beta software. \n\nWhen you log in to MetaMask, your current account is visible to every new site you visit.\n\nFor your privacy, for now, please sign out of MetaMask when you're done using a site.\n\nAlso, by default, you will be signed in to a test network. To use real Ether, you must connect to the main network manually in the top left network menu.\n\n","id":2},{"read":false,"date":"Tue Nov 28 2017","title":"Seed Phrase Alert","firstVersion":"<=3.12.0","body":"Please take a moment to [back up your seed phrase again](https://support.metamask.io/kb/article/28-abbu-always-be-backed-up-how-to-make-sure-your-12-word-metamask-seed-phrase-is-backed-up).\n\nMetaMask has become aware of a previous issue where a very small number of users were shown the wrong seed phrase to back up. The only way to protect yourself from this issue, is to back up your seed phrase again now.\n\nYou can follow the guide at this link:\n\n[https://support.metamask.io/kb/article/28-abbu-always-be-backed-up-how-to-make-sure-your-12-word-metamask-seed-phrase-is-backed-up](https://support.metamask.io/kb/article/28-abbu-always-be-backed-up-how-to-make-sure-your-12-word-metamask-seed-phrase-is-backed-up)\n\nWe have fixed the known issue, but will be issuing ongoing bug bounties to help prevent this kind of problem in the future.\n\nFor more information on this issue, [see this blog post](https://medium.com/metamask/seed-phrase-issue-bounty-awarded-e1986e811021)","id":3}] diff --git a/old-ui/.gitignore b/old-ui/.gitignore new file mode 100644 index 000000000..c6b1254b5 --- /dev/null +++ b/old-ui/.gitignore @@ -0,0 +1,66 @@ + +# Created by https://www.gitignore.io/api/osx,node + +### OSX ### +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + + +### Node ### +# Logs +logs +*.log +npm-debug.log* + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directory +# https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git +node_modules + +# Optional npm cache directory +.npm + +# Optional REPL history +.node_repl_history + diff --git a/old-ui/app/account-detail.js b/old-ui/app/account-detail.js new file mode 100644 index 000000000..ee7eb1258 --- /dev/null +++ b/old-ui/app/account-detail.js @@ -0,0 +1,289 @@ +const inherits = require('util').inherits +const extend = require('xtend') +const Component = require('react').Component +const h = require('react-hyperscript') +const connect = require('react-redux').connect +const actions = require('../../ui/app/actions') +const valuesFor = require('./util').valuesFor +const Identicon = require('./components/identicon') +const EthBalance = require('./components/eth-balance') +const TransactionList = require('./components/transaction-list') +const ExportAccountView = require('./components/account-export') +const ethUtil = require('ethereumjs-util') +const EditableLabel = require('./components/editable-label') +const TabBar = require('./components/tab-bar') +const TokenList = require('./components/token-list') +const AccountDropdowns = require('./components/account-dropdowns').AccountDropdowns + +module.exports = connect(mapStateToProps)(AccountDetailScreen) + +function mapStateToProps (state) { + return { + metamask: state.metamask, + identities: state.metamask.identities, + accounts: state.metamask.accounts, + address: state.metamask.selectedAddress, + accountDetail: state.appState.accountDetail, + network: state.metamask.network, + unapprovedMsgs: valuesFor(state.metamask.unapprovedMsgs), + shapeShiftTxList: state.metamask.shapeShiftTxList, + transactions: state.metamask.selectedAddressTxList || [], + conversionRate: state.metamask.conversionRate, + currentCurrency: state.metamask.currentCurrency, + currentAccountTab: state.metamask.currentAccountTab, + tokens: state.metamask.tokens, + computedBalances: state.metamask.computedBalances, + } +} + +inherits(AccountDetailScreen, Component) +function AccountDetailScreen () { + Component.call(this) +} + +AccountDetailScreen.prototype.render = function () { + var props = this.props + var selected = props.address || Object.keys(props.accounts)[0] + var checksumAddress = selected && ethUtil.toChecksumAddress(selected) + var identity = props.identities[selected] + var account = props.accounts[selected] + const { network, conversionRate, currentCurrency } = props + + return ( + + h('.account-detail-section.full-flex-height', [ + + // identicon, label, balance, etc + h('.account-data-subsection', { + style: { + margin: '0 20px', + flex: '1 0 auto', + }, + }, [ + + // header - identicon + nav + h('div', { + style: { + paddingTop: '20px', + display: 'flex', + justifyContent: 'flex-start', + alignItems: 'flex-start', + }, + }, [ + + // large identicon and addresses + h('.identicon-wrapper.select-none', [ + h(Identicon, { + diameter: 62, + address: selected, + }), + ]), + h('div.flex-column', { + style: { + lineHeight: '10px', + width: '100%', + }, + }, [ + h(EditableLabel, { + textValue: identity ? identity.name : '', + state: { + isEditingLabel: false, + }, + saveText: (text) => { + props.dispatch(actions.saveAccountLabel(selected, text)) + }, + }, [ + + // What is shown when not editing + edit text: + h('label.editing-label', [h('.edit-text', 'edit')]), + h( + 'div', + { + style: { + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', + }, + }, + [ + h( + 'div.font-medium.color-forest', + { + name: 'edit', + style: { + }, + }, + [ + h('h2', { + style: { + maxWidth: '180px', + overflow: 'hidden', + textOverflow: 'ellipsis', + padding: '5px 0px', + lineHeight: '25px', + }, + }, [ + identity && identity.name, + ]), + ] + ), + h( + AccountDropdowns, + { + style: { + cursor: 'pointer', + }, + selected, + network, + identities: props.identities, + enableAccountOptions: true, + }, + ), + ] + ), + ]), + h('.flex-row', { + style: { + justifyContent: 'space-between', + alignItems: 'baseline', + }, + }, [ + + // address + + h('div', { + style: { + overflow: 'hidden', + textOverflow: 'ellipsis', + paddingTop: '3px', + width: '5em', + fontSize: '13px', + fontFamily: 'Montserrat Light', + textRendering: 'geometricPrecision', + marginTop: '15px', + marginBottom: '15px', + color: '#AEAEAE', + }, + }, checksumAddress), + ]), + + // account ballence + + ]), + ]), + h('.flex-row', { + style: { + justifyContent: 'space-between', + alignItems: 'flex-start', + }, + }, [ + + h(EthBalance, { + value: account && account.balance, + conversionRate, + currentCurrency, + style: { + lineHeight: '7px', + marginTop: '10px', + }, + }), + + h('div', {}, [ + + h('button', { + onClick: () => props.dispatch(actions.buyEthView(selected)), + style: { marginRight: '10px' }, + }, 'BUY'), + + h('button', { + onClick: () => props.dispatch(actions.showSendPage()), + style: { + marginBottom: '20px', + }, + }, 'SEND'), + + ]), + + ]), + ]), + + // subview (tx history, pk export confirm, buy eth warning) + this.subview(), + + ]) + ) +} + +AccountDetailScreen.prototype.subview = function () { + var subview + try { + subview = this.props.accountDetail.subview + } catch (e) { + subview = null + } + + switch (subview) { + case 'transactions': + return this.tabSections() + case 'export': + var state = extend({key: 'export'}, this.props) + return h(ExportAccountView, state) + default: + return this.tabSections() + } +} + +AccountDetailScreen.prototype.tabSections = function () { + const { currentAccountTab } = this.props + + return h('section.tabSection.full-flex-height.grow-tenx', [ + + h(TabBar, { + tabs: [ + { content: 'Sent', key: 'history' }, + { content: 'Tokens', key: 'tokens' }, + ], + defaultTab: currentAccountTab || 'history', + tabSelected: (key) => { + this.props.dispatch(actions.setCurrentAccountTab(key)) + }, + }), + + this.tabSwitchView(), + ]) +} + +AccountDetailScreen.prototype.tabSwitchView = function () { + const props = this.props + const { address, network } = props + const { currentAccountTab, tokens } = this.props + + switch (currentAccountTab) { + case 'tokens': + return h(TokenList, { + userAddress: address, + network, + tokens, + addToken: () => this.props.dispatch(actions.showAddTokenPage()), + }) + default: + return this.transactionList() + } +} + +AccountDetailScreen.prototype.transactionList = function () { + const {transactions, unapprovedMsgs, address, + network, shapeShiftTxList, conversionRate } = this.props + + return h(TransactionList, { + transactions: transactions.sort((a, b) => b.time - a.time), + network, + unapprovedMsgs, + conversionRate, + address, + shapeShiftTxList, + viewPendingTx: (txId) => { + this.props.dispatch(actions.viewPendingTx(txId)) + }, + }) +} diff --git a/old-ui/app/accounts/import/index.js b/old-ui/app/accounts/import/index.js new file mode 100644 index 000000000..3502efe93 --- /dev/null +++ b/old-ui/app/accounts/import/index.js @@ -0,0 +1,101 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const h = require('react-hyperscript') +const connect = require('react-redux').connect +const actions = require('../../../../ui/app/actions') +import Select from 'react-select' + +// Subviews +const JsonImportView = require('./json.js') +const PrivateKeyImportView = require('./private-key.js') + +const menuItems = [ + 'Private Key', + 'JSON File', +] + +module.exports = connect(mapStateToProps)(AccountImportSubview) + +function mapStateToProps (state) { + return { + menuItems, + } +} + +inherits(AccountImportSubview, Component) +function AccountImportSubview () { + Component.call(this) +} + +AccountImportSubview.prototype.render = function () { + const props = this.props + const state = this.state || {} + const { menuItems } = props + const { type } = state + + return ( + h('div', { + style: { + }, + }, [ + h('.section-title.flex-row.flex-center', [ + h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', { + onClick: (event) => { + props.dispatch(actions.goHome()) + }, + }), + h('h2.page-subtitle', 'Import Accounts'), + ]), + h('div', { + style: { + padding: '10px', + color: 'rgb(174, 174, 174)', + }, + }, [ + + h('h3', { style: { padding: '3px' } }, 'SELECT TYPE'), + + h('style', ` + .has-value.Select--single > .Select-control .Select-value .Select-value-label, .Select-value-label { + color: rgb(174,174,174); + } + `), + + h(Select, { + name: 'import-type-select', + clearable: false, + value: type || menuItems[0], + options: menuItems.map((type) => { + return { + value: type, + label: type, + } + }), + onChange: (opt) => { + props.dispatch(actions.showImportPage()) + this.setState({ type: opt.value }) + }, + }), + ]), + + this.renderImportView(), + ]) + ) +} + +AccountImportSubview.prototype.renderImportView = function () { + const props = this.props + const state = this.state || {} + const { type } = state + const { menuItems } = props + const current = type || menuItems[0] + + switch (current) { + case 'Private Key': + return h(PrivateKeyImportView) + case 'JSON File': + return h(JsonImportView) + default: + return h(JsonImportView) + } +} diff --git a/old-ui/app/accounts/import/json.js b/old-ui/app/accounts/import/json.js new file mode 100644 index 000000000..8d6bd7f7b --- /dev/null +++ b/old-ui/app/accounts/import/json.js @@ -0,0 +1,100 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const h = require('react-hyperscript') +const connect = require('react-redux').connect +const actions = require('../../../../ui/app/actions') +const FileInput = require('react-simple-file-input').default + +const HELP_LINK = 'https://github.com/MetaMask/faq/blob/master/README.md#q-i-cant-use-the-import-feature-for-uploading-a-json-file-the-window-keeps-closing-when-i-try-to-select-a-file' + +module.exports = connect(mapStateToProps)(JsonImportSubview) + +function mapStateToProps (state) { + return { + error: state.appState.warning, + } +} + +inherits(JsonImportSubview, Component) +function JsonImportSubview () { + Component.call(this) +} + +JsonImportSubview.prototype.render = function () { + const { error } = this.props + + return ( + h('div', { + style: { + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + padding: '5px 15px 0px 15px', + }, + }, [ + + h('p', 'Used by a variety of different clients'), + h('a.warning', { href: HELP_LINK, target: '_blank' }, 'File import not working? Click here!'), + + h(FileInput, { + readAs: 'text', + onLoad: this.onLoad.bind(this), + style: { + margin: '20px 0px 12px 20px', + fontSize: '15px', + }, + }), + + h('input.large-input.letter-spacey', { + type: 'password', + placeholder: 'Enter password', + id: 'json-password-box', + onKeyPress: this.createKeyringOnEnter.bind(this), + style: { + width: 260, + marginTop: 12, + }, + }), + + h('button.primary', { + onClick: this.createNewKeychain.bind(this), + style: { + margin: 12, + }, + }, 'Import'), + + error ? h('span.error', error) : null, + ]) + ) +} + +JsonImportSubview.prototype.onLoad = function (event, file) { + this.setState({file: file, fileContents: event.target.result}) +} + +JsonImportSubview.prototype.createKeyringOnEnter = function (event) { + if (event.key === 'Enter') { + event.preventDefault() + this.createNewKeychain() + } +} + +JsonImportSubview.prototype.createNewKeychain = function () { + const state = this.state + const { fileContents } = state + + if (!fileContents) { + const message = 'You must select a file to import.' + return this.props.dispatch(actions.displayWarning(message)) + } + + const passwordInput = document.getElementById('json-password-box') + const password = passwordInput.value + + if (!password) { + const message = 'You must enter a password for the selected file.' + return this.props.dispatch(actions.displayWarning(message)) + } + + this.props.dispatch(actions.importNewAccount('JSON File', [ fileContents, password ])) +} diff --git a/old-ui/app/accounts/import/private-key.js b/old-ui/app/accounts/import/private-key.js new file mode 100644 index 000000000..105191105 --- /dev/null +++ b/old-ui/app/accounts/import/private-key.js @@ -0,0 +1,67 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const h = require('react-hyperscript') +const connect = require('react-redux').connect +const actions = require('../../../../ui/app/actions') + +module.exports = connect(mapStateToProps)(PrivateKeyImportView) + +function mapStateToProps (state) { + return { + error: state.appState.warning, + } +} + +inherits(PrivateKeyImportView, Component) +function PrivateKeyImportView () { + Component.call(this) +} + +PrivateKeyImportView.prototype.render = function () { + const { error } = this.props + + return ( + h('div', { + style: { + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + padding: '5px 15px 0px 15px', + }, + }, [ + h('span', 'Paste your private key string here'), + + h('input.large-input.letter-spacey', { + type: 'password', + id: 'private-key-box', + onKeyPress: this.createKeyringOnEnter.bind(this), + style: { + width: 260, + marginTop: 12, + }, + }), + + h('button.primary', { + onClick: this.createNewKeychain.bind(this), + style: { + margin: 12, + }, + }, 'Import'), + + error ? h('span.error', error) : null, + ]) + ) +} + +PrivateKeyImportView.prototype.createKeyringOnEnter = function (event) { + if (event.key === 'Enter') { + event.preventDefault() + this.createNewKeychain() + } +} + +PrivateKeyImportView.prototype.createNewKeychain = function () { + const input = document.getElementById('private-key-box') + const privateKey = input.value + this.props.dispatch(actions.importNewAccount('Private Key', [ privateKey ])) +} diff --git a/old-ui/app/accounts/import/seed.js b/old-ui/app/accounts/import/seed.js new file mode 100644 index 000000000..b4a7c0afa --- /dev/null +++ b/old-ui/app/accounts/import/seed.js @@ -0,0 +1,30 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const h = require('react-hyperscript') +const connect = require('react-redux').connect + +module.exports = connect(mapStateToProps)(SeedImportSubview) + +function mapStateToProps (state) { + return {} +} + +inherits(SeedImportSubview, Component) +function SeedImportSubview () { + Component.call(this) +} + +SeedImportSubview.prototype.render = function () { + return ( + h('div', { + style: { + }, + }, [ + `Paste your seed phrase here!`, + h('textarea'), + h('br'), + h('button', 'Submit'), + ]) + ) +} + diff --git a/old-ui/app/add-token.js b/old-ui/app/add-token.js new file mode 100644 index 000000000..8778f312e --- /dev/null +++ b/old-ui/app/add-token.js @@ -0,0 +1,238 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const h = require('react-hyperscript') +const connect = require('react-redux').connect +const actions = require('../../ui/app/actions') +const Tooltip = require('./components/tooltip.js') + + +const ethUtil = require('ethereumjs-util') +const abi = require('human-standard-token-abi') +const Eth = require('ethjs-query') +const EthContract = require('ethjs-contract') + +const emptyAddr = '0x0000000000000000000000000000000000000000' + +module.exports = connect(mapStateToProps)(AddTokenScreen) + +function mapStateToProps (state) { + return { + identities: state.metamask.identities, + } +} + +inherits(AddTokenScreen, Component) +function AddTokenScreen () { + this.state = { + warning: null, + address: null, + symbol: 'TOKEN', + decimals: 18, + } + Component.call(this) +} + +AddTokenScreen.prototype.render = function () { + const state = this.state + const props = this.props + const { warning, symbol, decimals } = state + + return ( + h('.flex-column.flex-grow', [ + + // subtitle and nav + h('.section-title.flex-row.flex-center', [ + h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', { + onClick: (event) => { + props.dispatch(actions.goHome()) + }, + }), + h('h2.page-subtitle', 'Add Token'), + ]), + + h('.error', { + style: { + display: warning ? 'block' : 'none', + padding: '0 20px', + textAlign: 'center', + }, + }, warning), + + // conf view + h('.flex-column.flex-justify-center.flex-grow.select-none', [ + h('.flex-space-around', { + style: { + padding: '20px', + }, + }, [ + + h('div', [ + h(Tooltip, { + position: 'top', + title: 'The contract of the actual token contract. Click for more info.', + }, [ + h('a', { + style: { fontWeight: 'bold', paddingRight: '10px'}, + href: 'https://support.metamask.io/kb/article/24-what-is-a-token-contract-address', + target: '_blank', + }, [ + h('span', 'Token Contract Address '), + h('i.fa.fa-question-circle'), + ]), + ]), + ]), + + h('section.flex-row.flex-center', [ + h('input#token-address', { + name: 'address', + placeholder: 'Token Contract Address', + onChange: this.tokenAddressDidChange.bind(this), + style: { + width: 'inherit', + flex: '1 0 auto', + height: '30px', + margin: '8px', + }, + }), + ]), + + h('div', [ + h('span', { + style: { fontWeight: 'bold', paddingRight: '10px'}, + }, 'Token Symbol'), + ]), + + h('div', { style: {display: 'flex'} }, [ + h('input#token_symbol', { + placeholder: `Like "ETH"`, + value: symbol, + style: { + width: 'inherit', + flex: '1 0 auto', + height: '30px', + margin: '8px', + }, + onChange: (event) => { + var element = event.target + var symbol = element.value + this.setState({ symbol }) + }, + }), + ]), + + h('div', [ + h('span', { + style: { fontWeight: 'bold', paddingRight: '10px'}, + }, 'Decimals of Precision'), + ]), + + h('div', { style: {display: 'flex'} }, [ + h('input#token_decimals', { + value: decimals, + type: 'number', + min: 0, + max: 36, + style: { + width: 'inherit', + flex: '1 0 auto', + height: '30px', + margin: '8px', + }, + onChange: (event) => { + var element = event.target + var decimals = element.value.trim() + this.setState({ decimals }) + }, + }), + ]), + + h('button', { + style: { + alignSelf: 'center', + }, + onClick: (event) => { + const valid = this.validateInputs() + if (!valid) return + + const { address, symbol, decimals } = this.state + this.props.dispatch(actions.addToken(address.trim(), symbol.trim(), decimals)) + }, + }, 'Add'), + ]), + ]), + ]) + ) +} + +AddTokenScreen.prototype.componentWillMount = function () { + if (typeof global.ethereumProvider === 'undefined') return + + this.eth = new Eth(global.ethereumProvider) + this.contract = new EthContract(this.eth) + this.TokenContract = this.contract(abi) +} + +AddTokenScreen.prototype.tokenAddressDidChange = function (event) { + const el = event.target + const address = el.value.trim() + if (ethUtil.isValidAddress(address) && address !== emptyAddr) { + this.setState({ address }) + this.attemptToAutoFillTokenParams(address) + } +} + +AddTokenScreen.prototype.validateInputs = function () { + let msg = '' + const state = this.state + const identitiesList = Object.keys(this.props.identities) + const { address, symbol, decimals } = state + const standardAddress = ethUtil.addHexPrefix(address).toLowerCase() + + const validAddress = ethUtil.isValidAddress(address) + if (!validAddress) { + msg += 'Address is invalid. ' + } + + const validDecimals = decimals >= 0 && decimals < 36 + if (!validDecimals) { + msg += 'Decimals must be at least 0, and not over 36. ' + } + + const symbolLen = symbol.trim().length + const validSymbol = symbolLen > 0 && symbolLen < 10 + if (!validSymbol) { + msg += 'Symbol must be between 0 and 10 characters.' + } + + const ownAddress = identitiesList.includes(standardAddress) + if (ownAddress) { + msg = 'Personal address detected. Input the token contract address.' + } + + const isValid = validAddress && validDecimals && !ownAddress + + if (!isValid) { + this.setState({ + warning: msg, + }) + } else { + this.setState({ warning: null }) + } + + return isValid +} + +AddTokenScreen.prototype.attemptToAutoFillTokenParams = async function (address) { + const contract = this.TokenContract.at(address) + + const results = await Promise.all([ + contract.symbol(), + contract.decimals(), + ]) + + const [ symbol, decimals ] = results + if (symbol && decimals) { + console.log('SETTING SYMBOL AND DECIMALS', { symbol, decimals }) + this.setState({ symbol: symbol[0], decimals: decimals[0].toString() }) + } +} diff --git a/old-ui/app/app.js b/old-ui/app/app.js new file mode 100644 index 000000000..4869bf72e --- /dev/null +++ b/old-ui/app/app.js @@ -0,0 +1,684 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const connect = require('react-redux').connect +const h = require('react-hyperscript') +const actions = require('../../ui/app/actions') +// mascara +const MascaraFirstTime = require('../../mascara/src/app/first-time').default +const MascaraBuyEtherScreen = require('../../mascara/src/app/first-time/buy-ether-screen').default +// init +const InitializeMenuScreen = require('./first-time/init-menu') +const NewKeyChainScreen = require('./new-keychain') +// unlock +const UnlockScreen = require('./unlock') +// accounts +const AccountDetailScreen = require('./account-detail') +const SendTransactionScreen = require('./send') +const ConfirmTxScreen = require('./conf-tx') +// notice +const NoticeScreen = require('./components/notice') +const generateLostAccountsNotice = require('../lib/lost-accounts-notice') +// other views +const ConfigScreen = require('./config') +const AddTokenScreen = require('./add-token') +const Import = require('./accounts/import') +const InfoScreen = require('./info') +const Loading = require('./components/loading') +const SandwichExpando = require('sandwich-expando') +const Dropdown = require('./components/dropdown').Dropdown +const DropdownMenuItem = require('./components/dropdown').DropdownMenuItem +const NetworkIndicator = require('./components/network') +const BuyView = require('./components/buy-button-subview') +const QrView = require('./components/qr-code') +const HDCreateVaultComplete = require('./keychains/hd/create-vault-complete') +const HDRestoreVaultScreen = require('./keychains/hd/restore-vault') +const RevealSeedConfirmation = require('./keychains/hd/recover-seed/confirmation') +const AccountDropdowns = require('./components/account-dropdowns').AccountDropdowns +const { BETA_UI_NETWORK_TYPE } = require('../../app/scripts/config').enums + +module.exports = connect(mapStateToProps)(App) + +inherits(App, Component) +function App () { Component.call(this) } + +function mapStateToProps (state) { + const { + identities, + accounts, + address, + keyrings, + isInitialized, + noActiveNotices, + seedWords, + featureFlags, + } = state.metamask + const selected = address || Object.keys(accounts)[0] + + return { + // state from plugin + isLoading: state.appState.isLoading, + loadingMessage: state.appState.loadingMessage, + noActiveNotices: state.metamask.noActiveNotices, + isInitialized: state.metamask.isInitialized, + isUnlocked: state.metamask.isUnlocked, + currentView: state.appState.currentView, + activeAddress: state.appState.activeAddress, + transForward: state.appState.transForward, + isMascara: state.metamask.isMascara, + isOnboarding: Boolean(!noActiveNotices || seedWords || !isInitialized), + seedWords: state.metamask.seedWords, + unapprovedTxs: state.metamask.unapprovedTxs, + unapprovedMsgs: state.metamask.unapprovedMsgs, + menuOpen: state.appState.menuOpen, + network: state.metamask.network, + provider: state.metamask.provider, + forgottenPassword: state.appState.forgottenPassword, + lastUnreadNotice: state.metamask.lastUnreadNotice, + lostAccounts: state.metamask.lostAccounts, + frequentRpcList: state.metamask.frequentRpcList || [], + featureFlags, + + // state needed to get account dropdown temporarily rendering from app bar + identities, + selected, + keyrings, + } +} + +App.prototype.render = function () { + var props = this.props + const { isLoading, loadingMessage, transForward, network } = props + const isLoadingNetwork = network === 'loading' && props.currentView.name !== 'config' + const loadMessage = loadingMessage || isLoadingNetwork ? + `Connecting to ${this.getNetworkName()}` : null + log.debug('Main ui render function') + + return ( + h('.flex-column.full-height', { + style: { + // Windows was showing a vertical scroll bar: + overflow: 'hidden', + position: 'relative', + alignItems: 'center', + }, + }, [ + + // app bar + this.renderAppBar(), + this.renderNetworkDropdown(), + this.renderDropdown(), + + this.renderLoadingIndicator({ isLoading, isLoadingNetwork, loadMessage }), + + // panel content + h('.app-primary' + (transForward ? '.from-right' : '.from-left'), { + style: { + width: '100%', + }, + }, [ + this.renderPrimary(), + ]), + ]) + ) +} + +App.prototype.renderAppBar = function () { + if (window.METAMASK_UI_TYPE === 'notification') { + return null + } + + const props = this.props + const state = this.state || {} + const isNetworkMenuOpen = state.isNetworkMenuOpen || false + const {isMascara, isOnboarding} = props + + // Do not render header if user is in mascara onboarding + if (isMascara && isOnboarding) { + return null + } + + // Do not render header if user is in mascara buy ether + if (isMascara && props.currentView.name === 'buyEth') { + return null + } + + return ( + + h('.full-width', { + height: '38px', + }, [ + + h('.app-header.flex-row.flex-space-between', { + style: { + alignItems: 'center', + visibility: props.isUnlocked ? 'visible' : 'none', + background: props.isUnlocked ? 'white' : 'none', + height: '38px', + position: 'relative', + zIndex: 12, + }, + }, [ + + h('div.left-menu-section', { + style: { + display: 'flex', + flexDirection: 'row', + alignItems: 'center', + }, + }, [ + + // mini logo + h('img', { + height: 24, + width: 24, + src: '/images/icon-128.png', + }), + + h(NetworkIndicator, { + network: this.props.network, + provider: this.props.provider, + onClick: (event) => { + event.preventDefault() + event.stopPropagation() + this.setState({ isNetworkMenuOpen: !isNetworkMenuOpen }) + }, + }), + ]), + + props.isUnlocked && h('div', { + style: { + display: 'flex', + flexDirection: 'row', + alignItems: 'center', + }, + }, [ + + props.isUnlocked && h(AccountDropdowns, { + style: {}, + enableAccountsSelector: true, + identities: this.props.identities, + selected: this.props.currentView.context, + network: this.props.network, + keyrings: this.props.keyrings, + }, []), + + // hamburger + props.isUnlocked && h(SandwichExpando, { + className: 'sandwich-expando', + width: 16, + barHeight: 2, + padding: 0, + isOpen: state.isMainMenuOpen, + color: 'rgb(247,146,30)', + onClick: () => { + this.setState({ + isMainMenuOpen: !state.isMainMenuOpen, + }) + }, + }), + ]), + ]), + ]) + ) +} + +App.prototype.renderNetworkDropdown = function () { + const props = this.props + const { provider: { type: providerType, rpcTarget: activeNetwork } } = props + const rpcList = props.frequentRpcList + const state = this.state || {} + const isOpen = state.isNetworkMenuOpen + + return h(Dropdown, { + useCssTransition: true, + isOpen, + onClickOutside: (event) => { + const { classList } = event.target + const isNotToggleElement = [ + classList.contains('menu-icon'), + classList.contains('network-name'), + classList.contains('network-indicator'), + ].filter(bool => bool).length === 0 + // classes from three constituent nodes of the toggle element + + if (isNotToggleElement) { + this.setState({ isNetworkMenuOpen: false }) + } + }, + zIndex: 11, + style: { + position: 'absolute', + left: '2px', + top: '36px', + }, + innerStyle: { + padding: '2px 16px 2px 0px', + }, + }, [ + + h( + DropdownMenuItem, + { + key: 'main', + closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }), + onClick: () => props.dispatch(actions.setProviderType('mainnet')), + style: { + fontSize: '18px', + }, + }, + [ + h('.menu-icon.diamond'), + 'Main Ethereum Network', + providerType === 'mainnet' ? h('.check', '✓') : null, + ] + ), + + h( + DropdownMenuItem, + { + key: 'ropsten', + closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }), + onClick: () => props.dispatch(actions.setProviderType('ropsten')), + style: { + fontSize: '18px', + }, + }, + [ + h('.menu-icon.red-dot'), + 'Ropsten Test Network', + providerType === 'ropsten' ? h('.check', '✓') : null, + ] + ), + + h( + DropdownMenuItem, + { + key: 'kovan', + closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }), + onClick: () => props.dispatch(actions.setProviderType('kovan')), + style: { + fontSize: '18px', + }, + }, + [ + h('.menu-icon.hollow-diamond'), + 'Kovan Test Network', + providerType === 'kovan' ? h('.check', '✓') : null, + ] + ), + + h( + DropdownMenuItem, + { + key: 'rinkeby', + closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }), + onClick: () => props.dispatch(actions.setProviderType('rinkeby')), + style: { + fontSize: '18px', + }, + }, + [ + h('.menu-icon.golden-square'), + 'Rinkeby Test Network', + providerType === 'rinkeby' ? h('.check', '✓') : null, + ] + ), + + h( + DropdownMenuItem, + { + key: 'default', + closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }), + onClick: () => props.dispatch(actions.setProviderType('localhost')), + style: { + fontSize: '18px', + }, + }, + [ + h('i.fa.fa-question-circle.fa-lg.menu-icon'), + 'Localhost 8545', + activeNetwork === 'http://localhost:8545' ? h('.check', '✓') : null, + ] + ), + + this.renderCustomOption(props.provider), + this.renderCommonRpc(rpcList, props.provider), + + h( + DropdownMenuItem, + { + closeMenu: () => this.setState({ isNetworkMenuOpen: !isOpen }), + onClick: () => this.props.dispatch(actions.showConfigPage()), + style: { + fontSize: '18px', + }, + }, + [ + h('i.fa.fa-question-circle.fa-lg.menu-icon'), + 'Custom RPC', + activeNetwork === 'custom' ? h('.check', '✓') : null, + ] + ), + + ]) +} + +App.prototype.renderDropdown = function () { + const state = this.state || {} + const isOpen = state.isMainMenuOpen + + return h(Dropdown, { + useCssTransition: true, + isOpen: isOpen, + zIndex: 11, + onClickOutside: (event) => { + const classList = event.target.classList + const parentClassList = event.target.parentElement.classList + + const isToggleElement = classList.contains('sandwich-expando') || + parentClassList.contains('sandwich-expando') + + if (isOpen && !isToggleElement) { + this.setState({ isMainMenuOpen: false }) + } + }, + style: { + position: 'absolute', + right: '2px', + top: '38px', + }, + innerStyle: {}, + }, [ + h(DropdownMenuItem, { + closeMenu: () => this.setState({ isMainMenuOpen: !isOpen }), + onClick: () => { this.props.dispatch(actions.showConfigPage()) }, + }, 'Settings'), + + h(DropdownMenuItem, { + closeMenu: () => this.setState({ isMainMenuOpen: !isOpen }), + onClick: () => { this.props.dispatch(actions.lockMetamask()) }, + }, 'Lock'), + + h(DropdownMenuItem, { + closeMenu: () => this.setState({ isMainMenuOpen: !isOpen }), + onClick: () => { this.props.dispatch(actions.showInfoPage()) }, + }, 'Info/Help'), + + h(DropdownMenuItem, { + closeMenu: () => this.setState({ isMainMenuOpen: !isOpen }), + onClick: () => { + this.props.dispatch(actions.setFeatureFlag('betaUI', true, 'BETA_UI_NOTIFICATION_MODAL')) + .then(() => this.props.dispatch(actions.setNetworkEndpoints(BETA_UI_NETWORK_TYPE))) + }, + }, 'Try Beta!'), + ]) +} + +App.prototype.renderLoadingIndicator = function ({ isLoading, isLoadingNetwork, loadMessage }) { + const { isMascara } = this.props + + return isMascara + ? null + : h(Loading, { + isLoading: isLoading || isLoadingNetwork, + loadingMessage: loadMessage, + }) +} + +App.prototype.renderBackButton = function (style, justArrow = false) { + var props = this.props + return ( + h('.flex-row', { + key: 'leftArrow', + style: style, + onClick: () => props.dispatch(actions.goBackToInitView()), + }, [ + h('i.fa.fa-arrow-left.cursor-pointer'), + justArrow ? null : h('div.cursor-pointer', { + style: { + marginLeft: '3px', + }, + onClick: () => props.dispatch(actions.goBackToInitView()), + }, 'BACK'), + ]) + ) +} + +App.prototype.renderPrimary = function () { + log.debug('rendering primary') + var props = this.props + const {isMascara, isOnboarding} = props + + if (isMascara && isOnboarding) { + return h(MascaraFirstTime) + } + + // notices + if (!props.noActiveNotices) { + log.debug('rendering notice screen for unread notices.') + return h(NoticeScreen, { + notice: props.lastUnreadNotice, + key: 'NoticeScreen', + onConfirm: () => props.dispatch(actions.markNoticeRead(props.lastUnreadNotice)), + }) + } else if (props.lostAccounts && props.lostAccounts.length > 0) { + log.debug('rendering notice screen for lost accounts view.') + return h(NoticeScreen, { + notice: generateLostAccountsNotice(props.lostAccounts), + key: 'LostAccountsNotice', + onConfirm: () => props.dispatch(actions.markAccountsFound()), + }) + } + + if (props.seedWords) { + log.debug('rendering seed words') + return h(HDCreateVaultComplete, {key: 'HDCreateVaultComplete'}) + } + + // show initialize screen + if (!props.isInitialized || props.forgottenPassword) { + // show current view + log.debug('rendering an initialize screen') + switch (props.currentView.name) { + + case 'restoreVault': + log.debug('rendering restore vault screen') + return h(HDRestoreVaultScreen, {key: 'HDRestoreVaultScreen'}) + + default: + log.debug('rendering menu screen') + return h(InitializeMenuScreen, {key: 'menuScreenInit'}) + } + } + + // show unlock screen + if (!props.isUnlocked) { + switch (props.currentView.name) { + + case 'restoreVault': + log.debug('rendering restore vault screen') + return h(HDRestoreVaultScreen, {key: 'HDRestoreVaultScreen'}) + + case 'config': + log.debug('rendering config screen from unlock screen.') + return h(ConfigScreen, {key: 'config'}) + + default: + log.debug('rendering locked screen') + return h(UnlockScreen, {key: 'locked'}) + } + } + + // show current view + switch (props.currentView.name) { + + case 'accountDetail': + log.debug('rendering account detail screen') + return h(AccountDetailScreen, {key: 'account-detail'}) + + case 'sendTransaction': + log.debug('rendering send tx screen') + return h(SendTransactionScreen, {key: 'send-transaction'}) + + case 'newKeychain': + log.debug('rendering new keychain screen') + return h(NewKeyChainScreen, {key: 'new-keychain'}) + + case 'confTx': + log.debug('rendering confirm tx screen') + return h(ConfirmTxScreen, {key: 'confirm-tx'}) + + case 'add-token': + log.debug('rendering add-token screen from unlock screen.') + return h(AddTokenScreen, {key: 'add-token'}) + + case 'config': + log.debug('rendering config screen') + return h(ConfigScreen, {key: 'config'}) + + case 'import-menu': + log.debug('rendering import screen') + return h(Import, {key: 'import-menu'}) + + case 'reveal-seed-conf': + log.debug('rendering reveal seed confirmation screen') + return h(RevealSeedConfirmation, {key: 'reveal-seed-conf'}) + + case 'info': + log.debug('rendering info screen') + return h(InfoScreen, {key: 'info'}) + + case 'buyEth': + log.debug('rendering buy ether screen') + return h(BuyView, {key: 'buyEthView'}) + + case 'onboardingBuyEth': + log.debug('rendering onboarding buy ether screen') + return h(MascaraBuyEtherScreen, {key: 'buyEthView'}) + + case 'qr': + log.debug('rendering show qr screen') + console.log(`QrView`, QrView); + return h('div', { + style: { + position: 'absolute', + height: '100%', + top: '0px', + left: '0px', + }, + }, [ + h('i.fa.fa-arrow-left.fa-lg.cursor-pointer.color-orange', { + onClick: () => props.dispatch(actions.backToAccountDetail(props.activeAddress)), + style: { + marginLeft: '10px', + marginTop: '50px', + }, + }), + h('div', { + style: { + position: 'absolute', + left: '44px', + width: '285px', + }, + }, [ + h(QrView, {key: 'qr'}), + ]), + ]) + + default: + log.debug('rendering default, account detail screen') + return h(AccountDetailScreen, {key: 'account-detail'}) + } +} + +App.prototype.toggleMetamaskActive = function () { + if (!this.props.isUnlocked) { + // currently inactive: redirect to password box + var passwordBox = document.querySelector('input[type=password]') + if (!passwordBox) return + passwordBox.focus() + } else { + // currently active: deactivate + this.props.dispatch(actions.lockMetamask(false)) + } +} + +App.prototype.renderCustomOption = function (provider) { + const { rpcTarget, type } = provider + const props = this.props + + if (type !== 'rpc') return null + + // Concatenate long URLs + let label = rpcTarget + if (rpcTarget.length > 31) { + label = label.substr(0, 34) + '...' + } + + switch (rpcTarget) { + + case 'http://localhost:8545': + return null + + default: + return h( + DropdownMenuItem, + { + key: rpcTarget, + onClick: () => props.dispatch(actions.setRpcTarget(rpcTarget)), + closeMenu: () => this.setState({ isNetworkMenuOpen: false }), + }, + [ + h('i.fa.fa-question-circle.fa-lg.menu-icon'), + label, + h('.check', '✓'), + ] + ) + } +} + +App.prototype.getNetworkName = function () { + const { provider } = this.props + const providerName = provider.type + + let name + + if (providerName === 'mainnet') { + name = 'Main Ethereum Network' + } else if (providerName === 'ropsten') { + name = 'Ropsten Test Network' + } else if (providerName === 'kovan') { + name = 'Kovan Test Network' + } else if (providerName === 'rinkeby') { + name = 'Rinkeby Test Network' + } else { + name = 'Unknown Private Network' + } + + return name +} + +App.prototype.renderCommonRpc = function (rpcList, provider) { + const props = this.props + const rpcTarget = provider.rpcTarget + + return rpcList.map((rpc) => { + if ((rpc === 'http://localhost:8545') || (rpc === rpcTarget)) { + return null + } else { + return h( + DropdownMenuItem, + { + key: `common${rpc}`, + closeMenu: () => this.setState({ isNetworkMenuOpen: false }), + onClick: () => props.dispatch(actions.setRpcTarget(rpc)), + }, + [ + h('i.fa.fa-question-circle.fa-lg.menu-icon'), + rpc, + rpcTarget === rpc ? h('.check', '✓') : null, + ] + ) + } + }) +} diff --git a/old-ui/app/components/account-dropdowns.js b/old-ui/app/components/account-dropdowns.js new file mode 100644 index 000000000..a3908f45d --- /dev/null +++ b/old-ui/app/components/account-dropdowns.js @@ -0,0 +1,319 @@ +const Component = require('react').Component +const PropTypes = require('react').PropTypes +const h = require('react-hyperscript') +const actions = require('../../../ui/app/actions') +const genAccountLink = require('etherscan-link').createAccountLink +const connect = require('react-redux').connect +const Dropdown = require('./dropdown').Dropdown +const DropdownMenuItem = require('./dropdown').DropdownMenuItem +const Identicon = require('./identicon') +const ethUtil = require('ethereumjs-util') +const copyToClipboard = require('copy-to-clipboard') + +class AccountDropdowns extends Component { + constructor (props) { + super(props) + this.state = { + accountSelectorActive: false, + optionsMenuActive: false, + } + this.accountSelectorToggleClassName = 'accounts-selector' + this.optionsMenuToggleClassName = 'fa-ellipsis-h' + } + + renderAccounts () { + const { identities, selected, keyrings } = this.props + + return Object.keys(identities).map((key, index) => { + const identity = identities[key] + const isSelected = identity.address === selected + + const simpleAddress = identity.address.substring(2).toLowerCase() + + const keyring = keyrings.find((kr) => { + return kr.accounts.includes(simpleAddress) || + kr.accounts.includes(identity.address) + }) + + return h( + DropdownMenuItem, + { + closeMenu: () => {}, + onClick: () => { + this.props.actions.showAccountDetail(identity.address) + }, + style: { + marginTop: index === 0 ? '5px' : '', + fontSize: '24px', + }, + }, + [ + h( + Identicon, + { + address: identity.address, + diameter: 32, + style: { + marginLeft: '10px', + }, + }, + ), + this.indicateIfLoose(keyring), + h('span', { + style: { + marginLeft: '20px', + fontSize: '24px', + maxWidth: '145px', + whiteSpace: 'nowrap', + overflow: 'hidden', + textOverflow: 'ellipsis', + }, + }, identity.name || ''), + h('span', { style: { marginLeft: '20px', fontSize: '24px' } }, isSelected ? h('.check', '✓') : null), + ] + ) + }) + } + + indicateIfLoose (keyring) { + try { // Sometimes keyrings aren't loaded yet: + const type = keyring.type + const isLoose = type !== 'HD Key Tree' + return isLoose ? h('.keyring-label', 'LOOSE') : null + } catch (e) { return } + } + + renderAccountSelector () { + const { actions } = this.props + const { accountSelectorActive } = this.state + + return h( + Dropdown, + { + useCssTransition: true, // Hardcoded because account selector is temporarily in app-header + style: { + marginLeft: '-238px', + marginTop: '38px', + minWidth: '180px', + overflowY: 'auto', + maxHeight: '300px', + width: '300px', + }, + innerStyle: { + padding: '8px 25px', + }, + isOpen: accountSelectorActive, + onClickOutside: (event) => { + const { classList } = event.target + const isNotToggleElement = !classList.contains(this.accountSelectorToggleClassName) + if (accountSelectorActive && isNotToggleElement) { + this.setState({ accountSelectorActive: false }) + } + }, + }, + [ + ...this.renderAccounts(), + h( + DropdownMenuItem, + { + closeMenu: () => {}, + onClick: () => actions.addNewAccount(), + }, + [ + h( + Identicon, + { + style: { + marginLeft: '10px', + }, + diameter: 32, + }, + ), + h('span', { style: { marginLeft: '20px', fontSize: '24px' } }, 'Create Account'), + ], + ), + h( + DropdownMenuItem, + { + closeMenu: () => {}, + onClick: () => actions.showImportPage(), + }, + [ + h( + Identicon, + { + style: { + marginLeft: '10px', + }, + diameter: 32, + }, + ), + h('span', { + style: { + marginLeft: '20px', + fontSize: '24px', + marginBottom: '5px', + }, + }, 'Import Account'), + ] + ), + ] + ) + } + + renderAccountOptions () { + const { actions } = this.props + const { optionsMenuActive } = this.state + + return h( + Dropdown, + { + style: { + marginLeft: '-215px', + minWidth: '180px', + }, + isOpen: optionsMenuActive, + onClickOutside: () => { + const { classList } = event.target + const isNotToggleElement = !classList.contains(this.optionsMenuToggleClassName) + if (optionsMenuActive && isNotToggleElement) { + this.setState({ optionsMenuActive: false }) + } + }, + }, + [ + h( + DropdownMenuItem, + { + closeMenu: () => {}, + onClick: () => { + const { selected, network } = this.props + const url = genAccountLink(selected, network) + global.platform.openWindow({ url }) + }, + }, + 'View account on Etherscan', + ), + h( + DropdownMenuItem, + { + closeMenu: () => {}, + onClick: () => { + const { selected, identities } = this.props + var identity = identities[selected] + actions.showQrView(selected, identity ? identity.name : '') + }, + }, + 'Show QR Code', + ), + h( + DropdownMenuItem, + { + closeMenu: () => {}, + onClick: () => { + const { selected } = this.props + const checkSumAddress = selected && ethUtil.toChecksumAddress(selected) + copyToClipboard(checkSumAddress) + }, + }, + 'Copy Address to clipboard', + ), + h( + DropdownMenuItem, + { + closeMenu: () => {}, + onClick: () => { + actions.requestAccountExport() + }, + }, + 'Export Private Key', + ), + ] + ) + } + + render () { + const { style, enableAccountsSelector, enableAccountOptions } = this.props + const { optionsMenuActive, accountSelectorActive } = this.state + + return h( + 'span', + { + style: style, + }, + [ + enableAccountsSelector && h( + // 'i.fa.fa-angle-down', + 'div.cursor-pointer.color-orange.accounts-selector', + { + style: { + // fontSize: '1.8em', + background: 'url(images/switch_acc.svg) white center center no-repeat', + height: '25px', + width: '25px', + transform: 'scale(0.75)', + marginRight: '3px', + }, + onClick: (event) => { + event.stopPropagation() + this.setState({ + accountSelectorActive: !accountSelectorActive, + optionsMenuActive: false, + }) + }, + }, + this.renderAccountSelector(), + ), + enableAccountOptions && h( + 'i.fa.fa-ellipsis-h', + { + style: { + fontSize: '1.8em', + }, + onClick: (event) => { + event.stopPropagation() + this.setState({ + accountSelectorActive: false, + optionsMenuActive: !optionsMenuActive, + }) + }, + }, + this.renderAccountOptions() + ), + ] + ) + } +} + +AccountDropdowns.defaultProps = { + enableAccountsSelector: false, + enableAccountOptions: false, +} + +AccountDropdowns.propTypes = { + identities: PropTypes.objectOf(PropTypes.object), + selected: PropTypes.string, + keyrings: PropTypes.array, + actions: PropTypes.objectOf(PropTypes.func), + network: PropTypes.string, + style: PropTypes.object, + enableAccountOptions: PropTypes.bool, + enableAccountsSelector: PropTypes.bool, +} + +const mapDispatchToProps = (dispatch) => { + return { + actions: { + showConfigPage: () => dispatch(actions.showConfigPage()), + requestAccountExport: () => dispatch(actions.requestExportAccount()), + showAccountDetail: (address) => dispatch(actions.showAccountDetail(address)), + addNewAccount: () => dispatch(actions.addNewAccount()), + showImportPage: () => dispatch(actions.showImportPage()), + showQrView: (selected, identity) => dispatch(actions.showQrView(selected, identity)), + }, + } +} + +module.exports = { + AccountDropdowns: connect(null, mapDispatchToProps)(AccountDropdowns), +} diff --git a/old-ui/app/components/account-export.js b/old-ui/app/components/account-export.js new file mode 100644 index 000000000..51b85b786 --- /dev/null +++ b/old-ui/app/components/account-export.js @@ -0,0 +1,132 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const exportAsFile = require('../util').exportAsFile +const copyToClipboard = require('copy-to-clipboard') +const actions = require('../../../ui/app/actions') +const ethUtil = require('ethereumjs-util') +const connect = require('react-redux').connect + +module.exports = connect(mapStateToProps)(ExportAccountView) + +inherits(ExportAccountView, Component) +function ExportAccountView () { + Component.call(this) +} + +function mapStateToProps (state) { + return { + warning: state.appState.warning, + } +} + +ExportAccountView.prototype.render = function () { + const state = this.props + const accountDetail = state.accountDetail + const nickname = state.identities[state.address].name + + if (!accountDetail) return h('div') + const accountExport = accountDetail.accountExport + + const notExporting = accountExport === 'none' + const exportRequested = accountExport === 'requested' + const accountExported = accountExport === 'completed' + + if (notExporting) return h('div') + + if (exportRequested) { + const warning = `Export private keys at your own risk.` + return ( + h('div', { + style: { + display: 'inline-block', + textAlign: 'center', + }, + }, + [ + h('div', { + key: 'exporting', + style: { + margin: '0 20px', + }, + }, [ + h('p.error', warning), + h('input#exportAccount.sizing-input', { + type: 'password', + placeholder: 'confirm password', + onKeyPress: this.onExportKeyPress.bind(this), + style: { + position: 'relative', + top: '1.5px', + marginBottom: '7px', + }, + }), + ]), + h('div', { + key: 'buttons', + style: { + margin: '0 20px', + }, + }, + [ + h('button', { + onClick: () => this.onExportKeyPress({ key: 'Enter', preventDefault: () => {} }), + style: { + marginRight: '10px', + }, + }, 'Submit'), + h('button', { + onClick: () => this.props.dispatch(actions.backToAccountDetail(this.props.address)), + }, 'Cancel'), + ]), + (this.props.warning) && ( + h('span.error', { + style: { + margin: '20px', + }, + }, this.props.warning.split('-')) + ), + ]) + ) + } + + if (accountExported) { + const plainKey = ethUtil.stripHexPrefix(accountDetail.privateKey) + + return h('div.privateKey', { + style: { + margin: '0 20px', + }, + }, [ + h('label', 'Your private key (click to copy):'), + h('p.error.cursor-pointer', { + style: { + textOverflow: 'ellipsis', + overflow: 'hidden', + webkitUserSelect: 'text', + maxWidth: '275px', + }, + onClick: function (event) { + copyToClipboard(ethUtil.stripHexPrefix(accountDetail.privateKey)) + }, + }, plainKey), + h('button', { + onClick: () => this.props.dispatch(actions.backToAccountDetail(this.props.address)), + }, 'Done'), + h('button', { + style: { + marginLeft: '10px', + }, + onClick: () => exportAsFile(`MetaMask ${nickname} Private Key`, plainKey), + }, 'Save as File'), + ]) + } +} + +ExportAccountView.prototype.onExportKeyPress = function (event) { + if (event.key !== 'Enter') return + event.preventDefault() + + const input = document.getElementById('exportAccount').value + this.props.dispatch(actions.exportAccount(input, this.props.address)) +} diff --git a/old-ui/app/components/account-panel.js b/old-ui/app/components/account-panel.js new file mode 100644 index 000000000..abaaf8163 --- /dev/null +++ b/old-ui/app/components/account-panel.js @@ -0,0 +1,86 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const h = require('react-hyperscript') +const Identicon = require('./identicon') +const formatBalance = require('../util').formatBalance +const addressSummary = require('../util').addressSummary + +module.exports = AccountPanel + + +inherits(AccountPanel, Component) +function AccountPanel () { + Component.call(this) +} + +AccountPanel.prototype.render = function () { + var state = this.props + var identity = state.identity || {} + var account = state.account || {} + var isFauceting = state.isFauceting + + var panelState = { + key: `accountPanel${identity.address}`, + identiconKey: identity.address, + identiconLabel: identity.name || '', + attributes: [ + { + key: 'ADDRESS', + value: addressSummary(identity.address), + }, + balanceOrFaucetingIndication(account, isFauceting), + ], + } + + return ( + + h('.identity-panel.flex-row.flex-space-between', { + style: { + flex: '1 0 auto', + cursor: panelState.onClick ? 'pointer' : undefined, + }, + onClick: panelState.onClick, + }, [ + + // account identicon + h('.identicon-wrapper.flex-column.select-none', [ + h(Identicon, { + address: panelState.identiconKey, + imageify: state.imageifyIdenticons, + }), + h('span.font-small', panelState.identiconLabel.substring(0, 7) + '...'), + ]), + + // account address, balance + h('.identity-data.flex-column.flex-justify-center.flex-grow.select-none', [ + + panelState.attributes.map((attr) => { + return h('.flex-row.flex-space-between', { + key: '' + Math.round(Math.random() * 1000000), + }, [ + h('label.font-small.no-select', attr.key), + h('span.font-small', attr.value), + ]) + }), + ]), + + ]) + + ) +} + +function balanceOrFaucetingIndication (account, isFauceting) { + // Temporarily deactivating isFauceting indication + // because it shows fauceting for empty restored accounts. + if (/* isFauceting*/ false) { + return { + key: 'Account is auto-funding.', + value: 'Please wait.', + } + } else { + return { + key: 'BALANCE', + value: formatBalance(account.balance), + } + } +} diff --git a/old-ui/app/components/balance.js b/old-ui/app/components/balance.js new file mode 100644 index 000000000..57ca84564 --- /dev/null +++ b/old-ui/app/components/balance.js @@ -0,0 +1,89 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const formatBalance = require('../util').formatBalance +const generateBalanceObject = require('../util').generateBalanceObject +const Tooltip = require('./tooltip.js') +const FiatValue = require('./fiat-value.js') + +module.exports = EthBalanceComponent + +inherits(EthBalanceComponent, Component) +function EthBalanceComponent () { + Component.call(this) +} + +EthBalanceComponent.prototype.render = function () { + var props = this.props + let { value } = props + var style = props.style + var needsParse = this.props.needsParse !== undefined ? this.props.needsParse : true + value = value ? formatBalance(value, 6, needsParse) : '...' + var width = props.width + + return ( + + h('.ether-balance.ether-balance-amount', { + style: style, + }, [ + h('div', { + style: { + display: 'inline', + width: width, + }, + }, this.renderBalance(value)), + ]) + + ) +} +EthBalanceComponent.prototype.renderBalance = function (value) { + var props = this.props + if (value === 'None') return value + if (value === '...') return value + var balanceObj = generateBalanceObject(value, props.shorten ? 1 : 3) + var balance + var splitBalance = value.split(' ') + var ethNumber = splitBalance[0] + var ethSuffix = splitBalance[1] + const showFiat = 'showFiat' in props ? props.showFiat : true + + if (props.shorten) { + balance = balanceObj.shortBalance + } else { + balance = balanceObj.balance + } + + var label = balanceObj.label + + return ( + h(Tooltip, { + position: 'bottom', + title: `${ethNumber} ${ethSuffix}`, + }, h('div.flex-column', [ + h('.flex-row', { + style: { + alignItems: 'flex-end', + lineHeight: '13px', + fontFamily: 'Montserrat Light', + textRendering: 'geometricPrecision', + }, + }, [ + h('div', { + style: { + width: '100%', + textAlign: 'right', + }, + }, this.props.incoming ? `+${balance}` : balance), + h('div', { + style: { + color: ' #AEAEAE', + fontSize: '12px', + marginLeft: '5px', + }, + }, label), + ]), + + showFiat ? h(FiatValue, { value: props.value }) : null, + ])) + ) +} diff --git a/old-ui/app/components/binary-renderer.js b/old-ui/app/components/binary-renderer.js new file mode 100644 index 000000000..0b6a1f5c2 --- /dev/null +++ b/old-ui/app/components/binary-renderer.js @@ -0,0 +1,46 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const ethUtil = require('ethereumjs-util') +const extend = require('xtend') + +module.exports = BinaryRenderer + +inherits(BinaryRenderer, Component) +function BinaryRenderer () { + Component.call(this) +} + +BinaryRenderer.prototype.render = function () { + const props = this.props + const { value, style } = props + const text = this.hexToText(value) + + const defaultStyle = extend({ + width: '315px', + maxHeight: '210px', + resize: 'none', + border: 'none', + background: 'white', + padding: '3px', + }, style) + + return ( + h('textarea.font-small', { + readOnly: true, + style: defaultStyle, + defaultValue: text, + }) + ) +} + +BinaryRenderer.prototype.hexToText = function (hex) { + try { + const stripped = ethUtil.stripHexPrefix(hex) + const buff = Buffer.from(stripped, 'hex') + return buff.toString('utf8') + } catch (e) { + return hex + } +} + diff --git a/old-ui/app/components/bn-as-decimal-input.js b/old-ui/app/components/bn-as-decimal-input.js new file mode 100644 index 000000000..22e37602e --- /dev/null +++ b/old-ui/app/components/bn-as-decimal-input.js @@ -0,0 +1,181 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const ethUtil = require('ethereumjs-util') +const BN = ethUtil.BN +const extend = require('xtend') + +module.exports = BnAsDecimalInput + +inherits(BnAsDecimalInput, Component) +function BnAsDecimalInput () { + this.state = { invalid: null } + Component.call(this) +} + +/* Bn as Decimal Input + * + * A component for allowing easy, decimal editing + * of a passed in bn string value. + * + * On change, calls back its `onChange` function parameter + * and passes it an updated bn string. + */ + +BnAsDecimalInput.prototype.render = function () { + const props = this.props + const state = this.state + + const { value, scale, precision, onChange, min, max } = props + + const suffix = props.suffix + const style = props.style + const valueString = value.toString(10) + const newMin = min && this.downsize(min.toString(10), scale) + const newMax = max && this.downsize(max.toString(10), scale) + const newValue = this.downsize(valueString, scale) + + return ( + h('.flex-column', [ + h('.flex-row', { + style: { + alignItems: 'flex-end', + lineHeight: '13px', + fontFamily: 'Montserrat Light', + textRendering: 'geometricPrecision', + }, + }, [ + h('input.hex-input', { + type: 'number', + step: 'any', + required: true, + min: newMin, + max: newMax, + style: extend({ + display: 'block', + textAlign: 'right', + backgroundColor: 'transparent', + border: '1px solid #bdbdbd', + + }, style), + value: newValue, + onBlur: (event) => { + this.updateValidity(event) + }, + onChange: (event) => { + this.updateValidity(event) + const value = (event.target.value === '') ? '' : event.target.value + + + const scaledNumber = this.upsize(value, scale, precision) + const precisionBN = new BN(scaledNumber, 10) + onChange(precisionBN, event.target.checkValidity()) + }, + onInvalid: (event) => { + const msg = this.constructWarning() + if (msg === state.invalid) { + return + } + this.setState({ invalid: msg }) + event.preventDefault() + return false + }, + }), + h('div', { + style: { + color: ' #AEAEAE', + fontSize: '12px', + marginLeft: '5px', + marginRight: '6px', + width: '20px', + }, + }, suffix), + ]), + + state.invalid ? h('span.error', { + style: { + position: 'absolute', + right: '0px', + textAlign: 'right', + transform: 'translateY(26px)', + padding: '3px', + background: 'rgba(255,255,255,0.85)', + zIndex: '1', + textTransform: 'capitalize', + border: '2px solid #E20202', + }, + }, state.invalid) : null, + ]) + ) +} + +BnAsDecimalInput.prototype.setValid = function (message) { + this.setState({ invalid: null }) +} + +BnAsDecimalInput.prototype.updateValidity = function (event) { + const target = event.target + const value = this.props.value + const newValue = target.value + + if (value === newValue) { + return + } + + const valid = target.checkValidity() + + if (valid) { + this.setState({ invalid: null }) + } +} + +BnAsDecimalInput.prototype.constructWarning = function () { + const { name, min, max, scale, suffix } = this.props + const newMin = min && this.downsize(min.toString(10), scale) + const newMax = max && this.downsize(max.toString(10), scale) + let message = name ? name + ' ' : '' + + if (min && max) { + message += `must be greater than or equal to ${newMin} ${suffix} and less than or equal to ${newMax} ${suffix}.` + } else if (min) { + message += `must be greater than or equal to ${newMin} ${suffix}.` + } else if (max) { + message += `must be less than or equal to ${newMax} ${suffix}.` + } else { + message += 'Invalid input.' + } + + return message +} + + +BnAsDecimalInput.prototype.downsize = function (number, scale) { + // if there is no scaling, simply return the number + if (scale === 0) { + return Number(number) + } else { + // if the scale is the same as the precision, account for this edge case. + var adjustedNumber = number + while (adjustedNumber.length < scale) { + adjustedNumber = '0' + adjustedNumber + } + return Number(adjustedNumber.slice(0, -scale) + '.' + adjustedNumber.slice(-scale)) + } +} + +BnAsDecimalInput.prototype.upsize = function (number, scale, precision) { + var stringArray = number.toString().split('.') + var decimalLength = stringArray[1] ? stringArray[1].length : 0 + var newString = stringArray[0] + + // If there is scaling and decimal parts exist, integrate them in. + if ((scale !== 0) && (decimalLength !== 0)) { + newString += stringArray[1].slice(0, precision) + } + + // Add 0s to account for the upscaling. + for (var i = decimalLength; i < scale; i++) { + newString += '0' + } + return newString +} diff --git a/old-ui/app/components/buy-button-subview.js b/old-ui/app/components/buy-button-subview.js new file mode 100644 index 000000000..843627c33 --- /dev/null +++ b/old-ui/app/components/buy-button-subview.js @@ -0,0 +1,262 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const connect = require('react-redux').connect +const actions = require('../../../ui/app/actions') +const CoinbaseForm = require('./coinbase-form') +const ShapeshiftForm = require('./shapeshift-form') +const Loading = require('./loading') +const AccountPanel = require('./account-panel') +const RadioList = require('./custom-radio-list') +const networkNames = require('../../../app/scripts/config.js').networkNames + +module.exports = connect(mapStateToProps)(BuyButtonSubview) + +function mapStateToProps (state) { + return { + identity: state.appState.identity, + account: state.metamask.accounts[state.appState.buyView.buyAddress], + warning: state.appState.warning, + buyView: state.appState.buyView, + network: state.metamask.network, + provider: state.metamask.provider, + context: state.appState.currentView.context, + isSubLoading: state.appState.isSubLoading, + } +} + +inherits(BuyButtonSubview, Component) +function BuyButtonSubview () { + Component.call(this) +} + +BuyButtonSubview.prototype.render = function () { + return ( + h('div', { + style: { + width: '100%', + }, + }, [ + this.headerSubview(), + this.primarySubview(), + ]) + ) +} + +BuyButtonSubview.prototype.headerSubview = function () { + const props = this.props + const isLoading = props.isSubLoading + return ( + + h('.flex-column', { + style: { + alignItems: 'center', + }, + }, [ + + // header bar (back button, label) + h('.flex-row', { + style: { + alignItems: 'center', + justifyContent: 'center', + }, + }, [ + h('i.fa.fa-arrow-left.fa-lg.cursor-pointer.color-orange', { + onClick: this.backButtonContext.bind(this), + style: { + position: 'absolute', + left: '10px', + }, + }), + h('h2.text-transform-uppercase.flex-center', { + style: { + width: '100vw', + background: 'rgb(235, 235, 235)', + color: 'rgb(174, 174, 174)', + paddingTop: '4px', + paddingBottom: '4px', + }, + }, 'Buy Eth'), + ]), + + // loading indication + h('div', { + style: { + position: 'absolute', + top: '57vh', + left: '49vw', + }, + }, [ + h(Loading, { isLoading }), + ]), + + // account panel + h('div', { + style: { + width: '80%', + }, + }, [ + h(AccountPanel, { + showFullAddress: true, + identity: props.identity, + account: props.account, + }), + ]), + + h('.flex-row', { + style: { + alignItems: 'center', + justifyContent: 'center', + }, + }, [ + h('h3.text-transform-uppercase.flex-center', { + style: { + paddingLeft: '15px', + width: '100vw', + background: 'rgb(235, 235, 235)', + color: 'rgb(174, 174, 174)', + paddingTop: '4px', + paddingBottom: '4px', + }, + }, 'Select Service'), + ]), + + ]) + + ) +} + + +BuyButtonSubview.prototype.primarySubview = function () { + const props = this.props + const network = props.network + + switch (network) { + case 'loading': + return + + case '1': + return this.mainnetSubview() + + // Ropsten, Rinkeby, Kovan + case '3': + case '4': + case '42': + const networkName = networkNames[network] + const label = `${networkName} Test Faucet` + return ( + h('div.flex-column', { + style: { + alignItems: 'center', + margin: '20px 50px', + }, + }, [ + h('button.text-transform-uppercase', { + onClick: () => this.props.dispatch(actions.buyEth({ network })), + style: { + marginTop: '15px', + }, + }, label), + // Kovan only: Dharma loans beta + network === '42' ? ( + h('button.text-transform-uppercase', { + onClick: () => this.navigateTo('https://borrow.dharma.io/'), + style: { + marginTop: '15px', + }, + }, 'Borrow With Dharma (Beta)') + ) : null, + ]) + ) + + default: + return ( + h('h2.error', 'Unknown network ID') + ) + + } +} + +BuyButtonSubview.prototype.mainnetSubview = function () { + const props = this.props + + return ( + + h('.flex-column', { + style: { + alignItems: 'center', + }, + }, [ + + h('.flex-row.selected-exchange', { + style: { + position: 'relative', + right: '35px', + marginTop: '20px', + marginBottom: '20px', + }, + }, [ + h(RadioList, { + defaultFocus: props.buyView.subview, + labels: [ + 'Coinbase', + 'ShapeShift', + ], + subtext: { + 'Coinbase': 'Crypto/FIAT (USA only)', + 'ShapeShift': 'Crypto', + }, + onClick: this.radioHandler.bind(this), + }), + ]), + + h('h3.text-transform-uppercase', { + style: { + paddingLeft: '15px', + fontFamily: 'Montserrat Light', + width: '100vw', + background: 'rgb(235, 235, 235)', + color: 'rgb(174, 174, 174)', + paddingTop: '4px', + paddingBottom: '4px', + }, + }, props.buyView.subview), + + this.formVersionSubview(), + ]) + + ) +} + +BuyButtonSubview.prototype.formVersionSubview = function () { + const network = this.props.network + if (network === '1') { + if (this.props.buyView.formView.coinbase) { + return h(CoinbaseForm, this.props) + } else if (this.props.buyView.formView.shapeshift) { + return h(ShapeshiftForm, this.props) + } + } +} + +BuyButtonSubview.prototype.navigateTo = function (url) { + global.platform.openWindow({ url }) +} + +BuyButtonSubview.prototype.backButtonContext = function () { + if (this.props.context === 'confTx') { + this.props.dispatch(actions.showConfTxPage(false)) + } else { + console.log(`actions.goHome`, actions.goHome); + this.props.dispatch(actions.goHome()) + } +} + +BuyButtonSubview.prototype.radioHandler = function (event) { + switch (event.target.title) { + case 'Coinbase': + return this.props.dispatch(actions.coinBaseSubview()) + case 'ShapeShift': + return this.props.dispatch(actions.shapeShiftSubview(this.props.provider.type)) + } +} diff --git a/old-ui/app/components/coinbase-form.js b/old-ui/app/components/coinbase-form.js new file mode 100644 index 000000000..35b2111ff --- /dev/null +++ b/old-ui/app/components/coinbase-form.js @@ -0,0 +1,63 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const connect = require('react-redux').connect +const actions = require('../../../ui/app/actions') + +module.exports = connect(mapStateToProps)(CoinbaseForm) + +function mapStateToProps (state) { + return { + warning: state.appState.warning, + } +} + +inherits(CoinbaseForm, Component) + +function CoinbaseForm () { + Component.call(this) +} + +CoinbaseForm.prototype.render = function () { + var props = this.props + + return h('.flex-column', { + style: { + marginTop: '35px', + padding: '25px', + width: '100%', + }, + }, [ + h('.flex-row', { + style: { + justifyContent: 'space-around', + margin: '33px', + marginTop: '0px', + }, + }, [ + h('button.btn-green', { + onClick: this.toCoinbase.bind(this), + }, 'Continue to Coinbase'), + + h('button.btn-red', { + onClick: () => props.dispatch(actions.backTobuyView(props.accounts.address)), + }, 'Cancel'), + ]), + ]) +} + +CoinbaseForm.prototype.toCoinbase = function () { + const props = this.props + const address = props.buyView.buyAddress + props.dispatch(actions.buyEth({ network: '1', address, amount: 0 })) +} + +CoinbaseForm.prototype.renderLoading = function () { + return h('img', { + style: { + width: '27px', + marginRight: '-27px', + }, + src: 'images/loading.svg', + }) +} diff --git a/old-ui/app/components/copyButton.js b/old-ui/app/components/copyButton.js new file mode 100644 index 000000000..a25d0719c --- /dev/null +++ b/old-ui/app/components/copyButton.js @@ -0,0 +1,59 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const copyToClipboard = require('copy-to-clipboard') + +const Tooltip = require('./tooltip') + +module.exports = CopyButton + +inherits(CopyButton, Component) +function CopyButton () { + Component.call(this) +} + +// As parameters, accepts: +// "value", which is the value to copy (mandatory) +// "title", which is the text to show on hover (optional, defaults to 'Copy') +CopyButton.prototype.render = function () { + const props = this.props + const state = this.state || {} + + const value = props.value + const copied = state.copied + + const message = copied ? 'Copied' : props.title || ' Copy ' + + return h('.copy-button', { + style: { + display: 'flex', + alignItems: 'center', + }, + }, [ + + h(Tooltip, { + title: message, + }, [ + h('i.fa.fa-clipboard.cursor-pointer.color-orange', { + style: { + margin: '5px', + }, + onClick: (event) => { + event.preventDefault() + event.stopPropagation() + copyToClipboard(value) + this.debounceRestore() + }, + }), + ]), + + ]) +} + +CopyButton.prototype.debounceRestore = function () { + this.setState({ copied: true }) + clearTimeout(this.timeout) + this.timeout = setTimeout(() => { + this.setState({ copied: false }) + }, 850) +} diff --git a/old-ui/app/components/copyable.js b/old-ui/app/components/copyable.js new file mode 100644 index 000000000..a4f6f4bc6 --- /dev/null +++ b/old-ui/app/components/copyable.js @@ -0,0 +1,46 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits + +const Tooltip = require('./tooltip') +const copyToClipboard = require('copy-to-clipboard') + +module.exports = Copyable + +inherits(Copyable, Component) +function Copyable () { + Component.call(this) + this.state = { + copied: false, + } +} + +Copyable.prototype.render = function () { + const props = this.props + const state = this.state + const { value, children } = props + const { copied } = state + + return h(Tooltip, { + title: copied ? 'Copied!' : 'Copy', + position: 'bottom', + }, h('span', { + style: { + cursor: 'pointer', + }, + onClick: (event) => { + event.preventDefault() + event.stopPropagation() + copyToClipboard(value) + this.debounceRestore() + }, + }, children)) +} + +Copyable.prototype.debounceRestore = function () { + this.setState({ copied: true }) + clearTimeout(this.timeout) + this.timeout = setTimeout(() => { + this.setState({ copied: false }) + }, 850) +} diff --git a/old-ui/app/components/custom-radio-list.js b/old-ui/app/components/custom-radio-list.js new file mode 100644 index 000000000..a4c525396 --- /dev/null +++ b/old-ui/app/components/custom-radio-list.js @@ -0,0 +1,60 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits + +module.exports = RadioList + +inherits(RadioList, Component) +function RadioList () { + Component.call(this) +} + +RadioList.prototype.render = function () { + const props = this.props + const activeClass = '.custom-radio-selected' + const inactiveClass = '.custom-radio-inactive' + const { + labels, + defaultFocus, + } = props + + + return ( + h('.flex-row', { + style: { + fontSize: '12px', + }, + }, [ + h('.flex-column.custom-radios', { + style: { + marginRight: '5px', + }, + }, + labels.map((lable, i) => { + let isSelcted = (this.state !== null) + isSelcted = isSelcted ? (this.state.selected === lable) : (defaultFocus === lable) + return h(isSelcted ? activeClass : inactiveClass, { + title: lable, + onClick: (event) => { + this.setState({selected: event.target.title}) + props.onClick(event) + }, + }) + }) + ), + h('.text', {}, + labels.map((lable) => { + if (props.subtext) { + return h('.flex-row', {}, [ + h('.radio-titles', lable), + h('.radio-titles-subtext', `- ${props.subtext[lable]}`), + ]) + } else { + return h('.radio-titles', lable) + } + }) + ), + ]) + ) +} + diff --git a/old-ui/app/components/dropdown.js b/old-ui/app/components/dropdown.js new file mode 100644 index 000000000..cdd864cc3 --- /dev/null +++ b/old-ui/app/components/dropdown.js @@ -0,0 +1,98 @@ +const Component = require('react').Component +const PropTypes = require('react').PropTypes +const h = require('react-hyperscript') +const MenuDroppo = require('./menu-droppo') +const extend = require('xtend') + +const noop = () => {} + +class Dropdown extends Component { + render () { + const { isOpen, onClickOutside, style, innerStyle, children, useCssTransition } = this.props + + const innerStyleDefaults = extend({ + borderRadius: '4px', + padding: '8px 16px', + background: 'rgba(0, 0, 0, 0.8)', + boxShadow: 'rgba(0, 0, 0, 0.15) 0px 2px 2px 2px', + }, innerStyle) + + return h( + MenuDroppo, + { + useCssTransition, + isOpen, + zIndex: 11, + onClickOutside, + style, + innerStyle: innerStyleDefaults, + }, + [ + h( + 'style', + ` + li.dropdown-menu-item:hover { color:rgb(225, 225, 225); } + li.dropdown-menu-item { color: rgb(185, 185, 185); position: relative } + ` + ), + ...children, + ] + ) + } +} + +Dropdown.defaultProps = { + isOpen: false, + onClick: noop, + useCssTransition: false, +} + +Dropdown.propTypes = { + isOpen: PropTypes.bool.isRequired, + onClick: PropTypes.func.isRequired, + children: PropTypes.node, + style: PropTypes.object.isRequired, + onClickOutside: PropTypes.func, + innerStyle: PropTypes.object, + useCssTransition: PropTypes.bool, +} + +class DropdownMenuItem extends Component { + render () { + const { onClick, closeMenu, children, style } = this.props + + return h( + 'li.dropdown-menu-item', + { + onClick: () => { + onClick() + closeMenu() + }, + style: Object.assign({ + listStyle: 'none', + padding: '8px 0px 8px 0px', + fontSize: '18px', + fontStyle: 'normal', + fontFamily: 'Montserrat Regular', + cursor: 'pointer', + display: 'flex', + justifyContent: 'flex-start', + alignItems: 'center', + }, style), + }, + children + ) + } +} + +DropdownMenuItem.propTypes = { + closeMenu: PropTypes.func.isRequired, + onClick: PropTypes.func.isRequired, + children: PropTypes.node, + style: PropTypes.object, +} + +module.exports = { + Dropdown, + DropdownMenuItem, +} diff --git a/old-ui/app/components/editable-label.js b/old-ui/app/components/editable-label.js new file mode 100644 index 000000000..8a5c8954f --- /dev/null +++ b/old-ui/app/components/editable-label.js @@ -0,0 +1,57 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const findDOMNode = require('react-dom').findDOMNode + +module.exports = EditableLabel + +inherits(EditableLabel, Component) +function EditableLabel () { + Component.call(this) +} + +EditableLabel.prototype.render = function () { + const props = this.props + const state = this.state + + if (state && state.isEditingLabel) { + return h('div.editable-label', [ + h('input.sizing-input', { + defaultValue: props.textValue, + maxLength: '20', + onKeyPress: (event) => { + this.saveIfEnter(event) + }, + }), + h('button.editable-button', { + onClick: () => this.saveText(), + }, 'Save'), + ]) + } else { + return h('div.name-label', { + onClick: (event) => { + const nameAttribute = event.target.getAttribute('name') + // checks for class to handle smaller CTA above the account name + const classAttribute = event.target.getAttribute('class') + if (nameAttribute === 'edit' || classAttribute === 'edit-text') { + this.setState({ isEditingLabel: true }) + } + }, + }, this.props.children) + } +} + +EditableLabel.prototype.saveIfEnter = function (event) { + if (event.key === 'Enter') { + this.saveText() + } +} + +EditableLabel.prototype.saveText = function () { + // eslint-disable-next-line react/no-find-dom-node + var container = findDOMNode(this) + var text = container.querySelector('.editable-label input').value + var truncatedText = text.substring(0, 20) + this.props.saveText(truncatedText) + this.setState({ isEditingLabel: false, textLabel: truncatedText }) +} diff --git a/old-ui/app/components/ens-input.js b/old-ui/app/components/ens-input.js new file mode 100644 index 000000000..c85a23514 --- /dev/null +++ b/old-ui/app/components/ens-input.js @@ -0,0 +1,170 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const extend = require('xtend') +const debounce = require('debounce') +const copyToClipboard = require('copy-to-clipboard') +const ENS = require('ethjs-ens') +const networkMap = require('ethjs-ens/lib/network-map.json') +const ensRE = /.+\..+$/ +const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' + + +module.exports = EnsInput + +inherits(EnsInput, Component) +function EnsInput () { + Component.call(this) +} + +EnsInput.prototype.render = function () { + const props = this.props + const opts = extend(props, { + list: 'addresses', + onChange: () => { + const network = this.props.network + const networkHasEnsSupport = getNetworkEnsSupport(network) + if (!networkHasEnsSupport) return + + const recipient = document.querySelector('input[name="address"]').value + if (recipient.match(ensRE) === null) { + return this.setState({ + loadingEns: false, + ensResolution: null, + ensFailure: null, + }) + } + + this.setState({ + loadingEns: true, + }) + this.checkName() + }, + }) + return h('div', { + style: { width: '100%' }, + }, [ + h('input.large-input', opts), + // The address book functionality. + h('datalist#addresses', + [ + // Corresponds to the addresses owned. + Object.keys(props.identities).map((key) => { + const identity = props.identities[key] + return h('option', { + value: identity.address, + label: identity.name, + key: identity.address, + }) + }), + // Corresponds to previously sent-to addresses. + props.addressBook.map((identity) => { + return h('option', { + value: identity.address, + label: identity.name, + key: identity.address, + }) + }), + ]), + this.ensIcon(), + ]) +} + +EnsInput.prototype.componentDidMount = function () { + const network = this.props.network + const networkHasEnsSupport = getNetworkEnsSupport(network) + this.setState({ ensResolution: ZERO_ADDRESS }) + + if (networkHasEnsSupport) { + const provider = global.ethereumProvider + this.ens = new ENS({ provider, network }) + this.checkName = debounce(this.lookupEnsName.bind(this), 200) + } +} + +EnsInput.prototype.lookupEnsName = function () { + const recipient = document.querySelector('input[name="address"]').value + const { ensResolution } = this.state + + log.info(`ENS attempting to resolve name: ${recipient}`) + this.ens.lookup(recipient.trim()) + .then((address) => { + if (address === ZERO_ADDRESS) throw new Error('No address has been set for this name.') + if (address !== ensResolution) { + this.setState({ + loadingEns: false, + ensResolution: address, + nickname: recipient.trim(), + hoverText: address + '\nClick to Copy', + ensFailure: false, + }) + } + }) + .catch((reason) => { + log.error(reason) + return this.setState({ + loadingEns: false, + ensResolution: ZERO_ADDRESS, + ensFailure: true, + hoverText: reason.message, + }) + }) +} + +EnsInput.prototype.componentDidUpdate = function (prevProps, prevState) { + const state = this.state || {} + const ensResolution = state.ensResolution + // If an address is sent without a nickname, meaning not from ENS or from + // the user's own accounts, a default of a one-space string is used. + const nickname = state.nickname || ' ' + if (prevState && ensResolution && this.props.onChange && + ensResolution !== prevState.ensResolution) { + this.props.onChange(ensResolution, nickname) + } +} + +EnsInput.prototype.ensIcon = function (recipient) { + const { hoverText } = this.state || {} + return h('span', { + title: hoverText, + style: { + position: 'absolute', + padding: '9px', + transform: 'translatex(-40px)', + }, + }, this.ensIconContents(recipient)) +} + +EnsInput.prototype.ensIconContents = function (recipient) { + const { loadingEns, ensFailure, ensResolution } = this.state || { ensResolution: ZERO_ADDRESS} + + if (loadingEns) { + return h('img', { + src: 'images/loading.svg', + style: { + width: '30px', + height: '30px', + transform: 'translateY(-6px)', + }, + }) + } + + if (ensFailure) { + return h('i.fa.fa-warning.fa-lg.warning') + } + + if (ensResolution && (ensResolution !== ZERO_ADDRESS)) { + return h('i.fa.fa-check-circle.fa-lg.cursor-pointer', { + style: { color: 'green' }, + onClick: (event) => { + event.preventDefault() + event.stopPropagation() + copyToClipboard(ensResolution) + }, + }) + } +} + +function getNetworkEnsSupport (network) { + return Boolean(networkMap[network]) +} diff --git a/old-ui/app/components/eth-balance.js b/old-ui/app/components/eth-balance.js new file mode 100644 index 000000000..4f538fd31 --- /dev/null +++ b/old-ui/app/components/eth-balance.js @@ -0,0 +1,89 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const formatBalance = require('../util').formatBalance +const generateBalanceObject = require('../util').generateBalanceObject +const Tooltip = require('./tooltip.js') +const FiatValue = require('./fiat-value.js') + +module.exports = EthBalanceComponent + +inherits(EthBalanceComponent, Component) +function EthBalanceComponent () { + Component.call(this) +} + +EthBalanceComponent.prototype.render = function () { + var props = this.props + let { value } = props + const { style, width } = props + var needsParse = this.props.needsParse !== undefined ? this.props.needsParse : true + value = value ? formatBalance(value, 6, needsParse) : '...' + + return ( + + h('.ether-balance.ether-balance-amount', { + style, + }, [ + h('div', { + style: { + display: 'inline', + width, + }, + }, this.renderBalance(value)), + ]) + + ) +} +EthBalanceComponent.prototype.renderBalance = function (value) { + var props = this.props + const { conversionRate, shorten, incoming, currentCurrency } = props + if (value === 'None') return value + if (value === '...') return value + var balanceObj = generateBalanceObject(value, shorten ? 1 : 3) + var balance + var splitBalance = value.split(' ') + var ethNumber = splitBalance[0] + var ethSuffix = splitBalance[1] + const showFiat = 'showFiat' in props ? props.showFiat : true + + if (shorten) { + balance = balanceObj.shortBalance + } else { + balance = balanceObj.balance + } + + var label = balanceObj.label + + return ( + h(Tooltip, { + position: 'bottom', + title: `${ethNumber} ${ethSuffix}`, + }, h('div.flex-column', [ + h('.flex-row', { + style: { + alignItems: 'flex-end', + lineHeight: '13px', + fontFamily: 'Montserrat Light', + textRendering: 'geometricPrecision', + }, + }, [ + h('div', { + style: { + width: '100%', + textAlign: 'right', + }, + }, incoming ? `+${balance}` : balance), + h('div', { + style: { + color: ' #AEAEAE', + fontSize: '12px', + marginLeft: '5px', + }, + }, label), + ]), + + showFiat ? h(FiatValue, { value: props.value, conversionRate, currentCurrency }) : null, + ])) + ) +} diff --git a/old-ui/app/components/fiat-value.js b/old-ui/app/components/fiat-value.js new file mode 100644 index 000000000..d69f41d11 --- /dev/null +++ b/old-ui/app/components/fiat-value.js @@ -0,0 +1,64 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const formatBalance = require('../util').formatBalance + +module.exports = FiatValue + +inherits(FiatValue, Component) +function FiatValue () { + Component.call(this) +} + +FiatValue.prototype.render = function () { + const props = this.props + const { conversionRate, currentCurrency } = props + const renderedCurrency = currentCurrency || '' + + const value = formatBalance(props.value, 6) + + if (value === 'None') return value + var fiatDisplayNumber, fiatTooltipNumber + var splitBalance = value.split(' ') + + if (conversionRate !== 0) { + fiatTooltipNumber = Number(splitBalance[0]) * conversionRate + fiatDisplayNumber = fiatTooltipNumber.toFixed(2) + } else { + fiatDisplayNumber = 'N/A' + fiatTooltipNumber = 'Unknown' + } + + return fiatDisplay(fiatDisplayNumber, renderedCurrency.toUpperCase()) +} + +function fiatDisplay (fiatDisplayNumber, fiatSuffix) { + if (fiatDisplayNumber !== 'N/A') { + return h('.flex-row', { + style: { + alignItems: 'flex-end', + lineHeight: '13px', + fontFamily: 'Montserrat Light', + textRendering: 'geometricPrecision', + }, + }, [ + h('div', { + style: { + width: '100%', + textAlign: 'right', + fontSize: '12px', + color: '#333333', + }, + }, fiatDisplayNumber), + h('div', { + style: { + color: '#AEAEAE', + marginLeft: '5px', + fontSize: '12px', + }, + }, fiatSuffix), + ]) + } else { + return h('div') + } +} diff --git a/old-ui/app/components/hex-as-decimal-input.js b/old-ui/app/components/hex-as-decimal-input.js new file mode 100644 index 000000000..4a71e9585 --- /dev/null +++ b/old-ui/app/components/hex-as-decimal-input.js @@ -0,0 +1,154 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const ethUtil = require('ethereumjs-util') +const BN = ethUtil.BN +const extend = require('xtend') + +module.exports = HexAsDecimalInput + +inherits(HexAsDecimalInput, Component) +function HexAsDecimalInput () { + this.state = { invalid: null } + Component.call(this) +} + +/* Hex as Decimal Input + * + * A component for allowing easy, decimal editing + * of a passed in hex string value. + * + * On change, calls back its `onChange` function parameter + * and passes it an updated hex string. + */ + +HexAsDecimalInput.prototype.render = function () { + const props = this.props + const state = this.state + + const { value, onChange, min, max } = props + + const toEth = props.toEth + const suffix = props.suffix + const decimalValue = decimalize(value, toEth) + const style = props.style + + return ( + h('.flex-column', [ + h('.flex-row', { + style: { + alignItems: 'flex-end', + lineHeight: '13px', + fontFamily: 'Montserrat Light', + textRendering: 'geometricPrecision', + }, + }, [ + h('input.hex-input', { + type: 'number', + required: true, + min: min, + max: max, + style: extend({ + display: 'block', + textAlign: 'right', + backgroundColor: 'transparent', + border: '1px solid #bdbdbd', + + }, style), + value: parseInt(decimalValue), + onBlur: (event) => { + this.updateValidity(event) + }, + onChange: (event) => { + this.updateValidity(event) + const hexString = (event.target.value === '') ? '' : hexify(event.target.value) + onChange(hexString) + }, + onInvalid: (event) => { + const msg = this.constructWarning() + if (msg === state.invalid) { + return + } + this.setState({ invalid: msg }) + event.preventDefault() + return false + }, + }), + h('div', { + style: { + color: ' #AEAEAE', + fontSize: '12px', + marginLeft: '5px', + marginRight: '6px', + width: '20px', + }, + }, suffix), + ]), + + state.invalid ? h('span.error', { + style: { + position: 'absolute', + right: '0px', + textAlign: 'right', + transform: 'translateY(26px)', + padding: '3px', + background: 'rgba(255,255,255,0.85)', + zIndex: '1', + textTransform: 'capitalize', + border: '2px solid #E20202', + }, + }, state.invalid) : null, + ]) + ) +} + +HexAsDecimalInput.prototype.setValid = function (message) { + this.setState({ invalid: null }) +} + +HexAsDecimalInput.prototype.updateValidity = function (event) { + const target = event.target + const value = this.props.value + const newValue = target.value + + if (value === newValue) { + return + } + + const valid = target.checkValidity() + if (valid) { + this.setState({ invalid: null }) + } +} + +HexAsDecimalInput.prototype.constructWarning = function () { + const { name, min, max } = this.props + let message = name ? name + ' ' : '' + + if (min && max) { + message += `must be greater than or equal to ${min} and less than or equal to ${max}.` + } else if (min) { + message += `must be greater than or equal to ${min}.` + } else if (max) { + message += `must be less than or equal to ${max}.` + } else { + message += 'Invalid input.' + } + + return message +} + +function hexify (decimalString) { + const hexBN = new BN(parseInt(decimalString), 10) + return '0x' + hexBN.toString('hex') +} + +function decimalize (input, toEth) { + if (input === '') { + return '' + } else { + const strippedInput = ethUtil.stripHexPrefix(input) + const inputBN = new BN(strippedInput, 'hex') + return inputBN.toString(10) + } +} diff --git a/old-ui/app/components/identicon.js b/old-ui/app/components/identicon.js new file mode 100644 index 000000000..bb476ca7b --- /dev/null +++ b/old-ui/app/components/identicon.js @@ -0,0 +1,74 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const isNode = require('detect-node') +const findDOMNode = require('react-dom').findDOMNode +const jazzicon = require('jazzicon') +const iconFactoryGen = require('../../lib/icon-factory') +const iconFactory = iconFactoryGen(jazzicon) + +module.exports = IdenticonComponent + +inherits(IdenticonComponent, Component) +function IdenticonComponent () { + Component.call(this) + + this.defaultDiameter = 46 +} + +IdenticonComponent.prototype.render = function () { + var props = this.props + var diameter = props.diameter || this.defaultDiameter + return ( + h('div', { + key: 'identicon-' + this.props.address, + style: { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + height: diameter, + width: diameter, + borderRadius: diameter / 2, + overflow: 'hidden', + }, + }) + ) +} + +IdenticonComponent.prototype.componentDidMount = function () { + var props = this.props + const { address } = props + + if (!address) return + + // eslint-disable-next-line react/no-find-dom-node + var container = findDOMNode(this) + + var diameter = props.diameter || this.defaultDiameter + if (!isNode) { + var img = iconFactory.iconForAddress(address, diameter) + container.appendChild(img) + } +} + +IdenticonComponent.prototype.componentDidUpdate = function () { + var props = this.props + const { address } = props + + if (!address) return + + // eslint-disable-next-line react/no-find-dom-node + var container = findDOMNode(this) + + var children = container.children + for (var i = 0; i < children.length; i++) { + container.removeChild(children[i]) + } + + var diameter = props.diameter || this.defaultDiameter + if (!isNode) { + var img = iconFactory.iconForAddress(address, diameter) + container.appendChild(img) + } +} + diff --git a/old-ui/app/components/loading.js b/old-ui/app/components/loading.js new file mode 100644 index 000000000..163792584 --- /dev/null +++ b/old-ui/app/components/loading.js @@ -0,0 +1,45 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const h = require('react-hyperscript') + + +inherits(LoadingIndicator, Component) +module.exports = LoadingIndicator + +function LoadingIndicator () { + Component.call(this) +} + +LoadingIndicator.prototype.render = function () { + const { isLoading, loadingMessage } = this.props + + return ( + isLoading ? h('.full-flex-height', { + style: { + left: '0px', + zIndex: 10, + position: 'absolute', + flexDirection: 'column', + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + height: '100%', + width: '100%', + background: 'rgba(255, 255, 255, 0.8)', + }, + }, [ + h('img', { + src: 'images/loading.svg', + }), + + h('br'), + + showMessageIfAny(loadingMessage), + ]) : null + ) +} + +function showMessageIfAny (loadingMessage) { + if (!loadingMessage) return null + return h('span', loadingMessage) +} diff --git a/old-ui/app/components/mascot.js b/old-ui/app/components/mascot.js new file mode 100644 index 000000000..973ec2cad --- /dev/null +++ b/old-ui/app/components/mascot.js @@ -0,0 +1,59 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const h = require('react-hyperscript') +const metamaskLogo = require('metamask-logo') +const debounce = require('debounce') + +module.exports = Mascot + +inherits(Mascot, Component) +function Mascot () { + Component.call(this) + this.logo = metamaskLogo({ + followMouse: true, + pxNotRatio: true, + width: 200, + height: 200, + }) + + this.refollowMouse = debounce(this.logo.setFollowMouse.bind(this.logo, true), 1000) + this.unfollowMouse = this.logo.setFollowMouse.bind(this.logo, false) +} + +Mascot.prototype.render = function () { + // this is a bit hacky + // the event emitter is on `this.props` + // and we dont get that until render + this.handleAnimationEvents() + + return h('#metamask-mascot-container', { + style: { zIndex: 0 }, + }) +} + +Mascot.prototype.componentDidMount = function () { + var targetDivId = 'metamask-mascot-container' + var container = document.getElementById(targetDivId) + container.appendChild(this.logo.container) +} + +Mascot.prototype.componentWillUnmount = function () { + this.animations = this.props.animationEventEmitter + this.animations.removeAllListeners() + this.logo.container.remove() + this.logo.stopAnimation() +} + +Mascot.prototype.handleAnimationEvents = function () { + // only setup listeners once + if (this.animations) return + this.animations = this.props.animationEventEmitter + this.animations.on('point', this.lookAt.bind(this)) + this.animations.on('setFollowMouse', this.logo.setFollowMouse.bind(this.logo)) +} + +Mascot.prototype.lookAt = function (target) { + this.unfollowMouse() + this.logo.lookAt(target) + this.refollowMouse() +} diff --git a/old-ui/app/components/menu-droppo.js b/old-ui/app/components/menu-droppo.js new file mode 100644 index 000000000..e6276f3b1 --- /dev/null +++ b/old-ui/app/components/menu-droppo.js @@ -0,0 +1,132 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const findDOMNode = require('react-dom').findDOMNode +const ReactCSSTransitionGroup = require('react-addons-css-transition-group') + +module.exports = MenuDroppoComponent + + +inherits(MenuDroppoComponent, Component) +function MenuDroppoComponent () { + Component.call(this) +} + +MenuDroppoComponent.prototype.render = function () { + const speed = this.props.speed || '300ms' + const useCssTransition = this.props.useCssTransition + const zIndex = ('zIndex' in this.props) ? this.props.zIndex : 0 + + this.manageListeners() + + const style = this.props.style || {} + if (!('position' in style)) { + style.position = 'fixed' + } + style.zIndex = zIndex + + return ( + h('.menu-droppo-container', { + style, + }, [ + h('style', ` + .menu-droppo-enter { + transition: transform ${speed} ease-in-out; + transform: translateY(-200%); + } + + .menu-droppo-enter.menu-droppo-enter-active { + transition: transform ${speed} ease-in-out; + transform: translateY(0%); + } + + .menu-droppo-leave { + transition: transform ${speed} ease-in-out; + transform: translateY(0%); + } + + .menu-droppo-leave.menu-droppo-leave-active { + transition: transform ${speed} ease-in-out; + transform: translateY(-200%); + } + `), + + useCssTransition + ? h(ReactCSSTransitionGroup, { + className: 'css-transition-group', + transitionName: 'menu-droppo', + transitionEnterTimeout: parseInt(speed), + transitionLeaveTimeout: parseInt(speed), + }, this.renderPrimary()) + : this.renderPrimary(), + ]) + ) +} + +MenuDroppoComponent.prototype.renderPrimary = function () { + const isOpen = this.props.isOpen + if (!isOpen) { + return null + } + + const innerStyle = this.props.innerStyle || {} + + return ( + h('.menu-droppo', { + key: 'menu-droppo-drawer', + style: innerStyle, + }, + [ this.props.children ]) + ) +} + +MenuDroppoComponent.prototype.manageListeners = function () { + const isOpen = this.props.isOpen + const onClickOutside = this.props.onClickOutside + + if (isOpen) { + this.outsideClickHandler = onClickOutside + } else if (isOpen) { + this.outsideClickHandler = null + } +} + +MenuDroppoComponent.prototype.componentDidMount = function () { + if (this && document.body) { + this.globalClickHandler = this.globalClickOccurred.bind(this) + document.body.addEventListener('click', this.globalClickHandler) + // eslint-disable-next-line react/no-find-dom-node + var container = findDOMNode(this) + this.container = container + } +} + +MenuDroppoComponent.prototype.componentWillUnmount = function () { + if (this && document.body) { + document.body.removeEventListener('click', this.globalClickHandler) + } +} + +MenuDroppoComponent.prototype.globalClickOccurred = function (event) { + const target = event.target + // eslint-disable-next-line react/no-find-dom-node + const container = findDOMNode(this) + + if (target !== container && + !isDescendant(this.container, event.target) && + this.outsideClickHandler) { + this.outsideClickHandler(event) + } +} + +function isDescendant (parent, child) { + var node = child.parentNode + while (node !== null) { + if (node === parent) { + return true + } + node = node.parentNode + } + + return false +} diff --git a/old-ui/app/components/mini-account-panel.js b/old-ui/app/components/mini-account-panel.js new file mode 100644 index 000000000..c09cf5b7a --- /dev/null +++ b/old-ui/app/components/mini-account-panel.js @@ -0,0 +1,74 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const h = require('react-hyperscript') +const Identicon = require('./identicon') + +module.exports = AccountPanel + + +inherits(AccountPanel, Component) +function AccountPanel () { + Component.call(this) +} + +AccountPanel.prototype.render = function () { + var props = this.props + var picOrder = props.picOrder || 'left' + const { imageSeed } = props + + return ( + + h('.identity-panel.flex-row.flex-left', { + style: { + cursor: props.onClick ? 'pointer' : undefined, + }, + onClick: props.onClick, + }, [ + + this.genIcon(imageSeed, picOrder), + + h('div.flex-column.flex-justify-center', { + style: { + lineHeight: '15px', + order: 2, + display: 'flex', + alignItems: picOrder === 'left' ? 'flex-begin' : 'flex-end', + }, + }, this.props.children), + ]) + ) +} + +AccountPanel.prototype.genIcon = function (seed, picOrder) { + const props = this.props + + // When there is no seed value, this is a contract creation. + // We then show the contract icon. + if (!seed) { + return h('.identicon-wrapper.flex-column.select-none', { + style: { + order: picOrder === 'left' ? 1 : 3, + }, + }, [ + h('i.fa.fa-file-text-o.fa-lg', { + style: { + fontSize: '42px', + transform: 'translate(0px, -16px)', + }, + }), + ]) + } + + // If there was a seed, we return an identicon for that address. + return h('.identicon-wrapper.flex-column.select-none', { + style: { + order: picOrder === 'left' ? 1 : 3, + }, + }, [ + h(Identicon, { + address: seed, + imageify: props.imageifyIdenticons, + }), + ]) +} + diff --git a/old-ui/app/components/network.js b/old-ui/app/components/network.js new file mode 100644 index 000000000..0dbe37cdd --- /dev/null +++ b/old-ui/app/components/network.js @@ -0,0 +1,129 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits + +module.exports = Network + +inherits(Network, Component) + +function Network () { + Component.call(this) +} + +Network.prototype.render = function () { + const props = this.props + const networkNumber = props.network + let providerName + try { + providerName = props.provider.type + } catch (e) { + providerName = null + } + let iconName, hoverText + + if (networkNumber === 'loading') { + return h('span.pointer', { + style: { + display: 'flex', + alignItems: 'center', + flexDirection: 'row', + }, + onClick: (event) => this.props.onClick(event), + }, [ + h('img', { + title: 'Attempting to connect to blockchain.', + style: { + width: '27px', + }, + src: 'images/loading.svg', + }), + h('i.fa.fa-caret-down'), + ]) + } else if (providerName === 'mainnet') { + hoverText = 'Main Ethereum Network' + iconName = 'ethereum-network' + } else if (providerName === 'ropsten') { + hoverText = 'Ropsten Test Network' + iconName = 'ropsten-test-network' + } else if (parseInt(networkNumber) === 3) { + hoverText = 'Ropsten Test Network' + iconName = 'ropsten-test-network' + } else if (providerName === 'kovan') { + hoverText = 'Kovan Test Network' + iconName = 'kovan-test-network' + } else if (providerName === 'rinkeby') { + hoverText = 'Rinkeby Test Network' + iconName = 'rinkeby-test-network' + } else { + hoverText = 'Unknown Private Network' + iconName = 'unknown-private-network' + } + + return ( + h('#network_component.pointer', { + title: hoverText, + onClick: (event) => this.props.onClick(event), + }, [ + (function () { + switch (iconName) { + case 'ethereum-network': + return h('.network-indicator', [ + h('.menu-icon.diamond'), + h('.network-name', { + style: { + color: '#039396', + }}, + 'Main Network'), + h('i.fa.fa-caret-down.fa-lg'), + ]) + case 'ropsten-test-network': + return h('.network-indicator', [ + h('.menu-icon.red-dot'), + h('.network-name', { + style: { + color: '#ff6666', + }}, + 'Ropsten Test Net'), + h('i.fa.fa-caret-down.fa-lg'), + ]) + case 'kovan-test-network': + return h('.network-indicator', [ + h('.menu-icon.hollow-diamond'), + h('.network-name', { + style: { + color: '#690496', + }}, + 'Kovan Test Net'), + h('i.fa.fa-caret-down.fa-lg'), + ]) + case 'rinkeby-test-network': + return h('.network-indicator', [ + h('.menu-icon.golden-square'), + h('.network-name', { + style: { + color: '#e7a218', + }}, + 'Rinkeby Test Net'), + h('i.fa.fa-caret-down.fa-lg'), + ]) + default: + return h('.network-indicator', [ + h('i.fa.fa-question-circle.fa-lg', { + style: { + margin: '10px', + color: 'rgb(125, 128, 130)', + }, + }), + + h('.network-name', { + style: { + color: '#AEAEAE', + }}, + 'Private Network'), + h('i.fa.fa-caret-down.fa-lg'), + ]) + } + })(), + ]) + ) +} diff --git a/old-ui/app/components/notice.js b/old-ui/app/components/notice.js new file mode 100644 index 000000000..09d461c7b --- /dev/null +++ b/old-ui/app/components/notice.js @@ -0,0 +1,132 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const h = require('react-hyperscript') +const ReactMarkdown = require('react-markdown') +const linker = require('extension-link-enabler') +const findDOMNode = require('react-dom').findDOMNode + +module.exports = Notice + +inherits(Notice, Component) +function Notice () { + Component.call(this) +} + +Notice.prototype.render = function () { + const { notice, onConfirm } = this.props + const { title, date, body } = notice + const state = this.state || { disclaimerDisabled: true } + const disabled = state.disclaimerDisabled + + return ( + h('.flex-column.flex-center.flex-grow', { + style: { + width: '100%', + }, + }, [ + h('h3.flex-center.text-transform-uppercase.terms-header', { + style: { + background: '#EBEBEB', + color: '#AEAEAE', + width: '100%', + fontSize: '20px', + textAlign: 'center', + padding: 6, + }, + }, [ + title, + ]), + + h('h5.flex-center.text-transform-uppercase.terms-header', { + style: { + background: '#EBEBEB', + color: '#AEAEAE', + marginBottom: 24, + width: '100%', + fontSize: '20px', + textAlign: 'center', + padding: 6, + }, + }, [ + date, + ]), + + h('style', ` + + .markdown { + overflow-x: hidden; + } + + .markdown h1, .markdown h2, .markdown h3 { + margin: 10px 0; + font-weight: bold; + } + + .markdown strong { + font-weight: bold; + } + .markdown em { + font-style: italic; + } + + .markdown p { + margin: 10px 0; + } + + .markdown a { + color: #df6b0e; + } + + `), + + h('div.markdown', { + onScroll: (e) => { + var object = e.currentTarget + if (object.offsetHeight + object.scrollTop + 100 >= object.scrollHeight) { + this.setState({disclaimerDisabled: false}) + } + }, + style: { + background: 'rgb(235, 235, 235)', + height: '310px', + padding: '6px', + width: '90%', + overflowY: 'scroll', + scroll: 'auto', + }, + }, [ + h(ReactMarkdown, { + className: 'notice-box', + source: body, + skipHtml: true, + }), + ]), + + h('button', { + disabled, + onClick: () => { + this.setState({disclaimerDisabled: true}) + onConfirm() + }, + style: { + marginTop: '18px', + }, + }, 'Accept'), + ]) + ) +} + +Notice.prototype.componentDidMount = function () { + // eslint-disable-next-line react/no-find-dom-node + var node = findDOMNode(this) + linker.setupListener(node) + if (document.getElementsByClassName('notice-box')[0].clientHeight < 310) { + this.setState({disclaimerDisabled: false}) + } +} + +Notice.prototype.componentWillUnmount = function () { + // eslint-disable-next-line react/no-find-dom-node + var node = findDOMNode(this) + linker.teardownListener(node) +} diff --git a/old-ui/app/components/pending-msg-details.js b/old-ui/app/components/pending-msg-details.js new file mode 100644 index 000000000..718a22de0 --- /dev/null +++ b/old-ui/app/components/pending-msg-details.js @@ -0,0 +1,50 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits + +const AccountPanel = require('./account-panel') + +module.exports = PendingMsgDetails + +inherits(PendingMsgDetails, Component) +function PendingMsgDetails () { + Component.call(this) +} + +PendingMsgDetails.prototype.render = function () { + var state = this.props + var msgData = state.txData + + var msgParams = msgData.msgParams || {} + var address = msgParams.from || state.selectedAddress + var identity = state.identities[address] || { address: address } + var account = state.accounts[address] || { address: address } + + return ( + h('div', { + key: msgData.id, + style: { + margin: '10px 20px', + }, + }, [ + + // account that will sign + h(AccountPanel, { + showFullAddress: true, + identity: identity, + account: account, + imageifyIdenticons: state.imageifyIdenticons, + }), + + // message data + h('.tx-data.flex-column.flex-justify-center.flex-grow.select-none', [ + h('.flex-column.flex-space-between', [ + h('label.font-small', 'MESSAGE'), + h('span.font-small', msgParams.data), + ]), + ]), + + ]) + ) +} + diff --git a/old-ui/app/components/pending-msg.js b/old-ui/app/components/pending-msg.js new file mode 100644 index 000000000..834719c53 --- /dev/null +++ b/old-ui/app/components/pending-msg.js @@ -0,0 +1,70 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const PendingTxDetails = require('./pending-msg-details') + +module.exports = PendingMsg + +inherits(PendingMsg, Component) +function PendingMsg () { + Component.call(this) +} + +PendingMsg.prototype.render = function () { + var state = this.props + var msgData = state.txData + + return ( + + h('div', { + key: msgData.id, + style: { + maxWidth: '350px', + }, + }, [ + + // header + h('h3', { + style: { + fontWeight: 'bold', + textAlign: 'center', + }, + }, 'Sign Message'), + + h('.error', { + style: { + margin: '10px', + }, + }, [ + `Signing this message can have + dangerous side effects. Only sign messages from + sites you fully trust with your entire account. + This dangerous method will be removed in a future version. `, + h('a', { + href: 'https://medium.com/metamask/the-new-secure-way-to-sign-data-in-your-browser-6af9dd2a1527', + style: { color: 'rgb(247, 134, 28)' }, + onClick: (event) => { + event.preventDefault() + const url = 'https://medium.com/metamask/the-new-secure-way-to-sign-data-in-your-browser-6af9dd2a1527' + global.platform.openWindow({ url }) + }, + }, 'Read more here.'), + ]), + + // message details + h(PendingTxDetails, state), + + // sign + cancel + h('.flex-row.flex-space-around', [ + h('button', { + onClick: state.cancelMessage, + }, 'Cancel'), + h('button', { + onClick: state.signMessage, + }, 'Sign'), + ]), + ]) + + ) +} + diff --git a/old-ui/app/components/pending-personal-msg-details.js b/old-ui/app/components/pending-personal-msg-details.js new file mode 100644 index 000000000..1050513f2 --- /dev/null +++ b/old-ui/app/components/pending-personal-msg-details.js @@ -0,0 +1,60 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits + +const AccountPanel = require('./account-panel') +const BinaryRenderer = require('./binary-renderer') + +module.exports = PendingMsgDetails + +inherits(PendingMsgDetails, Component) +function PendingMsgDetails () { + Component.call(this) +} + +PendingMsgDetails.prototype.render = function () { + var state = this.props + var msgData = state.txData + + var msgParams = msgData.msgParams || {} + var address = msgParams.from || state.selectedAddress + var identity = state.identities[address] || { address: address } + var account = state.accounts[address] || { address: address } + + var { data } = msgParams + + return ( + h('div', { + key: msgData.id, + style: { + margin: '10px 20px', + }, + }, [ + + // account that will sign + h(AccountPanel, { + showFullAddress: true, + identity: identity, + account: account, + imageifyIdenticons: state.imageifyIdenticons, + }), + + // message data + h('div', { + style: { + height: '260px', + }, + }, [ + h('label.font-small', { style: { display: 'block' } }, 'MESSAGE'), + h(BinaryRenderer, { + value: data, + style: { + height: '215px', + }, + }), + ]), + + ]) + ) +} + diff --git a/old-ui/app/components/pending-personal-msg.js b/old-ui/app/components/pending-personal-msg.js new file mode 100644 index 000000000..4542adb28 --- /dev/null +++ b/old-ui/app/components/pending-personal-msg.js @@ -0,0 +1,47 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const PendingTxDetails = require('./pending-personal-msg-details') + +module.exports = PendingMsg + +inherits(PendingMsg, Component) +function PendingMsg () { + Component.call(this) +} + +PendingMsg.prototype.render = function () { + var state = this.props + var msgData = state.txData + + return ( + + h('div', { + key: msgData.id, + }, [ + + // header + h('h3', { + style: { + fontWeight: 'bold', + textAlign: 'center', + }, + }, 'Sign Message'), + + // message details + h(PendingTxDetails, state), + + // sign + cancel + h('.flex-row.flex-space-around', [ + h('button', { + onClick: state.cancelPersonalMessage, + }, 'Cancel'), + h('button', { + onClick: state.signPersonalMessage, + }, 'Sign'), + ]), + ]) + + ) +} + diff --git a/old-ui/app/components/pending-tx.js b/old-ui/app/components/pending-tx.js new file mode 100644 index 000000000..10208b5ce --- /dev/null +++ b/old-ui/app/components/pending-tx.js @@ -0,0 +1,510 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const actions = require('../../../ui/app/actions') +const clone = require('clone') + +const ethUtil = require('ethereumjs-util') +const BN = ethUtil.BN +const hexToBn = require('../../../app/scripts/lib/hex-to-bn') +const util = require('../util') +const MiniAccountPanel = require('./mini-account-panel') +const Copyable = require('./copyable') +const EthBalance = require('./eth-balance') +const addressSummary = util.addressSummary +const nameForAddress = require('../../lib/contract-namer') +const BNInput = require('./bn-as-decimal-input') + +// corresponds with 0.1 GWEI +const MIN_GAS_PRICE_BN = new BN('100000000') +const MIN_GAS_LIMIT_BN = new BN('21000') + +module.exports = PendingTx +inherits(PendingTx, Component) +function PendingTx () { + Component.call(this) + this.state = { + valid: true, + txData: null, + submitting: false, + } +} + +PendingTx.prototype.render = function () { + const props = this.props + const { currentCurrency, blockGasLimit } = props + + const conversionRate = props.conversionRate + const txMeta = this.gatherTxMeta() + const txParams = txMeta.txParams || {} + + // Allow retry txs + const { lastGasPrice } = txMeta + let forceGasMin + if (lastGasPrice) { + const stripped = ethUtil.stripHexPrefix(lastGasPrice) + const lastGas = new BN(stripped, 16) + const priceBump = lastGas.divn('10') + forceGasMin = lastGas.add(priceBump) + } + + // Account Details + const address = txParams.from || props.selectedAddress + const identity = props.identities[address] || { address: address } + const account = props.accounts[address] + const balance = account ? account.balance : '0x0' + + // recipient check + const isValidAddress = !txParams.to || util.isValidAddress(txParams.to) + + // Gas + const gas = txParams.gas + const gasBn = hexToBn(gas) + const gasLimit = new BN(parseInt(blockGasLimit)) + const safeGasLimitBN = this.bnMultiplyByFraction(gasLimit, 19, 20) + const saferGasLimitBN = this.bnMultiplyByFraction(gasLimit, 18, 20) + const safeGasLimit = safeGasLimitBN.toString(10) + + // Gas Price + const gasPrice = txParams.gasPrice || MIN_GAS_PRICE_BN.toString(16) + const gasPriceBn = hexToBn(gasPrice) + + const txFeeBn = gasBn.mul(gasPriceBn) + const valueBn = hexToBn(txParams.value) + const maxCost = txFeeBn.add(valueBn) + + const dataLength = txParams.data ? (txParams.data.length - 2) / 2 : 0 + + const balanceBn = hexToBn(balance) + const insufficientBalance = balanceBn.lt(maxCost) + const dangerousGasLimit = gasBn.gte(saferGasLimitBN) + const gasLimitSpecified = txMeta.gasLimitSpecified + const buyDisabled = insufficientBalance || !this.state.valid || !isValidAddress || this.state.submitting + const showRejectAll = props.unconfTxListLength > 1 + + this.inputs = [] + + return ( + + h('div', { + key: txMeta.id, + }, [ + + h('form#pending-tx-form', { + onSubmit: this.onSubmit.bind(this), + + }, [ + + // tx info + h('div', [ + + h('.flex-row.flex-center', { + style: { + maxWidth: '100%', + }, + }, [ + + h(MiniAccountPanel, { + imageSeed: address, + picOrder: 'right', + }, [ + h('span.font-small', { + style: { + fontFamily: 'Montserrat Bold, Montserrat, sans-serif', + }, + }, identity.name), + + h(Copyable, { + value: ethUtil.toChecksumAddress(address), + }, [ + h('span.font-small', { + style: { + fontFamily: 'Montserrat Light, Montserrat, sans-serif', + }, + }, addressSummary(address, 6, 4, false)), + ]), + + h('span.font-small', { + style: { + fontFamily: 'Montserrat Light, Montserrat, sans-serif', + }, + }, [ + h(EthBalance, { + value: balance, + conversionRate, + currentCurrency, + inline: true, + labelColor: '#F7861C', + }), + ]), + ]), + + forwardCarrat(), + + this.miniAccountPanelForRecipient(), + ]), + + h('style', ` + .table-box { + margin: 7px 0px 0px 0px; + width: 100%; + } + .table-box .row { + margin: 0px; + background: rgb(236,236,236); + display: flex; + justify-content: space-between; + font-family: Montserrat Light, sans-serif; + font-size: 13px; + padding: 5px 25px; + } + .table-box .row .value { + font-family: Montserrat Regular; + } + `), + + h('.table-box', [ + + // Ether Value + // Currently not customizable, but easily modified + // in the way that gas and gasLimit currently are. + h('.row', [ + h('.cell.label', 'Amount'), + h(EthBalance, { value: txParams.value, currentCurrency, conversionRate }), + ]), + + // Gas Limit (customizable) + h('.cell.row', [ + h('.cell.label', 'Gas Limit'), + h('.cell.value', { + }, [ + h(BNInput, { + name: 'Gas Limit', + value: gasBn, + precision: 0, + scale: 0, + // The hard lower limit for gas. + min: MIN_GAS_LIMIT_BN, + max: safeGasLimit, + suffix: 'UNITS', + style: { + position: 'relative', + top: '5px', + }, + onChange: this.gasLimitChanged.bind(this), + + ref: (hexInput) => { this.inputs.push(hexInput) }, + }), + ]), + ]), + + // Gas Price (customizable) + h('.cell.row', [ + h('.cell.label', 'Gas Price'), + h('.cell.value', { + }, [ + h(BNInput, { + name: 'Gas Price', + value: gasPriceBn, + precision: 9, + scale: 9, + suffix: 'GWEI', + min: forceGasMin || MIN_GAS_PRICE_BN, + style: { + position: 'relative', + top: '5px', + }, + onChange: this.gasPriceChanged.bind(this), + ref: (hexInput) => { this.inputs.push(hexInput) }, + }), + ]), + ]), + + // Max Transaction Fee (calculated) + h('.cell.row', [ + h('.cell.label', 'Max Transaction Fee'), + h(EthBalance, { value: txFeeBn.toString(16), currentCurrency, conversionRate }), + ]), + + h('.cell.row', { + style: { + fontFamily: 'Montserrat Regular', + background: 'white', + padding: '10px 25px', + }, + }, [ + h('.cell.label', 'Max Total'), + h('.cell.value', { + style: { + display: 'flex', + alignItems: 'center', + }, + }, [ + h(EthBalance, { + value: maxCost.toString(16), + currentCurrency, + conversionRate, + inline: true, + labelColor: 'black', + fontSize: '16px', + }), + ]), + ]), + + // Data size row: + h('.cell.row', { + style: { + background: '#f7f7f7', + paddingBottom: '0px', + }, + }, [ + h('.cell.label'), + h('.cell.value', { + style: { + fontFamily: 'Montserrat Light', + fontSize: '11px', + }, + }, `Data included: ${dataLength} bytes`), + ]), + ]), // End of Table + + ]), + + h('style', ` + .conf-buttons button { + margin-left: 10px; + text-transform: uppercase; + } + `), + h('.cell.row', { + style: { + textAlign: 'center', + }, + }, [ + txMeta.simulationFails ? + h('.error', { + style: { + fontSize: '0.9em', + }, + }, 'Transaction Error. Exception thrown in contract code.') + : null, + + !isValidAddress ? + h('.error', { + style: { + fontSize: '0.9em', + }, + }, 'Recipient address is invalid. Sending this transaction will result in a loss of ETH.') + : null, + + insufficientBalance ? + h('span.error', { + style: { + fontSize: '0.9em', + }, + }, 'Insufficient balance for transaction') + : null, + + (dangerousGasLimit && !gasLimitSpecified) ? + h('span.error', { + style: { + fontSize: '0.9em', + }, + }, 'Gas limit set dangerously high. Approving this transaction is likely to fail.') + : null, + ]), + + + // send + cancel + h('.flex-row.flex-space-around.conf-buttons', { + style: { + display: 'flex', + justifyContent: 'flex-end', + margin: '14px 25px', + }, + }, [ + h('button', { + onClick: (event) => { + this.resetGasFields() + event.preventDefault() + }, + }, 'Reset'), + + // Accept Button or Buy Button + insufficientBalance ? h('button.btn-green', { onClick: props.buyEth }, 'Buy Ether') : + h('input.confirm.btn-green', { + type: 'submit', + value: 'SUBMIT', + style: { marginLeft: '10px' }, + disabled: buyDisabled, + }), + + h('button.cancel.btn-red', { + onClick: props.cancelTransaction, + }, 'Reject'), + ]), + showRejectAll ? h('.flex-row.flex-space-around.conf-buttons', { + style: { + display: 'flex', + justifyContent: 'flex-end', + margin: '14px 25px', + }, + }, [ + h('button.cancel.btn-red', { + onClick: props.cancelAllTransactions, + }, 'Reject All'), + ]) : null, + ]), + ]) + ) +} + +PendingTx.prototype.miniAccountPanelForRecipient = function () { + const props = this.props + const txData = props.txData + const txParams = txData.txParams || {} + const isContractDeploy = !('to' in txParams) + + // If it's not a contract deploy, send to the account + if (!isContractDeploy) { + return h(MiniAccountPanel, { + imageSeed: txParams.to, + picOrder: 'left', + }, [ + + h('span.font-small', { + style: { + fontFamily: 'Montserrat Bold, Montserrat, sans-serif', + }, + }, nameForAddress(txParams.to, props.identities)), + + h(Copyable, { + value: ethUtil.toChecksumAddress(txParams.to), + }, [ + h('span.font-small', { + style: { + fontFamily: 'Montserrat Light, Montserrat, sans-serif', + }, + }, addressSummary(txParams.to, 6, 4, false)), + ]), + + ]) + } else { + return h(MiniAccountPanel, { + picOrder: 'left', + }, [ + + h('span.font-small', { + style: { + fontFamily: 'Montserrat Bold, Montserrat, sans-serif', + }, + }, 'New Contract'), + + ]) + } +} + +PendingTx.prototype.gasPriceChanged = function (newBN, valid) { + log.info(`Gas price changed to: ${newBN.toString(10)}`) + const txMeta = this.gatherTxMeta() + txMeta.txParams.gasPrice = '0x' + newBN.toString('hex') + this.setState({ + txData: clone(txMeta), + valid, + }) +} + +PendingTx.prototype.gasLimitChanged = function (newBN, valid) { + log.info(`Gas limit changed to ${newBN.toString(10)}`) + const txMeta = this.gatherTxMeta() + txMeta.txParams.gas = '0x' + newBN.toString('hex') + this.setState({ + txData: clone(txMeta), + valid, + }) +} + +PendingTx.prototype.resetGasFields = function () { + log.debug(`pending-tx resetGasFields`) + + this.inputs.forEach((hexInput) => { + if (hexInput) { + hexInput.setValid() + } + }) + + this.setState({ + txData: null, + valid: true, + }) +} + +PendingTx.prototype.onSubmit = function (event) { + event.preventDefault() + const txMeta = this.gatherTxMeta() + const valid = this.checkValidity() + this.setState({ valid, submitting: true }) + if (valid && this.verifyGasParams()) { + this.props.sendTransaction(txMeta, event) + } else { + this.props.dispatch(actions.displayWarning('Invalid Gas Parameters')) + this.setState({ submitting: false }) + } +} + +PendingTx.prototype.checkValidity = function () { + const form = this.getFormEl() + const valid = form.checkValidity() + return valid +} + +PendingTx.prototype.getFormEl = function () { + const form = document.querySelector('form#pending-tx-form') + // Stub out form for unit tests: + if (!form) { + return { checkValidity () { return true } } + } + return form +} + +// After a customizable state value has been updated, +PendingTx.prototype.gatherTxMeta = function () { + log.debug(`pending-tx gatherTxMeta`) + const props = this.props + const state = this.state + const txData = clone(state.txData) || clone(props.txData) + + log.debug(`UI has defaulted to tx meta ${JSON.stringify(txData)}`) + return txData +} + +PendingTx.prototype.verifyGasParams = function () { + // We call this in case the gas has not been modified at all + if (!this.state) { return true } + return ( + this._notZeroOrEmptyString(this.state.gas) && + this._notZeroOrEmptyString(this.state.gasPrice) + ) +} + +PendingTx.prototype._notZeroOrEmptyString = function (obj) { + return obj !== '' && obj !== '0x0' +} + +PendingTx.prototype.bnMultiplyByFraction = function (targetBN, numerator, denominator) { + const numBN = new BN(numerator) + const denomBN = new BN(denominator) + return targetBN.mul(numBN).div(denomBN) +} + +function forwardCarrat () { + return ( + h('img', { + src: 'images/forward-carrat.svg', + style: { + padding: '5px 6px 0px 10px', + height: '37px', + }, + }) + ) +} diff --git a/old-ui/app/components/pending-typed-msg-details.js b/old-ui/app/components/pending-typed-msg-details.js new file mode 100644 index 000000000..b5fd29f71 --- /dev/null +++ b/old-ui/app/components/pending-typed-msg-details.js @@ -0,0 +1,59 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits + +const AccountPanel = require('./account-panel') +const TypedMessageRenderer = require('./typed-message-renderer') + +module.exports = PendingMsgDetails + +inherits(PendingMsgDetails, Component) +function PendingMsgDetails () { + Component.call(this) +} + +PendingMsgDetails.prototype.render = function () { + var state = this.props + var msgData = state.txData + + var msgParams = msgData.msgParams || {} + var address = msgParams.from || state.selectedAddress + var identity = state.identities[address] || { address: address } + var account = state.accounts[address] || { address: address } + + var { data } = msgParams + + return ( + h('div', { + key: msgData.id, + style: { + margin: '10px 20px', + }, + }, [ + + // account that will sign + h(AccountPanel, { + showFullAddress: true, + identity: identity, + account: account, + imageifyIdenticons: state.imageifyIdenticons, + }), + + // message data + h('div', { + style: { + height: '260px', + }, + }, [ + h('label.font-small', { style: { display: 'block' } }, 'YOU ARE SIGNING'), + h(TypedMessageRenderer, { + value: data, + style: { + height: '215px', + }, + }), + ]), + + ]) + ) +} diff --git a/old-ui/app/components/pending-typed-msg.js b/old-ui/app/components/pending-typed-msg.js new file mode 100644 index 000000000..f8926d0a3 --- /dev/null +++ b/old-ui/app/components/pending-typed-msg.js @@ -0,0 +1,46 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const PendingTxDetails = require('./pending-typed-msg-details') + +module.exports = PendingMsg + +inherits(PendingMsg, Component) +function PendingMsg () { + Component.call(this) +} + +PendingMsg.prototype.render = function () { + var state = this.props + var msgData = state.txData + + return ( + + h('div', { + key: msgData.id, + }, [ + + // header + h('h3', { + style: { + fontWeight: 'bold', + textAlign: 'center', + }, + }, 'Sign Message'), + + // message details + h(PendingTxDetails, state), + + // sign + cancel + h('.flex-row.flex-space-around', [ + h('button', { + onClick: state.cancelTypedMessage, + }, 'Cancel'), + h('button', { + onClick: state.signTypedMessage, + }, 'Sign'), + ]), + ]) + + ) +} diff --git a/old-ui/app/components/qr-code.js b/old-ui/app/components/qr-code.js new file mode 100644 index 000000000..fa38dcd92 --- /dev/null +++ b/old-ui/app/components/qr-code.js @@ -0,0 +1,80 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const qrCode = require('qrcode-npm').qrcode +const inherits = require('util').inherits +const connect = require('react-redux').connect +const isHexPrefixed = require('ethereumjs-util').isHexPrefixed +const CopyButton = require('./copyButton') + +module.exports = connect(mapStateToProps)(QrCodeView) + +function mapStateToProps (state) { + return { + Qr: state.appState.Qr, + buyView: state.appState.buyView, + warning: state.appState.warning, + } +} + +inherits(QrCodeView, Component) + +function QrCodeView () { + Component.call(this) +} + +QrCodeView.prototype.render = function () { + const props = this.props + const Qr = props.Qr + console.log(`QrCodeView Qr`, Qr); + const address = `${isHexPrefixed(Qr.data) ? 'ethereum:' : ''}${Qr.data}` + const qrImage = qrCode(4, 'M') + qrImage.addData(address) + qrImage.make() + return h('.main-container.flex-column', { + key: 'qr', + style: { + justifyContent: 'center', + paddingBottom: '45px', + paddingLeft: '45px', + paddingRight: '45px', + alignItems: 'center', + }, + }, [ + Array.isArray(Qr.message) ? h('.message-container', this.renderMultiMessage()) : h('.qr-header', Qr.message), + + this.props.warning ? this.props.warning && h('span.error.flex-center', { + style: { + textAlign: 'center', + width: '229px', + height: '82px', + }, + }, + this.props.warning) : null, + + h('#qr-container.flex-column', { + style: { + marginTop: '25px', + marginBottom: '15px', + }, + dangerouslySetInnerHTML: { + __html: qrImage.createTableTag(4), + }, + }), + h('.flex-row', [ + h('h3.ellip-address', { + style: { + width: '247px', + }, + }, Qr.data), + h(CopyButton, { + value: Qr.data, + }), + ]), + ]) +} + +QrCodeView.prototype.renderMultiMessage = function () { + var Qr = this.props.Qr + var multiMessage = Qr.message.map((message) => h('.qr-message', message)) + return multiMessage +} diff --git a/old-ui/app/components/range-slider.js b/old-ui/app/components/range-slider.js new file mode 100644 index 000000000..823f5eb01 --- /dev/null +++ b/old-ui/app/components/range-slider.js @@ -0,0 +1,58 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits + +module.exports = RangeSlider + +inherits(RangeSlider, Component) +function RangeSlider () { + Component.call(this) +} + +RangeSlider.prototype.render = function () { + const state = this.state || {} + const props = this.props + const onInput = props.onInput || function () {} + const name = props.name + const { + min = 0, + max = 100, + increment = 1, + defaultValue = 50, + mirrorInput = false, + } = this.props.options + const {container, input, range} = props.style + + return ( + h('.flex-row', { + style: container, + }, [ + h('input', { + type: 'range', + name: name, + min: min, + max: max, + step: increment, + style: range, + value: state.value || defaultValue, + onChange: mirrorInput ? this.mirrorInputs.bind(this, event) : onInput, + }), + + // Mirrored input for range + mirrorInput ? h('input.large-input', { + type: 'number', + name: `${name}Mirror`, + min: min, + max: max, + value: state.value || defaultValue, + step: increment, + style: input, + onChange: this.mirrorInputs.bind(this, event), + }) : null, + ]) + ) +} + +RangeSlider.prototype.mirrorInputs = function (event) { + this.setState({value: event.target.value}) +} diff --git a/old-ui/app/components/shapeshift-form.js b/old-ui/app/components/shapeshift-form.js new file mode 100644 index 000000000..a54987c04 --- /dev/null +++ b/old-ui/app/components/shapeshift-form.js @@ -0,0 +1,308 @@ +const PersistentForm = require('../../lib/persistent-form') +const h = require('react-hyperscript') +const inherits = require('util').inherits +const connect = require('react-redux').connect +const actions = require('../../../ui/app/actions') +const Qr = require('./qr-code') +const isValidAddress = require('../util').isValidAddress +module.exports = connect(mapStateToProps)(ShapeshiftForm) + +function mapStateToProps (state) { + return { + warning: state.appState.warning, + isSubLoading: state.appState.isSubLoading, + qrRequested: state.appState.qrRequested, + } +} + +inherits(ShapeshiftForm, PersistentForm) + +function ShapeshiftForm () { + PersistentForm.call(this) + this.persistentFormParentId = 'shapeshift-buy-form' +} + +ShapeshiftForm.prototype.render = function () { + return this.props.qrRequested ? h(Qr, {key: 'qr'}) : this.renderMain() +} + +ShapeshiftForm.prototype.renderMain = function () { + const marketinfo = this.props.buyView.formView.marketinfo + const coinOptions = this.props.buyView.formView.coinOptions + var coin = marketinfo.pair.split('_')[0].toUpperCase() + + return h('.flex-column', { + style: { + position: 'relative', + padding: '25px', + paddingTop: '5px', + width: '90%', + minHeight: '215px', + alignItems: 'center', + overflowY: 'auto', + }, + }, [ + h('.flex-row', { + style: { + justifyContent: 'center', + alignItems: 'baseline', + height: '42px', + }, + }, [ + h('img', { + src: coinOptions[coin].image, + width: '25px', + height: '25px', + style: { + marginRight: '5px', + }, + }), + + h('.input-container', { + position: 'relative', + }, [ + h('input#fromCoin.buy-inputs.ex-coins', { + type: 'text', + list: 'coinList', + autoFocus: true, + dataset: { + persistentFormId: 'input-coin', + }, + style: { + boxSizing: 'border-box', + }, + onChange: this.handleLiveInput.bind(this), + defaultValue: 'BTC', + }), + + this.renderCoinList(), + + h('i.fa.fa-pencil-square-o.edit-text', { + style: { + fontSize: '12px', + color: '#F7861C', + position: 'absolute', + }, + }), + ]), + + h('.icon-control', { + style: { + position: 'relative', + }, + }, [ + // Not visible on the screen, can't see it on master. + + // h('i.fa.fa-refresh.fa-4.orange', { + // style: { + // bottom: '5px', + // left: '5px', + // color: '#F7861C', + // }, + // onClick: this.updateCoin.bind(this), + // }), + h('i.fa.fa-chevron-right.fa-4.orange', { + style: { + position: 'absolute', + bottom: '35%', + left: '0%', + color: '#F7861C', + }, + onClick: this.updateCoin.bind(this), + }), + ]), + + h('#toCoin.ex-coins', marketinfo.pair.split('_')[1].toUpperCase()), + + h('img', { + src: coinOptions[marketinfo.pair.split('_')[1].toUpperCase()].image, + width: '25px', + height: '25px', + style: { + marginLeft: '5px', + }, + }), + ]), + + h('.flex-column', { + style: { + marginTop: '1%', + alignItems: 'flex-start', + }, + }, [ + this.props.warning ? + this.props.warning && + h('span.error.flex-center', { + style: { + textAlign: 'center', + width: '229px', + height: '82px', + }, + }, this.props.warning) + : this.renderInfo(), + + this.renderRefundAddressForCoin(coin), + ]), + + ]) +} + +ShapeshiftForm.prototype.renderRefundAddressForCoin = function (coin) { + return h(this.activeToggle('.input-container'), { + style: { + marginTop: '1%', + }, + }, [ + + h('div', `${coin} Address:`), + + h('input#fromCoinAddress.buy-inputs', { + type: 'text', + placeholder: `Your ${coin} Refund Address`, + dataset: { + persistentFormId: 'refund-address', + + }, + style: { + boxSizing: 'border-box', + width: '227px', + height: '30px', + padding: ' 5px ', + }, + }), + + h('i.fa.fa-pencil-square-o.edit-text', { + style: { + fontSize: '12px', + color: '#F7861C', + position: 'absolute', + }, + }), + h('div.flex-row', { + style: { + justifyContent: 'flex-start', + }, + }, [ + h('button', { + onClick: this.shift.bind(this), + style: { + marginTop: '1%', + }, + }, + 'Submit'), + ]), + ]) +} + +ShapeshiftForm.prototype.shift = function () { + var props = this.props + var withdrawal = this.props.buyView.buyAddress + var returnAddress = document.getElementById('fromCoinAddress').value + var pair = this.props.buyView.formView.marketinfo.pair + var data = { + 'withdrawal': withdrawal, + 'pair': pair, + 'returnAddress': returnAddress, + // Public api key + 'apiKey': '803d1f5df2ed1b1476e4b9e6bcd089e34d8874595dda6a23b67d93c56ea9cc2445e98a6748b219b2b6ad654d9f075f1f1db139abfa93158c04e825db122c14b6', + } + var message = [ + `Deposit Limit: ${props.buyView.formView.marketinfo.limit}`, + `Deposit Minimum:${props.buyView.formView.marketinfo.minimum}`, + ] + if (isValidAddress(withdrawal)) { + this.props.dispatch(actions.coinShiftRquest(data, message)) + } +} + +ShapeshiftForm.prototype.renderCoinList = function () { + var list = Object.keys(this.props.buyView.formView.coinOptions).map((item) => { + return h('option', { + value: item, + }, item) + }) + + return h('datalist#coinList', { + onClick: (event) => { + event.preventDefault() + }, + }, list) +} + +ShapeshiftForm.prototype.updateCoin = function (event) { + event.preventDefault() + const props = this.props + var coinOptions = this.props.buyView.formView.coinOptions + var coin = document.getElementById('fromCoin').value + + if (!coinOptions[coin.toUpperCase()] || coin.toUpperCase() === 'ETH') { + var message = 'Not a valid coin' + return props.dispatch(actions.displayWarning(message)) + } else { + return props.dispatch(actions.pairUpdate(coin)) + } +} + +ShapeshiftForm.prototype.handleLiveInput = function () { + const props = this.props + var coinOptions = this.props.buyView.formView.coinOptions + var coin = document.getElementById('fromCoin').value + + if (!coinOptions[coin.toUpperCase()] || coin.toUpperCase() === 'ETH') { + return null + } else { + return props.dispatch(actions.pairUpdate(coin)) + } +} + +ShapeshiftForm.prototype.renderInfo = function () { + const marketinfo = this.props.buyView.formView.marketinfo + const coinOptions = this.props.buyView.formView.coinOptions + var coin = marketinfo.pair.split('_')[0].toUpperCase() + + return h('span', { + style: { + }, + }, [ + h('h3.flex-row.text-transform-uppercase', { + style: { + color: '#868686', + paddingTop: '4px', + justifyContent: 'space-around', + textAlign: 'center', + fontSize: '17px', + }, + }, `Market Info for ${marketinfo.pair.replace('_', ' to ').toUpperCase()}:`), + h('.marketinfo', ['Status : ', `${coinOptions[coin].status}`]), + h('.marketinfo', ['Exchange Rate: ', `${marketinfo.rate}`]), + h('.marketinfo', ['Limit: ', `${marketinfo.limit}`]), + h('.marketinfo', ['Minimum : ', `${marketinfo.minimum}`]), + ]) +} + +ShapeshiftForm.prototype.activeToggle = function (elementType) { + if (!this.props.buyView.formView.response || this.props.warning) return elementType + return `${elementType}.inactive` +} + +ShapeshiftForm.prototype.renderLoading = function () { + return h('span', { + style: { + position: 'absolute', + left: '70px', + bottom: '194px', + background: 'transparent', + width: '229px', + height: '82px', + display: 'flex', + justifyContent: 'center', + }, + }, [ + h('img', { + style: { + width: '60px', + }, + src: 'images/loading.svg', + }), + ]) +} diff --git a/old-ui/app/components/shift-list-item.js b/old-ui/app/components/shift-list-item.js new file mode 100644 index 000000000..5454a90bc --- /dev/null +++ b/old-ui/app/components/shift-list-item.js @@ -0,0 +1,204 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const h = require('react-hyperscript') +const connect = require('react-redux').connect +const vreme = new (require('vreme'))() +const explorerLink = require('etherscan-link').createExplorerLink +const actions = require('../../../ui/app/actions') +const addressSummary = require('../util').addressSummary + +const CopyButton = require('./copyButton') +const EthBalance = require('./eth-balance') +const Tooltip = require('./tooltip') + + +module.exports = connect(mapStateToProps)(ShiftListItem) + +function mapStateToProps (state) { + return { + conversionRate: state.metamask.conversionRate, + currentCurrency: state.metamask.currentCurrency, + } +} + +inherits(ShiftListItem, Component) + +function ShiftListItem () { + Component.call(this) +} + +ShiftListItem.prototype.render = function () { + return ( + h('.transaction-list-item.flex-row', { + style: { + paddingTop: '20px', + paddingBottom: '20px', + justifyContent: 'space-around', + alignItems: 'center', + }, + }, [ + h('div', { + style: { + width: '0px', + position: 'relative', + bottom: '19px', + }, + }, [ + h('img', { + src: 'https://info.shapeshift.io/sites/default/files/logo.png', + style: { + height: '35px', + width: '132px', + position: 'absolute', + clip: 'rect(0px,23px,34px,0px)', + }, + }), + ]), + + this.renderInfo(), + this.renderUtilComponents(), + ]) + ) +} + +function formatDate (date) { + return vreme.format(new Date(date), 'March 16 2014 14:30') +} + +ShiftListItem.prototype.renderUtilComponents = function () { + var props = this.props + const { conversionRate, currentCurrency } = props + + switch (props.response.status) { + case 'no_deposits': + return h('.flex-row', [ + h(CopyButton, { + value: this.props.depositAddress, + }), + h(Tooltip, { + title: 'QR Code', + }, [ + h('i.fa.fa-qrcode.pointer.pop-hover', { + onClick: () => props.dispatch(actions.reshowQrCode(props.depositAddress, props.depositType)), + style: { + margin: '5px', + marginLeft: '23px', + marginRight: '12px', + fontSize: '20px', + color: '#F7861C', + }, + }), + ]), + ]) + case 'received': + return h('.flex-row') + + case 'complete': + return h('.flex-row', [ + h(CopyButton, { + value: this.props.response.transaction, + }), + h(EthBalance, { + value: `${props.response.outgoingCoin}`, + conversionRate, + currentCurrency, + width: '55px', + shorten: true, + needsParse: false, + incoming: true, + style: { + fontSize: '15px', + color: '#01888C', + }, + }), + ]) + + case 'failed': + return '' + default: + return '' + } +} + +ShiftListItem.prototype.renderInfo = function () { + var props = this.props + switch (props.response.status) { + case 'no_deposits': + return h('.flex-column', { + style: { + width: '200px', + overflow: 'hidden', + }, + }, [ + h('div', { + style: { + fontSize: 'x-small', + color: '#ABA9AA', + width: '100%', + }, + }, `${props.depositType} to ETH via ShapeShift`), + h('div', 'No deposits received'), + h('div', { + style: { + fontSize: 'x-small', + color: '#ABA9AA', + width: '100%', + }, + }, formatDate(props.time)), + ]) + case 'received': + return h('.flex-column', { + style: { + width: '200px', + overflow: 'hidden', + }, + }, [ + h('div', { + style: { + fontSize: 'x-small', + color: '#ABA9AA', + width: '100%', + }, + }, `${props.depositType} to ETH via ShapeShift`), + h('div', 'Conversion in progress'), + h('div', { + style: { + fontSize: 'x-small', + color: '#ABA9AA', + width: '100%', + }, + }, formatDate(props.time)), + ]) + case 'complete': + var url = explorerLink(props.response.transaction, parseInt('1')) + + return h('.flex-column.pointer', { + style: { + width: '200px', + overflow: 'hidden', + }, + onClick: () => global.platform.openWindow({ url }), + }, [ + h('div', { + style: { + fontSize: 'x-small', + color: '#ABA9AA', + width: '100%', + }, + }, 'From ShapeShift'), + h('div', formatDate(props.time)), + h('div', { + style: { + fontSize: 'x-small', + color: '#ABA9AA', + width: '100%', + }, + }, addressSummary(props.response.transaction)), + ]) + + case 'failed': + return h('span.error', '(Failed)') + default: + return '' + } +} diff --git a/old-ui/app/components/tab-bar.js b/old-ui/app/components/tab-bar.js new file mode 100644 index 000000000..bef444a48 --- /dev/null +++ b/old-ui/app/components/tab-bar.js @@ -0,0 +1,37 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits + +module.exports = TabBar + +inherits(TabBar, Component) +function TabBar () { + Component.call(this) +} + +TabBar.prototype.render = function () { + const props = this.props + const state = this.state || {} + const { tabs = [], defaultTab, tabSelected } = props + const { subview = defaultTab } = state + + return ( + h('.flex-row.space-around.text-transform-uppercase', { + style: { + background: '#EBEBEB', + color: '#AEAEAE', + paddingTop: '4px', + minHeight: '30px', + }, + }, tabs.map((tab) => { + const { key, content } = tab + return h(subview === key ? '.activeForm' : '.inactiveForm.pointer', { + onClick: () => { + this.setState({ subview: key }) + tabSelected(key) + }, + }, content) + })) + ) +} + diff --git a/old-ui/app/components/template.js b/old-ui/app/components/template.js new file mode 100644 index 000000000..b6ed8eaa0 --- /dev/null +++ b/old-ui/app/components/template.js @@ -0,0 +1,18 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits + +module.exports = NewComponent + +inherits(NewComponent, Component) +function NewComponent () { + Component.call(this) +} + +NewComponent.prototype.render = function () { + const props = this.props + + return ( + h('span', props.message) + ) +} diff --git a/old-ui/app/components/token-cell.js b/old-ui/app/components/token-cell.js new file mode 100644 index 000000000..19d7139bb --- /dev/null +++ b/old-ui/app/components/token-cell.js @@ -0,0 +1,72 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const Identicon = require('./identicon') +const prefixForNetwork = require('../../lib/etherscan-prefix-for-network') + +module.exports = TokenCell + +inherits(TokenCell, Component) +function TokenCell () { + Component.call(this) +} + +TokenCell.prototype.render = function () { + const props = this.props + const { address, symbol, string, network, userAddress } = props + + return ( + h('li.token-cell', { + style: { cursor: network === '1' ? 'pointer' : 'default' }, + onClick: this.view.bind(this, address, userAddress, network), + }, [ + + h(Identicon, { + diameter: 50, + address, + network, + }), + + h('h3', `${string || 0} ${symbol}`), + + h('span', { style: { flex: '1 0 auto' } }), + + /* + h('button', { + onClick: this.send.bind(this, address), + }, 'SEND'), + */ + + ]) + ) +} + +TokenCell.prototype.send = function (address, event) { + event.preventDefault() + event.stopPropagation() + const url = tokenFactoryFor(address) + if (url) { + navigateTo(url) + } +} + +TokenCell.prototype.view = function (address, userAddress, network, event) { + const url = etherscanLinkFor(address, userAddress, network) + if (url) { + navigateTo(url) + } +} + +function navigateTo (url) { + global.platform.openWindow({ url }) +} + +function etherscanLinkFor (tokenAddress, address, network) { + const prefix = prefixForNetwork(network) + return `https://${prefix}etherscan.io/token/${tokenAddress}?a=${address}` +} + +function tokenFactoryFor (tokenAddress) { + return `https://tokenfactory.surge.sh/#/token/${tokenAddress}` +} + diff --git a/old-ui/app/components/token-list.js b/old-ui/app/components/token-list.js new file mode 100644 index 000000000..998ec901d --- /dev/null +++ b/old-ui/app/components/token-list.js @@ -0,0 +1,207 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const TokenTracker = require('eth-token-tracker') +const TokenCell = require('./token-cell.js') + +module.exports = TokenList + +inherits(TokenList, Component) +function TokenList () { + this.state = { + tokens: [], + isLoading: true, + network: null, + } + Component.call(this) +} + +TokenList.prototype.render = function () { + const state = this.state + const { tokens, isLoading, error } = state + const { userAddress, network } = this.props + + if (isLoading) { + return this.message('Loading') + } + + if (error) { + log.error(error) + return h('.hotFix', { + style: { + padding: '80px', + }, + }, [ + 'We had trouble loading your token balances. You can view them ', + h('span.hotFix', { + style: { + color: 'rgba(247, 134, 28, 1)', + cursor: 'pointer', + }, + onClick: () => { + global.platform.openWindow({ + url: `https://ethplorer.io/address/${userAddress}`, + }) + }, + }, 'here'), + ]) + } + + const tokenViews = tokens.map((tokenData) => { + tokenData.network = network + tokenData.userAddress = userAddress + return h(TokenCell, tokenData) + }) + + return h('.full-flex-height', [ + this.renderTokenStatusBar(), + + h('ol.full-flex-height.flex-column', { + style: { + overflowY: 'auto', + display: 'flex', + flexDirection: 'column', + }, + }, [ + h('style', ` + + li.token-cell { + display: flex; + flex-direction: row; + align-items: center; + padding: 10px; + min-height: 50px; + } + + li.token-cell > h3 { + margin-left: 12px; + } + + li.token-cell:hover { + background: white; + cursor: pointer; + } + + `), + ...tokenViews, + h('.flex-grow'), + ]), + ]) +} + +TokenList.prototype.renderTokenStatusBar = function () { + const { tokens } = this.state + + let msg + if (tokens.length === 1) { + msg = `You own 1 token` + } else if (tokens.length > 1) { + msg = `You own ${tokens.length} tokens` + } else { + msg = `No tokens found` + } + + return h('div', { + style: { + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', + minHeight: '70px', + padding: '10px', + }, + }, [ + h('span', msg), + h('button', { + key: 'reveal-account-bar', + onClick: (event) => { + event.preventDefault() + this.props.addToken() + }, + style: { + display: 'flex', + height: '40px', + padding: '10px', + justifyContent: 'center', + alignItems: 'center', + }, + }, [ + 'ADD TOKEN', + ]), + ]) +} + +TokenList.prototype.message = function (body) { + return h('div', { + style: { + display: 'flex', + height: '250px', + alignItems: 'center', + justifyContent: 'center', + padding: '30px', + }, + }, body) +} + +TokenList.prototype.componentDidMount = function () { + this.createFreshTokenTracker() +} + +TokenList.prototype.createFreshTokenTracker = function () { + if (this.tracker) { + // Clean up old trackers when refreshing: + this.tracker.stop() + this.tracker.removeListener('update', this.balanceUpdater) + this.tracker.removeListener('error', this.showError) + } + + if (!global.ethereumProvider) return + const { userAddress } = this.props + this.tracker = new TokenTracker({ + userAddress, + provider: global.ethereumProvider, + tokens: this.props.tokens, + pollingInterval: 8000, + }) + + + // Set up listener instances for cleaning up + this.balanceUpdater = this.updateBalances.bind(this) + this.showError = (error) => { + this.setState({ error, isLoading: false }) + } + this.tracker.on('update', this.balanceUpdater) + this.tracker.on('error', this.showError) + + this.tracker.updateBalances() + .then(() => { + this.updateBalances(this.tracker.serialize()) + }) + .catch((reason) => { + log.error(`Problem updating balances`, reason) + this.setState({ isLoading: false }) + }) +} + +TokenList.prototype.componentWillUpdate = function (nextProps) { + if (nextProps.network === 'loading') return + const oldNet = this.props.network + const newNet = nextProps.network + + if (oldNet && newNet && newNet !== oldNet) { + this.setState({ isLoading: true }) + this.createFreshTokenTracker() + } +} + +TokenList.prototype.updateBalances = function (tokens) { + const heldTokens = tokens.filter(token => { + return token.balance !== '0' && token.string !== '0.000' + }) + this.setState({ tokens: heldTokens, isLoading: false }) +} + +TokenList.prototype.componentWillUnmount = function () { + if (!this.tracker) return + this.tracker.stop() +} + diff --git a/old-ui/app/components/tooltip.js b/old-ui/app/components/tooltip.js new file mode 100644 index 000000000..efab2c497 --- /dev/null +++ b/old-ui/app/components/tooltip.js @@ -0,0 +1,22 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const ReactTooltip = require('react-tooltip-component') + +module.exports = Tooltip + +inherits(Tooltip, Component) +function Tooltip () { + Component.call(this) +} + +Tooltip.prototype.render = function () { + const props = this.props + const { position, title, children } = props + + return h(ReactTooltip, { + position: position || 'left', + title, + fixed: true, + }, children) +} diff --git a/old-ui/app/components/transaction-list-item-icon.js b/old-ui/app/components/transaction-list-item-icon.js new file mode 100644 index 000000000..f442b05af --- /dev/null +++ b/old-ui/app/components/transaction-list-item-icon.js @@ -0,0 +1,68 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const Tooltip = require('./tooltip') + +const Identicon = require('./identicon') + +module.exports = TransactionIcon + +inherits(TransactionIcon, Component) +function TransactionIcon () { + Component.call(this) +} + +TransactionIcon.prototype.render = function () { + const { transaction, txParams, isMsg } = this.props + switch (transaction.status) { + case 'unapproved': + return h(!isMsg ? '.unapproved-tx-icon' : 'i.fa.fa-certificate.fa-lg') + + case 'rejected': + return h('i.fa.fa-exclamation-triangle.fa-lg.warning', { + style: { + width: '24px', + }, + }) + + case 'failed': + return h('i.fa.fa-exclamation-triangle.fa-lg.error', { + style: { + width: '24px', + }, + }) + + case 'submitted': + return h(Tooltip, { + title: 'Pending', + position: 'right', + }, [ + h('i.fa.fa-ellipsis-h', { + style: { + fontSize: '27px', + }, + }), + ]) + } + + if (isMsg) { + return h('i.fa.fa-certificate.fa-lg', { + style: { + width: '24px', + }, + }) + } + + if (txParams.to) { + return h(Identicon, { + diameter: 24, + address: txParams.to || transaction.hash, + }) + } else { + return h('i.fa.fa-file-text-o.fa-lg', { + style: { + width: '24px', + }, + }) + } +} diff --git a/old-ui/app/components/transaction-list-item.js b/old-ui/app/components/transaction-list-item.js new file mode 100644 index 000000000..76a456d3f --- /dev/null +++ b/old-ui/app/components/transaction-list-item.js @@ -0,0 +1,175 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits + +const EthBalance = require('./eth-balance') +const addressSummary = require('../util').addressSummary +const explorerLink = require('etherscan-link').createExplorerLink +const CopyButton = require('./copyButton') +const vreme = new (require('vreme'))() +const Tooltip = require('./tooltip') +const numberToBN = require('number-to-bn') + +const TransactionIcon = require('./transaction-list-item-icon') +const ShiftListItem = require('./shift-list-item') +module.exports = TransactionListItem + +inherits(TransactionListItem, Component) +function TransactionListItem () { + Component.call(this) +} + +TransactionListItem.prototype.render = function () { + const { transaction, network, conversionRate, currentCurrency } = this.props + if (transaction.key === 'shapeshift') { + if (network === '1') return h(ShiftListItem, transaction) + } + var date = formatDate(transaction.time) + + let isLinkable = false + const numericNet = parseInt(network) + isLinkable = numericNet === 1 || numericNet === 3 || numericNet === 4 || numericNet === 42 + + var isMsg = ('msgParams' in transaction) + var isTx = ('txParams' in transaction) + var isPending = transaction.status === 'unapproved' + let txParams + if (isTx) { + txParams = transaction.txParams + } else if (isMsg) { + txParams = transaction.msgParams + } + + const nonce = txParams.nonce ? numberToBN(txParams.nonce).toString(10) : '' + + const isClickable = ('hash' in transaction && isLinkable) || isPending + return ( + h(`.transaction-list-item.flex-row.flex-space-between${isClickable ? '.pointer' : ''}`, { + onClick: (event) => { + if (isPending) { + this.props.showTx(transaction.id) + } + event.stopPropagation() + if (!transaction.hash || !isLinkable) return + var url = explorerLink(transaction.hash, parseInt(network)) + global.platform.openWindow({ url }) + }, + style: { + padding: '20px 0', + display: 'flex', + justifyContent: 'space-between', + }, + }, [ + + h('.identicon-wrapper.flex-column.flex-center.select-none', [ + h(TransactionIcon, { txParams, transaction, isTx, isMsg }), + ]), + + h(Tooltip, { + title: 'Transaction Number', + position: 'right', + }, [ + h('span', { + style: { + display: 'flex', + cursor: 'normal', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + }, + }, nonce), + ]), + + h('.flex-column', {style: {width: '150px', overflow: 'hidden'}}, [ + domainField(txParams), + h('div', date), + recipientField(txParams, transaction, isTx, isMsg), + ]), + + // Places a copy button if tx is successful, else places a placeholder empty div. + transaction.hash ? h(CopyButton, { value: transaction.hash }) : h('div', {style: { display: 'flex', alignItems: 'center', width: '26px' }}), + + isTx ? h(EthBalance, { + value: txParams.value, + conversionRate, + currentCurrency, + shorten: true, + showFiat: false, + style: {fontSize: '15px'}, + }) : h('.flex-column'), + ]) + ) +} + +function domainField (txParams) { + return h('div', { + style: { + fontSize: 'x-small', + color: '#ABA9AA', + overflow: 'hidden', + textOverflow: 'ellipsis', + width: '100%', + }, + }, [ + txParams.origin, + ]) +} + +function recipientField (txParams, transaction, isTx, isMsg) { + let message + + if (isMsg) { + message = 'Signature Requested' + } else if (txParams.to) { + message = addressSummary(txParams.to) + } else { + message = 'Contract Published' + } + + return h('div', { + style: { + fontSize: 'x-small', + color: '#ABA9AA', + }, + }, [ + message, + renderErrorOrWarning(transaction), + ]) +} + +function formatDate (date) { + return vreme.format(new Date(date), 'March 16 2014 14:30') +} + +function renderErrorOrWarning (transaction) { + const { status, err, warning } = transaction + + // show rejected + if (status === 'rejected') { + return h('span.error', ' (Rejected)') + } + + // show error + if (err) { + const message = err.message || '' + return ( + h(Tooltip, { + title: message, + position: 'bottom', + }, [ + h(`span.error`, ` (Failed)`), + ]) + ) + } + + // show warning + if (warning) { + const message = warning.message + return h(Tooltip, { + title: message, + position: 'bottom', + }, [ + h(`span.warning`, ` (Warning)`), + ]) + } +} diff --git a/old-ui/app/components/transaction-list.js b/old-ui/app/components/transaction-list.js new file mode 100644 index 000000000..345e3ca16 --- /dev/null +++ b/old-ui/app/components/transaction-list.js @@ -0,0 +1,87 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits + +const TransactionListItem = require('./transaction-list-item') + +module.exports = TransactionList + + +inherits(TransactionList, Component) +function TransactionList () { + Component.call(this) +} + +TransactionList.prototype.render = function () { + const { transactions, network, unapprovedMsgs, conversionRate } = this.props + + var shapeShiftTxList + if (network === '1') { + shapeShiftTxList = this.props.shapeShiftTxList + } + const txsToRender = !shapeShiftTxList ? transactions.concat(unapprovedMsgs) : transactions.concat(unapprovedMsgs, shapeShiftTxList) + .sort((a, b) => b.time - a.time) + + return ( + + h('section.transaction-list.full-flex-height', { + style: { + justifyContent: 'center', + }, + }, [ + + h('style', ` + .transaction-list .transaction-list-item:not(:last-of-type) { + border-bottom: 1px solid #D4D4D4; + } + .transaction-list .transaction-list-item .ether-balance-label { + display: block !important; + font-size: small; + } + `), + + h('.tx-list', { + style: { + overflowY: 'auto', + height: '100%', + padding: '0 25px 0 15px', + textAlign: 'center', + }, + }, [ + + txsToRender.length + ? txsToRender.map((transaction, i) => { + let key + switch (transaction.key) { + case 'shapeshift': + const { depositAddress, time } = transaction + key = `shift-tx-${depositAddress}-${time}-${i}` + break + default: + key = `tx-${transaction.id}-${i}` + } + return h(TransactionListItem, { + transaction, i, network, key, + conversionRate, + showTx: (txId) => { + this.props.viewPendingTx(txId) + }, + }) + }) + : h('.flex-center.full-flex-height', { + style: { + flexDirection: 'column', + justifyContent: 'center', + }, + }, [ + h('p', { + style: { + marginTop: '50px', + }, + }, 'No transaction history.'), + ]), + ]), + ]) + ) +} + diff --git a/old-ui/app/components/typed-message-renderer.js b/old-ui/app/components/typed-message-renderer.js new file mode 100644 index 000000000..d170d63b7 --- /dev/null +++ b/old-ui/app/components/typed-message-renderer.js @@ -0,0 +1,42 @@ +const Component = require('react').Component +const h = require('react-hyperscript') +const inherits = require('util').inherits +const extend = require('xtend') + +module.exports = TypedMessageRenderer + +inherits(TypedMessageRenderer, Component) +function TypedMessageRenderer () { + Component.call(this) +} + +TypedMessageRenderer.prototype.render = function () { + const props = this.props + const { value, style } = props + const text = renderTypedData(value) + + const defaultStyle = extend({ + width: '315px', + maxHeight: '210px', + resize: 'none', + border: 'none', + background: 'white', + padding: '3px', + overflow: 'scroll', + }, style) + + return ( + h('div.font-small', { + style: defaultStyle, + }, text) + ) +} + +function renderTypedData (values) { + return values.map(function (value) { + return h('div', {}, [ + h('strong', {style: {display: 'block', fontWeight: 'bold'}}, String(value.name) + ':'), + h('div', {}, value.value), + ]) + }) +} diff --git a/old-ui/app/conf-tx.js b/old-ui/app/conf-tx.js new file mode 100644 index 000000000..15c937b1c --- /dev/null +++ b/old-ui/app/conf-tx.js @@ -0,0 +1,235 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const h = require('react-hyperscript') +const connect = require('react-redux').connect +const actions = require('../../ui/app/actions') +const NetworkIndicator = require('./components/network') +const txHelper = require('../lib/tx-helper') +const isPopupOrNotification = require('../../app/scripts/lib/is-popup-or-notification') + +const PendingTx = require('./components/pending-tx') +const PendingMsg = require('./components/pending-msg') +const PendingPersonalMsg = require('./components/pending-personal-msg') +const PendingTypedMsg = require('./components/pending-typed-msg') +const Loading = require('./components/loading') + +module.exports = connect(mapStateToProps)(ConfirmTxScreen) + +function mapStateToProps (state) { + return { + identities: state.metamask.identities, + accounts: state.metamask.accounts, + selectedAddress: state.metamask.selectedAddress, + unapprovedTxs: state.metamask.unapprovedTxs, + unapprovedMsgs: state.metamask.unapprovedMsgs, + unapprovedPersonalMsgs: state.metamask.unapprovedPersonalMsgs, + unapprovedTypedMessages: state.metamask.unapprovedTypedMessages, + index: state.appState.currentView.context, + warning: state.appState.warning, + network: state.metamask.network, + provider: state.metamask.provider, + conversionRate: state.metamask.conversionRate, + currentCurrency: state.metamask.currentCurrency, + blockGasLimit: state.metamask.currentBlockGasLimit, + computedBalances: state.metamask.computedBalances, + } +} + +inherits(ConfirmTxScreen, Component) +function ConfirmTxScreen () { + Component.call(this) +} + +ConfirmTxScreen.prototype.render = function () { + const props = this.props + const { network, provider, unapprovedTxs, currentCurrency, computedBalances, + unapprovedMsgs, unapprovedPersonalMsgs, unapprovedTypedMessages, conversionRate, blockGasLimit } = props + + var unconfTxList = txHelper(unapprovedTxs, unapprovedMsgs, unapprovedPersonalMsgs, unapprovedTypedMessages, network) + + var txData = unconfTxList[props.index] || {} + var txParams = txData.params || {} + var isNotification = isPopupOrNotification() === 'notification' + + log.info(`rendering a combined ${unconfTxList.length} unconf msg & txs`) + if (unconfTxList.length === 0) return h(Loading, { isLoading: true }) + + const unconfTxListLength = unconfTxList.length + + return ( + + h('.flex-column.flex-grow', [ + + // subtitle and nav + h('.section-title.flex-row.flex-center', [ + !isNotification ? h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', { + onClick: this.goHome.bind(this), + }) : null, + h('h2.page-subtitle', 'Confirm Transaction'), + isNotification ? h(NetworkIndicator, { + network: network, + provider: provider, + }) : null, + ]), + + h('h3', { + style: { + alignSelf: 'center', + display: unconfTxList.length > 1 ? 'block' : 'none', + }, + }, [ + h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', { + style: { + display: props.index === 0 ? 'none' : 'inline-block', + }, + onClick: () => props.dispatch(actions.previousTx()), + }), + ` ${props.index + 1} of ${unconfTxList.length} `, + h('i.fa.fa-arrow-right.fa-lg.cursor-pointer', { + style: { + display: props.index + 1 === unconfTxList.length ? 'none' : 'inline-block', + }, + onClick: () => props.dispatch(actions.nextTx()), + }), + ]), + + warningIfExists(props.warning), + + currentTxView({ + // Properties + txData: txData, + key: txData.id, + selectedAddress: props.selectedAddress, + accounts: props.accounts, + identities: props.identities, + conversionRate, + currentCurrency, + blockGasLimit, + unconfTxListLength, + computedBalances, + // Actions + buyEth: this.buyEth.bind(this, txParams.from || props.selectedAddress), + sendTransaction: this.sendTransaction.bind(this), + cancelTransaction: this.cancelTransaction.bind(this, txData), + cancelAllTransactions: this.cancelAllTransactions.bind(this, unconfTxList), + signMessage: this.signMessage.bind(this, txData), + signPersonalMessage: this.signPersonalMessage.bind(this, txData), + signTypedMessage: this.signTypedMessage.bind(this, txData), + cancelMessage: this.cancelMessage.bind(this, txData), + cancelPersonalMessage: this.cancelPersonalMessage.bind(this, txData), + cancelTypedMessage: this.cancelTypedMessage.bind(this, txData), + }), + ]) + ) +} + +function currentTxView (opts) { + log.info('rendering current tx view') + const { txData } = opts + const { txParams, msgParams, type } = txData + + if (txParams) { + log.debug('txParams detected, rendering pending tx') + return h(PendingTx, opts) + } else if (msgParams) { + log.debug('msgParams detected, rendering pending msg') + + if (type === 'eth_sign') { + log.debug('rendering eth_sign message') + return h(PendingMsg, opts) + } else if (type === 'personal_sign') { + log.debug('rendering personal_sign message') + return h(PendingPersonalMsg, opts) + } else if (type === 'eth_signTypedData') { + log.debug('rendering eth_signTypedData message') + return h(PendingTypedMsg, opts) + } + } +} + +ConfirmTxScreen.prototype.buyEth = function (address, event) { + event.preventDefault() + this.props.dispatch(actions.buyEthView(address)) +} + +ConfirmTxScreen.prototype.sendTransaction = function (txData, event) { + this.stopPropagation(event) + this.props.dispatch(actions.updateAndApproveTx(txData)) +} + +ConfirmTxScreen.prototype.cancelTransaction = function (txData, event) { + this.stopPropagation(event) + event.preventDefault() + this.props.dispatch(actions.cancelTx(txData)) +} + +ConfirmTxScreen.prototype.cancelAllTransactions = function (unconfTxList, event) { + this.stopPropagation(event) + event.preventDefault() + this.props.dispatch(actions.cancelAllTx(unconfTxList)) +} + +ConfirmTxScreen.prototype.signMessage = function (msgData, event) { + log.info('conf-tx.js: signing message') + var params = msgData.msgParams + params.metamaskId = msgData.id + this.stopPropagation(event) + this.props.dispatch(actions.signMsg(params)) +} + +ConfirmTxScreen.prototype.stopPropagation = function (event) { + if (event.stopPropagation) { + event.stopPropagation() + } +} + +ConfirmTxScreen.prototype.signPersonalMessage = function (msgData, event) { + log.info('conf-tx.js: signing personal message') + var params = msgData.msgParams + params.metamaskId = msgData.id + this.stopPropagation(event) + this.props.dispatch(actions.signPersonalMsg(params)) +} + +ConfirmTxScreen.prototype.signTypedMessage = function (msgData, event) { + log.info('conf-tx.js: signing typed message') + var params = msgData.msgParams + params.metamaskId = msgData.id + this.stopPropagation(event) + this.props.dispatch(actions.signTypedMsg(params)) +} + +ConfirmTxScreen.prototype.cancelMessage = function (msgData, event) { + log.info('canceling message') + this.stopPropagation(event) + this.props.dispatch(actions.cancelMsg(msgData)) +} + +ConfirmTxScreen.prototype.cancelPersonalMessage = function (msgData, event) { + log.info('canceling personal message') + this.stopPropagation(event) + this.props.dispatch(actions.cancelPersonalMsg(msgData)) +} + +ConfirmTxScreen.prototype.cancelTypedMessage = function (msgData, event) { + log.info('canceling typed message') + this.stopPropagation(event) + this.props.dispatch(actions.cancelTypedMsg(msgData)) +} + +ConfirmTxScreen.prototype.goHome = function (event) { + this.stopPropagation(event) + this.props.dispatch(actions.goHome()) +} + +function warningIfExists (warning) { + if (warning && + // Do not display user rejections on this screen: + warning.indexOf('User denied transaction signature') === -1) { + return h('.error', { + style: { + margin: 'auto', + }, + }, warning) + } +} diff --git a/old-ui/app/config.js b/old-ui/app/config.js new file mode 100644 index 000000000..75198fba5 --- /dev/null +++ b/old-ui/app/config.js @@ -0,0 +1,222 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const h = require('react-hyperscript') +const connect = require('react-redux').connect +const actions = require('../../ui/app/actions') +const infuraCurrencies = require('./infura-conversion.json').objects.sort((a, b) => { + return a.quote.name.toLocaleLowerCase().localeCompare(b.quote.name.toLocaleLowerCase()) + }) +const validUrl = require('valid-url') +const exportAsFile = require('./util').exportAsFile +const Modal = require('../../ui/app/components/modals/index').Modal + +module.exports = connect(mapStateToProps)(ConfigScreen) + +function mapStateToProps (state) { + return { + metamask: state.metamask, + warning: state.appState.warning, + } +} + +inherits(ConfigScreen, Component) +function ConfigScreen () { + Component.call(this) +} + +ConfigScreen.prototype.render = function () { + var state = this.props + var metamaskState = state.metamask + var warning = state.warning + + return ( + h('.flex-column.flex-grow', [ + + h(Modal, {}, []), + + // subtitle and nav + h('.section-title.flex-row.flex-center', [ + h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', { + onClick: (event) => { + state.dispatch(actions.goHome()) + }, + }), + h('h2.page-subtitle', 'Settings'), + ]), + + h('.error', { + style: { + display: warning ? 'block' : 'none', + padding: '0 20px', + textAlign: 'center', + }, + }, warning), + + // conf view + h('.flex-column.flex-justify-center.flex-grow.select-none', [ + h('.flex-space-around', { + style: { + padding: '20px', + }, + }, [ + + currentProviderDisplay(metamaskState), + + h('div', { style: {display: 'flex'} }, [ + h('input#new_rpc', { + placeholder: 'New RPC URL', + style: { + width: 'inherit', + flex: '1 0 auto', + height: '30px', + margin: '8px', + }, + onKeyPress (event) { + if (event.key === 'Enter') { + var element = event.target + var newRpc = element.value + rpcValidation(newRpc, state) + } + }, + }), + h('button', { + style: { + alignSelf: 'center', + }, + onClick (event) { + event.preventDefault() + var element = document.querySelector('input#new_rpc') + var newRpc = element.value + rpcValidation(newRpc, state) + }, + }, 'Save'), + ]), + + h('hr.horizontal-line'), + + currentConversionInformation(metamaskState, state), + + h('hr.horizontal-line'), + + h('div', { + style: { + marginTop: '20px', + }, + }, [ + h('p', { + style: { + fontFamily: 'Montserrat Light', + fontSize: '13px', + }, + }, `State logs contain your public account addresses and sent transactions.`), + h('br'), + h('button', { + style: { + alignSelf: 'center', + }, + onClick (event) { + window.logStateString((err, result) => { + if (err) { + state.dispatch(actions.displayWarning('Error in retrieving state logs.')) + } else { + exportAsFile('MetaMask State Logs.json', result) + } + }) + }, + }, 'Download State Logs'), + ]), + + h('hr.horizontal-line'), + + h('div', { + style: { + marginTop: '20px', + }, + }, [ + h('button', { + style: { + alignSelf: 'center', + }, + onClick (event) { + event.preventDefault() + state.dispatch(actions.revealSeedConfirmation()) + }, + }, 'Reveal Seed Words'), + ]), + + ]), + ]), + ]) + ) +} + +function rpcValidation (newRpc, state) { + if (validUrl.isWebUri(newRpc)) { + state.dispatch(actions.setRpcTarget(newRpc)) + } else { + var appendedRpc = `http://${newRpc}` + if (validUrl.isWebUri(appendedRpc)) { + state.dispatch(actions.displayWarning('URIs require the appropriate HTTP/HTTPS prefix.')) + } else { + state.dispatch(actions.displayWarning('Invalid RPC URI')) + } + } +} + +function currentConversionInformation (metamaskState, state) { + var currentCurrency = metamaskState.currentCurrency + var conversionDate = metamaskState.conversionDate + return h('div', [ + h('span', {style: { fontWeight: 'bold', paddingRight: '10px'}}, 'Current Conversion'), + h('span', {style: { fontWeight: 'bold', paddingRight: '10px', fontSize: '13px'}}, `Updated ${Date(conversionDate)}`), + h('select#currentCurrency', { + onChange (event) { + event.preventDefault() + var element = document.getElementById('currentCurrency') + var newCurrency = element.value + state.dispatch(actions.setCurrentCurrency(newCurrency)) + }, + defaultValue: currentCurrency, + }, infuraCurrencies.map((currency) => { + return h('option', {key: currency.quote.code, value: currency.quote.code}, `${currency.quote.code.toUpperCase()} - ${currency.quote.name}`) + }) + ), + ]) +} + +function currentProviderDisplay (metamaskState) { + var provider = metamaskState.provider + var title, value + + switch (provider.type) { + + case 'mainnet': + title = 'Current Network' + value = 'Main Ethereum Network' + break + + case 'ropsten': + title = 'Current Network' + value = 'Ropsten Test Network' + break + + case 'kovan': + title = 'Current Network' + value = 'Kovan Test Network' + break + + case 'rinkeby': + title = 'Current Network' + value = 'Rinkeby Test Network' + break + + default: + title = 'Current RPC' + value = metamaskState.provider.rpcTarget + } + + return h('div', [ + h('span', {style: { fontWeight: 'bold', paddingRight: '10px'}}, title), + h('span', value), + ]) +} diff --git a/old-ui/app/css/debug.css b/old-ui/app/css/debug.css new file mode 100644 index 000000000..3e125bcd4 --- /dev/null +++ b/old-ui/app/css/debug.css @@ -0,0 +1,21 @@ +/* +debug / dev +*/ + +#app-content { + border: 2px solid green; +} + +#design-container { + position: absolute; + left: 360px; + top: -42px; + width: calc(100vw - 360px); + height: 100vh; + overflow: scroll; +} + +#design-container img { + width: 2000px; + margin-right: 600px; +} \ No newline at end of file diff --git a/old-ui/app/css/fonts.css b/old-ui/app/css/fonts.css new file mode 100644 index 000000000..3b9f581b9 --- /dev/null +++ b/old-ui/app/css/fonts.css @@ -0,0 +1,36 @@ +@import url(https://fonts.googleapis.com/css?family=Roboto:300,500); +@import url(https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css); + +@font-face { + font-family: 'Montserrat Regular'; + src: url('/fonts/Montserrat/Montserrat-Regular.woff') format('woff'); + src: url('/fonts/Montserrat/Montserrat-Regular.ttf') format('truetype'); + font-weight: normal; + font-style: normal; + font-size: 'small'; + +} + +@font-face { + font-family: 'Montserrat Bold'; + src: url('/fonts/Montserrat/Montserrat-Bold.woff') format('woff'); + src: url('/fonts/Montserrat/Montserrat-Bold.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'Montserrat Light'; + src: url('/fonts/Montserrat/Montserrat-Light.woff') format('woff'); + src: url('/fonts/Montserrat/Montserrat-Light.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'Montserrat UltraLight'; + src: url('/fonts/Montserrat/Montserrat-UltraLight.woff') format('woff'); + src: url('/fonts/Montserrat/Montserrat-UltraLight.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} diff --git a/old-ui/app/css/index.css b/old-ui/app/css/index.css new file mode 100644 index 000000000..3cbf20e98 --- /dev/null +++ b/old-ui/app/css/index.css @@ -0,0 +1,761 @@ +/* +faint orange (textfield shades) #FAF6F0 +light orange (button shades): #F5C26D +dark orange (text): #F5A623 +borders/font/any gray: #4A4A4A +*/ + +/* +application specific styles +*/ + +* { + box-sizing: border-box; +} + +html, body { + font-family: 'Montserrat Regular', Arial; + color: #4D4D4D; + font-weight: 300; + line-height: 1.4em; + background: #F7F7F7; + margin: 0; + padding: 0; +} + +html { + min-height: 500px; +} + +.app-root { + overflow: hidden; + position: relative +} + +.app-primary { + display: flex; +} + +input:focus, textarea:focus { + outline: none; +} + +.full-size { + height: 100%; + width: 100%; +} + +.full-width { + width: 100%; +} + +.full-height { + height: 100%; +} + +.full-flex-height { + display: flex; + flex: 1 1 auto; + flex-direction: column; +} + +#app-content { + overflow-x: hidden; + height: 100%; + display: flex; + flex-direction: column; +} + +button, input[type="submit"] { + font-family: 'Montserrat Bold'; + outline: none; + cursor: pointer; + padding: 8px 12px; + border: none; + color: white; + transform-origin: center center; + transition: transform 50ms ease-in; + /* default orange */ + background: rgba(247, 134, 28, 1); + box-shadow: 0px 3px 6px rgba(247, 134, 28, 0.36); +} + +.btn-green, input[type="submit"].btn-green { + background: rgba(106, 195, 96, 1); + box-shadow: 0px 3px 6px rgba(106, 195, 96, 0.36); +} + +.btn-red { + background: rgba(254, 35, 17, 1); + box-shadow: 0px 3px 6px rgba(254, 35, 17, 0.36); +} + +button[disabled], input[type="submit"][disabled] { + cursor: not-allowed; + background: rgba(197, 197, 197, 1); + box-shadow: 0px 3px 6px rgba(197, 197, 197, 0.36); +} + +button.spaced { + margin: 2px; +} + +button:not([disabled]):hover, input[type="submit"]:not([disabled]):hover { + transform: scale(1.1); +} +button:not([disabled]):active, input[type="submit"]:not([disabled]):active { + transform: scale(0.95); +} + +.grow-on-hover:hover { + transform: scale(1.05); +} + +a { + text-decoration: none; + color: inherit; +} + +a:hover{ + color: #df6b0e; +} + +/* +app +*/ + +.active { + color: #909090; +} + +button.primary { + padding: 8px 12px; + background: #F7861C; + box-shadow: 0px 3px 6px rgba(247, 134, 28, 0.36); + color: white; + font-size: 1.1em; + font-family: 'Montserrat Regular'; + text-transform: uppercase; +} + +button.btn-thin { + border: 1px solid; + border-color: #4D4D4D; + color: #4D4D4D; + background: rgb(255, 174, 41); + border-radius: 4px; + min-width: 200px; + margin: 12px 0; + padding: 6px; + font-size: 13px; +} + +.app-header { + padding: 6px 8px; +} + +.app-header h1 { + font-family: 'Montserrat Regular'; + text-transform: uppercase; + color: #AEAEAE; +} + +h2.page-subtitle { + font-family: 'Montserrat Regular'; + text-transform: uppercase; + color: #AEAEAE; + font-size: 1em; + margin: 12px; +} + +.app-footer { + padding-bottom: 10px; + align-items: center; +} + +.identicon { + height: 46px; + width: 46px; + background-size: cover; + border-radius: 100%; + border: 3px solid gray; +} + +textarea.twelve-word-phrase { + padding: 12px; + width: 300px; + height: 140px; + font-size: 16px; + background: white; + resize: none; +} + +.network-indicator { + display: flex; + align-items: center; + font-size: 0.6em; + +} + +.network-name { + width: 5.2em; + line-height: 9px; + text-rendering: geometricPrecision; +} + +.check { + margin-left: 12px; + color: #F7861C; + flex: 1 0 auto; + display: flex; + justify-content: flex-end; +} +/* +app sections +*/ + +/* initialize */ + +.initialize-screen hr { + width: 60px; + margin: 12px; + border-color: #F7861C; + border-style: solid; +} + +.initialize-screen label { + margin-top: 20px; +} + +.initialize-screen button.create-vault { + margin-top: 40px; +} + +.initialize-screen .warning { + font-size: 14px; + margin: 0 16px; +} + +/* unlock */ +.error { + color: #f7861c; + margin-bottom: 9px; +} + +.warning { + color: #FFAE00; +} + +.lock { + width: 50px; + height: 50px; +} + +.lock.locked { + transform: scale(1.5); + opacity: 0.0; + transition: opacity 400ms ease-in, transform 400ms ease-in; +} +.lock.unlocked { + transform: scale(1); + opacity: 1; + transition: opacity 500ms ease-out, transform 500ms ease-out, background 200ms ease-in; +} + +.lock.locked .lock-top { + transform: scaleX(1) translateX(0); + transition: transform 250ms ease-in; +} +.lock.unlocked .lock-top { + transform: scaleX(-1) translateX(-12px); + transition: transform 250ms ease-in; +} +.lock.unlocked:hover { + border-radius: 4px; + background: #e5e5e5; + border: 1px solid #b1b1b1; +} +.lock.unlocked:active { + background: #c3c3c3; +} + +.section-title .fa-arrow-left { + margin: -2px 8px 0px -8px; +} + +.unlock-screen #metamask-mascot-container { + margin-top: 24px; +} + +.unlock-screen h1 { + margin-top: -28px; + margin-bottom: 42px; +} + +.unlock-screen input[type=password] { + width: 260px; + /*height: 36px; + margin-bottom: 24px; + padding: 8px;*/ +} + +.sizing-input{ + font-size: 14px; + height: 30px; + padding-left: 5px; +} +.editable-label{ + display: flex; +} +/* Webkit */ +.unlock-screen input::-webkit-input-placeholder { + text-align: center; + font-size: 1.2em; +} +/* Firefox 18- */ +.unlock-screen input:-moz-placeholder { + text-align: center; + font-size: 1.2em; +} +/* Firefox 19+ */ +.unlock-screen input::-moz-placeholder { + text-align: center; + font-size: 1.2em; +} +/* IE */ +.unlock-screen input:-ms-input-placeholder { + text-align: center; + font-size: 1.2em; +} + +input.large-input, textarea.large-input { + /*margin-bottom: 24px;*/ + padding: 8px; +} + +input.large-input { + height: 36px; +} + +.letter-spacey { + letter-spacing: 0.1em; +} + + + +/* accounts */ + +.accounts-section { + margin: 0 0px; +} + +.accounts-section .horizontal-line { + margin: 0px 18px; +} + +.accounts-list-option { + height: 120px; +} + +.accounts-list-option .identicon-wrapper { + width: 100px; +} + +.unconftx-link { + margin-top: 24px; + cursor: pointer; +} + +.unconftx-link .fa-arrow-right { + margin: 0px -8px 0px 8px; +} + +/* identity panel */ + +.identity-panel { + font-weight: 500; +} + +.identity-panel .identicon-wrapper { + margin: 4px; + margin-top: 8px; + display: flex; + align-items: center; +} + +.identity-panel .identicon-wrapper span { + margin: 0 auto; +} + +.identity-panel .identity-data { + margin: 8px 8px 8px 18px; +} + +.identity-panel i { + margin-top: 32px; + margin-right: 6px; + color: #B9B9B9; +} + +.identity-panel .arrow-right { + padding-left: 18px; + width: 42px; + min-width: 18px; + height: 100%; +} + +.identity-copy.flex-column { + flex: 0.25 0 auto; + justify-content: center; +} + +/* accounts screen */ + +.identity-section { + +} + +.identity-section .identity-panel { + background: #E9E9E9; + border-bottom: 1px solid #B1B1B1; + cursor: pointer; +} + +.identity-section .identity-panel.selected { + background: white; + color: #F3C83E; +} + +.identity-section .identity-panel.selected .identicon { + border-color: orange; +} + +.identity-section .accounts-list-option:hover, +.identity-section .accounts-list-option.selected { + background:white; +} + +/* account detail screen */ + +.account-detail-section { + display: flex; + flex-wrap: wrap; + overflow-y: auto; + flex-direction: inherit; + + .name-label { + margin-left: 15px; + } +} + +.grow-tenx { + flex-grow: 10; +} + +.name-label{ + +} + +.unapproved-tx-icon { + height: 16px; + width: 16px; + background: rgb(47, 174, 244); + border-color: #AEAEAE; + border-radius: 13px; +} + +.edit-text { + height: 100%; + visibility: hidden; +} +.editing-label { + display: flex; + justify-content: flex-start; + margin-left: 50px; + margin-bottom: 2px; + font-size: 11px; + text-rendering: geometricPrecision; + color: #F7861C; +} +.name-label:hover .edit-text { + visibility: visible; +} +/* tx confirm */ + +.unconftx-section input[type=password] { + height: 22px; + padding: 2px; + margin: 12px; + margin-bottom: 24px; + border-radius: 4px; + border: 2px solid #F3C83E; + background: #FAF6F0; +} + +/* Send Screen */ + +.send-screen { + +} + +.send-screen section { + margin: 8px 16px; +} + +.send-screen input { + width: 100%; + font-size: 12px; +} + +/* Ether Balance Widget */ + +.ether-balance-amount { + color: #F7861C; +} + +.ether-balance-label { + color: #ABA9AA; +} + +/* Info screen */ +.info-gray{ + font-family: 'Montserrat Regular'; + text-transform: uppercase; + color: #AEAEAE; +} + +.icon-size{ + width: 20px; +} + +.info{ + font-family: 'Montserrat Regular', Arial; + padding-bottom: 10px; + display: inline-block; + padding-left: 5px; +} + +/* buy eth warning screen */ +.custom-radios { + justify-content: space-around; + align-items: center; +} + + +.custom-radio-selected { + width: 17px; + height: 17px; + border: solid; + border-style: double; + border-radius: 15px; + border-width: 5px; + background: rgba(247, 134, 28, 1); + border-color: #F7F7F7; +} + +.custom-radio-inactive { + width: 14px; + height: 14px; + border: solid; + border-width: 1px; + border-radius: 24px; + border-color: #AEAEAE; +} + +.radio-titles { + color: rgba(247, 134, 28, 1); +} + +.radio-titles-subtext { + +} + +.selected-exchange { + +} + +.buy-radio { + +} + +.eth-warning{ + transition: opacity 400ms ease-in, transform 400ms ease-in; +} + +.buy-subview{ + transition: opacity 400ms ease-in, transform 400ms ease-in; +} + +.input-container:hover .edit-text{ + visibility: visible; +} + +.buy-inputs{ + font-family: 'Montserrat Light'; + font-size: 13px; + height: 20px; + background: transparent; + box-sizing: border-box; + border: solid; + border-color: transparent; + border-width: 0.5px; + border-radius: 2px; + +} +.input-container:hover .buy-inputs{ + box-sizing: inherit; + border: solid; + border-color: #F7861C; + border-width: 0.5px; + border-radius: 2px; +} + +.buy-inputs:focus{ + border: solid; + border-color: #F7861C; + border-width: 0.5px; + border-radius: 2px; +} + +.activeForm { + background: #F7F7F7; + border: none; + border-radius: 8px 8px 0px 0px; + width: 50%; + text-align: center; + padding-bottom: 4px; + +} + +.inactiveForm { + border: none; + border-radius: 8px 8px 0px 0px; + width: 50%; + text-align: center; + padding-bottom: 4px; +} + +.ex-coins { + font-family: 'Montserrat Regular'; + text-transform: uppercase; + text-align: center; + font-size: 33px; + width: 118px; + height: 42px; + padding: 1px; + color: #4D4D4D; +} + +.marketinfo{ + font-family: 'Montserrat light'; + color: #AEAEAE; + font-size: 15px; + line-height: 17px; +} + +#fromCoin::-webkit-calendar-picker-indicator { + display: none; +} + +#coinList { + width: 400px; + height: 500px; + overflow: scroll; +} + +.icon-control .fa-refresh{ + visibility: hidden; +} + +.icon-control:hover .fa-refresh{ + visibility: visible; +} + +.icon-control:hover .fa-chevron-right{ + visibility: hidden; +} + +.inactive { + color: #AEAEAE; +} + +.inactive button{ + background: #AEAEAE; + color: white; +} + +.ellip-address { + overflow: hidden; + text-overflow: ellipsis; + width: 5em; + font-size: 14px; + font-family: "Montserrat Light"; + margin-left: 5px; +} + +.qr-header { + font-size: 25px; + margin-top: 40px; +} + +.qr-message { + font-size: 12px; + color: #F7861C; +} + +div.message-container > div:first-child { + margin-top: 18px; + font-size: 15px; + color: #4D4D4D; +} + +.pop-hover:hover { + transform: scale(1.1); +} + +//Notification Modal + +.notification-modal-wrapper { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: center; + position: relative; + border: 1px solid #dedede; + box-shadow: 0 0 2px 2px #dedede; + font-family: Roboto; +} + +.notification-modal-header { + background: #f6f6f6; + width: 100%; + display: flex; + justify-content: center; + padding: 30px; + font-size: 22px; + color: #1b344d; + height: 79px; +} + +.notification-modal-message { + padding: 20px; +} + +.notification-modal-message { + width: 100%; + display: flex; + justify-content: center; + font-size: 17px; + color: #1b344d; +} + +.modal-close-x::after { + content: '\00D7'; + font-size: 2em; + color: #9b9b9b; + position: absolute; + top: 25px; + right: 17.5px; + font-family: sans-serif; + cursor: pointer; +} \ No newline at end of file diff --git a/old-ui/app/css/lib.css b/old-ui/app/css/lib.css new file mode 100644 index 000000000..f3acbee76 --- /dev/null +++ b/old-ui/app/css/lib.css @@ -0,0 +1,306 @@ +/* color */ + +.color-orange { + color: #F7861C; +} + +.color-forest { + color: #0A5448; +} + +/* lib */ + +.full-width { + width: 100%; +} + +.full-height { + height: 100%; +} + +.flex-column { + display: flex; + flex-direction: column; +} + +.space-between { + justify-content: space-between; +} + +.space-around { + justify-content: space-around; +} + +.flex-column-bottom { + display: flex; + flex-direction: column-reverse; +} + +.flex-row { + display: flex; + flex-direction: row; +} + +.flex-space-between { + justify-content: space-between; +} + +.flex-space-around { + justify-content: space-around; +} + +.flex-right { + display: flex; + flex-direction: row; + justify-content: flex-end; +} + +.flex-left { + display: flex; + flex-direction: row; + justify-content: flex-start; +} + +.flex-fixed { + flex: none; +} + +.flex-basis-auto { + flex-basis: auto; +} + +.flex-grow { + flex: 1 1 auto; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.flex-center { + display: flex; + justify-content: center; + align-items: center; +} + +.flex-justify-center { + justify-content: center; +} + +.flex-align-center { + align-items: center; +} + +.flex-self-end { + align-self: flex-end; +} + +.flex-self-stretch { + align-self: stretch; +} + +.flex-vertical { + flex-direction: column; +} + +.z-bump { + z-index: 1; +} + +.select-none { + cursor: inherit; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.pointer { + cursor: pointer; +} +.cursor-pointer { + cursor: pointer; + transform-origin: center center; + transition: transform 50ms ease-in-out; +} +.cursor-pointer:hover { + transform: scale(1.1); +} +.cursor-pointer:active { + transform: scale(0.95); +} + +.cursor-disabled { + cursor: not-allowed; +} + +.margin-bottom-sml { + margin-bottom: 20px; +} + +.margin-bottom-med { + margin-bottom: 40px; +} + +.margin-right-left { + margin: 0 20px; +} + +.bold { + font-weight: bold; +} + +.text-transform-uppercase { + text-transform: uppercase; +} + +.font-small { + font-size: 12px; +} + +.font-medium { + font-size: 1.2em; +} + +hr.horizontal-line { + display: block; + height: 1px; + border: 0; + border-top: 1px solid #ccc; + margin: 1em 0; + padding: 0; +} + +.hover-white:hover { + background: white; +} + +.red-dot { + background: #E91550; + color: white; + border-radius: 10px; +} + +.diamond { + transform: rotate(45deg); + background: #038789; +} + +.hollow-diamond { + transform: rotate(45deg); + border: 3px solid #690496; +} + +.golden-square { + background: #EBB33F; +} + +.pending-dot { + background: red; + left: 14px; + top: 14px; + color: white; + border-radius: 10px; + height: 20px; + min-width: 20px; + position: relative; + display: flex; + align-items: center; + justify-content: center; + padding: 4px; + z-index: 1; +} + +.keyring-label { + z-index: 1; + font-size: 11px; + background: rgba(255,0,0,0.8); + color: white; + bottom: 0px; + left: -8px; + border-radius: 10px; + height: 20px; + min-width: 20px; + position: absolute; + display: flex; + align-items: center; + justify-content: center; + padding: 4px; +} + +.ether-balance { + display: flex; + align-items: center; +} + +.tabSection { + min-width: 350px; +} + +.menu-icon { + display: inline-block; + height: 12px; + min-width: 12px; + margin: 13px; +} + +i.fa.fa-question-circle.fa-lg.menu-icon { + font-size: 18px; +} + +.ether-icon { + background: rgb(0, 163, 68); + border-radius: 20px; +} +.testnet-icon { + background: #2465E1; +} + +.drop-menu-item { + display: flex; + align-items: center; +} + +.invisible { + visibility: hidden; +} + +.one-line-concat { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.critical-error { + text-align: center; + margin-top: 20px; + color: red; +} + +/* + Hacky breakpoint fix for account + tab sections + Resolves issue from @frankiebee in + https://github.com/MetaMask/metamask-extension/pull/1835 + Please remove this when integrating new designs + */ + +@media screen and (min-width: 575px) and (max-width: 800px) { + .account-data-subsection { + flex: 0 0 auto !important; // reset flex + margin-left: 10px !important; // create additional horizontal space + margin-right: 10px !important; + width: 40%; + } + + .tabSection { + flex: 0 0 auto !important; + margin-left: 10px !important; + margin-right: 10px !important; + min-width: 285px; + width: 49%; + } + + .name-label { + width: 80%; + } +} diff --git a/old-ui/app/css/output/index.css b/old-ui/app/css/output/index.css new file mode 100644 index 000000000..84ceb3bd7 --- /dev/null +++ b/old-ui/app/css/output/index.css @@ -0,0 +1,5385 @@ +@charset "UTF-8"; +/* + ITCSS + + http://www.creativebloq.com/web-design/manage-large-css-projects-itcss-101517528 + https://www.xfive.co/blog/itcss-scalable-maintainable-css-architecture/ + */ +/* + Variables + */ +/* + Colors + http://chir.ag/projects/name-that-color + */ +/* + Z-Indicies + */ +/* + Z Indicies - Current + app - 11 + hex/bn as decimal input - 1 - remove? + dropdown - 11 + loading - 10 - higher? + mascot - 0 - remove? + */ +/* + Responsive Breakpoints + */ +@import url("https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900"); +@import url("https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css"); +@font-face { + font-family: 'Montserrat Regular'; + src: url("/fonts/Montserrat/Montserrat-Regular.woff") format("woff"); + src: url("/fonts/Montserrat/Montserrat-Regular.ttf") format("truetype"); + font-weight: 400; + font-style: normal; + font-size: 'small'; } + +@font-face { + font-family: 'Montserrat Bold'; + src: url("/fonts/Montserrat/Montserrat-Bold.woff") format("woff"); + src: url("/fonts/Montserrat/Montserrat-Bold.ttf") format("truetype"); + font-weight: 400; + font-style: normal; } + +@font-face { + font-family: 'Montserrat Light'; + src: url("/fonts/Montserrat/Montserrat-Light.woff") format("woff"); + src: url("/fonts/Montserrat/Montserrat-Light.ttf") format("truetype"); + font-weight: 400; + font-style: normal; } + +@font-face { + font-family: 'Montserrat UltraLight'; + src: url("/fonts/Montserrat/Montserrat-UltraLight.woff") format("woff"); + src: url("/fonts/Montserrat/Montserrat-UltraLight.ttf") format("truetype"); + font-weight: 400; + font-style: normal; } + +@font-face { + font-family: 'DIN OT'; + src: url("/fonts/DIN_OT/DINOT-2.otf") format("opentype"); + font-weight: 400; + font-style: normal; } + +@font-face { + font-family: 'DIN OT Light'; + src: url("/fonts/DIN_OT/DINOT-2.otf") format("opentype"); + font-weight: 200; + font-style: normal; } + +@font-face { + font-family: 'DIN NEXT'; + src: url("/fonts/DIN NEXT/DIN NEXT W01 Regular.otf") format("opentype"); + font-weight: 400; + font-style: normal; } + +@font-face { + font-family: 'DIN NEXT Light'; + src: url("/fonts/DIN NEXT/DIN NEXT W10 Light.otf") format("opentype"); + font-weight: 400; + font-style: normal; } + +@font-face { + font-family: 'Lato'; + src: url("/fonts/Lato/Lato-Regular.ttf") format("truetype"); + font-weight: 400; + font-style: normal; } + +/* + Utility Classes + */ +/* color */ +.color-orange { + color: #f7861c; } + +.color-forest { + color: #0a5448; } + +/* lib */ +.full-size { + height: 100%; + width: 100%; } + +.full-width { + width: 100%; } + +.full-flex-height { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; } + +.full-height { + height: 100%; } + +.flex-column { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; } + +.space-between { + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; } + +.space-around { + -ms-flex-pack: distribute; + justify-content: space-around; } + +.flex-column-bottom { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: reverse; + -ms-flex-direction: column-reverse; + flex-direction: column-reverse; } + +.flex-row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; } + +.flex-space-between { + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; } + +.flex-space-around { + -ms-flex-pack: distribute; + justify-content: space-around; } + +.flex-right { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; } + +.flex-left { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; } + +.flex-fixed { + -webkit-box-flex: 0; + -ms-flex: none; + flex: none; } + +.flex-basis-auto { + -ms-flex-preferred-size: auto; + flex-basis: auto; } + +.flex-grow { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; } + +.flex-wrap { + -ms-flex-wrap: wrap; + flex-wrap: wrap; } + +.flex-center { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } + +.flex-justify-center { + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; } + +.flex-align-center { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } + +.flex-self-end { + -ms-flex-item-align: end; + align-self: flex-end; } + +.flex-self-stretch { + -ms-flex-item-align: stretch; + align-self: stretch; } + +.flex-vertical { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; } + +.z-bump { + z-index: 1; } + +.select-none { + cursor: inherit; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; } + +.pointer { + cursor: pointer; } + +.cursor-pointer { + cursor: pointer; + -webkit-transform-origin: center center; + transform-origin: center center; + -webkit-transition: -webkit-transform 50ms ease-in-out; + transition: -webkit-transform 50ms ease-in-out; + transition: transform 50ms ease-in-out; + transition: transform 50ms ease-in-out, -webkit-transform 50ms ease-in-out; } + +.cursor-pointer:hover { + -webkit-transform: scale(1.1); + transform: scale(1.1); } + +.cursor-pointer:active { + -webkit-transform: scale(0.95); + transform: scale(0.95); } + +.cursor-disabled { + cursor: not-allowed; } + +.margin-bottom-sml { + margin-bottom: 20px; } + +.margin-bottom-med { + margin-bottom: 40px; } + +.margin-right-left { + margin: 0 20px; } + +.bold { + font-weight: 700; } + +.text-transform-uppercase { + text-transform: uppercase; } + +.font-small { + font-size: 12px; } + +.font-medium { + font-size: 1.2em; } + +hr.horizontal-line { + display: block; + height: 1px; + border: 0; + border-top: 1px solid #ccc; + margin: 1em 0; + padding: 0; } + +.hover-white:hover { + background: #fff; } + +.red-dot { + background: #e91550; + color: #fff; + border-radius: 10px; } + +.diamond { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + background: #038789; } + +.hollow-diamond { + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + border: 3px solid #690496; } + +.golden-square { + background: #ebb33f; } + +.pending-dot { + background: #f00; + left: 14px; + top: 14px; + color: #fff; + border-radius: 10px; + height: 20px; + min-width: 20px; + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + padding: 4px; + z-index: 1; } + +.keyring-label { + z-index: 1; + font-size: 8px; + line-height: 8px; + background: rgba(255, 255, 255, 0.4); + color: #fff; + border-radius: 10px; + padding: 4px; + text-align: center; + height: 15px; } + +.ether-balance { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } + +.tabSection { + min-width: 350px; } + +.menu-icon { + display: inline-block; + height: 12px; + min-width: 12px; + margin: 13px; } + +.ether-icon { + background: #00a344; + border-radius: 20px; } + +.testnet-icon { + background: #2465e1; } + +.drop-menu-item { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } + +.invisible { + visibility: hidden; } + +.one-line-concat { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } + +.critical-error { + text-align: center; + margin-top: 20px; + color: #f00; } + +/* + Misc + */ +.letter-spacey { + letter-spacing: .1em; } + +.active { + color: #909090; } + +.check { + margin-left: 7px; + color: #f7861c; + -webkit-box-flex: 1; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; } + +/* + Generic + */ +/* http://meyerweb.com/eric/tools/css/reset/ + v2.0 | 20110126 + License: none (public domain) +*/ +html, +body, +div, +span, +applet, +object, +iframe, +h1, +h2, +h3, +h4, +h5, +h6, +p, +blockquote, +pre, +a, +abbr, +acronym, +address, +big, +cite, +code, +del, +dfn, +em, +img, +ins, +kbd, +q, +s, +samp, +small, +strike, +strong, +sub, +sup, +tt, +var, +b, +u, +i, +center, +dl, +dt, +dd, +ol, +ul, +li, +fieldset, +form, +label, +legend, +table, +caption, +tbody, +tfoot, +thead, +tr, +th, +td, +article, +aside, +canvas, +details, +embed, +figure, +figcaption, +footer, +header, +hgroup, +menu, +nav, +output, +ruby, +section, +summary, +time, +mark, +audio, +video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + /* stylelint-disable */ + font: inherit; + /* stylelint-enable */ + vertical-align: baseline; } + +/* HTML5 display-role reset for older browsers */ +/* stylelint-disable */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +menu, +nav, +section { + display: block; } + +body { + line-height: 1; } + +ol, +ul { + list-style: none; } + +blockquote, +q { + quotes: none; } + +blockquote:before, +blockquote:after, +q:before, +q:after { + content: ''; + content: none; } + +table { + border-collapse: collapse; + border-spacing: 0; } + +button { + border-style: none; + cursor: pointer; } + +/* stylelint-enable */ +* { + -webkit-box-sizing: border-box; + box-sizing: border-box; } + +html, +body { + font-family: Roboto, Arial; + color: #4d4d4d; + font-weight: 300; + line-height: 1.4em; + background: #f7f7f7; + width: 100%; + height: 100%; + margin: 0; + padding: 0; } + +html { + min-height: 500px; } + +.app-root { + overflow: hidden; + position: relative; } + +.app-primary { + display: -webkit-box; + display: -ms-flexbox; + display: flex; } + +input:focus, +textarea:focus { + outline: none; } + +/* stylelint-disable */ +#app-content { + overflow-x: hidden; + height: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; } + @media screen and (max-width: 575px) { + #app-content { + background-color: #fff; } } + +/* stylelint-enable */ +a { + text-decoration: none; + color: inherit; } + +a:hover { + color: #df6b0e; } + +input.large-input, +textarea.large-input { + padding: 8px; } + +input.large-input { + height: 36px; } + +/* + Buttons + */ +.btn-green { + background-color: #02c9b1; } + +button.btn-clear { + background: #fff; + border: 1px solid; } + +button[disabled], +input[type="submit"][disabled] { + cursor: not-allowed; + opacity: .5; } + +button.primary { + padding: 8px 12px; + background: #f7861c; + -webkit-box-shadow: 0 3px 6px rgba(247, 134, 28, 0.36); + box-shadow: 0 3px 6px rgba(247, 134, 28, 0.36); + color: #fff; + font-size: 1.1em; + font-family: Roboto; + text-transform: uppercase; } + +.btn-light { + padding: 8px 12px; + -webkit-box-shadow: 0 3px 6px rgba(247, 134, 28, 0.36); + box-shadow: 0 3px 6px rgba(247, 134, 28, 0.36); + color: #585d67; + font-size: 1.1em; + font-family: Roboto; + text-transform: uppercase; + text-align: center; + line-height: 20px; + border-radius: 2px; + border: 1px solid #979797; + opacity: .5; } + +button.btn-thin { + border: 1px solid; + border-color: #4d4d4d; + color: #4d4d4d; + background: #ffae29; + border-radius: 4px; + min-width: 200px; + margin: 12px 0; + padding: 6px; + font-size: 13px; } + +.btn-secondary { + border: 1px solid #979797; + border-radius: 2px; + background-color: #fff; + font-size: 16px; + line-height: 24px; + padding: 16px 42px; } + .btn-secondary[disabled] { + background-color: #fff !important; + opacity: .5; } + +.btn-tertiary { + border: 1px solid transparent; + border-radius: 2px; + background-color: transparent; + font-size: 16px; + line-height: 24px; + padding: 16px 42px; } + +.app-header { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + visibility: visible; + background: #efefef; + position: relative; + z-index: 12; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; } + @media screen and (max-width: 575px) { + .app-header { + padding: 12px; + width: 100%; + -webkit-box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.08); + box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.08); + z-index: 26; } } + @media screen and (min-width: 576px) { + .app-header { + height: 75px; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; } + .app-header::after { + content: ''; + position: absolute; + width: 100%; + height: 32px; + background: #efefef; + bottom: -32px; } } + .app-header .metafox-icon { + cursor: pointer; } + +.app-header-contents { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + width: 100%; + height: 6.9vh; } + @media screen and (max-width: 575px) { + .app-header-contents { + height: 100%; } } + @media screen and (min-width: 576px) { + .app-header-contents { + width: 85vw; } } + @media screen and (min-width: 769px) { + .app-header-contents { + width: 80vw; } } + @media screen and (min-width: 1281px) { + .app-header-contents { + width: 65vw; } } + +.app-header h1 { + font-family: Roboto; + text-transform: uppercase; + font-weight: 400; + color: #22232c; + line-height: 29px; } + @media screen and (max-width: 575px) { + .app-header h1 { + display: none; } } + +h2.page-subtitle { + text-transform: uppercase; + color: #aeaeae; + font-size: 1em; + margin: 12px; } + +.network-component-wrapper { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } + +.left-menu-wrapper { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + cursor: pointer; } + +.header__right-actions { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } + .header__right-actions .identicon { + cursor: pointer; } + +.app-footer { + padding-bottom: 10px; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } + +.network-component--disabled { + cursor: default; } + .network-component--disabled .fa-caret-down { + opacity: 0; } + +.network-component.pointer { + border: 1px solid #22232c; + border-radius: 82px; + padding: 6px; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + .network-component.pointer.ethereum-network { + border-color: #038789; } + .network-component.pointer.ethereum-network .menu-icon-circle div { + background-color: rgba(3, 135, 137, 0.7) !important; } + .network-component.pointer.ropsten-test-network { + border-color: #e91550; } + .network-component.pointer.ropsten-test-network .menu-icon-circle div { + background-color: rgba(233, 21, 80, 0.7) !important; } + .network-component.pointer.kovan-test-network { + border-color: #690496; } + .network-component.pointer.kovan-test-network .menu-icon-circle div { + background-color: rgba(105, 4, 150, 0.7) !important; } + .network-component.pointer.rinkeby-test-network { + border-color: #ebb33f; } + .network-component.pointer.rinkeby-test-network .menu-icon-circle div { + background-color: rgba(235, 179, 63, 0.7) !important; } + +.dropdown-menu-item .menu-icon-circle, +.dropdown-menu-item .menu-icon-circle--active { + margin: 0 14px; } + +.network-indicator { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + font-size: .6em; } + .network-indicator .fa-caret-down { + line-height: 15px; + font-size: 12px; + padding: 0 4px; } + +.network-name { + line-height: 15px; + padding: 0 4px; + font-family: Roboto; + font-size: 12px; + -webkit-box-flex: 1; + -ms-flex: 1 0 auto; + flex: 1 0 auto; } + +.network-droppo { + right: 2px; } + @media screen and (min-width: 576px) { + .network-droppo { + right: calc(((100% - 85vw) / 2) + 2px); } } + @media screen and (min-width: 769px) { + .network-droppo { + right: calc(((100% - 80vw) / 2) + 2px); } } + @media screen and (min-width: 1281px) { + .network-droppo { + right: calc(((100% - 65vw) / 2) + 2px); } } + +.network-name-item { + font-weight: 100; + -webkit-box-flex: 1; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + color: #9b9b9b; } + +.network-check, +.network-check__transparent { + color: #fff; + margin-left: 7px; } + +.network-check__transparent { + opacity: 0; + width: 16px; + margin: 0; } + +.menu-icon-circle, +.menu-icon-circle--active { + background: none; + border-radius: 22px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + border: 1px solid transparent; + margin: 0 4px; } + +.menu-icon-circle--active { + border: 1px solid #fff; + background: rgba(100, 100, 100, 0.4); } + +.menu-icon-circle div, +.menu-icon-circle--active div { + height: 12px; + width: 12px; + border-radius: 17px; } + +.menu-icon-circle--active div { + opacity: 1; } + +.network-dropdown-header { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; } + +.network-dropdown-divider { + width: 100%; + height: 1px; + margin: 10px 0; + background-color: #5d5d5d; } + +.network-dropdown-title { + height: 25px; + width: 75px; + color: #fff; + font-family: Roboto; + font-size: 18px; + line-height: 25px; + text-align: center; } + +.network-dropdown-content { + height: 36px; + width: 265px; + color: #9b9b9b; + font-family: Roboto; + font-size: 14px; + line-height: 18px; } + +.modal > div:focus { + outline: none !important; } + +.buy-modal-content { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + text-align: center; + font-family: Roboto; + padding: 0 16px; } + +.buy-modal-content-option { + cursor: pointer; + color: #5B5D67; } + +.qr-ellip-address, .ellip-address { + width: 247px; + border: none; + font-family: Roboto; + font-size: 14px; } + +@media screen and (max-width: 575px) { + .buy-modal-content-title-wrapper { + -ms-flex-pack: distribute; + justify-content: space-around; + width: 100%; + height: 100px; } + .buy-modal-content-title { + font-size: 26px; + margin-top: 15px; } + .buy-modal-content-options { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + padding: 5% 33%; } + .buy-modal-content-footer { + text-transform: uppercase; + width: 100%; + height: 50px; } + div.buy-modal-content-option { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + width: 80vw; + height: 15vh; + margin: 10px; + text-align: center; + border-radius: 6px; + border: 1px solid #000; + padding: 0% 7%; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; } + div.buy-modal-content-option div.buy-modal-content-option-title { + font-size: 20px; } + div.buy-modal-content-option div.buy-modal-content-option-subtitle { + font-size: 16px; } } + +@media screen and (min-width: 576px) { + .buy-modal-content-title-wrapper { + -ms-flex-pack: distribute; + justify-content: space-around; + width: 100%; + height: 110px; } + .buy-modal-content-title { + font-size: 26px; + margin-top: 15px; } + .buy-modal-content-footer { + text-transform: uppercase; + width: 100%; + height: 50px; } + .buy-modal-content-options { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + margin: 20px 0 60px; } + div.buy-modal-content-option { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + width: 20vw; + height: 120px; + text-align: center; + border-radius: 6px; + border: 1px solid #000; + margin: 0 8px; + padding: 18px 0; } + div.buy-modal-content-option div.buy-modal-content-option-title { + font-size: 20px; + margin-bottom: 12px; } } + @media screen and (min-width: 576px) and (max-width: 679px) { + div.buy-modal-content-option div.buy-modal-content-option-title { + font-size: 14px; } } + @media screen and (min-width: 576px) and (min-width: 1281px) { + div.buy-modal-content-option div.buy-modal-content-option-title { + font-size: 20px; } } + +@media screen and (min-width: 576px) { + div.buy-modal-content-option div.buy-modal-content-option-subtitle { + font-size: 16px; + padding: 0 10px; + height: 25%; } } + @media screen and (min-width: 576px) and (max-width: 679px) { + div.buy-modal-content-option div.buy-modal-content-option-subtitle { + font-size: 10px; + padding: 0 10px; + margin-bottom: 5px; + line-height: 15px; } } + @media screen and (min-width: 576px) and (min-width: 680px) { + div.buy-modal-content-option div.buy-modal-content-option-subtitle { + font-size: 14px; + padding: 0 4px; + margin-bottom: 2px; } } + @media screen and (min-width: 576px) and (min-width: 1281px) { + div.buy-modal-content-option div.buy-modal-content-option-subtitle { + font-size: 16px; + padding: 0; } } + +@media screen and (min-width: 576px) { + div.buy-modal-content-option div.buy-modal-content-footer { + margin-top: 8vh; } } + +.edit-account-name-modal-content { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + position: relative; } + +.edit-account-name-modal-cancel { + position: absolute; + top: 12px; + right: 20px; + font-size: 25px; } + +.edit-account-name-modal-title { + margin: 15px; } + +.edit-account-name-modal-save-button { + width: 33%; + height: 45px; + margin: 15px; + font-weight: 700; + margin-top: 25px; } + +.edit-account-name-modal-input { + width: 90%; + height: 50px; + text-align: left; + margin: 10px; + padding: 10px; + font-size: 18px; } + +.account-modal-container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + position: relative; + padding: 5px 0 31px 0; + border: 1px solid #cdcdcd; + border-radius: 4px; + font-family: Roboto; } + .account-modal-container button { + cursor: pointer; } + +.account-modal-back { + color: #9b9b9b; + position: absolute; + top: 13px; + left: 17px; + cursor: pointer; } + .account-modal-back__text { + margin-top: 2px; + font-family: Roboto; + font-size: 14px; + line-height: 18px; } + +.account-modal-close::after { + content: '\00D7'; + font-size: 40px; + color: #9b9b9b; + position: absolute; + top: 10px; + right: 12px; + cursor: pointer; } + +.account-modal-container .identicon { + position: relative; + left: 0; + right: 0; + margin: 0 auto; + top: -32px; + margin-bottom: -32px; } + +.account-modal-container .qr-header { + margin-top: 9px; + font-size: 20px; } + +.account-modal-container .qr-wrapper { + margin-top: 5px; } + +.account-modal-container .ellip-address-wrapper { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + border: 1px solid #dedede; + padding: 5px 10px; + font-family: Roboto; + margin-top: 7px; + width: 286px; } + +.account-modal-container .btn-clear { + min-height: 28px; + font-size: 14px; + border-color: #2f9ae0; + color: #2f9ae0; + border-radius: 2px; + -ms-flex-preferred-size: 100%; + flex-basis: 100%; + width: 75%; + margin-top: 17px; + padding: 10px 22px; + height: 44px; + width: 235px; + font-family: Roboto; } + +.account-modal-divider { + width: 100%; + height: 1px; + margin: 19px 0 8px 0; + background-color: #dedede; } + +.account-modal-container .account-name { + margin-top: 9px; + font-size: 20px; } + +.account-modal-container .modal-body-title { + margin-top: 16px; + margin-bottom: 16px; + font-size: 18px; } + +.account-modal__name { + margin-top: 9px; + font-size: 20px; } + +.private-key-password { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; } + +.private-key-password-label, .private-key-password-error { + color: #5d5d5d; + font-size: 14px; + line-height: 18px; + margin-bottom: 10px; } + +.private-key-password-error { + color: #e91550; + margin-bottom: 0; } + +.private-key-password-input { + padding: 10px 0 13px 17px; + font-size: 16px; + line-height: 21px; + width: 291px; + height: 44px; } + +.private-key-password::-webkit-input-placeholder { + color: #9b9b9b; + font-family: Roboto; } + +.private-key-password-warning { + border-radius: 8px; + background-color: #FFF6F6; + font-size: 12px; + font-weight: 500; + line-height: 15px; + color: #e91550; + width: 292px; + padding: 9px 15px; + margin-top: 18px; + font-family: Roboto; } + +.export-private-key-buttons { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; } + .export-private-key-buttons .btn-clear { + width: 141px; + height: 54px; } + .export-private-key-buttons .btn-cancel { + margin-right: 15px; + border-color: #9b9b9b; + color: #5d5d5d; } + +.private-key-password-display-wrapper { + height: 80px; + width: 291px; + border: 1px solid #cdcdcd; + border-radius: 2px; } + +.private-key-password-display-textarea { + color: #e91550; + font-family: Roboto; + font-size: 16px; + line-height: 21px; + border: none; + height: 75px; + width: 100%; + overflow: hidden; + resize: none; + padding: 9px 13px 8px; + text-transform: uppercase; + font-weight: 300; } + +.new-account-modal-wrapper { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + position: relative; + border: 1px solid #dedede; + -webkit-box-shadow: 0 0 2px 2px #dedede; + box-shadow: 0 0 2px 2px #dedede; + font-family: Roboto; } + +.new-account-modal-header { + background: #f6f6f6; + width: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + padding: 30px; + font-size: 22px; + color: #1b344d; + height: 79px; } + +.modal-close-x::after { + content: '\00D7'; + font-size: 2em; + color: #9b9b9b; + position: absolute; + top: 25px; + right: 17.5px; + font-family: sans-serif; + cursor: pointer; } + +.new-account-modal-content { + width: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + margin-top: 15px; + font-size: 17px; + color: #1b344d; } + +.new-account-modal-content.after-input { + margin-top: 15px; + line-height: 25px; } + +.new-account-input-wrapper { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + width: 100%; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + padding-bottom: 2px; + margin-top: 13px; } + +.new-account-input { + padding: 15px; + padding-bottom: 20px; + border-radius: 8px; + border: 1px solid #dedede; + width: 100%; + font-size: 1em; + color: #9b9b9b; + font-family: Roboto; + font-size: 17px; + margin: 0 60px; } + +.new-account-input::-webkit-input-placeholder { + color: #9b9b9b; } + +.new-account-input:-moz-placeholder { + color: #9b9b9b; + opacity: 1; } + +.new-account-input::-moz-placeholder { + color: #9b9b9b; + opacity: 1; } + +.new-account-input:-ms-input-placeholder { + color: #9b9b9b; } + +.new-account-input::-ms-input-placeholder { + color: #9b9b9b; } + +.new-account-modal-content.button { + margin-top: 22px; + margin-bottom: 30px; + width: 113px; + height: 44px; } + +.new-account-modal-wrapper .btn-clear { + font-size: 14px; + font-weight: 700; + background: #fff; + border: 1px solid; + border-radius: 2px; + color: #4d4d4d; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; } + +.hide-token-confirmation { + min-height: 250.72px; + width: 374.49px; + border-radius: 4px; + background-color: #FFFFFF; + -webkit-box-shadow: 0 1px 7px 0 rgba(0, 0, 0, 0.5); + box-shadow: 0 1px 7px 0 rgba(0, 0, 0, 0.5); } + .hide-token-confirmation__container { + padding: 24px 27px 21px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } + .hide-token-confirmation__identicon { + margin-bottom: 10px; } + .hide-token-confirmation__symbol { + color: #4d4d4d; + font-family: Roboto; + font-size: 16px; + line-height: 24px; + text-align: center; + margin-bottom: 7.5px; } + .hide-token-confirmation__title { + height: 30px; + width: 271.28px; + color: #4d4d4d; + font-family: Roboto; + font-size: 22px; + line-height: 30px; + text-align: center; + margin-bottom: 10.5px; } + .hide-token-confirmation__copy { + height: 41px; + width: 318px; + color: #5d5d5d; + font-family: Roboto; + font-size: 14px; + line-height: 18px; + text-align: center; } + .hide-token-confirmation__buttons { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + margin-top: 15px; + width: 100%; } + .hide-token-confirmation__buttons button { + height: 44px; + width: 113px; + border: 1px solid #5d5d5d; + border-radius: 2px; + color: #4d4d4d; + font-family: Roboto; + font-size: 14px; + line-height: 20px; + text-align: center; + margin-left: 4px; + margin-right: 4px; } + +/* + NewUI Container Elements + */ +.main-container { + z-index: 18; + font-family: Roboto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; } + +.main-container::-webkit-scrollbar { + display: none; } + +.tx-view { + -webkit-box-flex: 63.5; + -ms-flex: 63.5 0 66.5%; + flex: 63.5 0 66.5%; + background: #fff; } + @media screen and (max-width: 575px) { + .tx-view .identicon-wrapper { + display: none; } + .tx-view .account-name { + display: none; } } + +.wallet-view { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-flex: 33.5; + -ms-flex: 33.5 1 33.5%; + flex: 33.5 1 33.5%; + width: 0; + background: #f6f6f6; + z-index: 200; + position: relative; } + @media screen and (min-width: 576px) { + .wallet-view { + overflow-y: scroll; + overflow-x: hidden; } } + .wallet-view .wallet-view-account-details { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + .wallet-view__name-container { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + cursor: pointer; + width: 100%; } + .wallet-view__keyring-label { + height: 40px; + color: #9b9b9b; + font-family: Roboto; + font-size: 10px; + line-height: 40px; + text-align: right; + padding: 0 20px; } + .wallet-view__details-button { + color: #2f9ae0; + font-size: 10px; + line-height: 13px; + text-align: center; + border: 1px solid #2f9ae0; + border-radius: 10.5px; + background-color: transparent; + margin: 0 auto; + padding: 4px 12px; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + .wallet-view__address { + border-radius: 3px; + background-color: #dedede; + color: #5d5d5d; + font-size: 14px; + line-height: 12px; + padding: 4px 12px; + margin: 24px auto; + font-weight: 300; + cursor: pointer; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + @media screen and (max-width: 575px) { + .wallet-view__sidebar-close::after { + content: '\00D7'; + font-size: 40px; + color: #4d4d4d; + position: absolute; + top: 12px; + left: 12px; + cursor: pointer; } } + .wallet-view__add-token-button { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + color: #9b9b9b; + font-size: 14px; + line-height: 19px; + text-align: center; + margin: 36px auto; + border: 1px solid #9b9b9b; + border-radius: 2px; + font-weight: 300; + background: none; + padding: 9px 30px; } + +@media screen and (min-width: 576px) { + .wallet-view::-webkit-scrollbar { + display: none; } } + +.wallet-view-title-wrapper { + -webkit-box-flex: 0; + -ms-flex: 0 0 25px; + flex: 0 0 25px; } + +.wallet-view-title { + margin-left: 15px; + font-size: 16px; } + @media screen and (max-width: 575px) { + .wallet-view-title { + display: none; } } + +.wallet-view.sidebar { + -webkit-box-flex: 1; + -ms-flex: 1 0 230px; + flex: 1 0 230px; + background: #fafafa; + z-index: 26; + position: fixed; + top: 56px; + left: 0; + right: 0; + bottom: 0; + opacity: 1; + visibility: visible; + will-change: transform; + overflow-y: auto; + -webkit-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 4px; + box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 4px; + width: 85%; + height: calc(100% - 56px); } + +.sidebar-overlay { + z-index: 25; + position: fixed; + height: 100%; + width: 100%; + left: 0; + right: 0; + bottom: 0; + opacity: 1; + visibility: visible; + background-color: rgba(0, 0, 0, 0.3); } + +@media screen and (min-width: 576px) { + .lap-visible { + display: -webkit-box; + display: -ms-flexbox; + display: flex; } + .phone-visible { + display: none; } + .main-container { + width: 85%; + height: 90vh; + -webkit-box-shadow: 0 0 7px 0 rgba(0, 0, 0, 0.08); + box-shadow: 0 0 7px 0 rgba(0, 0, 0, 0.08); } } + +@media screen and (min-width: 769px) { + .main-container { + width: 80%; + height: 82vh; + -webkit-box-shadow: 0 0 7px 0 rgba(0, 0, 0, 0.08); + box-shadow: 0 0 7px 0 rgba(0, 0, 0, 0.08); } } + +@media screen and (min-width: 1281px) { + .main-container { + width: 65%; + height: 82vh; + -webkit-box-shadow: 0 0 7px 0 rgba(0, 0, 0, 0.08); + box-shadow: 0 0 7px 0 rgba(0, 0, 0, 0.08); } } + +@media screen and (max-width: 575px) { + .lap-visible { + display: none; } + .phone-visible { + display: -webkit-box; + display: -ms-flexbox; + display: flex; } + .main-container { + height: 100%; + width: 100%; + overflow-y: auto; + background-color: #fff; } + button.btn-clear { + width: 93px; + height: 50px; + font-size: .7em; + background: #fff; + border: 1px solid; } } + +.account-name { + font-size: 24px; + font-weight: 200; + line-height: 20px; + color: #5d5d5d; + margin-top: 8px; + margin-bottom: 24px; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 100%; + padding: 0 8px; + text-align: center; } + +.account-options-menu { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + margin: 5% 7% 0%; } + +.fiat-amount { + text-transform: uppercase; } + +.token-balance__amount { + padding-right: 6px; } + +.account-dropdown-name { + font-family: Roboto; } + +.account-dropdown-balance { + color: #9b9b9b; + line-height: 19px; } + +.account-dropdown-edit-button { + color: #9b9b9b; + font-family: Roboto; } + .account-dropdown-edit-button:hover { + color: #fff; } + +.account-list-item__top-row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-top: 10px; + margin-left: 8px; + position: relative; } + +.account-list-item__account-balances { + height: auto; + border: none; + background-color: transparent; + color: #9b9b9b; + margin-left: 34px; + margin-top: 4px; + position: relative; } + +.account-list-item__account-name { + font-size: 16px; + margin-left: 8px; } + +.account-list-item__icon { + position: absolute; + right: 12px; + top: 1px; } + +.account-list-item__account-primary-balance, .account-list-item__account-secondary-balance { + font-family: Roboto; + line-height: 16px; + font-size: 12px; + font-weight: 300; } + +.account-list-item__account-primary-balance { + color: #5d5d5d; + border: none; + outline: 0 !important; } + +.account-list-item__account-secondary-balance { + color: #9b9b9b; } + +.account-list-item__account-address { + margin-left: 35px; + width: 80%; + overflow: hidden; + text-overflow: ellipsis; } + +.account-list-item__dropdown:hover { + background: rgba(222, 222, 222, 0.2); + cursor: pointer; } + .account-list-item__dropdown:hover input { + background: rgba(222, 222, 222, 0.1); } + +.send-screen-wrapper { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + z-index: 25; + font-family: Roboto; } + @media screen and (max-width: 575px) { + .send-screen-wrapper { + width: 100%; + overflow-y: auto; } } + .send-screen-wrapper section { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + +.send-screen-card { + background-color: #fff; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); + padding: 46px 40.5px 26px; + position: relative; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + width: 498px; + -webkit-box-flex: 1; + -ms-flex: 1 0 auto; + flex: 1 0 auto; } + @media screen and (max-width: 575px) { + .send-screen-card { + top: 0; + width: 100%; + -webkit-box-shadow: none; + box-shadow: none; + padding: 12px; } } + +/* Send Screen */ +.send-screen section { + margin: 4px 16px; } + +.send-screen input { + width: 100%; + font-size: 12px; } + +.send-eth-icon { + border-radius: 50%; + width: 70px; + height: 70px; + border: 1px solid #dedede; + -webkit-box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.2); + box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.2); + position: absolute; + top: -35px; + z-index: 25; + padding: 4px; + background-color: #fff; } + @media screen and (max-width: 575px) { + .send-eth-icon { + position: relative; + top: 0; } } + +.send-screen-input-wrapper { + width: 95%; + position: relative; } + .send-screen-input-wrapper .fa-bolt { + padding-right: 4px; } + .send-screen-input-wrapper .large-input { + border: 1px solid #9b9b9b; + border-radius: 4px; + margin: 4px 0 20px; + font-size: 16px; + line-height: 22.4px; + font-family: Roboto; } + .send-screen-input-wrapper .send-screen-gas-input { + border: 1px solid transparent; } + .send-screen-input-wrapper__error-message { + display: none; } + .send-screen-input-wrapper--error input, + .send-screen-input-wrapper--error .send-screen-gas-input { + border-color: #f00 !important; } + .send-screen-input-wrapper--error .send-screen-input-wrapper__error-message { + display: block; + position: absolute; + bottom: 4px; + font-size: 12px; + line-height: 12px; + left: 8px; + color: #f00; } + .send-screen-input-wrapper .send-screen-input-wrapper__error-message { + display: block; + position: absolute; + bottom: 4px; + font-size: 12px; + line-height: 12px; + left: 8px; + color: #f00; } + +.send-screen-input { + width: 100%; } + +.send-screen-gas-input { + width: 100%; + height: 41px; + border-radius: 3px; + background-color: #f3f3f3; + border-width: 0; + border-style: none; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding-left: 10px; + padding-right: 12px; + font-size: 16px; + color: #5d5d5d; } + +.send-screen-amount-labels { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; } + +.send-screen-gas-labels { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; } + +.currency-toggle__item { + color: #2f9ae0; + cursor: pointer; } + .currency-toggle__item--selected { + color: #000; + cursor: default; } + +.send-screen-gas-input-customize { + color: #2f9ae0; + font-size: 12px; + cursor: pointer; } + +.gas-tooltip-close-area { + position: fixed; + top: 0; + left: 0; + z-index: 1000; + width: 100%; + height: 100%; } + +.customize-gas-tooltip-container { + position: absolute; + bottom: 50px; + width: 237px; + height: 307px; + background-color: #fff; + opacity: 1; + -webkit-box-shadow: #dedede 0 0 5px; + box-shadow: #dedede 0 0 5px; + z-index: 1050; + padding: 13px 19px; + font-size: 16px; + border-radius: 4px; + font-family: "Lato"; + font-weight: 500; } + +.gas-tooltip-arrow { + height: 25px; + width: 25px; + z-index: 1200; + background: #fff; + position: absolute; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + left: 107px; + top: 294px; + -webkit-box-shadow: 2px 2px 2px #dedede; + box-shadow: 2px 2px 2px #dedede; } + +.customize-gas-tooltip-container input[type="number"]::-webkit-inner-spin-button { + -webkit-appearance: none; + display: none; } + +.customize-gas-tooltip-container input[type="number"]:hover::-webkit-inner-spin-button { + -webkit-appearance: none; + display: none; } + +.customize-gas-tooltip { + position: relative; } + +.gas-tooltip { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; } + +.gas-tooltip-label { + font-size: 16px; + color: #4d4d4d; } + +.gas-tooltip-header { + padding-bottom: 12px; } + +.gas-tooltip-input-label { + margin-bottom: 5px; } + +.gas-tooltip-input-label i { + color: #aeaeae; + margin-left: 6px; } + +.customize-gas-input { + width: 178px; + height: 28px; + border: 1px solid #dedede; + font-size: 16px; + color: #1b344d; + padding-left: 8px; } + +.customize-gas-input-wrapper { + position: relative; } + +.gas-tooltip-input-detail { + position: absolute; + top: 4px; + right: 26px; + font-size: 12px; + color: #aeaeae; } + +.gas-tooltip-input-arrows { + position: absolute; + top: 0; + right: 4px; + width: 17px; + height: 28px; + border: 1px solid #dadada; + border-left: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + color: #9b9b9b; + font-size: .8em; + padding: 1px 4px; + cursor: pointer; } + +.token-gas__amount { + display: inline-block; + margin-right: 4px; } + +.token-gas__symbol { + display: inline-block; } + +.send-screen__title { + color: #5d5d5d; + font-size: 18px; + line-height: 29px; } + +.send-screen__subtitle { + margin: 10px 0 20px; + font-size: 14px; + line-height: 24px; } + +.send-screen__send-button, .send-screen__cancel-button { + width: 163px; + text-align: center; } + +.send-screen__send-button__disabled { + opacity: .5; + cursor: auto; } + +.send-token { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + z-index: 25; + font-family: Roboto; } + .send-token__content { + width: 498px; + height: 605px; + background-color: #fff; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); + padding: 46px 40.5px 26px; + position: relative; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-flex: 1; + -ms-flex: 1 0 auto; + flex: 1 0 auto; } + @media screen and (max-width: 575px) { + .send-token__content { + top: 0; + width: 100%; + -webkit-box-shadow: none; + box-shadow: none; + padding: 12px; } } + .send-token .identicon { + position: absolute; + top: -35px; + z-index: 25; } + @media screen and (max-width: 575px) { + .send-token .identicon { + position: relative; + top: 0; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } } + .send-token__title { + color: #5d5d5d; + font-size: 18px; + line-height: 29px; } + .send-token__description, .send-token__balance-text, .send-token__token-symbol { + margin-top: 10px; + font-size: 14px; + line-height: 24px; + text-align: center; } + .send-token__token-balance { + font-size: 40px; + line-height: 40px; + margin-top: 13px; } + .send-token__token-balance .token-balance__amount { + padding-right: 12px; } + .send-token__button-group { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + @media screen and (max-width: 575px) { + .send-token__button-group { + margin-top: 24px; } } + .send-token__button-group button { + width: 163px; } + +.confirm-send-token__hero-amount-wrapper { + width: 100%; } + +.send-v2__container { + width: 380px; + border-radius: 8px; + background-color: #fff; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + z-index: 25; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + font-family: Roboto; + position: relative; } + @media screen and (max-width: 575px) { + .send-v2__container { + width: 100%; + top: 0; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; } } + +.send-v2__send-header-icon-container { + z-index: 25; } + @media screen and (max-width: 575px) { + .send-v2__send-header-icon-container { + position: relative; + top: 0; } } + +.send-v2__send-header-icon { + border-radius: 50%; + width: 48px; + height: 48px; + border: 1px solid #dedede; + z-index: 25; + padding: 4px; + background-color: #fff; } + +.send-v2__send-arrow-icon { + color: #f28930; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + position: absolute; + top: -2px; + left: 0; + font-size: 1.12em; } + +.send-v2__arrow-background { + background-color: #fff; + height: 14px; + width: 14px; + position: absolute; + top: 52px; + left: 199px; + border-radius: 50%; + z-index: 100; } + @media screen and (max-width: 575px) { + .send-v2__arrow-background { + top: 36px; } } + +.send-v2__header { + height: 88px; + width: 380px; + background-color: #e9edf0; + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } + @media screen and (max-width: 575px) { + .send-v2__header { + height: 59px; + width: 100vw; } } + +.send-v2__header-tip { + height: 25px; + width: 25px; + background: #e9edf0; + position: absolute; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + left: 178px; + top: 75px; } + @media screen and (max-width: 575px) { + .send-v2__header-tip { + top: 46px; + left: 0; + right: 0; + margin: 0 auto; } } + +.send-v2__title { + color: #5d5d5d; + font-size: 22px; + line-height: 29px; + text-align: center; + margin-top: 25px; } + +.send-v2__copy { + color: #808080; + font-size: 14px; + font-weight: 300; + line-height: 19px; + text-align: center; + margin-top: 10px; + width: 287px; } + +.send-v2__error { + font-size: 12px; + line-height: 12px; + left: 8px; + color: #f00; } + +.send-v2__error-border { + color: #f00; } + +.send-v2__form { + margin: 13px 0; + width: 100%; } + @media screen and (max-width: 575px) { + .send-v2__form { + padding: 13px 0; + margin: 0; + height: 0; + overflow-y: auto; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; } } + +.send-v2__form-header, .send-v2__form-header-copy { + width: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column; + flex-flow: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } + +.send-v2__form-row { + margin: 14.5px 18px 0px; + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row; + flex-flow: row; + -webkit-box-flex: 1; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; } + +.send-v2__form-field { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; } + +.send-v2__form-label { + color: #5d5d5d; + font-family: Roboto; + font-size: 16px; + line-height: 22px; + width: 88px; } + +.send-v2__from-dropdown { + height: 73px; + width: 100%; + border: 1px solid #dedede; + border-radius: 4px; + background-color: #fff; + font-family: Roboto; + line-height: 16px; + font-size: 12px; + color: #4d4d4d; + position: relative; } + .send-v2__from-dropdown__close-area { + position: fixed; + top: 0; + left: 0; + z-index: 1000; + width: 100%; + height: 100%; } + .send-v2__from-dropdown__list { + z-index: 1050; + position: absolute; + height: 220px; + width: 100%; + border: 1px solid #d2d8dd; + border-radius: 4px; + background-color: #fff; + -webkit-box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.11); + box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.11); + margin-top: 11px; + margin-left: -1px; + overflow-y: scroll; } + +.send-v2__to-autocomplete { + position: relative; } + .send-v2__to-autocomplete__down-caret { + position: absolute; + top: 18px; + right: 12px; } + +.send-v2__to-autocomplete__input, .send-v2__memo-text-area__input { + height: 54px; + width: 100%; + border: 1px solid #dedede; + border-radius: 4px; + background-color: #fff; + color: #9b9b9b; + padding: 10px; + font-family: Roboto; + font-size: 16px; + line-height: 21px; + font-weight: 300; } + +.send-v2__amount-max { + color: #2f9ae0; + font-family: Roboto; + font-size: 12px; + left: 8px; + border: none; + cursor: pointer; } + +.send-v2__gas-fee-display { + width: 100%; } + +.send-v2__sliders-icon-container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + height: 24px; + width: 24px; + border: 1px solid #2f9ae0; + border-radius: 4px; + background-color: #fff; + padding: 5px; + position: absolute; + right: 15px; + top: 14px; + cursor: pointer; } + +.send-v2__sliders-icon { + color: #2f9ae0; } + +.send-v2__memo-text-area__input { + padding: 6px 10px; } + +.send-v2__footer { + height: 92px; + width: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: space-evenly; + -ms-flex-pack: space-evenly; + justify-content: space-evenly; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + border-top: 1px solid #dedede; + background: #fff; + padding: 0 12px; } + +.send-v2__next-btn, .send-v2__cancel-btn, .send-v2__next-btn__disabled { + width: 163px; + text-align: center; + height: 55px; + border-radius: 2px; + background-color: #fff; + font-family: Roboto; + font-size: 16px; + font-weight: 300; + line-height: 21px; + border: 1px solid; + margin: 0 4px; } + +.send-v2__next-btn, .send-v2__next-btn__disabled { + color: #2f9ae0; + border-color: #2f9ae0; } + +.send-v2__next-btn__disabled { + opacity: .5; + cursor: auto; } + +.send-v2__cancel-btn { + color: #9b9b9b; + border-color: #9b9b9b; } + +.send-v2__customize-gas { + border: 1px solid #D8D8D8; + border-radius: 4px; + background-color: #FFFFFF; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.14); + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.14); + font-family: Roboto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column; + flex-flow: column; } + @media screen and (max-width: 575px) { + .send-v2__customize-gas { + width: 100vw; + height: 100vh; } } + .send-v2__customize-gas__header { + height: 52px; + border-bottom: 1px solid #dedede; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + font-size: 22px; } + @media screen and (max-width: 575px) { + .send-v2__customize-gas__header { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } } + .send-v2__customize-gas__title { + margin-left: 19.25px; } + .send-v2__customize-gas__close::after { + content: '\00D7'; + font-size: 1.8em; + color: #9b9b9b; + font-family: sans-serif; + cursor: pointer; + margin-right: 19.25px; } + .send-v2__customize-gas__content { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + height: 100%; } + .send-v2__customize-gas__body { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin-bottom: 24px; } + @media screen and (max-width: 575px) { + .send-v2__customize-gas__body { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column; + flex-flow: column; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; } } + .send-v2__customize-gas__footer { + height: 75px; + border-top: 1px solid #dedede; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + font-size: 22px; + position: relative; } + @media screen and (max-width: 575px) { + .send-v2__customize-gas__footer { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } } + .send-v2__customize-gas__buttons { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + width: 181.75px; + margin-right: 21.25px; } + .send-v2__customize-gas__revert, .send-v2__customize-gas__cancel, .send-v2__customize-gas__save, .send-v2__customize-gas__save__error { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + cursor: pointer; } + .send-v2__customize-gas__revert { + color: #aeaeae; + font-size: 16px; + margin-left: 21.25px; } + .send-v2__customize-gas__cancel, .send-v2__customize-gas__save, .send-v2__customize-gas__save__error { + height: 34.64px; + width: 85.74px; + border: 1px solid #9b9b9b; + border-radius: 2px; + font-family: 'DIN OT'; + font-size: 12px; + color: #9b9b9b; } + .send-v2__customize-gas__save__error { + opacity: 0.5; + cursor: auto; } + .send-v2__customize-gas__error-message { + display: block; + position: absolute; + top: 4px; + right: 4px; + font-size: 12px; + line-height: 12px; + color: #f00; } + +.send-v2__gas-modal-card { + width: 360px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column; + flex-flow: column; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + padding-left: 20px; } + .send-v2__gas-modal-card__title { + height: 26px; + color: #4d4d4d; + font-family: Roboto; + font-size: 20px; + font-weight: 300; + line-height: 26px; + margin-top: 17px; } + .send-v2__gas-modal-card__copy { + height: 38px; + width: 314px; + color: #4d4d4d; + font-family: Roboto; + font-size: 14px; + line-height: 19px; + margin-top: 17px; } + .send-v2__gas-modal-card .customize-gas-input-wrapper { + margin-top: 17px; } + .send-v2__gas-modal-card .customize-gas-input { + height: 54px; + width: 315px; + border: 1px solid #d2d8dd; + background-color: #fff; + padding-left: 15px; } + .send-v2__gas-modal-card .gas-tooltip-input-arrows { + width: 32px; + height: 54px; + border-left: 1px solid #dadada; + font-size: 18px; + color: #4d4d4d; + right: 0px; + padding: 1px 4px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-pack: distribute; + justify-content: space-around; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } + .send-v2__gas-modal-card input[type="number"]::-webkit-inner-spin-button { + -webkit-appearance: none; + display: none; } + .send-v2__gas-modal-card input[type="number"]:hover::-webkit-inner-spin-button { + -webkit-appearance: none; + display: none; } + +.confirm-screen-container { + position: relative; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + font-family: Roboto; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); + border-radius: 8px; } + @media screen and (max-width: 575px) { + .confirm-screen-container { + width: 100%; } } + +@media screen and (max-width: 575px) { + .notification .confirm-screen-wrapper { + height: calc(100vh - 85px); } } + +.confirm-screen-wrapper { + height: 100%; + width: 380px; + background-color: #fff; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + z-index: 25; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + font-family: Roboto; + position: relative; + overflow-y: auto; + overflow-x: hidden; + border-top-left-radius: 8px; + border-top-right-radius: 8px; } + @media screen and (max-width: 575px) { + .confirm-screen-wrapper { + width: 100%; + overflow-x: hidden; + overflow-y: auto; + top: 0; + -webkit-box-shadow: none; + box-shadow: none; + height: calc(100vh - 58px - 85px); + border-top-left-radius: 0; + border-top-right-radius: 0; } } + +.confirm-screen-wrapper > .confirm-screen-total-box { + margin-left: 10px; + margin-right: 10px; } + +.confirm-screen-wrapper > .confirm-memo-wrapper { + margin: 0; } + +.confirm-screen-header { + height: 88px; + background-color: #e9edf0; + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + font-size: 22px; + line-height: 29px; + width: 100%; + padding: 25px 0; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + @media screen and (max-width: 575px) { + .confirm-screen-header { + font-size: 20px; } } + +.confirm-screen-header-tip { + height: 25px; + width: 25px; + background: #e9edf0; + position: absolute; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + top: 71px; + left: 0; + right: 0; + margin: 0 auto; } + +.confirm-screen-title { + line-height: 27px; } + @media screen and (max-width: 575px) { + .confirm-screen-title { + margin-left: 22px; + margin-right: 8px; } } + +.confirm-screen-back-button { + background: transparent; + border: 1px solid #2f9ae0; + left: 24px; + position: absolute; + text-align: center; + color: #2f9ae0; + padding: 6px 13px 7px 12px; + border-radius: 2px; + height: 30px; + width: 54px; } + @media screen and (max-width: 575px) { + .confirm-screen-back-button { + margin-right: 12px; } } + +.confirm-screen-account-wrapper { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } + +.confirm-screen-account-name { + margin-top: 12px; + font-size: 14px; + line-height: 19px; + color: #5d5d5d; + text-align: center; } + +.confirm-screen-row-info { + font-size: 16px; + line-height: 21px; } + +.confirm-screen-account-number { + font-size: 10px; + line-height: 16px; + color: #9b9b9b; + text-align: center; + height: 16px; } + +.confirm-send-ether i.fa-arrow-right, +.confirm-send-token i.fa-arrow-right { + -ms-flex-item-align: start; + align-self: start; + margin: 24px 14px 0 !important; } + +.confirm-screen-identicons { + margin-top: 24px; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + .confirm-screen-identicons i.fa-arrow-right { + -ms-flex-item-align: start; + align-self: start; + margin: 42px 14px 0; } + .confirm-screen-identicons i.fa-file-text-o { + font-size: 60px; + margin: 16px 8px 0 8px; + text-align: center; } + +.confirm-screen-sending-to-message { + text-align: center; + font-size: 16px; + margin-top: 30px; + font-family: 'DIN NEXT Light'; } + +.confirm-screen-send-amount { + color: #5d5d5d; + margin-top: 12px; + text-align: center; + font-size: 40px; + font-weight: 300; + line-height: 53px; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + +.confirm-screen-send-amount-currency { + font-size: 20px; + line-height: 20px; + text-align: center; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + +.confirm-memo-wrapper { + min-height: 24px; + width: 100%; + border-bottom: 1px solid #dedede; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + +.confirm-screen-send-memo { + color: #5d5d5d; + font-size: 16px; + line-height: 19px; + font-weight: 400; } + +.confirm-screen-label { + font-size: 18px; + line-height: 40px; + color: #5d5d5d; + text-align: left; } + +section .confirm-screen-account-name, +section .confirm-screen-account-number, +.confirm-screen-row-info, +.confirm-screen-row-detail { + text-align: left; } + +.confirm-screen-rows { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + width: 100%; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + +.confirm-screen-section-column { + -webkit-box-flex: .5; + -ms-flex: .5; + flex: .5; } + +.confirm-screen-row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + border-bottom: 1px solid #dedede; + width: 100%; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 12px; + padding-left: 35px; + font-size: 16px; + line-height: 22px; + font-weight: 300; } + +.confirm-screen-row-detail { + font-size: 12px; + line-height: 16px; + color: #9b9b9b; } + +.confirm-screen-total-box { + background-color: #f6f6f6; + padding: 20px; + padding-left: 35px; + border-bottom: 1px solid #dedede; } + .confirm-screen-total-box .confirm-screen-label { + line-height: 18px; } + .confirm-screen-total-box .confirm-screen-row-detail { + color: #5d5d5d; } + .confirm-screen-total-box__subtitle { + font-size: 12px; + line-height: 22px; } + .confirm-screen-total-box .confirm-screen-row-info { + font-size: 16px; + font-weight: 500; + line-height: 21px; } + +.confirm-screen-confirm-button { + height: 62px; + border-radius: 2px; + background-color: #02c9b1; + font-size: 16px; + color: #fff; + text-align: center; + font-family: Roboto; + padding-top: 15px; + padding-bottom: 15px; + border-width: 0; + -webkit-box-shadow: none; + box-shadow: none; + -webkit-box-flex: 1; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + font-weight: 300; + margin: 0 8px; } + +.btn-light.confirm-screen-cancel-button { + height: 62px; + background: none; + border: none; + opacity: 1; + font-family: Roboto; + border-width: 0; + padding-top: 15px; + padding-bottom: 15px; + font-size: 16px; + line-height: 32px; + -webkit-box-shadow: none; + box-shadow: none; + cursor: pointer; + -webkit-box-flex: 1; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + font-weight: 300; + margin: 0 8px; } + +#pending-tx-form { + -webkit-box-flex: 1; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + background-color: #fff; + padding: 12px 18px; + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + width: 100%; } + @media screen and (max-width: 575px) { + #pending-tx-form { + border-top: 1px solid #dedede; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; } } + +.loading-overlay { + left: 0px; + z-index: 50; + position: absolute; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + width: 100%; + background: rgba(255, 255, 255, 0.8); } + @media screen and (max-width: 575px) { + .loading-overlay { + margin-top: 56px; + height: calc(100% - 56px); } } + @media screen and (min-width: 576px) { + .loading-overlay { + margin-top: 75px; + height: calc(100% - 75px); } } + +@media screen and (max-width: 575px) { + .hero-balance { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin: .3em .9em 0; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } } + +@media screen and (min-width: 576px) { + .hero-balance { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin: 2.8em 2.37em .8em; } } + +.hero-balance .balance-container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + margin: 0; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } + @media screen and (max-width: 575px) { + .hero-balance .balance-container { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } } + @media screen and (min-width: 576px) { + .hero-balance .balance-container { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-flex: 3; + -ms-flex-positive: 3; + flex-grow: 3; } } + +@media screen and (max-width: 575px) { + .hero-balance .balance-display { + text-align: center; } + .hero-balance .balance-display .token-amount { + font-size: 175%; + margin-top: 12.5%; } + .hero-balance .balance-display .fiat-amount { + font-size: 115%; + margin-top: 8.5%; + color: #a0a0a0; } } + +@media screen and (min-width: 576px) { + .hero-balance .balance-display { + margin-left: 3%; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; } + .hero-balance .balance-display .token-amount { + font-size: 135%; } + .hero-balance .balance-display .fiat-amount { + margin-top: .25%; + font-size: 105%; } } + +.hero-balance .balance-icon { + border-radius: 25px; + width: 45px; + height: 45px; + border: 1px solid #dedede; } + +@media screen and (max-width: 575px) { + .hero-balance .hero-balance-buttons { + width: 100%; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding: 16px 0; } } + +@media screen and (min-width: 576px) { + .hero-balance .hero-balance-buttons { + -webkit-box-flex: 2; + -ms-flex-positive: 2; + flex-grow: 2; + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; } } + +.hero-balance .hero-balance-buttons button.btn-clear { + background: #fff; + border: 1px solid; + border-radius: 2px; + font-size: 12px; } + @media screen and (max-width: 575px) { + .hero-balance .hero-balance-buttons button.btn-clear { + border-color: #2f9ae0; + color: #2f9ae0; + height: 36px; } } + @media screen and (min-width: 576px) { + .hero-balance .hero-balance-buttons button.btn-clear { + border-color: #2f9ae0; + color: #2f9ae0; + padding: 0; + width: 85px; + height: 34px; } } + +.wallet-balance-wrapper { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + -webkit-transition: linear 200ms; + transition: linear 200ms; + background: rgba(231, 231, 231, 0); } + .wallet-balance-wrapper--active { + background: #e7e7e7; } + +.wallet-balance { + background: inherit; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + cursor: pointer; + border-top: 1px solid #e7e7e7; } + .wallet-balance .balance-container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + margin: 20px 24px; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-flex: 3; + -ms-flex-positive: 3; + flex-grow: 3; } + @media screen and (min-width: 576px) and (max-width: 890px) { + .wallet-balance .balance-container { + margin: 10% 4%; } } + .wallet-balance .balance-display { + margin-left: 15px; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; } + .wallet-balance .balance-display .token-amount { + font-size: 135%; } + .wallet-balance .balance-display .fiat-amount { + margin-top: .25%; + font-size: 105%; } + @media screen and (min-width: 576px) and (max-width: 890px) { + .wallet-balance .balance-display { + margin-left: 4%; } + .wallet-balance .balance-display .token-amount { + font-size: 105%; } + .wallet-balance .balance-display .fiat-amount { + font-size: 95%; } } + .wallet-balance .balance-icon { + border-radius: 25px; + width: 45px; + height: 45px; + border: 1px solid #dedede; } + +.tx-list-container { + height: 87.5%; } + @media screen and (min-width: 576px) { + .tx-list-container { + overflow-y: scroll; } } + +.tx-list-header { + text-transform: capitalize; } + +@media screen and (max-width: 575px) { + .tx-list-header-wrapper { + margin-top: .2em; + margin-bottom: .6em; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + .tx-list-header { + -ms-flex-item-align: center; + align-self: center; + font-size: 12px; + color: #9b9b9b; + font-family: Roboto; + text-transform: uppercase; } } + +@media screen and (min-width: 576px) { + .tx-list-header-wrapper { + -webkit-box-flex: 0; + -ms-flex: 0 0 55px; + flex: 0 0 55px; } + .tx-list-header { + font-size: 16px; + margin: 1.5em 2.37em; } + .tx-list-container::-webkit-scrollbar { + display: none; } } + +.tx-list-content-divider { + height: 1px; + background: #e7e7e7; + -webkit-box-flex: 0; + -ms-flex: 0 0 1px; + flex: 0 0 1px; } + @media screen and (max-width: 575px) { + .tx-list-content-divider { + margin: .1em 0; } } + @media screen and (min-width: 576px) { + .tx-list-content-divider { + margin: .1em 2.37em; } } + +.tx-list-item-wrapper { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + width: 0; + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; } + @media screen and (max-width: 575px) { + .tx-list-item-wrapper { + padding: 0 1.3em .8em; } } + @media screen and (min-width: 576px) { + .tx-list-item-wrapper { + padding-bottom: 12px; } } + +.tx-list-clickable { + cursor: pointer; } + .tx-list-clickable:hover { + background: rgba(222, 222, 222, 0.2); } + +.tx-list-pending-item-container { + cursor: pointer; + opacity: .5; } + +.tx-list-date-wrapper { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; } + @media screen and (max-width: 575px) { + .tx-list-date-wrapper { + margin-top: 6px; } } + @media screen and (min-width: 576px) { + .tx-list-date-wrapper { + margin-top: 12px; } } + +.tx-list-content-wrapper { + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; + margin-bottom: 4px; + margin-top: 2px; + -webkit-box-flex: 1; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + width: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; } + @media screen and (max-width: 575px) { + .tx-list-content-wrapper { + font-size: 12px; } + .tx-list-content-wrapper .tx-list-status { + font-size: 14px !important; } + .tx-list-content-wrapper .tx-list-account { + font-size: 14px !important; } + .tx-list-content-wrapper .tx-list-value { + font-size: 14px; + line-height: 18px; } + .tx-list-content-wrapper .tx-list-fiat-value { + font-size: 12px; + line-height: 16px; } } + +.tx-list-date { + color: #9b9b9b; + font-size: 12px; + font-family: Roboto; } + +.tx-list-identicon-wrapper { + -ms-flex-item-align: center; + align-self: center; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + margin-right: 16px; } + +.tx-list-account-and-status-wrapper { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + width: 0; } + @media screen and (max-width: 575px) { + .tx-list-account-and-status-wrapper { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + -ms-flex-item-align: center; + align-self: center; } + .tx-list-account-and-status-wrapper .tx-list-account-wrapper { + height: 18px; } + .tx-list-account-and-status-wrapper .tx-list-account-wrapper .tx-list-account { + line-height: 14px; } } + @media screen and (min-width: 576px) { + .tx-list-account-and-status-wrapper { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } + .tx-list-account-and-status-wrapper .tx-list-account-wrapper { + -webkit-box-flex: 1.3; + -ms-flex: 1.3 2 auto; + flex: 1.3 2 auto; + min-width: 153px; } + .tx-list-account-and-status-wrapper .tx-list-status-wrapper { + -webkit-box-flex: 6; + -ms-flex: 6 6 auto; + flex: 6 6 auto; } } + .tx-list-account-and-status-wrapper .tx-list-account { + font-size: 16px; + color: #5d5d5d; } + .tx-list-account-and-status-wrapper .tx-list-status { + color: #9b9b9b; + font-size: 16px; + text-transform: capitalize; } + .tx-list-account-and-status-wrapper .tx-list-status--rejected, + .tx-list-account-and-status-wrapper .tx-list-status--failed { + color: #d0021b; } + +.tx-list-item { + border-top: 1px solid #e7e7e7; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; } + @media screen and (min-width: 576px) { + .tx-list-item { + margin: 0 2.37em; } } + .tx-list-item:last-of-type { + border-bottom: 1px solid #e7e7e7; + margin-bottom: 32px; } + .tx-list-item__wrapper { + -ms-flex-item-align: center; + align-self: center; + -webkit-box-flex: 2; + -ms-flex: 2 2 auto; + flex: 2 2 auto; + color: #9b9b9b; } + .tx-list-item__wrapper .tx-list-value { + font-size: 16px; + text-align: right; } + .tx-list-item__wrapper .tx-list-value--confirmed { + color: #02c9b1; } + .tx-list-item__wrapper .tx-list-fiat-value { + font-size: 12px; + text-align: right; } + .tx-list-item--empty { + text-align: center; + border-bottom: none !important; + padding: 16px; } + +.tx-list-details-wrapper { + overflow: hidden; + -webkit-box-flex: 0; + -ms-flex: 0 0 35%; + flex: 0 0 35%; } + +.tx-list-value { + font-size: 16px; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; } + +.tx-list-fiat-value { + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; } + +.tx-list-value--confirmed { + color: #02c9b1; } + +/* stylelint-disable */ +/* +App Sections + TODO: Move into separate files. +*/ +/* initialize */ +textarea.twelve-word-phrase { + padding: 12px; + width: 300px; + height: 140px; + font-size: 16px; + background: #fff; + resize: none; } + +.initialize-screen hr { + width: 60px; + margin: 12px; + border-color: #f7861c; + border-style: solid; } + +.initialize-screen label { + margin-top: 20px; } + +.initialize-screen button.create-vault { + margin-top: 40px; } + +.initialize-screen .warning { + font-size: 14px; + margin: 0 16px; } + +/* unlock */ +.error { + color: #f7861c; + margin-bottom: 9px; } + +.warning { + color: #ffae00; } + +.lock { + width: 50px; + height: 50px; } + +.lock.locked { + -webkit-transform: scale(1.5); + transform: scale(1.5); + opacity: 0; + -webkit-transition: opacity 400ms ease-in, -webkit-transform 400ms ease-in; + transition: opacity 400ms ease-in, -webkit-transform 400ms ease-in; + transition: opacity 400ms ease-in, transform 400ms ease-in; + transition: opacity 400ms ease-in, transform 400ms ease-in, -webkit-transform 400ms ease-in; } + +.lock.unlocked { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + -webkit-transition: opacity 500ms ease-out, background 200ms ease-in, -webkit-transform 500ms ease-out; + transition: opacity 500ms ease-out, background 200ms ease-in, -webkit-transform 500ms ease-out; + transition: opacity 500ms ease-out, transform 500ms ease-out, background 200ms ease-in; + transition: opacity 500ms ease-out, transform 500ms ease-out, background 200ms ease-in, -webkit-transform 500ms ease-out; } + +.lock.locked .lock-top { + -webkit-transform: scaleX(1) translateX(0); + transform: scaleX(1) translateX(0); + -webkit-transition: -webkit-transform 250ms ease-in; + transition: -webkit-transform 250ms ease-in; + transition: transform 250ms ease-in; + transition: transform 250ms ease-in, -webkit-transform 250ms ease-in; } + +.lock.unlocked .lock-top { + -webkit-transform: scaleX(-1) translateX(-12px); + transform: scaleX(-1) translateX(-12px); + -webkit-transition: -webkit-transform 250ms ease-in; + transition: -webkit-transform 250ms ease-in; + transition: transform 250ms ease-in; + transition: transform 250ms ease-in, -webkit-transform 250ms ease-in; } + +.lock.unlocked:hover { + border-radius: 4px; + background: #e5e5e5; + border: 1px solid #b1b1b1; } + +.lock.unlocked:active { + background: #c3c3c3; } + +.section-title .fa-arrow-left { + margin: -2px 8px 0px -8px; } + +.unlock-screen #metamask-mascot-container { + margin-top: 24px; } + +.unlock-screen h1 { + margin-top: -28px; + margin-bottom: 42px; } + +.unlock-screen input[type=password] { + width: 260px; } + +.sizing-input { + font-size: 14px; + height: 30px; + padding-left: 5px; } + +.editable-label { + display: -webkit-box; + display: -ms-flexbox; + display: flex; } + +/* Webkit */ +.unlock-screen input::-webkit-input-placeholder { + text-align: center; + font-size: 1.2em; } + +/* Firefox 18- */ +.unlock-screen input:-moz-placeholder { + text-align: center; + font-size: 1.2em; } + +/* Firefox 19+ */ +.unlock-screen input::-moz-placeholder { + text-align: center; + font-size: 1.2em; } + +/* IE */ +.unlock-screen input:-ms-input-placeholder { + text-align: center; + font-size: 1.2em; } + +/* accounts */ +.accounts-section { + margin: 0 0px; } + +.accounts-section .horizontal-line { + margin: 0 18px; } + +.accounts-list-option { + height: 120px; } + +.accounts-list-option .identicon-wrapper { + width: 100px; } + +.unconftx-link { + margin-top: 24px; + cursor: pointer; } + +.unconftx-link .fa-arrow-right { + margin: 0 -8px 0px 8px; } + +/* identity panel */ +.identity-panel { + font-weight: 500; } + +.identity-panel .identicon-wrapper { + margin: 4px; + margin-top: 8px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } + +.identity-panel .identicon-wrapper span { + margin: 0 auto; } + +.identity-panel .identity-data { + margin: 8px 8px 8px 18px; } + +.identity-panel i { + margin-top: 32px; + margin-right: 6px; + color: #b9b9b9; } + +.identity-panel .arrow-right { + padding-left: 18px; + width: 42px; + min-width: 18px; + height: 100%; } + +.identity-copy.flex-column { + -webkit-box-flex: .25; + -ms-flex: .25 0 auto; + flex: .25 0 auto; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; } + +/* accounts screen */ +.identity-section .identity-panel { + background: #e9e9e9; + border-bottom: 1px solid #b1b1b1; + cursor: pointer; } + +.identity-section .identity-panel.selected { + background: #fff; + color: #f3c83e; } + +.identity-section .identity-panel.selected .identicon { + border-color: #ffa500; } + +.identity-section .accounts-list-option:hover, +.identity-section .accounts-list-option.selected { + background: #fff; } + +/* account detail screen */ +.account-detail-section { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + overflow-y: auto; + -webkit-box-orient: inherit; + -webkit-box-direction: inherit; + -ms-flex-direction: inherit; + flex-direction: inherit; } + +.grow-tenx { + -webkit-box-flex: 10; + -ms-flex-positive: 10; + flex-grow: 10; } + +.unapproved-tx-icon { + height: 16px; + width: 16px; + background: #2faef4; + border-color: #aeaeae; + border-radius: 13px; } + +.edit-text { + height: 100%; + visibility: hidden; } + +.editing-label { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + margin-left: 50px; + margin-bottom: 2px; + font-size: 11px; + text-rendering: geometricPrecision; + color: #f7861c; } + +.name-label:hover .edit-text { + visibility: visible; } + +/* tx confirm */ +.unconftx-section input[type=password] { + height: 22px; + padding: 2px; + margin: 12px; + margin-bottom: 24px; + border-radius: 4px; + border: 2px solid #f3c83e; + background: #faf6f0; } + +/* Ether Balance Widget */ +.ether-balance-amount { + color: #f7861c; } + +.ether-balance-label { + color: #aba9aa; } + +/* Info screen */ +.info-gray { + font-family: Roboto; + text-transform: uppercase; + color: #aeaeae; } + +.icon-size { + width: 20px; } + +.info { + font-family: Roboto, Arial; + padding-bottom: 10px; + display: inline-block; + padding-left: 5px; } + +/* buy eth warning screen */ +.custom-radios { + -ms-flex-pack: distribute; + justify-content: space-around; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } + +.custom-radio-selected { + width: 17px; + height: 17px; + border: solid; + border-style: double; + border-radius: 15px; + border-width: 5px; + background: #f7861c; + border-color: #f7f7f7; } + +.custom-radio-inactive { + width: 14px; + height: 14px; + border: solid; + border-width: 1px; + border-radius: 24px; + border-color: #aeaeae; } + +.radio-titles { + color: #f7861c; } + +.eth-warning { + -webkit-transition: opacity 400ms ease-in, -webkit-transform 400ms ease-in; + transition: opacity 400ms ease-in, -webkit-transform 400ms ease-in; + transition: opacity 400ms ease-in, transform 400ms ease-in; + transition: opacity 400ms ease-in, transform 400ms ease-in, -webkit-transform 400ms ease-in; } + +.buy-subview { + -webkit-transition: opacity 400ms ease-in, -webkit-transform 400ms ease-in; + transition: opacity 400ms ease-in, -webkit-transform 400ms ease-in; + transition: opacity 400ms ease-in, transform 400ms ease-in; + transition: opacity 400ms ease-in, transform 400ms ease-in, -webkit-transform 400ms ease-in; } + +.input-container:hover .edit-text { + visibility: visible; } + +.buy-inputs { + font-family: Roboto; + font-size: 13px; + height: 20px; + background: transparent; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: solid; + border-color: transparent; + border-width: .5px; + border-radius: 2px; } + +.input-container:hover .buy-inputs { + -webkit-box-sizing: inherit; + box-sizing: inherit; + border: solid; + border-color: #f7861c; + border-width: .5px; + border-radius: 2px; } + +.buy-inputs:focus { + border: solid; + border-color: #f7861c; + border-width: .5px; + border-radius: 2px; } + +.activeForm { + background: #f7f7f7; + border: none; + border-radius: 8px 8px 0px 0px; + width: 50%; + text-align: center; + padding-bottom: 4px; } + +.inactiveForm { + border: none; + border-radius: 8px 8px 0px 0px; + width: 50%; + text-align: center; + padding-bottom: 4px; } + +.ex-coins { + font-family: Roboto; + text-transform: uppercase; + text-align: center; + font-size: 33px; + width: 118px; + height: 42px; + padding: 1px; + color: #4d4d4d; } + +.marketinfo { + font-family: Roboto; + color: #aeaeae; + font-size: 15px; + line-height: 17px; } + +#fromCoin::-webkit-calendar-picker-indicator { + display: none; } + +#coinList { + width: 400px; + height: 500px; + overflow: scroll; } + +.icon-control .fa-refresh { + visibility: hidden; } + +.icon-control:hover .fa-refresh { + visibility: visible; } + +.icon-control:hover .fa-chevron-right { + visibility: hidden; } + +.inactive { + color: #aeaeae; } + +.inactive button { + background: #aeaeae; + color: #fff; } + +.qr-ellip-address, .ellip-address { + overflow: hidden; + text-overflow: ellipsis; } + +.qr-header { + font-size: 25px; + margin-top: 40px; } + +.qr-message { + font-size: 12px; + color: #f7861c; } + +div.message-container > div:first-child { + margin-top: 18px; + font-size: 15px; + color: #4d4d4d; } + +.pop-hover:hover { + -webkit-transform: scale(1.1); + transform: scale(1.1); } + +/* stylelint-enable */ +.token-list-item { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 20px 24px; + cursor: pointer; + -webkit-transition: linear 200ms; + transition: linear 200ms; + background-color: rgba(231, 231, 231, 0); + position: relative; } + .token-list-item__token-balance { + font-size: 130%; } + @media screen and (min-width: 576px) and (max-width: 890px) { + .token-list-item__token-balance { + font-size: 105%; } } + .token-list-item__fiat-amount { + margin-top: .25%; + font-size: 105%; + text-transform: uppercase; } + @media screen and (min-width: 576px) and (max-width: 890px) { + .token-list-item__fiat-amount { + font-size: 95%; } } + @media screen and (min-width: 576px) and (max-width: 890px) { + .token-list-item { + padding: 10% 4%; } } + .token-list-item--active { + background-color: #e7e7e7; } + .token-list-item__identicon { + margin-right: 15px; + border: '1px solid #dedede'; } + @media screen and (min-width: 576px) and (max-width: 890px) { + .token-list-item__identicon { + margin-right: 4%; } } + .token-list-item__ellipsis { + line-height: 45px; } + .token-list-item__balance-wrapper { + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; } + +.token-menu-dropdown { + height: 55px; + width: 191px; + border-radius: 4px; + background-color: rgba(0, 0, 0, 0.82); + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.5); + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.5); + position: fixed; + margin-top: 20px; + margin-left: 105px; + z-index: 2000; } + .token-menu-dropdown__close-area { + position: fixed; + top: 0; + left: 0; + z-index: 2100; + width: 100%; + height: 100%; + cursor: default; } + .token-menu-dropdown__container { + padding: 16px 34px 32px; + z-index: 2200; + position: relative; } + .token-menu-dropdown__options { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; } + .token-menu-dropdown__option { + color: #fff; + font-family: Roboto; + font-size: 16px; + line-height: 21px; + text-align: center; } + +.add-token { + width: 498px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + position: relative; + z-index: 12; + font-family: 'DIN Next Light'; } + .add-token__wrapper { + background-color: #fff; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + .add-token__title-container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 30px 60px 12px; + border-bottom: 1px solid #efefef; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + .add-token__title { + color: #5d5d5d; + font-size: 20px; + line-height: 26px; + text-align: center; + font-weight: 600; + margin-bottom: 12px; } + .add-token__description { + text-align: center; } + .add-token__description + .add-token__description { + margin-top: 24px; } + .add-token__confirmation-description { + margin: 12px 0; } + .add-token__content-container { + width: 100%; + border-bottom: 1px solid #efefef; } + .add-token__input-container { + padding: 11px 0; + width: 263px; + margin: 0 auto; + position: relative; } + .add-token__search-input-error-message { + position: absolute; + bottom: -10px; + font-size: 12px; + width: 100%; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + color: #f00; } + .add-token__input { + width: 100%; + border: 2px solid #efefef; + border-radius: 4px; + padding: 5px 15px; + font-size: 14px; + line-height: 19px; } + .add-token__input::-webkit-input-placeholder { + color: #cdcdcd; } + .add-token__input:-ms-input-placeholder { + color: #cdcdcd; } + .add-token__input::-ms-input-placeholder { + color: #cdcdcd; } + .add-token__input::placeholder { + color: #cdcdcd; } + .add-token__footers { + width: 100%; } + .add-token__add-custom { + color: #5d5d5d; + font-size: 18px; + line-height: 24px; + text-align: center; + padding: 12px 0; + font-weight: 600; + cursor: pointer; } + .add-token__add-custom:hover { + background-color: rgba(0, 0, 0, 0.05); } + .add-token__add-custom:active { + background-color: rgba(0, 0, 0, 0.1); } + .add-token__add-custom .fa { + position: absolute; + right: 24px; + font-size: 24px; + line-height: 24px; } + .add-token__add-custom-form { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + margin: 8px 0 51px; } + .add-token__add-custom-field { + width: 290px; + margin: 0 auto; + position: relative; } + .add-token__add-custom-field--error .add-token__add-custom-input { + border-color: #f00; } + .add-token__add-custom-error-message { + position: absolute; + bottom: -21px; + font-size: 12px; + width: 100%; + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + color: #f00; } + .add-token__add-custom-label { + font-size: 16px; + line-height: 21px; + margin-bottom: 8px; } + .add-token__add-custom-input { + width: 100%; + border: 1px solid #cdcdcd; + padding: 5px 15px; + font-size: 14px; + line-height: 19px; } + .add-token__add-custom-input::-webkit-input-placeholder { + color: #cdcdcd; } + .add-token__add-custom-input:-ms-input-placeholder { + color: #cdcdcd; } + .add-token__add-custom-input::-ms-input-placeholder { + color: #cdcdcd; } + .add-token__add-custom-input::placeholder { + color: #cdcdcd; } + .add-token__add-custom-field + .add-token__add-custom-field { + margin-top: 21px; } + .add-token__buttons { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + margin: 30px 0 51px; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + .add-token__token-icons-container { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row wrap; + flex-flow: row wrap; } + .add-token__token-wrapper { + -webkit-transition: 200ms ease-in-out; + transition: 200ms ease-in-out; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-flex: 0; + -ms-flex: 0 0 42.5%; + flex: 0 0 42.5%; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: 12px; + margin: 2.5%; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border-radius: 10px; + cursor: pointer; + border: 2px solid transparent; + position: relative; } + .add-token__token-wrapper:hover { + border: 2px solid rgba(122, 201, 253, 0.5); } + .add-token__token-wrapper--selected { + border: 2px solid #7ac9fd !important; } + .add-token__token-wrapper--disabled { + opacity: .4; + pointer-events: none; } + .add-token__token-data { + -ms-flex-item-align: start; + align-self: flex-start; } + .add-token__token-name { + font-size: 14px; + line-height: 19px; } + .add-token__token-symbol { + font-size: 22px; + line-height: 29px; + font-weight: 600; } + .add-token__token-icon { + width: 60px; + height: 60px; + background-repeat: no-repeat; + background-size: contain; + background-position: center; + border-radius: 50%; + background-color: #fff; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.24); + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.24); + margin-right: 12px; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + .add-token__token-message { + position: absolute; + color: #02c9b1; + font-size: 11px; + bottom: 0; + left: 85px; } + .add-token__confirmation-token-list { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; } + .add-token__confirmation-token-list .token-balance { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; } + .add-token__confirmation-token-list .token-balance__amount { + color: #5d5d5d; + font-size: 43px; + font-weight: 300; + line-height: 43px; + margin-right: 8px; } + .add-token__confirmation-token-list .token-balance__symbol { + color: #5d5d5d; + font-size: 16px; + line-height: 24px; } + .add-token__confirmation-title { + padding: 30px 120px 12px; } + @media screen and (max-width: 575px) { + .add-token__confirmation-title { + padding: 20px 0; + width: 100%; } } + .add-token__confirmation-content { + padding-bottom: 60px; } + .add-token__confirmation-token-list-item { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + margin: 0 auto; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } + .add-token__confirmation-token-list-item + .add-token__confirmation-token-list-item { + margin-top: 30px; } + .add-token__confirmation-token-icon { + margin-right: 18px; } + @media screen and (max-width: 575px) { + .add-token { + top: 0; + width: 100%; + overflow: hidden; + height: 100%; } + .add-token__wrapper { + -webkit-box-shadow: none !important; + box-shadow: none !important; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + width: 100%; + overflow-y: auto; } + .add-token__footers { + border-bottom: 1px solid #efefef; } + .add-token__token-icon { + width: 50px; + height: 50px; } + .add-token__token-symbol { + font-size: 18px; + line-height: 24px; } + .add-token__token-name { + font-size: 12px; + line-height: 16px; } + .add-token__buttons { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + width: 100%; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + padding: 12px 0; + margin: 0; + border-top: 1px solid #efefef; } + .add-token__buttons button { + -webkit-box-flex: 1; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + margin: 0 12px; } } + +.currency-display { + height: 54px; + width: 100%ß; + border: 1px solid #dedede; + border-radius: 4px; + background-color: #fff; + color: #9b9b9b; + font-family: Roboto; + font-size: 16px; + font-weight: 300; + padding: 8px 10px; + position: relative; } + .currency-display__primary-row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; } + .currency-display__input { + color: #5d5d5d; + font-family: Roboto; + font-size: 16px; + line-height: 22px; + border: none; + outline: 0 !important; + max-width: 100%; } + .currency-display__primary-currency { + color: #5d5d5d; + font-weight: 400; + font-family: Roboto; + font-size: 16px; + line-height: 22px; } + .currency-display__converted-row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; } + .currency-display__converted-value, .currency-display__converted-currency { + color: #9b9b9b; + font-family: Roboto; + font-size: 12px; + line-height: 12px; } + .currency-display__input-wrapper { + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; } + .currency-display__currency-symbol { + margin-top: 1px; } + +.account-menu { + position: fixed; + z-index: 100; + top: 58px; + width: 310px; } + @media screen and (max-width: 575px) { + .account-menu { + right: calc(((100vw - 100%) / 2) + 8px); } } + @media screen and (min-width: 576px) { + .account-menu { + right: calc((100vw - 85vw) / 2); } } + @media screen and (min-width: 769px) { + .account-menu { + right: calc((100vw - 80vw) / 2); } } + @media screen and (min-width: 1281px) { + .account-menu { + right: calc((100vw - 65vw) / 2); } } + .account-menu__icon { + margin-left: 20px; + cursor: pointer; } + .account-menu__header { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; } + .account-menu__logout-button { + border: 1px solid #9b9b9b; + background-color: transparent; + color: #fff; + border-radius: 4px; + font-size: 12px; + line-height: 23px; + padding: 0 24px; + font-weight: 200; } + .account-menu img { + width: 16px; + height: 16px; } + .account-menu__accounts { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + overflow-y: auto; + max-height: 240px; + position: relative; + z-index: 200; } + .account-menu__accounts::-webkit-scrollbar { + display: none; } + @media screen and (max-width: 575px) { + .account-menu__accounts { + max-height: 215px; } } + .account-menu__accounts .keyring-label { + margin-top: 5px; + background-color: #000; + color: #9b9b9b; } + .account-menu__account { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + padding: 16px 14px; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + @media screen and (max-width: 575px) { + .account-menu__account { + padding: 12px 14px; } } + .account-menu__account-info { + -webkit-box-flex: 1; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + padding-top: 4px; } + .account-menu__check-mark { + width: 14px; + margin-right: 12px; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + .account-menu__check-mark-icon { + background-image: url("images/check-white.svg"); + height: 18px; + width: 18px; + background-repeat: no-repeat; + background-position: center; + background-size: contain; + margin: 3px 0; } + .account-menu .identicon { + margin: 0 12px 0 0; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + .account-menu__name { + color: #fff; + font-size: 18px; + font-weight: 200; + line-height: 16px; } + .account-menu__balance { + color: #9b9b9b; + font-size: 14px; + line-height: 19px; } + .account-menu__action { + font-size: 16px; + line-height: 18px; + font-weight: 200; + cursor: pointer; } + +.menu { + border-radius: 4px; + background: rgba(0, 0, 0, 0.8); + -webkit-box-shadow: rgba(0, 0, 0, 0.15) 0 2px 2px 2px; + box-shadow: rgba(0, 0, 0, 0.15) 0 2px 2px 2px; + min-width: 150px; + color: #fff; } + .menu__item { + padding: 18px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-flow: row nowrap; + flex-flow: row nowrap; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + position: relative; + z-index: 200; + font-weight: 200; } + @media screen and (max-width: 575px) { + .menu__item { + padding: 14px; } } + .menu__item--clickable { + cursor: pointer; } + .menu__item--clickable:hover { + background-color: rgba(255, 255, 255, 0.05); } + .menu__item--clickable:active { + background-color: rgba(255, 255, 255, 0.1); } + .menu__item__icon { + height: 16px; + width: 16px; + margin-right: 14px; } + .menu__item__text { + font-size: 16px; + line-height: 21px; } + .menu__divider { + background-color: #5d5d5d; + width: 100%; + height: 1px; } + .menu__close-area { + position: fixed; + width: 100%; + height: 100%; + top: 0; + left: 0; + z-index: 100; } + +.gas-slider { + position: relative; + width: 313px; } + .gas-slider__input { + width: 317px; + margin-left: -2px; + z-index: 2; } + .gas-slider input[type=range] { + -webkit-appearance: none !important; } + .gas-slider input[type=range]::-webkit-slider-thumb { + -webkit-appearance: none !important; + height: 26px; + width: 26px; + border: 2px solid #B8B8B8; + background-color: #FFFFFF; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); + border-radius: 50%; + position: relative; + z-index: 10; } + .gas-slider__bar { + height: 6px; + width: 313px; + background: #dedede; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + position: absolute; + top: 11px; + z-index: 0; } + .gas-slider__low, .gas-slider__high { + height: 6px; + width: 49px; + z-index: 1; } + .gas-slider__low { + background-color: #e91550; } + .gas-slider__high { + background-color: #02c9b1; } + +.settings { + position: relative; + background: #fff; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + height: auto; + overflow: auto; } + +.settings__header { + padding: 25px; } + +.settings__close-button::after { + content: '\00D7'; + font-size: 40px; + color: #9b9b9b; + position: absolute; + top: 25px; + right: 30px; + cursor: pointer; } + +.settings__error { + padding-bottom: 20px; + text-align: center; + color: #e91550; } + +.settings__content { + padding: 0 25px; } + +.settings__content-row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + padding: 10px 0 20px; } + @media screen and (max-width: 575px) { + .settings__content-row { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + padding: 10px 0; } } + +.settings__content-item { + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1; + min-width: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + padding: 0 5px; + height: 71px; } + @media screen and (max-width: 575px) { + .settings__content-item { + height: initial; + padding: 5px 0; } } + .settings__content-item--without-height { + height: initial; } + +.settings__content-item-col { + max-width: 300px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; } + @media screen and (max-width: 575px) { + .settings__content-item-col { + max-width: 100%; + width: 100%; } } + +.settings__content-description { + font-size: 14px; + color: #9b9b9b; + padding-top: 5px; } + +.settings__input { + padding-left: 10px; + font-size: 14px; + height: 40px; + border: 1px solid #dedede; } + +.settings__input::-webkit-input-placeholder { + font-weight: 100; + color: #9b9b9b; } + +.settings__input::-moz-placeholder { + font-weight: 100; + color: #9b9b9b; } + +.settings__input:-ms-input-placeholder { + font-weight: 100; + color: #9b9b9b; } + +.settings__input:-moz-placeholder { + font-weight: 100; + color: #9b9b9b; } + +.settings__provider-wrapper { + font-size: 16px; + border: 1px solid #dedede; + border-radius: 2px; + padding: 15px; + background-color: #fff; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; } + +.settings__provider-icon { + height: 10px; + width: 10px; + margin-right: 10px; + border-radius: 10px; } + +.settings__rpc-save-button { + -ms-flex-item-align: end; + align-self: flex-end; + padding: 5px; + text-transform: uppercase; + color: #9b9b9b; + cursor: pointer; } + +.settings__clear-button { + font-size: 16px; + border: 1px solid #2f9ae0; + color: #2f9ae0; + border-radius: 2px; + padding: 18px; + background-color: #fff; + text-transform: uppercase; } + +.settings__clear-button--red { + border: 1px solid #d0021b; + color: #d0021b; } + +.settings__info-logo-wrapper { + height: 80px; + margin-bottom: 20px; } + +.settings__info-logo { + max-height: 100%; + max-width: 100%; } + +.settings__info-item { + padding: 10px 0; } + +.settings__info-link-header { + padding-bottom: 15px; } + @media screen and (max-width: 575px) { + .settings__info-link-header { + padding-bottom: 5px; } } + +.settings__info-link-item { + padding: 15px 0; } + @media screen and (max-width: 575px) { + .settings__info-link-item { + padding: 5px 0; } } + +.settings__info-version-number { + padding-top: 5px; + font-size: 13px; + color: #9b9b9b; } + +.settings__info-about { + color: #9b9b9b; + margin-bottom: 15px; } + +.settings__info-link { + color: #2f9ae0; } + +.settings__info-separator { + margin: 15px 0; + width: 80px; + border-color: #dedede; + border: none; + height: 1px; + background-color: #dedede; + color: #dedede; } + +.tab-bar { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: end; + -ms-flex-align: end; + align-items: flex-end; } + +.tab-bar__tab { + min-width: 0; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding: 15px 25px; + border-bottom: 1px solid #dedede; + -webkit-box-sizing: border-box; + box-sizing: border-box; + font-size: 18px; } + +.tab-bar__tab--active { + border-color: #000; } + +.tab-bar__grow-tab { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; } + +.simple-dropdown { + height: 56px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + border: 1px solid #dedede; + border-radius: 4px; + background-color: #fff; + font-size: 16px; + color: #4d4d4d; + cursor: pointer; + position: relative; } + +.simple-dropdown__caret { + color: #cdcdcd; + padding: 0 10px; } + +.simple-dropdown__selected { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + padding: 0 15px; } + +.simple-dropdown__options { + z-index: 1050; + position: absolute; + height: 220px; + width: 100%; + border: 1px solid #d2d8dd; + border-radius: 4px; + background-color: #fff; + -webkit-box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.11); + box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.11); + margin-top: 10px; + overflow-y: scroll; + left: 0; + top: 100%; } + +.simple-dropdown__option { + padding: 10px; } + .simple-dropdown__option:hover { + background-color: #efefef; } + +.simple-dropdown__option--selected { + background-color: #dedede; } + .simple-dropdown__option--selected:hover { + background-color: #dedede; + cursor: default; } + +.simple-dropdown__close-area { + position: fixed; + top: 0; + left: 0; + z-index: 1000; + width: 100%; + height: 100%; } + +.request-signature__container { + width: 380px; + border-radius: 8px; + background-color: #fff; + -webkit-box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); + box-shadow: 0 2px 4px 0 rgba(0, 0, 0, 0.08); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + z-index: 25; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + font-family: Roboto; + position: relative; + height: 100%; } + @media screen and (max-width: 575px) { + .request-signature__container { + width: 100%; + top: 0; + -webkit-box-shadow: none; + box-shadow: none; } } + @media screen and (min-width: 576px) { + .request-signature__container { + max-height: 620px; } } + +.request-signature__header { + height: 64px; + width: 100%; + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column; + flex-flow: column; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; } + +.request-signature__header-background { + position: absolute; + background-color: #e9edf0; + z-index: 2; + width: 100%; + height: 100%; } + +.request-signature__header__text { + height: 29px; + width: 179px; + color: #5B5D67; + font-family: Roboto; + font-size: 22px; + font-weight: 300; + line-height: 29px; + z-index: 3; } + +.request-signature__header__tip-container { + width: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; } + +.request-signature__header__tip { + height: 25px; + width: 25px; + background: #e9edf0; + -webkit-transform: rotate(45deg); + transform: rotate(45deg); + position: absolute; + bottom: -8px; + z-index: 1; } + +.request-signature__account-info { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; + margin-top: 18px; + margin-bottom: 20px; } + +.request-signature__account { + color: #9b9b9b; + margin-left: 17px; } + +.request-signature__account-text { + font-size: 14px; } + +.request-signature__balance { + color: #9b9b9b; + margin-right: 17px; + width: 124px; } + +.request-signature__balance-text { + text-align: right; + font-size: 14px; } + +.request-signature__balance-value { + text-align: right; + margin-top: 2.5px; } + +.request-signature__request-icon { + margin-top: 25px; } + +.request-signature__body { + width: 100%; + height: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column; + flex-flow: column; + -webkit-box-flex: 1; + -ms-flex: 1 1 auto; + flex: 1 1 auto; + height: 0; } + +.request-signature__request-info { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; } + +.request-signature__headline { + height: 48px; + width: 240px; + color: #4d4d4d; + font-family: Roboto; + font-size: 18px; + font-weight: 300; + line-height: 24px; + text-align: center; + margin-top: 20px; } + +.request-signature__notice, .request-signature__warning { + font-family: "Avenir Next"; + font-size: 14px; + line-height: 19px; + text-align: center; + margin-top: 41px; + margin-bottom: 11px; + width: 100%; } + +.request-signature__notice { + color: #9b9b9b; } + +.request-signature__warning { + color: #e91550; } + +.request-signature__rows { + height: 100%; + overflow-y: scroll; + overflow-x: hidden; + border-top: 1px solid #d2d8dd; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column; + flex-flow: column; } + +.request-signature__row { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-flow: column; + flex-flow: column; } + +.request-signature__row-title { + width: 80px; + color: #9b9b9b; + font-family: Roboto; + font-size: 16px; + line-height: 22px; + margin-top: 12px; + margin-left: 18px; + width: 100%; } + +.request-signature__row-value { + color: #5d5d5d; + font-family: Roboto; + font-size: 14px; + line-height: 19px; + width: 100%; + overflow-wrap: break-word; + border-bottom: 1px solid #d2d8dd; + padding: 6px 18px 15px; } + +.request-signature__footer { + width: 100%; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: space-evenly; + -ms-flex-pack: space-evenly; + justify-content: space-evenly; + font-size: 22px; + position: relative; + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + border-top: 1px solid #d2d8dd; } + .request-signature__footer__cancel-button, .request-signature__footer__sign-button { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-flex: 1; + -ms-flex: 1 0 auto; + flex: 1 0 auto; + font-family: Roboto; + font-size: 16px; + font-weight: 300; + height: 55px; + line-height: 32px; + cursor: pointer; + border-radius: 2px; + -webkit-box-shadow: none; + box-shadow: none; + max-width: 162px; + margin: 12px; } + .request-signature__footer__cancel-button { + background: none; + border: 1px solid #9b9b9b; + margin-right: 6px; } + .request-signature__footer__sign-button { + background-color: #02c9b1; + border-width: 0; + color: #fff; + margin-left: 6px; } + +.account-dropdown-mini { + height: 22px; + background-color: #fff; + font-family: Roboto; + line-height: 16px; + font-size: 12px; + width: 124px; } + .account-dropdown-mini__close-area { + position: fixed; + top: 0; + left: 0; + z-index: 1000; + width: 100%; + height: 100%; } + .account-dropdown-mini__list { + z-index: 1050; + position: absolute; + height: 180px; + width: 96pxpx; + border: 1px solid #d2d8dd; + border-radius: 4px; + background-color: #fff; + -webkit-box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.11); + box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.11); + overflow-y: scroll; } + .account-dropdown-mini .account-list-item { + margin-top: 6px; } + .account-dropdown-mini .account-list-item__account-name { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; + width: 80px; } + .account-dropdown-mini .account-list-item__top-row { + margin: 0; } + .account-dropdown-mini .account-list-item__icon { + position: initial; } + +.editable-label { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + position: relative; } + .editable-label__value { + max-width: 250px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; } + .editable-label__input { + width: 250px; + font-size: 14px; + text-align: center; + border: 1px solid #dedede; } + .editable-label__input--error { + border: 1px solid #d0021b; } + .editable-label__icon-wrapper { + position: absolute; + margin-left: 10px; + left: 100%; } + .editable-label__icon { + cursor: pointer; + color: #9b9b9b; } + +/* + Trumps + */ +/* universal */ +.app-primary .main-enter { + position: absolute; + width: 100%; } + +/* center position */ +.app-primary.from-right .main-enter-active, +.app-primary.from-left .main-enter-active { + overflow-x: hidden; + -webkit-transform: translateX(0); + transform: translateX(0); + -webkit-transition: -webkit-transform 300ms ease-in; + transition: -webkit-transform 300ms ease-in; + transition: transform 300ms ease-in; + transition: transform 300ms ease-in, -webkit-transform 300ms ease-in; } + +/* exited positions */ +.app-primary.from-left .main-leave-active { + -webkit-transform: translateX(360px); + transform: translateX(360px); + -webkit-transition: -webkit-transform 300ms ease-in; + transition: -webkit-transform 300ms ease-in; + transition: transform 300ms ease-in; + transition: transform 300ms ease-in, -webkit-transform 300ms ease-in; } + +.app-primary.from-right .main-leave-active { + -webkit-transform: translateX(-360px); + transform: translateX(-360px); + -webkit-transition: -webkit-transform 300ms ease-in; + transition: -webkit-transform 300ms ease-in; + transition: transform 300ms ease-in; + transition: transform 300ms ease-in, -webkit-transform 300ms ease-in; } + +.sidebar.from-left { + -webkit-transform: translateX(-320px); + transform: translateX(-320px); + -webkit-transition: -webkit-transform 300ms ease-in; + transition: -webkit-transform 300ms ease-in; + transition: transform 300ms ease-in; + transition: transform 300ms ease-in, -webkit-transform 300ms ease-in; } + +/* loader transitions */ +.loader-enter, +.loader-leave-active { + opacity: 0; + -webkit-transition: opacity 150 ease-in; + transition: opacity 150 ease-in; } + +.loader-enter-active, +.loader-leave { + opacity: 1; + -webkit-transition: opacity 150 ease-in; + transition: opacity 150 ease-in; } + +/* entering positions */ +.app-primary.from-right .main-enter:not(.main-enter-active) { + -webkit-transform: translateX(360px); + transform: translateX(360px); } + +.app-primary.from-left .main-enter:not(.main-enter-active) { + -webkit-transform: translateX(-360px); + transform: translateX(-360px); } + +i.fa.fa-question-circle.fa-lg.menu-icon { + font-size: 18px; } + +/* stylelint-disable */ +#buy-modal-content-footer-text { + font-family: 'DIN OT'; + font-size: 16px; } + +/* stylelint-enable */ + +/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguY3NzIiwic291cmNlcyI6WyJpbmRleC5zY3NzIiwiaXRjc3Mvc2V0dGluZ3MvaW5kZXguc2NzcyIsIml0Y3NzL3NldHRpbmdzL3ZhcmlhYmxlcy5zY3NzIiwiaXRjc3Mvc2V0dGluZ3MvdHlwb2dyYXBoeS5zY3NzIiwiaXRjc3MvdG9vbHMvaW5kZXguc2NzcyIsIml0Y3NzL3Rvb2xzL3V0aWxpdGllcy5zY3NzIiwiaXRjc3MvZ2VuZXJpYy9pbmRleC5zY3NzIiwiaXRjc3MvZ2VuZXJpYy9yZXNldC5zY3NzIiwiaXRjc3MvYmFzZS9pbmRleC5zY3NzIiwiaXRjc3Mvb2JqZWN0cy9pbmRleC5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9pbmRleC5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9idXR0b25zLnNjc3MiLCJpdGNzcy9jb21wb25lbnRzL2hlYWRlci5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9mb290ZXIuc2NzcyIsIml0Y3NzL2NvbXBvbmVudHMvbmV0d29yay5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9tb2RhbC5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9uZXd1aS1zZWN0aW9ucy5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9hY2NvdW50LWRyb3Bkb3duLnNjc3MiLCJpdGNzcy9jb21wb25lbnRzL3NlbmQuc2NzcyIsIml0Y3NzL2NvbXBvbmVudHMvY29uZmlybS5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9sb2FkaW5nLW92ZXJsYXkuc2NzcyIsIml0Y3NzL2NvbXBvbmVudHMvaGVyby1iYWxhbmNlLnNjc3MiLCJpdGNzcy9jb21wb25lbnRzL3dhbGxldC1iYWxhbmNlLnNjc3MiLCJpdGNzcy9jb21wb25lbnRzL3RyYW5zYWN0aW9uLWxpc3Quc2NzcyIsIml0Y3NzL2NvbXBvbmVudHMvc2VjdGlvbnMuc2NzcyIsIml0Y3NzL2NvbXBvbmVudHMvdG9rZW4tbGlzdC5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9hZGQtdG9rZW4uc2NzcyIsIml0Y3NzL2NvbXBvbmVudHMvY3VycmVuY3ktZGlzcGxheS5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9hY2NvdW50LW1lbnUuc2NzcyIsIml0Y3NzL2NvbXBvbmVudHMvbWVudS5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9nYXMtc2xpZGVyLnNjc3MiLCJpdGNzcy9jb21wb25lbnRzL3NldHRpbmdzLnNjc3MiLCJpdGNzcy9jb21wb25lbnRzL3RhYi1iYXIuc2NzcyIsIml0Y3NzL2NvbXBvbmVudHMvc2ltcGxlLWRyb3Bkb3duLnNjc3MiLCJpdGNzcy9jb21wb25lbnRzL3JlcXVlc3Qtc2lnbmF0dXJlLnNjc3MiLCJpdGNzcy9jb21wb25lbnRzL2FjY291bnQtZHJvcGRvd24tbWluaS5zY3NzIiwiaXRjc3MvY29tcG9uZW50cy9lZGl0YWJsZS1sYWJlbC5zY3NzIiwiaXRjc3MvdHJ1bXBzL2luZGV4LnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAgSVRDU1NcblxuICBodHRwOi8vd3d3LmNyZWF0aXZlYmxvcS5jb20vd2ViLWRlc2lnbi9tYW5hZ2UtbGFyZ2UtY3NzLXByb2plY3RzLWl0Y3NzLTEwMTUxNzUyOFxuICBodHRwczovL3d3dy54Zml2ZS5jby9ibG9nL2l0Y3NzLXNjYWxhYmxlLW1haW50YWluYWJsZS1jc3MtYXJjaGl0ZWN0dXJlL1xuICovXG5AaW1wb3J0ICcuL2l0Y3NzL3NldHRpbmdzL2luZGV4LnNjc3MnO1xuQGltcG9ydCAnLi9pdGNzcy90b29scy9pbmRleC5zY3NzJztcbkBpbXBvcnQgJy4vaXRjc3MvZ2VuZXJpYy9pbmRleC5zY3NzJztcbkBpbXBvcnQgJy4vaXRjc3MvYmFzZS9pbmRleC5zY3NzJztcbkBpbXBvcnQgJy4vaXRjc3Mvb2JqZWN0cy9pbmRleC5zY3NzJztcbkBpbXBvcnQgJy4vaXRjc3MvY29tcG9uZW50cy9pbmRleC5zY3NzJztcbkBpbXBvcnQgJy4vaXRjc3MvdHJ1bXBzL2luZGV4LnNjc3MnO1xuIiwiQGltcG9ydCAnLi92YXJpYWJsZXMuc2Nzcyc7XG5cbkBpbXBvcnQgJy4vdHlwb2dyYXBoeS5zY3NzJztcbiIsIi8qXG4gIFZhcmlhYmxlc1xuICovXG5cbi8vIEJhc2UgQ29sb3JzXG4kd2hpdGU6ICNmZmY7XG4kYmxhY2s6ICMwMDA7XG4kb3JhbmdlOiAjZmZhNTAwO1xuJHJlZDogI2YwMDtcbiRncmF5OiAjODA4MDgwO1xuXG4vKlxuICBDb2xvcnNcbiAgaHR0cDovL2NoaXIuYWcvcHJvamVjdHMvbmFtZS10aGF0LWNvbG9yXG4gKi9cbiR3aGl0ZS1saW5lbjogI2ZhZjZmMDsgLy8gZm9ybWVybHkgJ2ZhaW50IG9yYW5nZSAodGV4dGZpZWxkIHNoYWRlcyknXG4kcmFqYWg6ICNmNWMyNmQ7IC8vIGZvcm1lcmx5ICdsaWdodCBvcmFuZ2UgKGJ1dHRvbiBzaGFkZXMpJ1xuJGJ1dHRlcmN1cDogI2Y1YTYyMzsgLy8gZm9ybWVybHkgJ2Rhcmsgb3JhbmdlICh0ZXh0KSdcbiR0dW5kb3JhOiAjNGE0YTRhOyAvLyBmb3JtZXJseSAnYm9yZGVycy9mb250L2FueSBncmF5J1xuJGdhbGxlcnk6ICNlZmVmZWY7XG4kYWxhYmFzdGVyOiAjZjdmN2Y3O1xuJHNoYXJrOiAjMjIyMzJjO1xuJHdpbGQtc2FuZDogI2Y2ZjZmNjtcbiR3aGl0ZTogI2ZmZjtcbiRkdXN0eS1ncmF5OiAjOWI5YjliO1xuJGFsdG86ICNkZWRlZGU7XG4kYWxhYmFzdGVyOiAjZmFmYWZhO1xuJHNpbHZlci1jaGFsaWNlOiAjYWVhZWFlO1xuJGN1cmlvdXMtYmx1ZTogIzJmOWFlMDtcbiRjb25jcmV0ZTogI2YzZjNmMztcbiR0dW5kb3JhOiAjNGQ0ZDRkO1xuJG5pbGUtYmx1ZTogIzFiMzQ0ZDtcbiRzY29ycGlvbjogIzVkNWQ1ZDtcbiRzaWx2ZXI6ICNjZGNkY2Q7XG4kY2FyaWJiZWFuLWdyZWVuOiAjMDJjOWIxO1xuJG1vbnpvOiAjZDAwMjFiO1xuJGNyaW1zb246ICNlOTE1NTA7XG4kYmx1ZS1sYWdvb246ICMwMzg3ODk7XG4kcHVycGxlOiAjNjkwNDk2O1xuJHR1bGlwLXRyZWU6ICNlYmIzM2Y7XG4kbWFsaWJ1LWJsdWU6ICM3YWM5ZmQ7XG4kYXRoZW5zLWdyZXk6ICNlOWVkZjA7XG4kamFmZmE6ICNmMjg5MzA7XG4kZ2V5c2VyOiAjZDJkOGRkO1xuXG4vKlxuICBaLUluZGljaWVzXG4gKi9cbiRkcm9wZG93bi16LWluZGV4OiAzMDtcbiR0b2tlbi1pY29uLXotaW5kZXg6IDE1O1xuJGNvbnRhaW5lci16LWluZGV4OiAxNTtcbiRoZWFkZXItei1pbmRleDogMTI7XG4kbW9iaWxlLWhlYWRlci16LWluZGV4OiAyNjtcbiRtYWluLWNvbnRhaW5lci16LWluZGV4OiAxODtcbiRzZW5kLWNhcmQtei1pbmRleDogMjA7XG4kc2lkZWJhci16LWluZGV4OiAyNjtcbiRzaWRlYmFyLW92ZXJsYXktei1pbmRleDogMjU7XG5cbi8qXG4gIFogSW5kaWNpZXMgLSBDdXJyZW50XG4gIGFwcCAtIDExXG4gIGhleC9ibiBhcyBkZWNpbWFsIGlucHV0IC0gMSAtIHJlbW92ZT9cbiAgZHJvcGRvd24gLSAxMVxuICBsb2FkaW5nIC0gMTAgLSBoaWdoZXI/XG4gIG1hc2NvdCAtIDAgLSByZW1vdmU/XG4gKi9cblxuLypcbiAgUmVzcG9uc2l2ZSBCcmVha3BvaW50c1xuICovXG4kYnJlYWstc21hbGw6IDU3NXB4O1xuJGJyZWFrLW1pZHBvaW50OiA3ODBweDtcbiRicmVhay1sYXJnZTogNTc2cHg7XG5cblxuJHByaW1hcnktZm9udC10eXBlOiBSb2JvdG87XG5cbiIsIkBpbXBvcnQgdXJsKCdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9Um9ib3RvOjEwMCwzMDAsNDAwLDUwMCw3MDAsOTAwJyk7XG5cbkBpbXBvcnQgdXJsKCdodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS80LjQuMC9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3MnKTtcblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCBSZWd1bGFyJztcbiAgc3JjOiB1cmwoJy9mb250cy9Nb250c2VycmF0L01vbnRzZXJyYXQtUmVndWxhci53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gIHNyYzogdXJsKCcvZm9udHMvTW9udHNlcnJhdC9Nb250c2VycmF0LVJlZ3VsYXIudHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtc2l6ZTogJ3NtYWxsJztcbn1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnTW9udHNlcnJhdCBCb2xkJztcbiAgc3JjOiB1cmwoJy9mb250cy9Nb250c2VycmF0L01vbnRzZXJyYXQtQm9sZC53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gIHNyYzogdXJsKCcvZm9udHMvTW9udHNlcnJhdC9Nb250c2VycmF0LUJvbGQudHRmJykgZm9ybWF0KCd0cnVldHlwZScpO1xuICBmb250LXdlaWdodDogNDAwO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG59XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ01vbnRzZXJyYXQgTGlnaHQnO1xuICBzcmM6IHVybCgnL2ZvbnRzL01vbnRzZXJyYXQvTW9udHNlcnJhdC1MaWdodC53b2ZmJykgZm9ybWF0KCd3b2ZmJyk7XG4gIHNyYzogdXJsKCcvZm9udHMvTW9udHNlcnJhdC9Nb250c2VycmF0LUxpZ2h0LnR0ZicpIGZvcm1hdCgndHJ1ZXR5cGUnKTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdNb250c2VycmF0IFVsdHJhTGlnaHQnO1xuICBzcmM6IHVybCgnL2ZvbnRzL01vbnRzZXJyYXQvTW9udHNlcnJhdC1VbHRyYUxpZ2h0LndvZmYnKSBmb3JtYXQoJ3dvZmYnKTtcbiAgc3JjOiB1cmwoJy9mb250cy9Nb250c2VycmF0L01vbnRzZXJyYXQtVWx0cmFMaWdodC50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnRElOIE9UJztcbiAgc3JjOiB1cmwoJy9mb250cy9ESU5fT1QvRElOT1QtMi5vdGYnKSBmb3JtYXQoJ29wZW50eXBlJyk7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnRElOIE9UIExpZ2h0JztcbiAgc3JjOiB1cmwoJy9mb250cy9ESU5fT1QvRElOT1QtMi5vdGYnKSBmb3JtYXQoJ29wZW50eXBlJyk7XG4gIGZvbnQtd2VpZ2h0OiAyMDA7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cblxuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiAnRElOIE5FWFQnO1xuICBzcmM6IHVybCgnL2ZvbnRzL0RJTiBORVhUL0RJTiBORVhUIFcwMSBSZWd1bGFyLm90ZicpIGZvcm1hdCgnb3BlbnR5cGUnKTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdESU4gTkVYVCBMaWdodCc7XG4gIHNyYzogdXJsKCcvZm9udHMvRElOIE5FWFQvRElOIE5FWFQgVzEwIExpZ2h0Lm90ZicpIGZvcm1hdCgnb3BlbnR5cGUnKTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6ICdMYXRvJztcbiAgc3JjOiB1cmwoJy9mb250cy9MYXRvL0xhdG8tUmVndWxhci50dGYnKSBmb3JtYXQoJ3RydWV0eXBlJyk7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbn1cbiIsIkBpbXBvcnQgJy4vdXRpbGl0aWVzLnNjc3MnO1xuIiwiLypcbiAgVXRpbGl0eSBDbGFzc2VzXG4gKi9cblxuLyogY29sb3IgKi9cblxuLmNvbG9yLW9yYW5nZSB7XG4gIGNvbG9yOiAjZjc4NjFjOyAvLyBUT0RPOiBtb3ZlIHRvIHNldHRpbmdzL3ZhcmlhYmxlc1xufVxuXG4uY29sb3ItZm9yZXN0IHtcbiAgY29sb3I6ICMwYTU0NDg7IC8vIFRPRE86IG1vdmUgdG8gc2V0dGluZ3MvdmFyaWFibGVzXG59XG5cbi8qIGxpYiAqL1xuXG4uZnVsbC1zaXplIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmZ1bGwtd2lkdGgge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmZ1bGwtZmxleC1oZWlnaHQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4OiAxIDEgYXV0bztcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLmZ1bGwtaGVpZ2h0IHtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4uZmxleC1jb2x1bW4ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4uc3BhY2UtYmV0d2VlbiB7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2Vlbjtcbn1cblxuLnNwYWNlLWFyb3VuZCB7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xufVxuXG4uZmxleC1jb2x1bW4tYm90dG9tIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbi1yZXZlcnNlO1xufVxuXG4uZmxleC1yb3cge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xufVxuXG4uZmxleC1zcGFjZS1iZXR3ZWVuIHtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4uZmxleC1zcGFjZS1hcm91bmQge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbn1cblxuLmZsZXgtcmlnaHQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuXG4uZmxleC1sZWZ0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xufVxuXG4uZmxleC1maXhlZCB7XG4gIGZsZXg6IG5vbmU7XG59XG5cbi5mbGV4LWJhc2lzLWF1dG8ge1xuICBmbGV4LWJhc2lzOiBhdXRvO1xufVxuXG4uZmxleC1ncm93IHtcbiAgZmxleDogMSAxIGF1dG87XG59XG5cbi5mbGV4LXdyYXAge1xuICBmbGV4LXdyYXA6IHdyYXA7XG59XG5cbi5mbGV4LWNlbnRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uZmxleC1qdXN0aWZ5LWNlbnRlciB7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4uZmxleC1hbGlnbi1jZW50ZXIge1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uZmxleC1zZWxmLWVuZCB7XG4gIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xufVxuXG4uZmxleC1zZWxmLXN0cmV0Y2gge1xuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xufVxuXG4uZmxleC12ZXJ0aWNhbCB7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi56LWJ1bXAge1xuICB6LWluZGV4OiAxO1xufVxuXG4uc2VsZWN0LW5vbmUge1xuICBjdXJzb3I6IGluaGVyaXQ7XG4gIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gIC1tcy11c2VyLXNlbGVjdDogbm9uZTtcbiAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi5wb2ludGVyIHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uY3Vyc29yLXBvaW50ZXIge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSA1MG1zIGVhc2UtaW4tb3V0O1xufVxuXG4uY3Vyc29yLXBvaW50ZXI6aG92ZXIge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG59XG5cbi5jdXJzb3ItcG9pbnRlcjphY3RpdmUge1xuICB0cmFuc2Zvcm06IHNjYWxlKC45NSk7XG59XG5cbi5jdXJzb3ItZGlzYWJsZWQge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4ubWFyZ2luLWJvdHRvbS1zbWwge1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG4ubWFyZ2luLWJvdHRvbS1tZWQge1xuICBtYXJnaW4tYm90dG9tOiA0MHB4O1xufVxuXG4ubWFyZ2luLXJpZ2h0LWxlZnQge1xuICBtYXJnaW46IDAgMjBweDtcbn1cblxuLmJvbGQge1xuICBmb250LXdlaWdodDogNzAwO1xufVxuXG4udGV4dC10cmFuc2Zvcm0tdXBwZXJjYXNlIHtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLmZvbnQtc21hbGwge1xuICBmb250LXNpemU6IDEycHg7XG59XG5cbi5mb250LW1lZGl1bSB7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG59XG5cbmhyLmhvcml6b250YWwtbGluZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IDFweDtcbiAgYm9yZGVyOiAwO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2NjYztcbiAgbWFyZ2luOiAxZW0gMDtcbiAgcGFkZGluZzogMDtcbn1cblxuLmhvdmVyLXdoaXRlOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogJHdoaXRlO1xufVxuXG4ucmVkLWRvdCB7XG4gIGJhY2tncm91bmQ6ICNlOTE1NTA7XG4gIGNvbG9yOiAkd2hpdGU7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG59XG5cbi5kaWFtb25kIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICBiYWNrZ3JvdW5kOiAjMDM4Nzg5O1xufVxuXG4uaG9sbG93LWRpYW1vbmQge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gIGJvcmRlcjogM3B4IHNvbGlkICM2OTA0OTY7XG59XG5cbi5nb2xkZW4tc3F1YXJlIHtcbiAgYmFja2dyb3VuZDogI2ViYjMzZjtcbn1cblxuLnBlbmRpbmctZG90IHtcbiAgYmFja2dyb3VuZDogJHJlZDtcbiAgbGVmdDogMTRweDtcbiAgdG9wOiAxNHB4O1xuICBjb2xvcjogJHdoaXRlO1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIG1pbi13aWR0aDogMjBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZzogNHB4O1xuICB6LWluZGV4OiAxO1xufVxuXG4ua2V5cmluZy1sYWJlbCB7XG4gIHotaW5kZXg6IDE7XG4gIGZvbnQtc2l6ZTogOHB4O1xuICBsaW5lLWhlaWdodDogOHB4O1xuICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCk7XG4gIGNvbG9yOiAjZmZmO1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICBwYWRkaW5nOiA0cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgaGVpZ2h0OiAxNXB4O1xufVxuXG4uZXRoZXItYmFsYW5jZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi50YWJTZWN0aW9uIHtcbiAgbWluLXdpZHRoOiAzNTBweDtcbn1cblxuLm1lbnUtaWNvbiB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAxMnB4O1xuICBtaW4td2lkdGg6IDEycHg7XG4gIG1hcmdpbjogMTNweDtcbn1cblxuLmV0aGVyLWljb24ge1xuICBiYWNrZ3JvdW5kOiByZ2IoMCwgMTYzLCA2OCk7XG4gIGJvcmRlci1yYWRpdXM6IDIwcHg7XG59XG5cbi50ZXN0bmV0LWljb24ge1xuICBiYWNrZ3JvdW5kOiAjMjQ2NWUxO1xufVxuXG4uZHJvcC1tZW51LWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4uaW52aXNpYmxlIHtcbiAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuXG4ub25lLWxpbmUtY29uY2F0IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbi5jcml0aWNhbC1lcnJvciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbWFyZ2luLXRvcDogMjBweDtcbiAgY29sb3I6ICRyZWQ7XG59XG5cbi8qXG4gIE1pc2NcbiAqL1xuXG4vLyBUT0RPOiBtb3ZlIGludG8gY29tcG9uZW50LWxldmVsIGNvbnRleHR1YWwgJ2FjdGl2ZScgc3RhdGVcbi5sZXR0ZXItc3BhY2V5IHtcbiAgbGV0dGVyLXNwYWNpbmc6IC4xZW07XG59XG5cbi5hY3RpdmUge1xuICBjb2xvcjogIzkwOTA5MDtcbn1cblxuLmNoZWNrIHtcbiAgbWFyZ2luLWxlZnQ6IDdweDtcbiAgY29sb3I6ICNmNzg2MWM7XG4gIGZsZXg6IDEgMCBhdXRvO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xufVxuIiwiLypcbiAgR2VuZXJpY1xuICovXG5cbkBpbXBvcnQgJy4vcmVzZXQuc2Nzcyc7XG5cbioge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG5odG1sLFxuYm9keSB7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG8sIEFyaWFsO1xuICBjb2xvcjogIzRkNGQ0ZDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNGVtO1xuICBiYWNrZ3JvdW5kOiAjZjdmN2Y3O1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG59XG5cbmh0bWwge1xuICBtaW4taGVpZ2h0OiA1MDBweDtcbn1cblxuLmFwcC1yb290IHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uYXBwLXByaW1hcnkge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuXG5pbnB1dDpmb2N1cyxcbnRleHRhcmVhOmZvY3VzIHtcbiAgb3V0bGluZTogbm9uZTtcbn1cblxuLyogc3R5bGVsaW50LWRpc2FibGUgKi9cbiNhcHAtY29udGVudCB7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgaGVpZ2h0OiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgfVxufVxuLyogc3R5bGVsaW50LWVuYWJsZSAqL1xuXG5hIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogaW5oZXJpdDtcbn1cblxuYTpob3ZlciB7XG4gIGNvbG9yOiAjZGY2YjBlO1xufVxuXG5pbnB1dC5sYXJnZS1pbnB1dCxcbnRleHRhcmVhLmxhcmdlLWlucHV0IHtcbiAgcGFkZGluZzogOHB4O1xufVxuXG5pbnB1dC5sYXJnZS1pbnB1dCB7XG4gIGhlaWdodDogMzZweDtcbn1cbiIsIi8qIGh0dHA6Ly9tZXllcndlYi5jb20vZXJpYy90b29scy9jc3MvcmVzZXQvXG4gICB2Mi4wIHwgMjAxMTAxMjZcbiAgIExpY2Vuc2U6IG5vbmUgKHB1YmxpYyBkb21haW4pXG4qL1xuXG5odG1sLFxuYm9keSxcbmRpdixcbnNwYW4sXG5hcHBsZXQsXG5vYmplY3QsXG5pZnJhbWUsXG5oMSxcbmgyLFxuaDMsXG5oNCxcbmg1LFxuaDYsXG5wLFxuYmxvY2txdW90ZSxcbnByZSxcbmEsXG5hYmJyLFxuYWNyb255bSxcbmFkZHJlc3MsXG5iaWcsXG5jaXRlLFxuY29kZSxcbmRlbCxcbmRmbixcbmVtLFxuaW1nLFxuaW5zLFxua2JkLFxucSxcbnMsXG5zYW1wLFxuc21hbGwsXG5zdHJpa2UsXG5zdHJvbmcsXG5zdWIsXG5zdXAsXG50dCxcbnZhcixcbmIsXG51LFxuaSxcbmNlbnRlcixcbmRsLFxuZHQsXG5kZCxcbm9sLFxudWwsXG5saSxcbmZpZWxkc2V0LFxuZm9ybSxcbmxhYmVsLFxubGVnZW5kLFxudGFibGUsXG5jYXB0aW9uLFxudGJvZHksXG50Zm9vdCxcbnRoZWFkLFxudHIsXG50aCxcbnRkLFxuYXJ0aWNsZSxcbmFzaWRlLFxuY2FudmFzLFxuZGV0YWlscyxcbmVtYmVkLFxuZmlndXJlLFxuZmlnY2FwdGlvbixcbmZvb3RlcixcbmhlYWRlcixcbmhncm91cCxcbm1lbnUsXG5uYXYsXG5vdXRwdXQsXG5ydWJ5LFxuc2VjdGlvbixcbnN1bW1hcnksXG50aW1lLFxubWFyayxcbmF1ZGlvLFxudmlkZW8ge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICAvKiBzdHlsZWxpbnQtZGlzYWJsZSAqL1xuICBmb250OiBpbmhlcml0O1xuICAvKiBzdHlsZWxpbnQtZW5hYmxlICovXG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTtcbn1cblxuLyogSFRNTDUgZGlzcGxheS1yb2xlIHJlc2V0IGZvciBvbGRlciBicm93c2VycyAqL1xuXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSAqL1xuXG5hcnRpY2xlLFxuYXNpZGUsXG5kZXRhaWxzLFxuZmlnY2FwdGlvbixcbmZpZ3VyZSxcbmZvb3RlcixcbmhlYWRlcixcbmhncm91cCxcbm1lbnUsXG5uYXYsXG5zZWN0aW9uIHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG5cbmJvZHkge1xuICBsaW5lLWhlaWdodDogMTtcbn1cblxub2wsXG51bCB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG5cbmJsb2NrcXVvdGUsXG5xIHtcbiAgcXVvdGVzOiBub25lO1xufVxuXG5ibG9ja3F1b3RlOmJlZm9yZSxcbmJsb2NrcXVvdGU6YWZ0ZXIsXG5xOmJlZm9yZSxcbnE6YWZ0ZXIge1xuICBjb250ZW50OiAnJztcbiAgY29udGVudDogbm9uZTtcbn1cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDtcbn1cblxuYnV0dG9uIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi8qIHN0eWxlbGludC1lbmFibGUgKi9cbiIsIi8vIEJhc2VcbiIsIi8vIE9iamVjdHNcbiIsIkBpbXBvcnQgJy4vYnV0dG9ucy5zY3NzJztcblxuQGltcG9ydCAnLi9oZWFkZXIuc2Nzcyc7XG5cbkBpbXBvcnQgJy4vZm9vdGVyLnNjc3MnO1xuXG5AaW1wb3J0ICcuL25ldHdvcmsuc2Nzcyc7XG5cbkBpbXBvcnQgJy4vbW9kYWwuc2Nzcyc7XG5cbkBpbXBvcnQgJy4vbmV3dWktc2VjdGlvbnMuc2Nzcyc7XG5cbkBpbXBvcnQgJy4vYWNjb3VudC1kcm9wZG93bi5zY3NzJztcblxuQGltcG9ydCAnLi9zZW5kLnNjc3MnO1xuXG5AaW1wb3J0ICcuL2NvbmZpcm0uc2Nzcyc7XG5cbkBpbXBvcnQgJy4vbG9hZGluZy1vdmVybGF5LnNjc3MnO1xuXG4vLyBCYWxhbmNlc1xuQGltcG9ydCAnLi9oZXJvLWJhbGFuY2Uuc2Nzcyc7XG5cbkBpbXBvcnQgJy4vd2FsbGV0LWJhbGFuY2Uuc2Nzcyc7XG5cbi8vIFR4IExpc3QgYW5kIFNlY3Rpb25zXG5AaW1wb3J0ICcuL3RyYW5zYWN0aW9uLWxpc3Quc2Nzcyc7XG5cbkBpbXBvcnQgJy4vc2VjdGlvbnMuc2Nzcyc7XG5cbkBpbXBvcnQgJy4vdG9rZW4tbGlzdC5zY3NzJztcblxuQGltcG9ydCAnLi9hZGQtdG9rZW4uc2Nzcyc7XG5cbkBpbXBvcnQgJy4vY3VycmVuY3ktZGlzcGxheS5zY3NzJztcblxuQGltcG9ydCAnLi9hY2NvdW50LW1lbnUuc2Nzcyc7XG5cbkBpbXBvcnQgJy4vbWVudS5zY3NzJztcblxuQGltcG9ydCAnLi9nYXMtc2xpZGVyLnNjc3MnO1xuXG5AaW1wb3J0ICcuL3NldHRpbmdzLnNjc3MnO1xuXG5AaW1wb3J0ICcuL3RhYi1iYXIuc2Nzcyc7XG5cbkBpbXBvcnQgJy4vc2ltcGxlLWRyb3Bkb3duLnNjc3MnO1xuXG5AaW1wb3J0ICcuL3JlcXVlc3Qtc2lnbmF0dXJlLnNjc3MnO1xuXG5AaW1wb3J0ICcuL2FjY291bnQtZHJvcGRvd24tbWluaS5zY3NzJztcblxuQGltcG9ydCAnLi9lZGl0YWJsZS1sYWJlbC5zY3NzJztcbiIsIi8qXG4gIEJ1dHRvbnNcbiAqL1xuXG4uYnRuLWdyZWVuIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAyYzliMTsgLy8gVE9ETzogcmV1c2FibGUgY29sb3IgaW4gY29sb3JzLmNzc1xufVxuXG5idXR0b24uYnRuLWNsZWFyIHtcbiAgYmFja2dyb3VuZDogJHdoaXRlO1xuICBib3JkZXI6IDFweCBzb2xpZDtcbn1cblxuLy8gTm8gbG9uZ2VyIHVzZWQgaW4gZmxhdCBkZXNpZ24sIHJlbW92ZSB3aGVuIG1vZGFsIGJ1dHRvbnMgZG9uZVxuLy8gZGl2LndhbGxldC1idG4ge1xuLy8gICBib3JkZXI6IDFweCBzb2xpZCByZ2IoOTEsIDkzLCAxMDMpO1xuLy8gICBib3JkZXItcmFkaXVzOiAycHg7XG4vLyAgIGhlaWdodDogMzBweDtcbi8vICAgd2lkdGg6IDc1cHg7XG4vLyAgIGZvbnQtc2l6ZTogMC44ZW07XG4vLyAgIHRleHQtYWxpZ246IGNlbnRlcjtcbi8vICAgbGluZS1oZWlnaHQ6IDI1cHg7XG4vLyB9XG5cbi8vIC5idG4tcmVkIHtcbi8vICAgYmFja2dyb3VuZDogcmdiYSgyNTQsIDM1LCAxNywgMSk7XG4vLyAgIGJveC1zaGFkb3c6IDBweCAzcHggNnB4IHJnYmEoMjU0LCAzNSwgMTcsIDAuMzYpO1xuLy8gfVxuXG5idXR0b25bZGlzYWJsZWRdLFxuaW5wdXRbdHlwZT1cInN1Ym1pdFwiXVtkaXNhYmxlZF0ge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICBvcGFjaXR5OiAuNTtcbiAgLy8gYmFja2dyb3VuZDogcmdiYSgxOTcsIDE5NywgMTk3LCAxKTtcbiAgLy8gYm94LXNoYWRvdzogMCAzcHggNnB4IHJnYmEoMTk3LCAxOTcsIDE5NywgLjM2KTtcbn1cblxuLy8gYnV0dG9uLnNwYWNlZCB7XG4vLyAgIG1hcmdpbjogMnB4O1xuLy8gfVxuXG4vLyBidXR0b246bm90KFtkaXNhYmxlZF0pOmhvdmVyLCBpbnB1dFt0eXBlPVwic3VibWl0XCJdOm5vdChbZGlzYWJsZWRdKTpob3ZlciB7XG4vLyAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbi8vIH1cbi8vIGJ1dHRvbjpub3QoW2Rpc2FibGVkXSk6YWN0aXZlLCBpbnB1dFt0eXBlPVwic3VibWl0XCJdOm5vdChbZGlzYWJsZWRdKTphY3RpdmUge1xuLy8gICB0cmFuc2Zvcm06IHNjYWxlKDAuOTUpO1xuLy8gfVxuXG5idXR0b24ucHJpbWFyeSB7XG4gIHBhZGRpbmc6IDhweCAxMnB4O1xuICBiYWNrZ3JvdW5kOiAjZjc4NjFjO1xuICBib3gtc2hhZG93OiAwIDNweCA2cHggcmdiYSgyNDcsIDEzNCwgMjgsIC4zNik7XG4gIGNvbG9yOiAkd2hpdGU7XG4gIGZvbnQtc2l6ZTogMS4xZW07XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi5idG4tbGlnaHQge1xuICBwYWRkaW5nOiA4cHggMTJweDtcbiAgLy8gYmFja2dyb3VuZDogI0ZGRkZGRjsgLy8gJGJnLXdoaXRlXG4gIGJveC1zaGFkb3c6IDAgM3B4IDZweCByZ2JhKDI0NywgMTM0LCAyOCwgLjM2KTtcbiAgY29sb3I6ICM1ODVkNjc7IC8vIFRPRE86IG1ha2UgcmV1c2FibGUgbGlnaHQgYnV0dG9uIGNvbG9yXG4gIGZvbnQtc2l6ZTogMS4xZW07XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgYm9yZGVyOiAxcHggc29saWQgIzk3OTc5NzsgLy8gI1RPRE86IG1ha2UgcmV1c2FibGUgbGlnaHQgYm9yZGVyIGNvbG9yXG4gIG9wYWNpdHk6IC41O1xufVxuXG4vLyBUT0RPOiBjbGVhbnVwOiBub3QgdXNlZCBhbnl3aGVyZVxuYnV0dG9uLmJ0bi10aGluIHtcbiAgYm9yZGVyOiAxcHggc29saWQ7XG4gIGJvcmRlci1jb2xvcjogIzRkNGQ0ZDtcbiAgY29sb3I6ICM0ZDRkNGQ7XG4gIGJhY2tncm91bmQ6IHJnYigyNTUsIDE3NCwgNDEpO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIG1pbi13aWR0aDogMjAwcHg7XG4gIG1hcmdpbjogMTJweCAwO1xuICBwYWRkaW5nOiA2cHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbn1cblxuLmJ0bi1zZWNvbmRhcnkge1xuICBib3JkZXI6IDFweCBzb2xpZCAjOTc5Nzk3O1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBsaW5lLWhlaWdodDogMjRweDtcbiAgcGFkZGluZzogMTZweCA0MnB4O1xuXG4gICZbZGlzYWJsZWRdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGUgIWltcG9ydGFudDtcbiAgICBvcGFjaXR5OiAuNTtcbiAgfVxufVxuXG4uYnRuLXRlcnRpYXJ5IHtcbiAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIHBhZGRpbmc6IDE2cHggNDJweDtcbn1cbiIsIi5hcHAtaGVhZGVyIHtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgYmFja2dyb3VuZDogJGdhbGxlcnk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgei1pbmRleDogJGhlYWRlci16LWluZGV4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTc1cHgpIHtcbiAgICBwYWRkaW5nOiAxMnB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDFweCByZ2JhKDAsIDAsIDAsIC4wOCk7XG4gICAgei1pbmRleDogJG1vYmlsZS1oZWFkZXItei1pbmRleDtcbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gICAgaGVpZ2h0OiA3NXB4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29udGVudDogJyc7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMzJweDtcbiAgICAgIGJhY2tncm91bmQ6ICRnYWxsZXJ5O1xuICAgICAgYm90dG9tOiAtMzJweDtcbiAgICB9XG4gIH1cblxuICAubWV0YWZveC1pY29uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cblxuLmFwcC1oZWFkZXItY29udGVudHMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNi45dmg7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTc1cHgpIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1NzZweCkge1xuICAgIHdpZHRoOiA4NXZ3O1xuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY5cHgpIHtcbiAgICB3aWR0aDogODB2dztcbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODFweCkge1xuICAgIHdpZHRoOiA2NXZ3O1xuICB9XG59XG5cbi5hcHAtaGVhZGVyIGgxIHtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgY29sb3I6ICMyMjIzMmM7IC8vICRzaGFya1xuICBsaW5lLWhlaWdodDogMjlweDtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1NzVweCkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuaDIucGFnZS1zdWJ0aXRsZSB7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiAjYWVhZWFlO1xuICBmb250LXNpemU6IDFlbTtcbiAgbWFyZ2luOiAxMnB4O1xufVxuXG4ubmV0d29yay1jb21wb25lbnQtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5sZWZ0LW1lbnUtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmhlYWRlcl9fcmlnaHQtYWN0aW9ucyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAuaWRlbnRpY29uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cbiIsIi5hcHAtZm9vdGVyIHtcbiAgcGFkZGluZy1ib3R0b206IDEwcHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG4iLCIubmV0d29yay1jb21wb25lbnQtLWRpc2FibGVkIHtcbiAgLy8gYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50O1xuICBjdXJzb3I6IGRlZmF1bHQ7XG5cbiAgLmZhLWNhcmV0LWRvd24ge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cblxuLm5ldHdvcmstY29tcG9uZW50LnBvaW50ZXIge1xuICBib3JkZXI6IDFweCBzb2xpZCAkc2hhcms7XG4gIGJvcmRlci1yYWRpdXM6IDgycHg7XG4gIHBhZGRpbmc6IDZweDtcbiAgZmxleDogMCAwIGF1dG87XG5cbiAgJi5ldGhlcmV1bS1uZXR3b3JrIHtcbiAgICBib3JkZXItY29sb3I6IHJnYigzLCAxMzUsIDEzNyk7XG5cbiAgICAubWVudS1pY29uLWNpcmNsZSBkaXYge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgzLCAxMzUsIDEzNywgLjcpICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgJi5yb3BzdGVuLXRlc3QtbmV0d29yayB7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2IoMjMzLCAyMSwgODApO1xuXG4gICAgLm1lbnUtaWNvbi1jaXJjbGUgZGl2IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjMzLCAyMSwgODAsIC43KSAhaW1wb3J0YW50O1xuICAgIH1cbiAgfVxuXG4gICYua292YW4tdGVzdC1uZXR3b3JrIHtcbiAgICBib3JkZXItY29sb3I6IHJnYigxMDUsIDQsIDE1MCk7XG5cbiAgICAubWVudS1pY29uLWNpcmNsZSBkaXYge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMDUsIDQsIDE1MCwgLjcpICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG5cbiAgJi5yaW5rZWJ5LXRlc3QtbmV0d29yayB7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2IoMjM1LCAxNzksIDYzKTtcblxuICAgIC5tZW51LWljb24tY2lyY2xlIGRpdiB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDIzNSwgMTc5LCA2MywgLjcpICFpbXBvcnRhbnQ7XG4gICAgfVxuICB9XG59XG5cbi5kcm9wZG93bi1tZW51LWl0ZW0ge1xuICAubWVudS1pY29uLWNpcmNsZSxcbiAgLm1lbnUtaWNvbi1jaXJjbGUtLWFjdGl2ZSB7XG4gICAgbWFyZ2luOiAwIDE0cHg7XG4gIH1cbn1cblxuLm5ldHdvcmstaW5kaWNhdG9yIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZm9udC1zaXplOiAuNmVtO1xuXG4gIC5mYS1jYXJldC1kb3duIHtcbiAgICBsaW5lLWhlaWdodDogMTVweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgcGFkZGluZzogMCA0cHg7XG4gIH1cbn1cblxuLm5ldHdvcmstbmFtZSB7XG4gIGxpbmUtaGVpZ2h0OiAxNXB4O1xuICBwYWRkaW5nOiAwIDRweDtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgZm9udC1zaXplOiAxMnB4O1xuICBmbGV4OiAxIDAgYXV0bztcbn1cblxuLm5ldHdvcmstZHJvcHBvIHtcbiAgcmlnaHQ6IDJweDtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1NzZweCkge1xuICAgIHJpZ2h0OiBjYWxjKCgoMTAwJSAtIDg1dncpIC8gMikgKyAycHgpO1xuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY5cHgpIHtcbiAgICByaWdodDogY2FsYygoKDEwMCUgLSA4MHZ3KSAvIDIpICsgMnB4KTtcbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODFweCkge1xuICAgIHJpZ2h0OiBjYWxjKCgoMTAwJSAtIDY1dncpIC8gMikgKyAycHgpO1xuICB9XG59XG5cbi5uZXR3b3JrLW5hbWUtaXRlbSB7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG4gIGZsZXg6IDEgMCBhdXRvO1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG59XG5cbi5uZXR3b3JrLWNoZWNrLFxuLm5ldHdvcmstY2hlY2tfX3RyYW5zcGFyZW50IHtcbiAgY29sb3I6ICR3aGl0ZTtcbiAgbWFyZ2luLWxlZnQ6IDdweDtcbn1cblxuLm5ldHdvcmstY2hlY2tfX3RyYW5zcGFyZW50IHtcbiAgb3BhY2l0eTogMDtcbiAgd2lkdGg6IDE2cHg7XG4gIG1hcmdpbjogMDtcbn1cblxuLm1lbnUtaWNvbi1jaXJjbGUsXG4ubWVudS1pY29uLWNpcmNsZS0tYWN0aXZlIHtcbiAgYmFja2dyb3VuZDogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMjJweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBtYXJnaW46IDAgNHB4O1xufVxuXG4ubWVudS1pY29uLWNpcmNsZS0tYWN0aXZlIHtcbiAgYm9yZGVyOiAxcHggc29saWQgJHdoaXRlO1xuICBiYWNrZ3JvdW5kOiByZ2JhKDEwMCwgMTAwLCAxMDAsIC40KTtcbn1cblxuLm1lbnUtaWNvbi1jaXJjbGUgZGl2LFxuLm1lbnUtaWNvbi1jaXJjbGUtLWFjdGl2ZSBkaXYge1xuICBoZWlnaHQ6IDEycHg7XG4gIHdpZHRoOiAxMnB4O1xuICBib3JkZXItcmFkaXVzOiAxN3B4O1xufVxuXG4ubWVudS1pY29uLWNpcmNsZS0tYWN0aXZlIGRpdiB7XG4gIG9wYWNpdHk6IDE7XG59XG5cbi5uZXR3b3JrLWRyb3Bkb3duLWhlYWRlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4ubmV0d29yay1kcm9wZG93bi1kaXZpZGVyIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMXB4O1xuICBtYXJnaW46IDEwcHggMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHNjb3JwaW9uO1xufVxuXG4ubmV0d29yay1kcm9wZG93bi10aXRsZSB7XG4gIGhlaWdodDogMjVweDtcbiAgd2lkdGg6IDc1cHg7XG4gIGNvbG9yOiAkd2hpdGU7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbGluZS1oZWlnaHQ6IDI1cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLm5ldHdvcmstZHJvcGRvd24tY29udGVudCB7XG4gIGhlaWdodDogMzZweDtcbiAgd2lkdGg6IDI2NXB4O1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgbGluZS1oZWlnaHQ6IDE4cHg7XG59XG5cbiIsIi5tb2RhbCA+IGRpdjpmb2N1cyB7XG4gIG91dGxpbmU6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLy8gQnV5IE1vZGFsXG4uYnV5LW1vZGFsLWNvbnRlbnQge1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LWZhbWlseTogUm9ib3RvO1xuICBwYWRkaW5nOiAwIDE2cHg7XG59XG5cbi5idXktbW9kYWwtY29udGVudC1vcHRpb24ge1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGNvbG9yOiAjNUI1RDY3O1xufVxuXG4ucXItZWxsaXAtYWRkcmVzcywgLmVsbGlwLWFkZHJlc3Mge1xuICB3aWR0aDogMjQ3cHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgZm9udC1zaXplOiAxNHB4O1xufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1NzVweCkge1xuICAuYnV5LW1vZGFsLWNvbnRlbnQtdGl0bGUtd3JhcHBlciB7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDBweDtcbiAgfVxuXG4gIC5idXktbW9kYWwtY29udGVudC10aXRsZSB7XG4gICAgZm9udC1zaXplOiAyNnB4O1xuICAgIG1hcmdpbi10b3A6IDE1cHg7XG4gIH1cblxuICAuYnV5LW1vZGFsLWNvbnRlbnQtb3B0aW9ucyB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBwYWRkaW5nOiA1JSAzMyU7XG4gIH1cblxuICAuYnV5LW1vZGFsLWNvbnRlbnQtZm9vdGVyIHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogNTBweDtcbiAgfVxuXG4gIGRpdi5idXktbW9kYWwtY29udGVudC1vcHRpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB3aWR0aDogODB2dztcbiAgICBoZWlnaHQ6IDE1dmg7XG4gICAgbWFyZ2luOiAxMHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJsYWNrO1xuICAgIHBhZGRpbmc6IDAlIDclO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gICAgZGl2LmJ1eS1tb2RhbC1jb250ZW50LW9wdGlvbi10aXRsZSB7XG4gICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgfVxuXG4gICAgZGl2LmJ1eS1tb2RhbC1jb250ZW50LW9wdGlvbi1zdWJ0aXRsZSB7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgfVxuICB9XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC5idXktbW9kYWwtY29udGVudC10aXRsZS13cmFwcGVyIHtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDExMHB4O1xuICB9XG5cbiAgLmJ1eS1tb2RhbC1jb250ZW50LXRpdGxlIHtcbiAgICBmb250LXNpemU6IDI2cHg7XG4gICAgbWFyZ2luLXRvcDogMTVweDtcbiAgfVxuXG4gIC5idXktbW9kYWwtY29udGVudC1mb290ZXIge1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiA1MHB4O1xuICB9XG5cbiAgLmJ1eS1tb2RhbC1jb250ZW50LW9wdGlvbnMge1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgbWFyZ2luOiAyMHB4IDAgNjBweDtcbiAgfVxuXG4gIGRpdi5idXktbW9kYWwtY29udGVudC1vcHRpb24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICB3aWR0aDogMjB2dztcbiAgICBoZWlnaHQ6IDEyMHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiA2cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGJsYWNrO1xuICAgIG1hcmdpbjogMCA4cHg7XG4gICAgcGFkZGluZzogMThweCAwO1xuXG4gICAgZGl2LmJ1eS1tb2RhbC1jb250ZW50LW9wdGlvbi10aXRsZSB7XG4gICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2NzlweCkge1xuICAgICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODFweCkge1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZGl2LmJ1eS1tb2RhbC1jb250ZW50LW9wdGlvbi1zdWJ0aXRsZSB7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICBwYWRkaW5nOiAwIDEwcHg7XG4gICAgICBoZWlnaHQ6IDI1JTtcblxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjc5cHgpIHtcbiAgICAgICAgZm9udC1zaXplOiAxMHB4O1xuICAgICAgICBwYWRkaW5nOiAwIDEwcHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDVweDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE1cHg7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDY4MHB4KSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgcGFkZGluZzogMCA0cHg7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDJweDtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MXB4KSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkaXYuYnV5LW1vZGFsLWNvbnRlbnQtZm9vdGVyIHtcbiAgICAgIG1hcmdpbi10b3A6IDh2aDtcbiAgICB9XG4gIH1cbn1cblxuLy8gRWRpdCBBY2NvdW50IE5hbWUgTW9kYWxcbi5lZGl0LWFjY291bnQtbmFtZS1tb2RhbC1jb250ZW50IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5lZGl0LWFjY291bnQtbmFtZS1tb2RhbC1jYW5jZWwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTJweDtcbiAgcmlnaHQ6IDIwcHg7XG4gIGZvbnQtc2l6ZTogMjVweDtcbn1cblxuLmVkaXQtYWNjb3VudC1uYW1lLW1vZGFsLXRpdGxlIHtcbiAgbWFyZ2luOiAxNXB4O1xufVxuXG4uZWRpdC1hY2NvdW50LW5hbWUtbW9kYWwtc2F2ZS1idXR0b24ge1xuICB3aWR0aDogMzMlO1xuICBoZWlnaHQ6IDQ1cHg7XG4gIG1hcmdpbjogMTVweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbWFyZ2luLXRvcDogMjVweDtcbn1cblxuLmVkaXQtYWNjb3VudC1uYW1lLW1vZGFsLWlucHV0IHtcbiAgd2lkdGg6IDkwJTtcbiAgaGVpZ2h0OiA1MHB4O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW46IDEwcHg7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMThweDtcbn1cblxuLy8gQWNjb3VudCBNb2RhbCBDb250YWluZXJcbi5hY2NvdW50LW1vZGFsLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiA1cHggMCAzMXB4IDA7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRzaWx2ZXI7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcblxuICBidXR0b24ge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuXG4uYWNjb3VudC1tb2RhbC1iYWNrIHtcbiAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMTNweDtcbiAgbGVmdDogMTdweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICZfX3RleHQge1xuICAgIG1hcmdpbi10b3A6IDJweDtcbiAgICBmb250LWZhbWlseTogUm9ib3RvO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBsaW5lLWhlaWdodDogMThweDtcbiAgfVxufVxuXG4uYWNjb3VudC1tb2RhbC1jbG9zZTo6YWZ0ZXIge1xuICBjb250ZW50OiAnXFwwMEQ3JztcbiAgZm9udC1zaXplOiA0MHB4O1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAxMHB4O1xuICByaWdodDogMTJweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uYWNjb3VudC1tb2RhbC1jb250YWluZXIgLmlkZW50aWNvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbGVmdDogMDtcbiAgcmlnaHQ6IDA7XG4gIG1hcmdpbjogMCBhdXRvO1xuICB0b3A6IC0zMnB4O1xuICBtYXJnaW4tYm90dG9tOiAtMzJweDtcbn1cblxuXG4vLyBBY2NvdW50IERldGFpbHMgTW9kYWxcblxuLmFjY291bnQtbW9kYWwtY29udGFpbmVyIHtcblxuICAucXItaGVhZGVyIHtcbiAgICBtYXJnaW4tdG9wOiA5cHg7XG4gICAgZm9udC1zaXplOiAyMHB4O1xuICB9XG5cbiAgLnFyLXdyYXBwZXIge1xuICAgIG1hcmdpbi10b3A6IDVweDtcbiAgfVxuXG4gIC5lbGxpcC1hZGRyZXNzLXdyYXBwZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGFsdG87XG4gICAgcGFkZGluZzogNXB4IDEwcHg7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBtYXJnaW4tdG9wOiA3cHg7XG4gICAgd2lkdGg6IDI4NnB4O1xuICB9XG5cbiAgLmJ0bi1jbGVhciB7XG4gICAgbWluLWhlaWdodDogMjhweDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgYm9yZGVyLWNvbG9yOiAkY3VyaW91cy1ibHVlO1xuICAgIGNvbG9yOiAkY3VyaW91cy1ibHVlO1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICBmbGV4LWJhc2lzOiAxMDAlO1xuICAgIHdpZHRoOiA3NSU7XG4gICAgbWFyZ2luLXRvcDogMTdweDtcbiAgICBwYWRkaW5nOiAxMHB4IDIycHg7XG4gICAgaGVpZ2h0OiA0NHB4O1xuICAgIHdpZHRoOiAyMzVweDtcbiAgICBmb250LWZhbWlseTogUm9ib3RvO1xuICB9XG59XG5cbi5hY2NvdW50LW1vZGFsLWRpdmlkZXIge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogMTlweCAwIDhweCAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWx0bztcbn1cblxuLy8gRXhwb3J0IFByaXZhdGUgS2V5IE1vZGFsXG5cbi5hY2NvdW50LW1vZGFsLWNvbnRhaW5lciAuYWNjb3VudC1uYW1lIHtcbiAgbWFyZ2luLXRvcDogOXB4O1xuICBmb250LXNpemU6IDIwcHg7XG59XG5cbi5hY2NvdW50LW1vZGFsLWNvbnRhaW5lciAubW9kYWwtYm9keS10aXRsZSB7XG4gIG1hcmdpbi10b3A6IDE2cHg7XG4gIG1hcmdpbi1ib3R0b206IDE2cHg7XG4gIGZvbnQtc2l6ZTogMThweDtcbn1cblxuLmFjY291bnQtbW9kYWxfX25hbWUge1xuICBtYXJnaW4tdG9wOiA5cHg7XG4gIGZvbnQtc2l6ZTogMjBweDtcbn1cblxuLnByaXZhdGUta2V5LXBhc3N3b3JkIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbn1cblxuLnByaXZhdGUta2V5LXBhc3N3b3JkLWxhYmVsLCAucHJpdmF0ZS1rZXktcGFzc3dvcmQtZXJyb3Ige1xuICBjb2xvcjogJHNjb3JwaW9uO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAxOHB4O1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuXG4ucHJpdmF0ZS1rZXktcGFzc3dvcmQtZXJyb3Ige1xuICBjb2xvcjogJGNyaW1zb247XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG5cbi5wcml2YXRlLWtleS1wYXNzd29yZC1pbnB1dCB7XG4gIHBhZGRpbmc6IDEwcHggMCAxM3B4IDE3cHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDIxcHg7XG4gIHdpZHRoOiAyOTFweDtcbiAgaGVpZ2h0OiA0NHB4O1xufVxuXG4ucHJpdmF0ZS1rZXktcGFzc3dvcmQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG59XG5cbi5wcml2YXRlLWtleS1wYXNzd29yZC13YXJuaW5nIHtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGNkY2O1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxpbmUtaGVpZ2h0OiAxNXB4O1xuICBjb2xvcjogJGNyaW1zb247XG4gIHdpZHRoOiAyOTJweDtcbiAgcGFkZGluZzogOXB4IDE1cHg7XG4gIG1hcmdpbi10b3A6IDE4cHg7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG59XG5cbi5leHBvcnQtcHJpdmF0ZS1rZXktYnV0dG9ucyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXG4gIC5idG4tY2xlYXIge1xuICAgIHdpZHRoOiAxNDFweDtcbiAgICBoZWlnaHQ6IDU0cHg7XG4gIH1cblxuICAuYnRuLWNhbmNlbCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICAgIGJvcmRlci1jb2xvcjogJGR1c3R5LWdyYXk7XG4gICAgY29sb3I6ICRzY29ycGlvbjtcbiAgfVxufVxuXG4ucHJpdmF0ZS1rZXktcGFzc3dvcmQtZGlzcGxheS13cmFwcGVyIHtcbiAgaGVpZ2h0OiA4MHB4O1xuICB3aWR0aDogMjkxcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRzaWx2ZXI7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbn1cblxuLnByaXZhdGUta2V5LXBhc3N3b3JkLWRpc3BsYXktdGV4dGFyZWEge1xuICBjb2xvcjogJGNyaW1zb247XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDIxcHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgaGVpZ2h0OiA3NXB4O1xuICB3aWR0aDogMTAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcmVzaXplOiBub25lO1xuICBwYWRkaW5nOiA5cHggMTNweCA4cHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG59XG5cblxuLy8gTmV3IEFjY291bnQgTW9kYWxcbi5uZXctYWNjb3VudC1tb2RhbC13cmFwcGVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRhbHRvO1xuICBib3gtc2hhZG93OiAwIDAgMnB4IDJweCAkYWx0bztcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbn1cblxuLm5ldy1hY2NvdW50LW1vZGFsLWhlYWRlciB7XG4gIGJhY2tncm91bmQ6ICR3aWxkLXNhbmQ7XG4gIHdpZHRoOiAxMDAlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZzogMzBweDtcbiAgZm9udC1zaXplOiAyMnB4O1xuICBjb2xvcjogJG5pbGUtYmx1ZTtcbiAgaGVpZ2h0OiA3OXB4O1xufVxuXG4ubW9kYWwtY2xvc2UteDo6YWZ0ZXIge1xuICBjb250ZW50OiAnXFwwMEQ3JztcbiAgZm9udC1zaXplOiAyZW07XG4gIGNvbG9yOiAkZHVzdHktZ3JheTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDI1cHg7XG4gIHJpZ2h0OiAxNy41cHg7XG4gIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5uZXctYWNjb3VudC1tb2RhbC1jb250ZW50IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtYXJnaW4tdG9wOiAxNXB4O1xuICBmb250LXNpemU6IDE3cHg7XG4gIGNvbG9yOiAkbmlsZS1ibHVlO1xufVxuXG4ubmV3LWFjY291bnQtbW9kYWwtY29udGVudC5hZnRlci1pbnB1dCB7XG4gIG1hcmdpbi10b3A6IDE1cHg7XG4gIGxpbmUtaGVpZ2h0OiAyNXB4O1xufVxuXG4ubmV3LWFjY291bnQtaW5wdXQtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgcGFkZGluZy1ib3R0b206IDJweDtcbiAgbWFyZ2luLXRvcDogMTNweDtcbn1cblxuLm5ldy1hY2NvdW50LWlucHV0IHtcbiAgcGFkZGluZzogMTVweDtcbiAgcGFkZGluZy1ib3R0b206IDIwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgYm9yZGVyOiAxcHggc29saWQgJGFsdG87XG4gIHdpZHRoOiAxMDAlO1xuICBmb250LXNpemU6IDFlbTtcbiAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICBmb250LWZhbWlseTogUm9ib3RvO1xuICBmb250LXNpemU6IDE3cHg7XG4gIG1hcmdpbjogMCA2MHB4O1xufVxuXG4vLyBGb3IgcmVmZXJlbmNlIG9uIGJlbG93IHBsYWNlaG9sZGVyIHNlbGVjdG9yczogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjYxMDQ5Ny9jaGFuZ2UtYW4taHRtbDUtaW5wdXRzLXBsYWNlaG9sZGVyLWNvbG9yLXdpdGgtY3NzXG4ubmV3LWFjY291bnQtaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG59XG5cbi5uZXctYWNjb3VudC1pbnB1dDotbW96LXBsYWNlaG9sZGVyIHtcbiAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICBvcGFjaXR5OiAxO1xufVxuXG4ubmV3LWFjY291bnQtaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIge1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gIG9wYWNpdHk6IDE7XG59XG5cbi5uZXctYWNjb3VudC1pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG59XG5cbi5uZXctYWNjb3VudC1pbnB1dDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgY29sb3I6ICRkdXN0eS1ncmF5O1xufVxuXG4ubmV3LWFjY291bnQtbW9kYWwtY29udGVudC5idXR0b24ge1xuICBtYXJnaW4tdG9wOiAyMnB4O1xuICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICB3aWR0aDogMTEzcHg7XG4gIGhlaWdodDogNDRweDtcbn1cblxuLm5ldy1hY2NvdW50LW1vZGFsLXdyYXBwZXIgLmJ0bi1jbGVhciB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgYmFja2dyb3VuZDogJHdoaXRlO1xuICBib3JkZXI6IDFweCBzb2xpZDtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBjb2xvcjogJHR1bmRvcmE7XG4gIGZsZXg6IDE7XG59XG5cbi8vIEhpZGUgdG9rZW4gY29uZmlybWF0aW9uXG5cbi5oaWRlLXRva2VuLWNvbmZpcm1hdGlvbiB7XG4gIG1pbi1oZWlnaHQ6IDI1MC43MnB4O1xuICB3aWR0aDogMzc0LjQ5cHg7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjtcbiAgYm94LXNoYWRvdzogMCAxcHggN3B4IDAgcmdiYSgwLDAsMCwwLjUpO1xuXG4gICZfX2NvbnRhaW5lciB7XG4gICAgcGFkZGluZzogMjRweCAyN3B4IDIxcHg7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICAmX19pZGVudGljb24ge1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHhcbiAgfVxuXG4gICZfX3N5bWJvbCB7XG4gICAgY29sb3I6ICR0dW5kb3JhO1xuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW4tYm90dG9tOiA3LjVweDtcbiAgfVxuXG4gICZfX3RpdGxlIHtcbiAgICBoZWlnaHQ6IDMwcHg7XG4gICAgd2lkdGg6IDI3MS4yOHB4O1xuICAgIGNvbG9yOiAkdHVuZG9yYTtcbiAgICBmb250LWZhbWlseTogUm9ib3RvO1xuICAgIGZvbnQtc2l6ZTogMjJweDtcbiAgICBsaW5lLWhlaWdodDogMzBweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLWJvdHRvbTogMTAuNXB4O1xuICB9XG5cbiAgJl9fY29weSB7XG4gICAgaGVpZ2h0OiA0MXB4O1xuICAgIHdpZHRoOiAzMThweDtcbiAgICBjb2xvcjogJHNjb3JwaW9uO1xuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxOHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxuXG4gICZfX2J1dHRvbnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBtYXJnaW4tdG9wOiAxNXB4O1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgYnV0dG9uIHtcbiAgICAgIGhlaWdodDogNDRweDtcbiAgICAgIHdpZHRoOiAxMTNweDtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRzY29ycGlvbjtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgIGNvbG9yOiAkdHVuZG9yYTtcbiAgICAgIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICBsaW5lLWhlaWdodDogMjBweDtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIG1hcmdpbi1sZWZ0OiA0cHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDRweDtcbiAgICB9XG4gIH1cbn1cbiIsIi8qXG4gIE5ld1VJIENvbnRhaW5lciBFbGVtZW50c1xuICovXG5cbi8vIENvbXBvbmVudCBDb2xvcnNcbiR0eC12aWV3LWJnOiAkd2hpdGU7XG4kd2FsbGV0LXZpZXctYmc6ICR3aWxkLXNhbmQ7XG5cbi8vIE1haW4gY29udGFpbmVyXG4ubWFpbi1jb250YWluZXIge1xuICAvLyBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHotaW5kZXg6ICRtYWluLWNvbnRhaW5lci16LWluZGV4O1xuICBmb250LWZhbWlseTogUm9ib3RvO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGFsaWduLWl0ZW1zOiBzdHJldGNoO1xufVxuXG4ubWFpbi1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLy8gdHggdmlld1xuXG4udHgtdmlldyB7XG4gIGZsZXg6IDYzLjUgMCA2Ni41JTtcbiAgYmFja2dyb3VuZDogJHR4LXZpZXctYmc7XG5cbiAgLy8gTm8gdGl0bGUgb24gbW9iaWxlXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4gICAgLmlkZW50aWNvbi13cmFwcGVyIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLmFjY291bnQtbmFtZSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgfVxufVxuXG4vLyB3YWxsZXQgdmlldyBhbmQgc2lkZWJhclxuXG4ud2FsbGV0LXZpZXcge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBmbGV4OiAzMy41IDEgMzMuNSU7XG4gIHdpZHRoOiAwO1xuICBiYWNrZ3JvdW5kOiAkd2FsbGV0LXZpZXctYmc7XG4gIHotaW5kZXg6IDIwMDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICAgIG92ZXJmbG93LXg6IGhpZGRlbjtcbiAgfVxuXG4gIC53YWxsZXQtdmlldy1hY2NvdW50LWRldGFpbHMge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICB9XG5cbiAgJl9fbmFtZS1jb250YWluZXIge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gICZfX2tleXJpbmctbGFiZWwge1xuICAgIGhlaWdodDogNDBweDtcbiAgICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgcGFkZGluZzogMCAyMHB4O1xuICB9XG5cbiAgJl9fZGV0YWlscy1idXR0b24ge1xuICAgIGNvbG9yOiAkY3VyaW91cy1ibHVlO1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICBsaW5lLWhlaWdodDogMTNweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGN1cmlvdXMtYmx1ZTtcbiAgICBib3JkZXItcmFkaXVzOiAxMC41cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZzogNHB4IDEycHg7XG4gICAgZmxleDogMCAwIGF1dG87XG4gIH1cblxuICAmX19hZGRyZXNzIHtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGFsdG87XG4gICAgY29sb3I6ICRzY29ycGlvbjtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEycHg7XG4gICAgcGFkZGluZzogNHB4IDEycHg7XG4gICAgbWFyZ2luOiAyNHB4IGF1dG87XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZmxleDogMCAwIGF1dG87XG4gIH1cblxuICAmX19zaWRlYmFyLWNsb3NlIHtcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6ICdcXDAwRDcnO1xuICAgICAgICBmb250LXNpemU6IDQwcHg7XG4gICAgICAgIGNvbG9yOiAkdHVuZG9yYTtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDEycHg7XG4gICAgICAgIGxlZnQ6IDEycHg7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAmX19hZGQtdG9rZW4tYnV0dG9uIHtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxOXB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBtYXJnaW46IDM2cHggYXV0bztcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZHVzdHktZ3JheTtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIHBhZGRpbmc6IDlweCAzMHB4O1xuICB9XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gIC53YWxsZXQtdmlldzo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLndhbGxldC12aWV3LXRpdGxlLXdyYXBwZXIge1xuICBmbGV4OiAwIDAgMjVweDtcbn1cblxuLndhbGxldC12aWV3LXRpdGxlIHtcbiAgbWFyZ2luLWxlZnQ6IDE1cHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcblxuICAvLyBObyB0aXRsZSBvbiBtb2JpbGVcbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTc1cHgpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi53YWxsZXQtdmlldy5zaWRlYmFyIHtcbiAgZmxleDogMSAwIDIzMHB4O1xuICBiYWNrZ3JvdW5kOiByZ2IoMjUwLCAyNTAsIDI1MCk7XG4gIHotaW5kZXg6ICRzaWRlYmFyLXotaW5kZXg7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiA1NnB4O1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICB3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBib3gtc2hhZG93OiByZ2JhKDAsIDAsIDAsIC4xNSkgMnB4IDJweCA0cHg7XG4gIHdpZHRoOiA4NSU7XG4gIGhlaWdodDogY2FsYygxMDAlIC0gNTZweCk7XG59XG5cbi5zaWRlYmFyLW92ZXJsYXkge1xuICB6LWluZGV4OiAkc2lkZWJhci1vdmVybGF5LXotaW5kZXg7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgLy8gdG9wOiA0MXB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBsZWZ0OiAwO1xuICByaWdodDogMDtcbiAgYm90dG9tOiAwO1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIC4zKTtcbn1cblxuLy8gbWFpbi1jb250YWluZXIgbWVkaWEgcXVlcmllc1xuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1NzZweCkge1xuICAubGFwLXZpc2libGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cblxuICAucGhvbmUtdmlzaWJsZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC5tYWluLWNvbnRhaW5lciB7XG4gICAgLy8gbWFyZ2luLXRvcDogNi45dmg7XG4gICAgd2lkdGg6IDg1JTtcbiAgICBoZWlnaHQ6IDkwdmg7XG4gICAgYm94LXNoYWRvdzogMCAwIDdweCAwIHJnYmEoMCwgMCwgMCwgLjA4KTtcbiAgfVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjlweCkge1xuICAubWFpbi1jb250YWluZXIge1xuICAgIC8vIG1hcmdpbi10b3A6IDYuOXZoO1xuICAgIHdpZHRoOiA4MCU7XG4gICAgaGVpZ2h0OiA4MnZoO1xuICAgIGJveC1zaGFkb3c6IDAgMCA3cHggMCByZ2JhKDAsIDAsIDAsIC4wOCk7XG4gIH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MXB4KSB7XG4gIC5tYWluLWNvbnRhaW5lciB7XG4gICAgLy8gbWFyZ2luLXRvcDogNi45dmg7XG4gICAgd2lkdGg6IDY1JTtcbiAgICBoZWlnaHQ6IDgydmg7XG4gICAgYm94LXNoYWRvdzogMCAwIDdweCAwIHJnYmEoMCwgMCwgMCwgLjA4KTtcbiAgfVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1NzVweCkge1xuICAubGFwLXZpc2libGUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAucGhvbmUtdmlzaWJsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuXG4gIC5tYWluLWNvbnRhaW5lciB7XG4gICAgLy8gbWFyZ2luLXRvcDogNDFweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gIH1cblxuICBidXR0b24uYnRuLWNsZWFyIHtcbiAgICB3aWR0aDogOTNweDtcbiAgICBoZWlnaHQ6IDUwcHg7XG4gICAgZm9udC1zaXplOiAuN2VtO1xuICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgICBib3JkZXI6IDFweCBzb2xpZDtcbiAgfVxufVxuXG4vLyB3YWxsZXQgdmlld1xuLmFjY291bnQtbmFtZSB7XG4gIGZvbnQtc2l6ZTogMjRweDtcbiAgZm9udC13ZWlnaHQ6IDIwMDtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIGNvbG9yOiAkc2NvcnBpb247XG4gIG1hcmdpbi10b3A6IDhweDtcbiAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwIDhweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuXG4vLyBhY2NvdW50IG9wdGlvbnMgZHJvcGRvd25cbi5hY2NvdW50LW9wdGlvbnMtbWVudSB7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgbWFyZ2luOiA1JSA3JSAwJTtcbn1cblxuLmZpYXQtYW1vdW50IHtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLnRva2VuLWJhbGFuY2VfX2Ftb3VudCB7XG4gIHBhZGRpbmctcmlnaHQ6IDZweDtcbn1cbiIsIi5hY2NvdW50LWRyb3Bkb3duLW5hbWUge1xuICBmb250LWZhbWlseTogUm9ib3RvO1xufVxuXG4uYWNjb3VudC1kcm9wZG93bi1iYWxhbmNlIHtcbiAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICBsaW5lLWhlaWdodDogMTlweDtcbn1cblxuLmFjY291bnQtZHJvcGRvd24tZWRpdC1idXR0b24ge1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG5cbiAgJjpob3ZlciB7XG4gICAgY29sb3I6ICR3aGl0ZTtcbiAgfVxufVxuXG4uYWNjb3VudC1saXN0LWl0ZW0ge1xuICAmX190b3Atcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cblxuICAmX19hY2NvdW50LWJhbGFuY2VzIHtcbiAgICBoZWlnaHQ6IGF1dG87XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIGNvbG9yOiAjOWI5YjliO1xuICAgIG1hcmdpbi1sZWZ0OiAzNHB4O1xuICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cbiAgXG4gICZfX2FjY291bnQtbmFtZSB7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIG1hcmdpbi1sZWZ0OiA4cHg7XG4gIH1cblxuICAmX19pY29uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDEycHg7XG4gICAgdG9wOiAxcHg7XG4gIH1cblxuICAmX19hY2NvdW50LXByaW1hcnktYmFsYW5jZSxcbiAgJl9fYWNjb3VudC1zZWNvbmRhcnktYmFsYW5jZSB7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgfVxuXG4gICZfX2FjY291bnQtcHJpbWFyeS1iYWxhbmNlIHtcbiAgICBjb2xvcjogJHNjb3JwaW9uO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBvdXRsaW5lOiAwICFpbXBvcnRhbnQ7XG4gIH1cblxuICAmX19hY2NvdW50LXNlY29uZGFyeS1iYWxhbmNlIHtcbiAgICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gIH1cblxuICAmX19hY2NvdW50LWFkZHJlc3Mge1xuICAgIG1hcmdpbi1sZWZ0OiAzNXB4O1xuICAgIHdpZHRoOiA4MCU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgfVxuXG4gICZfX2Ryb3Bkb3duIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoJGFsdG8sIC4yKTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICAgaW5wdXQge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKCRhbHRvLCAuMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIuc2VuZC1zY3JlZW4td3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgei1pbmRleDogMjU7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGJyZWFrLXNtYWxsKSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgfVxuXG4gIHNlY3Rpb24ge1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICB9XG59XG5cbi5zZW5kLXNjcmVlbi1jYXJkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgwLCAwLCAwLCAuMDgpO1xuICBwYWRkaW5nOiA0NnB4IDQwLjVweCAyNnB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIC8vIHRvcDogLTI2cHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgd2lkdGg6IDQ5OHB4O1xuICBmbGV4OiAxIDAgYXV0bztcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICB0b3A6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBwYWRkaW5nOiAxMnB4O1xuICB9XG59XG5cbi8qIFNlbmQgU2NyZWVuICovXG5cbi5zZW5kLXNjcmVlbiBzZWN0aW9uIHtcbiAgbWFyZ2luOiA0cHggMTZweDtcbn1cblxuLnNlbmQtc2NyZWVuIGlucHV0IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGZvbnQtc2l6ZTogMTJweDtcbn1cblxuLnNlbmQtZXRoLWljb24ge1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIHdpZHRoOiA3MHB4O1xuICBoZWlnaHQ6IDcwcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRhbHRvO1xuICBib3gtc2hhZG93OiAwIDAgNHB4IDAgcmdiYSgwLCAwLCAwLCAuMik7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtMzVweDtcbiAgei1pbmRleDogMjU7XG4gIHBhZGRpbmc6IDRweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0b3A6IDA7XG4gIH1cbn1cblxuLnNlbmQtc2NyZWVuLWlucHV0LXdyYXBwZXIge1xuICB3aWR0aDogOTUlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLmZhLWJvbHQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDRweDtcbiAgfVxuXG4gIC5sYXJnZS1pbnB1dCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGR1c3R5LWdyYXk7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIG1hcmdpbjogNHB4IDAgMjBweDtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgbGluZS1oZWlnaHQ6IDIyLjRweDtcbiAgICBmb250LWZhbWlseTogUm9ib3RvO1xuICB9XG5cbiAgLnNlbmQtc2NyZWVuLWdhcy1pbnB1dCB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gIH1cblxuICAmX19lcnJvci1tZXNzYWdlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgJi0tZXJyb3Ige1xuICAgIGlucHV0LFxuICAgIC5zZW5kLXNjcmVlbi1nYXMtaW5wdXQge1xuICAgICAgYm9yZGVyLWNvbG9yOiAkcmVkICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnNlbmQtc2NyZWVuLWlucHV0LXdyYXBwZXJfX2Vycm9yLW1lc3NhZ2Uge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICBib3R0b206IDRweDtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxMnB4O1xuICAgICAgbGVmdDogOHB4O1xuICAgICAgY29sb3I6ICRyZWQ7XG4gICAgfVxuICB9XG5cbiAgLnNlbmQtc2NyZWVuLWlucHV0LXdyYXBwZXJfX2Vycm9yLW1lc3NhZ2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDRweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgbGluZS1oZWlnaHQ6IDEycHg7XG4gICAgbGVmdDogOHB4O1xuICAgIGNvbG9yOiAkcmVkO1xuICB9XG59XG5cbi5zZW5kLXNjcmVlbi1pbnB1dCB7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uc2VuZC1zY3JlZW4tZ2FzLWlucHV0IHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogNDFweDtcbiAgYm9yZGVyLXJhZGl1czogM3B4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2YzO1xuICBib3JkZXItd2lkdGg6IDA7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gIHBhZGRpbmctcmlnaHQ6IDEycHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgY29sb3I6ICRzY29ycGlvbjtcbn1cblxuLnNlbmQtc2NyZWVuLWFtb3VudC1sYWJlbHMge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG59XG5cbi5zZW5kLXNjcmVlbi1nYXMtbGFiZWxzIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xufVxuXG4uY3VycmVuY3ktdG9nZ2xlIHtcbiAgJl9faXRlbSB7XG4gICAgY29sb3I6ICRjdXJpb3VzLWJsdWU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgJi0tc2VsZWN0ZWQge1xuICAgICAgY29sb3I6ICRibGFjaztcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICB9XG4gIH1cbn1cblxuLnNlbmQtc2NyZWVuLWdhcy1pbnB1dC1jdXN0b21pemUge1xuICBjb2xvcjogJGN1cmlvdXMtYmx1ZTtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5nYXMtdG9vbHRpcC1jbG9zZS1hcmVhIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDEwMDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5jdXN0b21pemUtZ2FzLXRvb2x0aXAtY29udGFpbmVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDUwcHg7XG4gIHdpZHRoOiAyMzdweDtcbiAgaGVpZ2h0OiAzMDdweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICBvcGFjaXR5OiAxO1xuICBib3gtc2hhZG93OiAkYWx0byAwIDAgNXB4O1xuICB6LWluZGV4OiAxMDUwO1xuICBwYWRkaW5nOiAxM3B4IDE5cHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBmb250LWZhbWlseTogXCJMYXRvXCI7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5nYXMtdG9vbHRpcC1hcnJvdyB7XG4gIGhlaWdodDogMjVweDtcbiAgd2lkdGg6IDI1cHg7XG4gIHotaW5kZXg6IDEyMDA7XG4gIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gIGxlZnQ6IDEwN3B4O1xuICB0b3A6IDI5NHB4O1xuICBib3gtc2hhZG93OiAycHggMnB4IDJweCAkYWx0bztcbn1cblxuLmN1c3RvbWl6ZS1nYXMtdG9vbHRpcC1jb250YWluZXIgaW5wdXRbdHlwZT1cIm51bWJlclwiXTo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmN1c3RvbWl6ZS1nYXMtdG9vbHRpcC1jb250YWluZXIgaW5wdXRbdHlwZT1cIm51bWJlclwiXTpob3Zlcjo6LXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiB7XG4gIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLmN1c3RvbWl6ZS1nYXMtdG9vbHRpcCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmdhcy10b29sdGlwIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5nYXMtdG9vbHRpcC1sYWJlbCB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgY29sb3I6ICR0dW5kb3JhO1xufVxuXG4uZ2FzLXRvb2x0aXAtaGVhZGVyIHtcbiAgcGFkZGluZy1ib3R0b206IDEycHg7XG59XG5cbi5nYXMtdG9vbHRpcC1pbnB1dC1sYWJlbCB7XG4gIG1hcmdpbi1ib3R0b206IDVweDtcbn1cblxuLmdhcy10b29sdGlwLWlucHV0LWxhYmVsIGkge1xuICBjb2xvcjogJHNpbHZlci1jaGFsaWNlO1xuICBtYXJnaW4tbGVmdDogNnB4O1xufVxuXG4uY3VzdG9taXplLWdhcy1pbnB1dCB7XG4gIHdpZHRoOiAxNzhweDtcbiAgaGVpZ2h0OiAyOHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAkYWx0bztcbiAgZm9udC1zaXplOiAxNnB4O1xuICBjb2xvcjogJG5pbGUtYmx1ZTtcbiAgcGFkZGluZy1sZWZ0OiA4cHg7XG59XG5cbi5jdXN0b21pemUtZ2FzLWlucHV0LXdyYXBwZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5nYXMtdG9vbHRpcC1pbnB1dC1kZXRhaWwge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogNHB4O1xuICByaWdodDogMjZweDtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBjb2xvcjogJHNpbHZlci1jaGFsaWNlO1xufVxuXG4uZ2FzLXRvb2x0aXAtaW5wdXQtYXJyb3dzIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiA0cHg7XG4gIHdpZHRoOiAxN3B4O1xuICBoZWlnaHQ6IDI4cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkYWRhZGE7XG4gIGJvcmRlci1sZWZ0OiAwO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBjb2xvcjogIzliOWI5YjtcbiAgZm9udC1zaXplOiAuOGVtO1xuICBwYWRkaW5nOiAxcHggNHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi50b2tlbi1nYXMge1xuICAmX19hbW91bnQge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tcmlnaHQ6IDRweDtcbiAgfVxuXG4gICZfX3N5bWJvbCB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG59XG5cbi5zZW5kLXNjcmVlbiB7XG4gICZfX3RpdGxlIHtcbiAgICBjb2xvcjogJHNjb3JwaW9uO1xuICAgIGZvbnQtc2l6ZTogMThweDtcbiAgICBsaW5lLWhlaWdodDogMjlweDtcbiAgfVxuXG4gICZfX3N1YnRpdGxlIHtcbiAgICBtYXJnaW46IDEwcHggMCAyMHB4O1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgfVxuXG4gICZfX3NlbmQtYnV0dG9uLFxuICAmX19jYW5jZWwtYnV0dG9uIHtcbiAgICB3aWR0aDogMTYzcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG5cbiAgJl9fc2VuZC1idXR0b25fX2Rpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAuNTtcbiAgICBjdXJzb3I6IGF1dG87XG4gIH1cbn1cblxuLnNlbmQtdG9rZW4ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG4gIHotaW5kZXg6IDI1O1xuICBmb250LWZhbWlseTogUm9ib3RvO1xuXG4gICZfX2NvbnRlbnQge1xuICAgIHdpZHRoOiA0OThweDtcbiAgICBoZWlnaHQ6IDYwNXB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgwLCAwLCAwLCAuMDgpO1xuICAgIHBhZGRpbmc6IDQ2cHggNDAuNXB4IDI2cHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIC8vIHRvcDogLTI2cHg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgICBmbGV4OiAxIDAgYXV0bztcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgICAgdG9wOiAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgcGFkZGluZzogMTJweDtcbiAgICB9XG4gIH1cblxuICAuaWRlbnRpY29uIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAtMzVweDtcbiAgICB6LWluZGV4OiAyNTtcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgdG9wOiAwO1xuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgfVxuICB9XG5cbiAgJl9fdGl0bGUge1xuICAgIGNvbG9yOiAkc2NvcnBpb247XG4gICAgZm9udC1zaXplOiAxOHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyOXB4O1xuICB9XG5cbiAgJl9fZGVzY3JpcHRpb24sXG4gICZfX2JhbGFuY2UtdGV4dCxcbiAgJl9fdG9rZW4tc3ltYm9sIHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICAmX190b2tlbi1iYWxhbmNlIHtcbiAgICBmb250LXNpemU6IDQwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gICAgbWFyZ2luLXRvcDogMTNweDtcblxuICAgIC50b2tlbi1iYWxhbmNlX19hbW91bnQge1xuICAgICAgcGFkZGluZy1yaWdodDogMTJweDtcbiAgICB9XG4gIH1cblxuICAmX19idXR0b24tZ3JvdXAge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZmxleDogMCAwIGF1dG87XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICAgIG1hcmdpbi10b3A6IDI0cHg7XG4gICAgfVxuXG4gICAgYnV0dG9uIHtcbiAgICAgIHdpZHRoOiAxNjNweDtcbiAgICB9XG4gIH1cbn1cblxuLmNvbmZpcm0tc2VuZC10b2tlbiB7XG4gICZfX2hlcm8tYW1vdW50LXdyYXBwZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG5cbi5zZW5kLXYyIHtcbiAgJl9fY29udGFpbmVyIHtcbiAgICAvLyBoZWlnaHQ6IDcwMXB4O1xuICAgIHdpZHRoOiAzODBweDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwIHJnYmEoMCwgMCwgMCwgLjA4KTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgICB6LWluZGV4OiAyNTtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGJyZWFrLXNtYWxsKSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICB9XG4gIH1cblxuICAmX19zZW5kLWhlYWRlci1pY29uLWNvbnRhaW5lciB7XG4gICAgei1pbmRleDogMjU7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHRvcDogMDtcbiAgICB9XG4gIH1cblxuICAmX19zZW5kLWhlYWRlci1pY29uIHtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgd2lkdGg6IDQ4cHg7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRhbHRvO1xuICAgIHotaW5kZXg6IDI1O1xuICAgIHBhZGRpbmc6IDRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gIH1cblxuICAmX19zZW5kLWFycm93LWljb24ge1xuICAgIGNvbG9yOiAjZjI4OTMwO1xuICAgIHRyYW5zZm9ybTogcm90YXRlKC00NWRlZyk7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogLTJweDtcbiAgICBsZWZ0OiAwO1xuICAgIGZvbnQtc2l6ZTogMS4xMmVtO1xuICB9XG5cbiAgJl9fYXJyb3ctYmFja2dyb3VuZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgIGhlaWdodDogMTRweDtcbiAgICB3aWR0aDogMTRweDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiA1MnB4O1xuICAgIGxlZnQ6IDE5OXB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICB6LWluZGV4OiAxMDA7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICAgIHRvcDogMzZweDtcbiAgICB9XG4gIH1cblxuICAmX19oZWFkZXIge1xuICAgIGhlaWdodDogODhweDtcbiAgICB3aWR0aDogMzgwcHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGF0aGVucy1ncmV5O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICAgIGhlaWdodDogNTlweDtcbiAgICAgIHdpZHRoOiAxMDB2dztcbiAgICB9XG4gIH1cblxuICAmX19oZWFkZXItdGlwIHtcbiAgICBoZWlnaHQ6IDI1cHg7XG4gICAgd2lkdGg6IDI1cHg7XG4gICAgYmFja2dyb3VuZDogJGF0aGVucy1ncmV5O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XG4gICAgbGVmdDogMTc4cHg7XG4gICAgdG9wOiA3NXB4O1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGJyZWFrLXNtYWxsKSB7XG4gICAgICB0b3A6IDQ2cHg7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBtYXJnaW46IDAgYXV0bztcbiAgICB9XG4gIH1cblxuICAmX190aXRsZSB7XG4gICAgY29sb3I6ICRzY29ycGlvbjtcbiAgICBmb250LXNpemU6IDIycHg7XG4gICAgbGluZS1oZWlnaHQ6IDI5cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi10b3A6IDI1cHg7XG4gIH1cblxuICAmX19jb3B5IHtcbiAgICBjb2xvcjogJGdyYXk7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgbGluZS1oZWlnaHQ6IDE5cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgd2lkdGg6IDI4N3B4O1xuICB9XG5cbiAgJl9fZXJyb3Ige1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBsaW5lLWhlaWdodDogMTJweDtcbiAgICBsZWZ0OiA4cHg7XG4gICAgY29sb3I6ICRyZWQ7XG4gIH1cblxuICAmX19lcnJvci1ib3JkZXIge1xuICAgIGNvbG9yOiAkcmVkO1xuICB9XG5cbiAgJl9fZm9ybSB7XG4gICAgbWFyZ2luOiAxM3B4IDA7XG4gICAgd2lkdGg6IDEwMCU7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICAgIHBhZGRpbmc6IDEzcHggMDtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIGhlaWdodDogMDtcbiAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICB9XG4gIH1cblxuICAmX19mb3JtLWhlYWRlcixcbiAgJl9fZm9ybS1oZWFkZXItY29weSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG5cbiAgJl9fZm9ybS1yb3cge1xuICAgIG1hcmdpbjogMTQuNXB4IDE4cHggMHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93O1xuICAgIGZsZXg6IDEgMCBhdXRvO1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgfVxuXG4gICZfX2Zvcm0tZmllbGQge1xuICAgIGZsZXg6IDEgMSBhdXRvO1xuICB9XG5cbiAgJl9fZm9ybS1sYWJlbCB7XG4gICAgY29sb3I6ICRzY29ycGlvbjtcbiAgICBmb250LWZhbWlseTogUm9ib3RvO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMjJweDtcbiAgICB3aWR0aDogODhweDtcbiAgfVxuXG4gICZfX2Zyb20tZHJvcGRvd24ge1xuICAgIGhlaWdodDogNzNweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYWx0bztcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gICAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGNvbG9yOiAkdHVuZG9yYTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmX19jbG9zZS1hcmVhIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IDA7XG4gICAgICB6LWluZGV4OiAxMDAwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgfVxuICAgIFxuICAgICZfX2xpc3Qge1xuICAgICAgei1pbmRleDogMTA1MDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIGhlaWdodDogMjIwcHg7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRnZXlzZXI7XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgICBib3gtc2hhZG93OiAwIDNweCA2cHggMCByZ2JhKDAgLDAgLDAgLC4xMSk7XG4gICAgICBtYXJnaW4tdG9wOiAxMXB4O1xuICAgICAgbWFyZ2luLWxlZnQ6IC0xcHg7XG4gICAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gICAgfVxuICB9XG5cbiAgJl9fdG8tYXV0b2NvbXBsZXRlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgICAmX19kb3duLWNhcmV0IHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMThweDtcbiAgICAgIHJpZ2h0OiAxMnB4O1xuICAgIH1cbiAgfVxuXG4gICZfX3RvLWF1dG9jb21wbGV0ZSwgJl9fbWVtby10ZXh0LWFyZWEge1xuICAgICZfX2lucHV0IHtcbiAgICAgIGhlaWdodDogNTRweDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJGFsdG87XG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAyMXB4O1xuICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICB9XG4gIH1cblxuICAmX19hbW91bnQtbWF4IHtcbiAgICBjb2xvcjogJGN1cmlvdXMtYmx1ZTtcbiAgICBmb250LWZhbWlseTogUm9ib3RvO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBsZWZ0OiA4cHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICZfX2dhcy1mZWUtZGlzcGxheSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAmX19zbGlkZXJzLWljb24tY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIHdpZHRoOiAyNHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjdXJpb3VzLWJsdWU7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgICBwYWRkaW5nOiA1cHg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAxNXB4O1xuICAgIHRvcDogMTRweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cblxuICAmX19zbGlkZXJzLWljb24ge1xuICAgIGNvbG9yOiAkY3VyaW91cy1ibHVlO1xuICB9XG5cbiAgJl9fbWVtby10ZXh0LWFyZWEge1xuICAgICZfX2lucHV0IHtcbiAgICAgIHBhZGRpbmc6IDZweCAxMHB4O1xuICAgIH1cbiAgfVxuXG4gICZfX2Zvb3RlciB7XG4gICAgaGVpZ2h0OiA5MnB4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1ldmVubHk7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGFsdG87XG4gICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgIHBhZGRpbmc6IDAgMTJweDtcbiAgfVxuXG4gICZfX25leHQtYnRuLFxuICAmX19jYW5jZWwtYnRuLFxuICAmX19uZXh0LWJ0bl9fZGlzYWJsZWQge1xuICAgIHdpZHRoOiAxNjNweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgaGVpZ2h0OiA1NXB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICBsaW5lLWhlaWdodDogMjFweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZDtcbiAgICBtYXJnaW46IDAgNHB4O1xuICB9XG5cbiAgJl9fbmV4dC1idG4sXG4gICZfX25leHQtYnRuX19kaXNhYmxlZCB7XG4gICAgY29sb3I6ICRjdXJpb3VzLWJsdWU7XG4gICAgYm9yZGVyLWNvbG9yOiAkY3VyaW91cy1ibHVlO1xuICB9XG5cbiAgJl9fbmV4dC1idG5fX2Rpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAuNTtcbiAgICBjdXJzb3I6IGF1dG87XG4gIH1cblxuICAmX19jYW5jZWwtYnRuIHtcbiAgICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gICAgYm9yZGVyLWNvbG9yOiAkZHVzdHktZ3JheTtcbiAgfVxuXG4gICZfX2N1c3RvbWl6ZS1nYXMge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNEOEQ4RDg7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7XG4gICAgYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgwLDAsMCwwLjE0KTtcbiAgICBmb250LWZhbWlseTogUm9ib3RvO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiBjb2x1bW47XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICAgIHdpZHRoOiAxMDB2dztcbiAgICAgIGhlaWdodDogMTAwdmg7XG4gICAgfVxuXG4gICAgJl9faGVhZGVyIHtcbiAgICAgIGhlaWdodDogNTJweDtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYWx0bztcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgZm9udC1zaXplOiAyMnB4O1xuXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICB9XG4gICAgfVxuXG4gICAgJl9fdGl0bGUge1xuICAgICAgbWFyZ2luLWxlZnQ6IDE5LjI1cHg7XG4gICAgfVxuXG4gICAgJl9fY2xvc2U6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6ICdcXDAwRDcnO1xuICAgICAgZm9udC1zaXplOiAxLjhlbTtcbiAgICAgIGNvbG9yOiAkZHVzdHktZ3JheTtcbiAgICAgIGZvbnQtZmFtaWx5OiBzYW5zLXNlcmlmO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxOS4yNXB4O1xuICAgIH1cblxuICAgICZfX2NvbnRlbnQge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICB9XG5cbiAgICAmX19ib2R5IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuXG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICAgICAgZmxleC1mbG93OiBjb2x1bW47XG4gICAgICAgIGZsZXg6IDEgMSBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgICZfX2Zvb3RlciB7XG4gICAgICBoZWlnaHQ6IDc1cHg7XG4gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGFsdG87XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIGZvbnQtc2l6ZTogMjJweDtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGJyZWFrLXNtYWxsKSB7XG4gICAgICAgIGZsZXg6IDAgMCBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgICZfX2J1dHRvbnMge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgIHdpZHRoOiAxODEuNzVweDtcbiAgICAgIG1hcmdpbi1yaWdodDogMjEuMjVweDtcbiAgICB9XG5cbiAgICAmX19yZXZlcnQsICZfX2NhbmNlbCwgJl9fc2F2ZSwgJl9fc2F2ZV9fZXJyb3Ige1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICAmX19yZXZlcnQge1xuICAgICAgY29sb3I6ICRzaWx2ZXItY2hhbGljZTtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIG1hcmdpbi1sZWZ0OiAyMS4yNXB4O1xuICAgIH1cblxuICAgICZfX2NhbmNlbCwgJl9fc2F2ZSwgJl9fc2F2ZV9fZXJyb3Ige1xuICAgICAgaGVpZ2h0OiAzNC42NHB4O1xuICAgICAgd2lkdGg6IDg1Ljc0cHg7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCAkZHVzdHktZ3JheTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgIGZvbnQtZmFtaWx5OiAnRElOIE9UJztcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIGNvbG9yOiAkZHVzdHktZ3JheTtcbiAgICB9XG5cbiAgICAmX19zYXZlX19lcnJvciB7XG4gICAgICBvcGFjaXR5OiAwLjU7XG4gICAgICBjdXJzb3I6IGF1dG87XG4gICAgfVxuXG4gICAgJl9fZXJyb3ItbWVzc2FnZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogNHB4O1xuICAgICAgcmlnaHQ6IDRweDtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxMnB4O1xuICAgICAgY29sb3I6ICRyZWQ7XG4gICAgfVxuICB9XG5cbiAgJl9fZ2FzLW1vZGFsLWNhcmQge1xuICAgIHdpZHRoOiAzNjBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogY29sdW1uO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgIHBhZGRpbmctbGVmdDogMjBweDtcblxuICAgICZfX3RpdGxlIHtcbiAgICAgIGhlaWdodDogMjZweDtcbiAgICAgIGNvbG9yOiAkdHVuZG9yYTtcbiAgICAgIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICBmb250LXdlaWdodDogMzAwO1xuICAgICAgbGluZS1oZWlnaHQ6IDI2cHg7XG4gICAgICBtYXJnaW4tdG9wOiAxN3B4O1xuICAgIH1cblxuICAgICZfX2NvcHkge1xuICAgICAgaGVpZ2h0OiAzOHB4O1xuICAgICAgd2lkdGg6IDMxNHB4O1xuICAgICAgY29sb3I6ICR0dW5kb3JhO1xuICAgICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxOXB4O1xuICAgICAgbWFyZ2luLXRvcDogMTdweDtcbiAgICB9XG5cbiAgICAuY3VzdG9taXplLWdhcy1pbnB1dC13cmFwcGVyIHtcbiAgICAgIG1hcmdpbi10b3A6IDE3cHg7XG4gICAgfVxuXG4gICAgLmN1c3RvbWl6ZS1nYXMtaW5wdXQge1xuICAgICAgaGVpZ2h0OiA1NHB4O1xuICAgICAgd2lkdGg6IDMxNXB4O1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJGdleXNlcjtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgICAgIHBhZGRpbmctbGVmdDogMTVweDtcbiAgICB9XG5cbiAgICAuZ2FzLXRvb2x0aXAtaW5wdXQtYXJyb3dzIHtcbiAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgaGVpZ2h0OiA1NHB4O1xuICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZGFkYWRhO1xuICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgY29sb3I6ICR0dW5kb3JhO1xuICAgICAgcmlnaHQ6IDBweDtcbiAgICAgIHBhZGRpbmc6IDFweCA0cHg7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cblxuICAgIGlucHV0W3R5cGU9XCJudW1iZXJcIl06Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24ge1xuICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdOmhvdmVyOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uIHtcbiAgICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG59XG4iLCIuY29uZmlybS1zY3JlZW4tY29udGFpbmVyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmb250LWZhbWlseTogUm9ib3RvO1xuICBmbGV4OiAwIDAgYXV0bztcbiAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuICBib3gtc2hhZG93OiAwIDJweCA0cHggMCByZ2JhKCRibGFjaywgLjA4KTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA1NzZweCkge1xuICAgIC8vIHRvcDogLTI2cHg7XG4gIH1cbn1cblxuLm5vdGlmaWNhdGlvbiB7XG4gIC5jb25maXJtLXNjcmVlbi13cmFwcGVyIHtcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgICAgaGVpZ2h0OiBjYWxjKDEwMHZoIC0gODVweCk7XG4gICAgfVxuICB9XG59XG5cbi5jb25maXJtLXNjcmVlbi13cmFwcGVyIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICB3aWR0aDogMzgwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuICB6LWluZGV4OiAyNTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDhweDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDhweDtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB0b3A6IDA7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwdmggLSA1OHB4IC0gODVweCk7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcbiAgfVxufVxuXG4uY29uZmlybS1zY3JlZW4td3JhcHBlciA+IC5jb25maXJtLXNjcmVlbi10b3RhbC1ib3gge1xuICBtYXJnaW4tbGVmdDogMTBweDtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xufVxuXG4uY29uZmlybS1zY3JlZW4td3JhcHBlciA+IC5jb25maXJtLW1lbW8td3JhcHBlciB7XG4gIG1hcmdpbjogMDtcbn1cblxuLmNvbmZpcm0tc2NyZWVuLWhlYWRlciB7XG4gIGhlaWdodDogODhweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGF0aGVucy1ncmV5O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmb250LXNpemU6IDIycHg7XG4gIGxpbmUtaGVpZ2h0OiAyOXB4O1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMjVweCAwO1xuICBmbGV4OiAwIDAgYXV0bztcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICBmb250LXNpemU6IDIwcHg7XG4gIH1cbn1cblxuLmNvbmZpcm0tc2NyZWVuLWhlYWRlci10aXAge1xuICBoZWlnaHQ6IDI1cHg7XG4gIHdpZHRoOiAyNXB4O1xuICBiYWNrZ3JvdW5kOiAkYXRoZW5zLWdyZXk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICB0b3A6IDcxcHg7XG4gIGxlZnQ6IDA7XG4gIHJpZ2h0OiAwO1xuICBtYXJnaW46IDAgYXV0bztcbn1cblxuLmNvbmZpcm0tc2NyZWVuLXRpdGxlIHtcbiAgbGluZS1oZWlnaHQ6IDI3cHg7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGJyZWFrLXNtYWxsKSB7XG4gICAgbWFyZ2luLWxlZnQ6IDIycHg7XG4gICAgbWFyZ2luLXJpZ2h0OiA4cHg7XG4gIH1cbn1cblxuLmNvbmZpcm0tc2NyZWVuLWJhY2stYnV0dG9uIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMXB4IHNvbGlkICRjdXJpb3VzLWJsdWU7XG4gIGxlZnQ6IDI0cHg7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogJGN1cmlvdXMtYmx1ZTtcbiAgcGFkZGluZzogNnB4IDEzcHggN3B4IDEycHg7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgaGVpZ2h0OiAzMHB4O1xuICB3aWR0aDogNTRweDtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gIH1cbn1cblxuLmNvbmZpcm0tc2NyZWVuLWFjY291bnQtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5jb25maXJtLXNjcmVlbi1hY2NvdW50LW5hbWUge1xuICBtYXJnaW4tdG9wOiAxMnB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGxpbmUtaGVpZ2h0OiAxOXB4O1xuICBjb2xvcjogJHNjb3JwaW9uO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5jb25maXJtLXNjcmVlbi1yb3ctaW5mbyB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDIxcHg7XG59XG5cbi5jb25maXJtLXNjcmVlbi1hY2NvdW50LW51bWJlciB7XG4gIGZvbnQtc2l6ZTogMTBweDtcbiAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gIGNvbG9yOiAkZHVzdHktZ3JheTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBoZWlnaHQ6IDE2cHg7XG59XG5cbi5jb25maXJtLXNlbmQtZXRoZXIsXG4uY29uZmlybS1zZW5kLXRva2VuIHtcbiAgaS5mYS1hcnJvdy1yaWdodCB7XG4gICAgYWxpZ24tc2VsZjogc3RhcnQ7XG4gICAgbWFyZ2luOiAyNHB4IDE0cHggMCAhaW1wb3J0YW50O1xuICB9XG59XG5cbi5jb25maXJtLXNjcmVlbi1pZGVudGljb25zIHtcbiAgbWFyZ2luLXRvcDogMjRweDtcbiAgZmxleDogMCAwIGF1dG87XG5cbiAgaS5mYS1hcnJvdy1yaWdodCB7XG4gICAgYWxpZ24tc2VsZjogc3RhcnQ7XG4gICAgbWFyZ2luOiA0MnB4IDE0cHggMDtcbiAgfVxuXG4gIGkuZmEtZmlsZS10ZXh0LW8ge1xuICAgIGZvbnQtc2l6ZTogNjBweDtcbiAgICBtYXJnaW46IDE2cHggOHB4IDAgOHB4O1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgfVxufVxuXG4uY29uZmlybS1zY3JlZW4tc2VuZGluZy10by1tZXNzYWdlIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDE2cHg7XG4gIG1hcmdpbi10b3A6IDMwcHg7XG4gIGZvbnQtZmFtaWx5OiAnRElOIE5FWFQgTGlnaHQnO1xufVxuXG4uY29uZmlybS1zY3JlZW4tc2VuZC1hbW91bnQge1xuICBjb2xvcjogJHNjb3JwaW9uO1xuICBtYXJnaW4tdG9wOiAxMnB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogNDBweDtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbGluZS1oZWlnaHQ6IDUzcHg7XG4gIGZsZXg6IDAgMCBhdXRvO1xufVxuXG4uY29uZmlybS1zY3JlZW4tc2VuZC1hbW91bnQtY3VycmVuY3kge1xuICBmb250LXNpemU6IDIwcHg7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZsZXg6IDAgMCBhdXRvO1xufVxuXG4uY29uZmlybS1tZW1vLXdyYXBwZXIge1xuICBtaW4taGVpZ2h0OiAyNHB4O1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRhbHRvO1xuICBmbGV4OiAwIDAgYXV0bztcbn1cblxuLmNvbmZpcm0tc2NyZWVuLXNlbmQtbWVtbyB7XG4gIGNvbG9yOiAkc2NvcnBpb247XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDE5cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5cbi5jb25maXJtLXNjcmVlbi1sYWJlbCB7XG4gIGZvbnQtc2l6ZTogMThweDtcbiAgbGluZS1oZWlnaHQ6IDQwcHg7XG4gIGNvbG9yOiAkc2NvcnBpb247XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbnNlY3Rpb24gLmNvbmZpcm0tc2NyZWVuLWFjY291bnQtbmFtZSxcbnNlY3Rpb24gLmNvbmZpcm0tc2NyZWVuLWFjY291bnQtbnVtYmVyLFxuLmNvbmZpcm0tc2NyZWVuLXJvdy1pbmZvLFxuLmNvbmZpcm0tc2NyZWVuLXJvdy1kZXRhaWwge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xufVxuXG4uY29uZmlybS1zY3JlZW4tcm93cyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgd2lkdGg6IDEwMCU7XG4gIGZsZXg6IDAgMCBhdXRvO1xufVxuXG4uY29uZmlybS1zY3JlZW4tc2VjdGlvbi1jb2x1bW4ge1xuICBmbGV4OiAuNTtcbn1cblxuLmNvbmZpcm0tc2NyZWVuLXJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRhbHRvO1xuICB3aWR0aDogMTAwJTtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcGFkZGluZzogMTJweDtcbiAgcGFkZGluZy1sZWZ0OiAzNXB4O1xuICBmb250LXNpemU6IDE2cHg7XG4gIGxpbmUtaGVpZ2h0OiAyMnB4O1xuICBmb250LXdlaWdodDogMzAwO1xufVxuXG4uY29uZmlybS1zY3JlZW4tcm93LWRldGFpbCB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gIGNvbG9yOiAkZHVzdHktZ3JheTtcbn1cblxuLmNvbmZpcm0tc2NyZWVuLXRvdGFsLWJveCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICR3aWxkLXNhbmQ7XG4gIHBhZGRpbmc6IDIwcHg7XG4gIHBhZGRpbmctbGVmdDogMzVweDtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICRhbHRvO1xuXG4gIC5jb25maXJtLXNjcmVlbi1sYWJlbCB7XG4gICAgbGluZS1oZWlnaHQ6IDE4cHg7XG4gIH1cblxuICAuY29uZmlybS1zY3JlZW4tcm93LWRldGFpbCB7XG4gICAgY29sb3I6ICRzY29ycGlvbjtcbiAgfVxuXG4gICZfX3N1YnRpdGxlIHtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgbGluZS1oZWlnaHQ6IDIycHg7XG4gIH1cblxuICAuY29uZmlybS1zY3JlZW4tcm93LWluZm8ge1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGxpbmUtaGVpZ2h0OiAyMXB4O1xuICB9XG59XG5cbi5jb25maXJtLXNjcmVlbi1jb25maXJtLWJ1dHRvbiB7XG4gIGhlaWdodDogNjJweDtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDJjOWIxO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGNvbG9yOiAkd2hpdGU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgcGFkZGluZy10b3A6IDE1cHg7XG4gIHBhZGRpbmctYm90dG9tOiAxNXB4O1xuICBib3JkZXItd2lkdGg6IDA7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIGZsZXg6IDEgMCBhdXRvO1xuICBmb250LXdlaWdodDogMzAwO1xuICBtYXJnaW46IDAgOHB4O1xufVxuXG4uYnRuLWxpZ2h0LmNvbmZpcm0tc2NyZWVuLWNhbmNlbC1idXR0b24ge1xuICBoZWlnaHQ6IDYycHg7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3BhY2l0eTogMTtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgYm9yZGVyLXdpZHRoOiAwO1xuICBwYWRkaW5nLXRvcDogMTVweDtcbiAgcGFkZGluZy1ib3R0b206IDE1cHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgbGluZS1oZWlnaHQ6IDMycHg7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgZmxleDogMSAwIGF1dG87XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIG1hcmdpbjogMCA4cHg7XG59XG5cbiNwZW5kaW5nLXR4LWZvcm0ge1xuICBmbGV4OiAxIDAgYXV0bztcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgcGFkZGluZzogMTJweCAxOHB4O1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA4cHg7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA4cHg7XG4gIHdpZHRoOiAxMDAlO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkYWx0bztcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICB9XG59XG4iLCIubG9hZGluZy1vdmVybGF5IHtcbiAgbGVmdDogMHB4O1xuICB6LWluZGV4OiA1MDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1NzVweCkge1xuICAgIG1hcmdpbi10b3A6IDU2cHg7XG4gICAgaGVpZ2h0OiBjYWxjKDEwMCUgLSA1NnB4KTtcbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDU3NnB4KSB7XG4gICAgbWFyZ2luLXRvcDogNzVweDtcbiAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDc1cHgpO1xuICB9XG59XG4iLCIuaGVyby1iYWxhbmNlIHtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luOiAuM2VtIC45ZW0gMDtcbiAgICAvLyBoZWlnaHQ6IDgwdmg7XG4gICAgLy8gbWF4LWhlaWdodDogMjI1cHg7XG4gICAgZmxleDogMCAwIGF1dG87XG4gIH1cblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkYnJlYWstbGFyZ2UpIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luOiAyLjhlbSAyLjM3ZW0gLjhlbTtcbiAgfVxuXG4gIC5iYWxhbmNlLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBtYXJnaW46IDA7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBmbGV4OiAwIDAgYXV0bztcbiAgICB9XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkYnJlYWstbGFyZ2UpIHtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICBmbGV4LWdyb3c6IDM7XG4gICAgfVxuICB9XG5cbiAgLmJhbGFuY2UtZGlzcGxheSB7XG5cbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICAgICAgLnRva2VuLWFtb3VudCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTc1JTtcbiAgICAgICAgbWFyZ2luLXRvcDogMTIuNSU7XG4gICAgICB9XG5cbiAgICAgIC5maWF0LWFtb3VudCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTE1JTtcbiAgICAgICAgbWFyZ2luLXRvcDogOC41JTtcbiAgICAgICAgY29sb3I6ICNhMGEwYTA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGJyZWFrLWxhcmdlKSB7XG4gICAgICBtYXJnaW4tbGVmdDogMyU7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblxuICAgICAgLnRva2VuLWFtb3VudCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTM1JTtcbiAgICAgIH1cblxuICAgICAgLmZpYXQtYW1vdW50IHtcbiAgICAgICAgbWFyZ2luLXRvcDogLjI1JTtcbiAgICAgICAgZm9udC1zaXplOiAxMDUlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5iYWxhbmNlLWljb24ge1xuICAgIGJvcmRlci1yYWRpdXM6IDI1cHg7XG4gICAgd2lkdGg6IDQ1cHg7XG4gICAgaGVpZ2h0OiA0NXB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRhbHRvO1xuICB9XG5cbiAgLmhlcm8tYmFsYW5jZS1idXR0b25zIHtcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAvLyBoZWlnaHQ6IDEwMHB4OyAvLyBuZWVkZWQgYSByb3VuZCBudW1iZXIgdG8gc2V0IHRoZSBoZWlnaHRzIG9mIHRoZSBidXR0b25zIGluc2lkZVxuICAgICAgZmxleDogMCAwIGF1dG87XG4gICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgfVxuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGJyZWFrLWxhcmdlKSB7XG4gICAgICBmbGV4LWdyb3c6IDI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIH1cblxuICAgIGJ1dHRvbi5idG4tY2xlYXIge1xuICAgICAgYmFja2dyb3VuZDogJHdoaXRlO1xuICAgICAgYm9yZGVyOiAxcHggc29saWQ7XG4gICAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgICBmb250LXNpemU6IDEycHg7XG5cbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgICAgICBib3JkZXItY29sb3I6ICRjdXJpb3VzLWJsdWU7XG4gICAgICAgIGNvbG9yOiAkY3VyaW91cy1ibHVlO1xuICAgICAgICBoZWlnaHQ6IDM2cHg7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRicmVhay1sYXJnZSkge1xuICAgICAgICBib3JkZXItY29sb3I6ICRjdXJpb3VzLWJsdWU7XG4gICAgICAgIGNvbG9yOiAkY3VyaW91cy1ibHVlO1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICB3aWR0aDogODVweDtcbiAgICAgICAgaGVpZ2h0OiAzNHB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiJHdhbGxldC1iYWxhbmNlLWJnOiAjZTdlN2U3O1xuJHdhbGxldC1iYWxhbmNlLWJyZWFrcG9pbnQ6IDg5MHB4O1xuJHdhbGxldC1iYWxhbmNlLWJyZWFrcG9pbnQtcmFuZ2U6IFwic2NyZWVuIGFuZCAobWluLXdpZHRoOiAjeyRicmVhay1sYXJnZX0pIGFuZCAobWF4LXdpZHRoOiAjeyR3YWxsZXQtYmFsYW5jZS1icmVha3BvaW50fSlcIjtcblxuLndhbGxldC1iYWxhbmNlLXdyYXBwZXIge1xuICBmbGV4OiAwIDAgYXV0bztcbiAgdHJhbnNpdGlvbjogbGluZWFyIDIwMG1zO1xuICBiYWNrZ3JvdW5kOiByZ2JhKCR3YWxsZXQtYmFsYW5jZS1iZywgMCk7XG5cbiAgJi0tYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKCR3YWxsZXQtYmFsYW5jZS1iZywgMSk7XG4gIH1cbn1cblxuLndhbGxldC1iYWxhbmNlIHtcbiAgYmFja2dyb3VuZDogaW5oZXJpdDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBmbGV4OiAwIDAgYXV0bztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgJHdhbGxldC1iYWxhbmNlLWJnO1xuXG4gIC5iYWxhbmNlLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW46IDIwcHggMjRweDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGZsZXgtZ3JvdzogMztcblxuICAgIEBtZWRpYSAjeyR3YWxsZXQtYmFsYW5jZS1icmVha3BvaW50LXJhbmdlfSB7XG4gICAgICBtYXJnaW46IDEwJSA0JTtcbiAgICB9XG4gIH1cblxuICAuYmFsYW5jZS1kaXNwbGF5IHtcbiAgICBtYXJnaW4tbGVmdDogMTVweDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cbiAgICAudG9rZW4tYW1vdW50IHtcbiAgICAgIGZvbnQtc2l6ZTogMTM1JTtcbiAgICB9XG5cbiAgICAuZmlhdC1hbW91bnQge1xuICAgICAgbWFyZ2luLXRvcDogLjI1JTtcbiAgICAgIGZvbnQtc2l6ZTogMTA1JTtcbiAgICB9XG5cbiAgICBAbWVkaWEgI3skd2FsbGV0LWJhbGFuY2UtYnJlYWtwb2ludC1yYW5nZX0ge1xuICAgICAgbWFyZ2luLWxlZnQ6IDQlO1xuXG4gICAgICAudG9rZW4tYW1vdW50IHtcbiAgICAgICAgZm9udC1zaXplOiAxMDUlO1xuICAgICAgfVxuXG4gICAgICAuZmlhdC1hbW91bnQge1xuICAgICAgICBmb250LXNpemU6IDk1JTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuYmFsYW5jZS1pY29uIHtcbiAgICBib3JkZXItcmFkaXVzOiAyNXB4O1xuICAgIHdpZHRoOiA0NXB4O1xuICAgIGhlaWdodDogNDVweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkYWx0bztcbiAgfVxufVxuIiwiLnR4LWxpc3QtY29udGFpbmVyIHtcbiAgaGVpZ2h0OiA4Ny41JTtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkYnJlYWstbGFyZ2UpIHtcbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XG4gIH1cbn1cblxuLnR4LWxpc3QtaGVhZGVyIHtcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAudHgtbGlzdC1oZWFkZXItd3JhcHBlciB7XG4gICAgbWFyZ2luLXRvcDogLjJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAuNmVtO1xuICAgIC8vIFRPRE86IFJlc29sdmUgTGF5b3V0IENvbmZsaWNzdCBpbiBXYWxsZXQgVmlld1xuICAgIC8vICAtIFRoaXMgZml4ZXMgdHhsaXN0IFwidHJhbnNhY3Rpb25zXCIgdGl0bGUgZGlzcGF5XG4gICAgLy8gbWFyZ2luLXRvcDogMC4yZW07XG4gICAgLy8gbWFyZ2luLWJvdHRvbTogMC42ZW07XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZmxleDogMCAwIGF1dG87XG4gIH1cblxuICAudHgtbGlzdC1oZWFkZXIge1xuICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgfVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkYnJlYWstbGFyZ2UpIHtcbiAgLnR4LWxpc3QtaGVhZGVyLXdyYXBwZXIge1xuICAgIGZsZXg6IDAgMCA1NXB4O1xuICB9XG5cbiAgLnR4LWxpc3QtaGVhZGVyIHtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgbWFyZ2luOiAxLjVlbSAyLjM3ZW07XG4gIH1cblxuICAudHgtbGlzdC1jb250YWluZXI6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi50eC1saXN0LWNvbnRlbnQtZGl2aWRlciB7XG4gIGhlaWdodDogMXB4O1xuICBiYWNrZ3JvdW5kOiByZ2IoMjMxLCAyMzEsIDIzMSk7XG4gIGZsZXg6IDAgMCAxcHg7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGJyZWFrLXNtYWxsKSB7XG4gICAgbWFyZ2luOiAuMWVtIDA7XG4gIH1cblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkYnJlYWstbGFyZ2UpIHtcbiAgICBtYXJnaW46IC4xZW0gMi4zN2VtO1xuICB9XG59XG5cbi50eC1saXN0LWl0ZW0td3JhcHBlciB7XG4gIGZsZXg6IDEgMSBhdXRvO1xuICB3aWR0aDogMDtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgIHBhZGRpbmc6IDAgMS4zZW0gLjhlbTtcbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRicmVhay1sYXJnZSkge1xuICAgIHBhZGRpbmctYm90dG9tOiAxMnB4O1xuICB9XG59XG5cbi50eC1saXN0LWNsaWNrYWJsZSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKCRhbHRvLCAuMik7XG4gIH1cbn1cblxuLnR4LWxpc3QtcGVuZGluZy1pdGVtLWNvbnRhaW5lciB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgb3BhY2l0eTogLjU7XG59XG5cbi50eC1saXN0LWRhdGUtd3JhcHBlciB7XG4gIGZsZXg6IDEgMSBhdXRvO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgIG1hcmdpbi10b3A6IDZweDtcbiAgfVxuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRicmVhay1sYXJnZSkge1xuICAgIG1hcmdpbi10b3A6IDEycHg7XG4gIH1cbn1cblxuLnR4LWxpc3QtY29udGVudC13cmFwcGVyIHtcbiAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7XG4gIG1hcmdpbi1ib3R0b206IDRweDtcbiAgbWFyZ2luLXRvcDogMnB4O1xuICBmbGV4OiAxIDAgYXV0bztcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICBmb250LXNpemU6IDEycHg7XG5cbiAgICAudHgtbGlzdC1zdGF0dXMge1xuICAgICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnR4LWxpc3QtYWNjb3VudCB7XG4gICAgICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAudHgtbGlzdC12YWx1ZSB7XG4gICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICBsaW5lLWhlaWdodDogMThweDtcbiAgICB9XG5cbiAgICAudHgtbGlzdC1maWF0LXZhbHVlIHtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICAgIH1cbiAgfVxufVxuXG4udHgtbGlzdC1kYXRlIHtcbiAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG59XG5cbi50eC1saXN0LWlkZW50aWNvbi13cmFwcGVyIHtcbiAgYWxpZ24tc2VsZjogY2VudGVyO1xuICBmbGV4OiAwIDAgYXV0bztcbiAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xufVxuXG4udHgtbGlzdC1hY2NvdW50LWFuZC1zdGF0dXMtd3JhcHBlciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXg6IDEgMSBhdXRvO1xuICBmbGV4LWZsb3c6IHJvdyB3cmFwO1xuICB3aWR0aDogMDtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAkYnJlYWstc21hbGwpIHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG5cbiAgICAudHgtbGlzdC1hY2NvdW50LXdyYXBwZXIge1xuICAgICAgaGVpZ2h0OiAxOHB4O1xuXG4gICAgICAudHgtbGlzdC1hY2NvdW50IHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE0cHg7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGJyZWFrLWxhcmdlKSB7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIC50eC1saXN0LWFjY291bnQtd3JhcHBlciB7XG4gICAgICBmbGV4OiAxLjMgMiBhdXRvO1xuICAgICAgbWluLXdpZHRoOiAxNTNweDtcbiAgICB9XG5cbiAgICAudHgtbGlzdC1zdGF0dXMtd3JhcHBlciB7XG4gICAgICBmbGV4OiA2IDYgYXV0bztcbiAgICB9XG4gIH1cblxuICAudHgtbGlzdC1hY2NvdW50IHtcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgY29sb3I6ICRzY29ycGlvbjtcbiAgfVxuXG4gIC50eC1saXN0LXN0YXR1cyB7XG4gICAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbiAgfVxuXG4gIC50eC1saXN0LXN0YXR1cy0tcmVqZWN0ZWQsXG4gIC50eC1saXN0LXN0YXR1cy0tZmFpbGVkIHtcbiAgICBjb2xvcjogJG1vbnpvO1xuICB9XG59XG5cbi50eC1saXN0LWl0ZW0ge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiKDIzMSwgMjMxLCAyMzEpO1xuICBmbGV4OiAwIDAgYXV0bztcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRicmVhay1zbWFsbCkge1xuICAgIC8vIG1hcmdpbjogMCAxLjNlbSAuOTVlbTsgIWltcG9ydGFudFxuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGJyZWFrLWxhcmdlKSB7XG4gICAgbWFyZ2luOiAwIDIuMzdlbTtcbiAgfVxuXG4gICY6bGFzdC1vZi10eXBlIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiKDIzMSwgMjMxLCAyMzEpO1xuICAgIG1hcmdpbi1ib3R0b206IDMycHg7XG4gIH1cblxuICAmX193cmFwcGVyIHtcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAgZmxleDogMiAyIGF1dG87XG4gICAgY29sb3I6ICRkdXN0eS1ncmF5O1xuXG4gICAgLnR4LWxpc3QtdmFsdWUge1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgfVxuXG4gICAgLnR4LWxpc3QtdmFsdWUtLWNvbmZpcm1lZCB7XG4gICAgICBjb2xvcjogJGNhcmliYmVhbi1ncmVlbjtcbiAgICB9XG5cbiAgICAudHgtbGlzdC1maWF0LXZhbHVlIHtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gICYtLWVtcHR5IHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZSAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDE2cHg7XG4gIH1cbn1cblxuLnR4LWxpc3QtZGV0YWlscy13cmFwcGVyIHtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZmxleDogMCAwIDM1JTtcbn1cblxuLnR4LWxpc3QtdmFsdWUge1xuICBmb250LXNpemU6IDE2cHg7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnR4LWxpc3QtZmlhdC12YWx1ZSB7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnR4LWxpc3QtdmFsdWUtLWNvbmZpcm1lZCB7XG4gIGNvbG9yOiAkY2FyaWJiZWFuLWdyZWVuO1xufVxuIiwiLy8gT2xkIHNjc3MsIGRvIG5vdCBsaW50IC0gY2xlYW4gdXAgbGF0ZXJcbi8qIHN0eWxlbGludC1kaXNhYmxlICovXG5cblxuLypcbkFwcCBTZWN0aW9uc1xuICBUT0RPOiBNb3ZlIGludG8gc2VwYXJhdGUgZmlsZXMuXG4qL1xuXG4vKiBpbml0aWFsaXplICovXG50ZXh0YXJlYS50d2VsdmUtd29yZC1waHJhc2Uge1xuICBwYWRkaW5nOiAxMnB4O1xuICB3aWR0aDogMzAwcHg7XG4gIGhlaWdodDogMTQwcHg7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgYmFja2dyb3VuZDogJHdoaXRlO1xuICByZXNpemU6IG5vbmU7XG59XG5cbi5pbml0aWFsaXplLXNjcmVlbiBociB7XG4gIHdpZHRoOiA2MHB4O1xuICBtYXJnaW46IDEycHg7XG4gIGJvcmRlci1jb2xvcjogI2Y3ODYxYztcbiAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbn1cblxuLmluaXRpYWxpemUtc2NyZWVuIGxhYmVsIHtcbiAgbWFyZ2luLXRvcDogMjBweDtcbn1cblxuLmluaXRpYWxpemUtc2NyZWVuIGJ1dHRvbi5jcmVhdGUtdmF1bHQge1xuICBtYXJnaW4tdG9wOiA0MHB4O1xufVxuXG4uaW5pdGlhbGl6ZS1zY3JlZW4gLndhcm5pbmcge1xuICBmb250LXNpemU6IDE0cHg7XG4gIG1hcmdpbjogMCAxNnB4O1xufVxuXG4vKiB1bmxvY2sgKi9cbi5lcnJvciB7XG4gIC8vIGNvbG9yOiAjZTIwMjAyO1xuICBjb2xvcjogI2Y3ODYxYztcbiAgbWFyZ2luLWJvdHRvbTogOXB4O1xufVxuXG4ud2FybmluZyB7XG4gIGNvbG9yOiAjZmZhZTAwO1xufVxuXG4ubG9jayB7XG4gIHdpZHRoOiA1MHB4O1xuICBoZWlnaHQ6IDUwcHg7XG59XG5cbi5sb2NrLmxvY2tlZCB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS41KTtcbiAgb3BhY2l0eTogMDtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSA0MDBtcyBlYXNlLWluLCB0cmFuc2Zvcm0gNDAwbXMgZWFzZS1pbjtcbn1cblxuLmxvY2sudW5sb2NrZWQge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICBvcGFjaXR5OiAxO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDUwMG1zIGVhc2Utb3V0LCB0cmFuc2Zvcm0gNTAwbXMgZWFzZS1vdXQsIGJhY2tncm91bmQgMjAwbXMgZWFzZS1pbjtcbn1cblxuLmxvY2subG9ja2VkIC5sb2NrLXRvcCB7XG4gIHRyYW5zZm9ybTogc2NhbGVYKDEpIHRyYW5zbGF0ZVgoMCk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcyBlYXNlLWluO1xufVxuXG4ubG9jay51bmxvY2tlZCAubG9jay10b3Age1xuICB0cmFuc2Zvcm06IHNjYWxlWCgtMSkgdHJhbnNsYXRlWCgtMTJweCk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcyBlYXNlLWluO1xufVxuXG4ubG9jay51bmxvY2tlZDpob3ZlciB7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYmFja2dyb3VuZDogI2U1ZTVlNTtcbiAgYm9yZGVyOiAxcHggc29saWQgI2IxYjFiMTtcbn1cblxuLmxvY2sudW5sb2NrZWQ6YWN0aXZlIHtcbiAgYmFja2dyb3VuZDogI2MzYzNjMztcbn1cblxuLnNlY3Rpb24tdGl0bGUgLmZhLWFycm93LWxlZnQge1xuICBtYXJnaW46IC0ycHggOHB4IDBweCAtOHB4O1xufVxuXG4udW5sb2NrLXNjcmVlbiAjbWV0YW1hc2stbWFzY290LWNvbnRhaW5lciB7XG4gIG1hcmdpbi10b3A6IDI0cHg7XG59XG5cbi51bmxvY2stc2NyZWVuIGgxIHtcbiAgbWFyZ2luLXRvcDogLTI4cHg7XG4gIG1hcmdpbi1ib3R0b206IDQycHg7XG59XG5cbi51bmxvY2stc2NyZWVuIGlucHV0W3R5cGU9cGFzc3dvcmRdIHtcbiAgd2lkdGg6IDI2MHB4O1xufVxuXG4uc2l6aW5nLWlucHV0IHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBoZWlnaHQ6IDMwcHg7XG4gIHBhZGRpbmctbGVmdDogNXB4O1xufVxuXG4uZWRpdGFibGUtbGFiZWwge1xuICBkaXNwbGF5OiBmbGV4O1xufVxuXG4vKiBXZWJraXQgKi9cblxuLnVubG9jay1zY3JlZW4gaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG59XG5cbi8qIEZpcmVmb3ggMTgtICovXG5cbi51bmxvY2stc2NyZWVuIGlucHV0Oi1tb3otcGxhY2Vob2xkZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG59XG5cbi8qIEZpcmVmb3ggMTkrICovXG5cbi51bmxvY2stc2NyZWVuIGlucHV0OjotbW96LXBsYWNlaG9sZGVyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDEuMmVtO1xufVxuXG4vKiBJRSAqL1xuXG4udW5sb2NrLXNjcmVlbiBpbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMS4yZW07XG59XG5cbi8qIGFjY291bnRzICovXG5cbi5hY2NvdW50cy1zZWN0aW9uIHtcbiAgbWFyZ2luOiAwIDBweDtcbn1cblxuLmFjY291bnRzLXNlY3Rpb24gLmhvcml6b250YWwtbGluZSB7XG4gIG1hcmdpbjogMCAxOHB4O1xufVxuXG4uYWNjb3VudHMtbGlzdC1vcHRpb24ge1xuICBoZWlnaHQ6IDEyMHB4O1xufVxuXG4uYWNjb3VudHMtbGlzdC1vcHRpb24gLmlkZW50aWNvbi13cmFwcGVyIHtcbiAgd2lkdGg6IDEwMHB4O1xufVxuXG4udW5jb25mdHgtbGluayB7XG4gIG1hcmdpbi10b3A6IDI0cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLnVuY29uZnR4LWxpbmsgLmZhLWFycm93LXJpZ2h0IHtcbiAgbWFyZ2luOiAwIC04cHggMHB4IDhweDtcbn1cblxuLyogaWRlbnRpdHkgcGFuZWwgKi9cblxuLmlkZW50aXR5LXBhbmVsIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLmlkZW50aXR5LXBhbmVsIC5pZGVudGljb24td3JhcHBlciB7XG4gIG1hcmdpbjogNHB4O1xuICBtYXJnaW4tdG9wOiA4cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi5pZGVudGl0eS1wYW5lbCAuaWRlbnRpY29uLXdyYXBwZXIgc3BhbiB7XG4gIG1hcmdpbjogMCBhdXRvO1xufVxuXG4uaWRlbnRpdHktcGFuZWwgLmlkZW50aXR5LWRhdGEge1xuICBtYXJnaW46IDhweCA4cHggOHB4IDE4cHg7XG59XG5cbi5pZGVudGl0eS1wYW5lbCBpIHtcbiAgbWFyZ2luLXRvcDogMzJweDtcbiAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gIGNvbG9yOiAjYjliOWI5O1xufVxuXG4uaWRlbnRpdHktcGFuZWwgLmFycm93LXJpZ2h0IHtcbiAgcGFkZGluZy1sZWZ0OiAxOHB4O1xuICB3aWR0aDogNDJweDtcbiAgbWluLXdpZHRoOiAxOHB4O1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5pZGVudGl0eS1jb3B5LmZsZXgtY29sdW1uIHtcbiAgZmxleDogLjI1IDAgYXV0bztcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi8qIGFjY291bnRzIHNjcmVlbiAqL1xuXG4uaWRlbnRpdHktc2VjdGlvbiB7XG59XG5cbi5pZGVudGl0eS1zZWN0aW9uIC5pZGVudGl0eS1wYW5lbCB7XG4gIGJhY2tncm91bmQ6ICNlOWU5ZTk7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYjFiMWIxO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5pZGVudGl0eS1zZWN0aW9uIC5pZGVudGl0eS1wYW5lbC5zZWxlY3RlZCB7XG4gIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgY29sb3I6ICNmM2M4M2U7XG59XG5cbi5pZGVudGl0eS1zZWN0aW9uIC5pZGVudGl0eS1wYW5lbC5zZWxlY3RlZCAuaWRlbnRpY29uIHtcbiAgYm9yZGVyLWNvbG9yOiAkb3JhbmdlO1xufVxuXG4uaWRlbnRpdHktc2VjdGlvbiAuYWNjb3VudHMtbGlzdC1vcHRpb246aG92ZXIsXG4uaWRlbnRpdHktc2VjdGlvbiAuYWNjb3VudHMtbGlzdC1vcHRpb24uc2VsZWN0ZWQge1xuICBiYWNrZ3JvdW5kOiAkd2hpdGU7XG59XG5cbi8qIGFjY291bnQgZGV0YWlsIHNjcmVlbiAqL1xuXG4uYWNjb3VudC1kZXRhaWwtc2VjdGlvbiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgZmxleC1kaXJlY3Rpb246IGluaGVyaXQ7XG59XG5cbi5ncm93LXRlbngge1xuICBmbGV4LWdyb3c6IDEwO1xufVxuXG4ubmFtZS1sYWJlbCB7XG59XG5cbi51bmFwcHJvdmVkLXR4LWljb24ge1xuICBoZWlnaHQ6IDE2cHg7XG4gIHdpZHRoOiAxNnB4O1xuICBiYWNrZ3JvdW5kOiByZ2IoNDcsIDE3NCwgMjQ0KTtcbiAgYm9yZGVyLWNvbG9yOiAkc2lsdmVyLWNoYWxpY2U7XG4gIGJvcmRlci1yYWRpdXM6IDEzcHg7XG59XG5cbi5lZGl0LXRleHQge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuLmVkaXRpbmctbGFiZWwge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIG1hcmdpbi1sZWZ0OiA1MHB4O1xuICBtYXJnaW4tYm90dG9tOiAycHg7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgdGV4dC1yZW5kZXJpbmc6IGdlb21ldHJpY1ByZWNpc2lvbjtcbiAgY29sb3I6ICNmNzg2MWM7XG59XG5cbi5uYW1lLWxhYmVsOmhvdmVyIC5lZGl0LXRleHQge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuLyogdHggY29uZmlybSAqL1xuXG4udW5jb25mdHgtc2VjdGlvbiBpbnB1dFt0eXBlPXBhc3N3b3JkXSB7XG4gIGhlaWdodDogMjJweDtcbiAgcGFkZGluZzogMnB4O1xuICBtYXJnaW46IDEycHg7XG4gIG1hcmdpbi1ib3R0b206IDI0cHg7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYm9yZGVyOiAycHggc29saWQgI2YzYzgzZTtcbiAgYmFja2dyb3VuZDogI2ZhZjZmMDtcbn1cblxuLyogRXRoZXIgQmFsYW5jZSBXaWRnZXQgKi9cblxuLmV0aGVyLWJhbGFuY2UtYW1vdW50IHtcbiAgY29sb3I6ICNmNzg2MWM7XG59XG5cbi5ldGhlci1iYWxhbmNlLWxhYmVsIHtcbiAgY29sb3I6ICNhYmE5YWE7XG59XG5cbi8qIEluZm8gc2NyZWVuICovXG4uaW5mby1ncmF5IHtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgY29sb3I6ICRzaWx2ZXItY2hhbGljZTtcbn1cblxuLmljb24tc2l6ZSB7XG4gIHdpZHRoOiAyMHB4O1xufVxuXG4uaW5mbyB7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG8sIEFyaWFsO1xuICBwYWRkaW5nLWJvdHRvbTogMTBweDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nLWxlZnQ6IDVweDtcbn1cblxuLyogYnV5IGV0aCB3YXJuaW5nIHNjcmVlbiAqL1xuLmN1c3RvbS1yYWRpb3Mge1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cblxuLmN1c3RvbS1yYWRpby1zZWxlY3RlZCB7XG4gIHdpZHRoOiAxN3B4O1xuICBoZWlnaHQ6IDE3cHg7XG4gIGJvcmRlcjogc29saWQ7XG4gIGJvcmRlci1zdHlsZTogZG91YmxlO1xuICBib3JkZXItcmFkaXVzOiAxNXB4O1xuICBib3JkZXItd2lkdGg6IDVweDtcbiAgYmFja2dyb3VuZDogcmdiYSgyNDcsIDEzNCwgMjgsIDEpO1xuICBib3JkZXItY29sb3I6ICNmN2Y3Zjc7XG59XG5cbi5jdXN0b20tcmFkaW8taW5hY3RpdmUge1xuICB3aWR0aDogMTRweDtcbiAgaGVpZ2h0OiAxNHB4O1xuICBib3JkZXI6IHNvbGlkO1xuICBib3JkZXItd2lkdGg6IDFweDtcbiAgYm9yZGVyLXJhZGl1czogMjRweDtcbiAgYm9yZGVyLWNvbG9yOiAkc2lsdmVyLWNoYWxpY2U7XG59XG5cbi5yYWRpby10aXRsZXMge1xuICBjb2xvcjogcmdiYSgyNDcsIDEzNCwgMjgsIDEpO1xufVxuXG4uZXRoLXdhcm5pbmcge1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDQwMG1zIGVhc2UtaW4sIHRyYW5zZm9ybSA0MDBtcyBlYXNlLWluO1xufVxuXG4uYnV5LXN1YnZpZXcge1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDQwMG1zIGVhc2UtaW4sIHRyYW5zZm9ybSA0MDBtcyBlYXNlLWluO1xufVxuXG4uaW5wdXQtY29udGFpbmVyOmhvdmVyIC5lZGl0LXRleHQge1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuXG4uYnV5LWlucHV0cyB7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgYm9yZGVyOiBzb2xpZDtcbiAgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXdpZHRoOiAuNXB4O1xuICBib3JkZXItcmFkaXVzOiAycHg7XG59XG5cbi5pbnB1dC1jb250YWluZXI6aG92ZXIgLmJ1eS1pbnB1dHMge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xuICBib3JkZXI6IHNvbGlkO1xuICBib3JkZXItY29sb3I6ICNmNzg2MWM7XG4gIGJvcmRlci13aWR0aDogLjVweDtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xufVxuXG4uYnV5LWlucHV0czpmb2N1cyB7XG4gIGJvcmRlcjogc29saWQ7XG4gIGJvcmRlci1jb2xvcjogI2Y3ODYxYztcbiAgYm9yZGVyLXdpZHRoOiAuNXB4O1xuICBib3JkZXItcmFkaXVzOiAycHg7XG59XG5cbi5hY3RpdmVGb3JtIHtcbiAgYmFja2dyb3VuZDogI2Y3ZjdmNztcbiAgYm9yZGVyOiBub25lO1xuICBib3JkZXItcmFkaXVzOiA4cHggOHB4IDBweCAwcHg7XG4gIHdpZHRoOiA1MCU7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcGFkZGluZy1ib3R0b206IDRweDtcbn1cblxuLmluYWN0aXZlRm9ybSB7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogOHB4IDhweCAwcHggMHB4O1xuICB3aWR0aDogNTAlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHBhZGRpbmctYm90dG9tOiA0cHg7XG59XG5cbi5leC1jb2lucyB7XG4gIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1zaXplOiAzM3B4O1xuICB3aWR0aDogMTE4cHg7XG4gIGhlaWdodDogNDJweDtcbiAgcGFkZGluZzogMXB4O1xuICBjb2xvcjogIzRkNGQ0ZDtcbn1cblxuLm1hcmtldGluZm8ge1xuICBmb250LWZhbWlseTogUm9ib3RvO1xuICBjb2xvcjogJHNpbHZlci1jaGFsaWNlO1xuICBmb250LXNpemU6IDE1cHg7XG4gIGxpbmUtaGVpZ2h0OiAxN3B4O1xufVxuXG4jZnJvbUNvaW46Oi13ZWJraXQtY2FsZW5kYXItcGlja2VyLWluZGljYXRvciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbiNjb2luTGlzdCB7XG4gIHdpZHRoOiA0MDBweDtcbiAgaGVpZ2h0OiA1MDBweDtcbiAgb3ZlcmZsb3c6IHNjcm9sbDtcbn1cblxuLmljb24tY29udHJvbCAuZmEtcmVmcmVzaCB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cblxuLmljb24tY29udHJvbDpob3ZlciAuZmEtcmVmcmVzaCB7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG59XG5cbi5pY29uLWNvbnRyb2w6aG92ZXIgLmZhLWNoZXZyb24tcmlnaHQge1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5cbi5pbmFjdGl2ZSB7XG4gIGNvbG9yOiAkc2lsdmVyLWNoYWxpY2U7XG59XG5cbi5pbmFjdGl2ZSBidXR0b24ge1xuICBiYWNrZ3JvdW5kOiAkc2lsdmVyLWNoYWxpY2U7XG4gIGNvbG9yOiAkd2hpdGU7XG59XG5cbi5xci1lbGxpcC1hZGRyZXNzLCAuZWxsaXAtYWRkcmVzcyB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xufVxuXG4ucXItaGVhZGVyIHtcbiAgZm9udC1zaXplOiAyNXB4O1xuICBtYXJnaW4tdG9wOiA0MHB4O1xufVxuXG4ucXItbWVzc2FnZSB7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgY29sb3I6ICNmNzg2MWM7XG59XG5cbmRpdi5tZXNzYWdlLWNvbnRhaW5lciA+IGRpdjpmaXJzdC1jaGlsZCB7XG4gIG1hcmdpbi10b3A6IDE4cHg7XG4gIGZvbnQtc2l6ZTogMTVweDtcbiAgY29sb3I6ICM0ZDRkNGQ7XG59XG5cbi5wb3AtaG92ZXI6aG92ZXIge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG59XG5cbi8qIHN0eWxlbGludC1lbmFibGUgKi9cbiIsIiR3YWxsZXQtYmFsYW5jZS1icmVha3BvaW50OiA4OTBweDtcbiR3YWxsZXQtYmFsYW5jZS1icmVha3BvaW50LXJhbmdlOiBcInNjcmVlbiBhbmQgKG1pbi13aWR0aDogI3skYnJlYWstbGFyZ2V9KSBhbmQgKG1heC13aWR0aDogI3skd2FsbGV0LWJhbGFuY2UtYnJlYWtwb2ludH0pXCI7XG5cbi50b2tlbi1saXN0LWl0ZW0ge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBhZGRpbmc6IDIwcHggMjRweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB0cmFuc2l0aW9uOiBsaW5lYXIgMjAwbXM7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJHdhbGxldC1iYWxhbmNlLWJnLCAwKTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICZfX3Rva2VuLWJhbGFuY2Uge1xuICAgIGZvbnQtc2l6ZTogMTMwJTtcblxuICAgIEBtZWRpYSAjeyR3YWxsZXQtYmFsYW5jZS1icmVha3BvaW50LXJhbmdlfSB7XG4gICAgICBmb250LXNpemU6IDEwNSU7XG4gICAgfVxuICB9XG5cbiAgJl9fZmlhdC1hbW91bnQge1xuICAgIG1hcmdpbi10b3A6IC4yNSU7XG4gICAgZm9udC1zaXplOiAxMDUlO1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbiAgICBAbWVkaWEgI3skd2FsbGV0LWJhbGFuY2UtYnJlYWtwb2ludC1yYW5nZX0ge1xuICAgICAgZm9udC1zaXplOiA5NSU7XG4gICAgfVxuICB9XG5cbiAgQG1lZGlhICN7JHdhbGxldC1iYWxhbmNlLWJyZWFrcG9pbnQtcmFuZ2V9IHtcbiAgICBwYWRkaW5nOiAxMCUgNCU7XG4gIH1cblxuICAmLS1hY3RpdmUge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoJHdhbGxldC1iYWxhbmNlLWJnLCAxKTtcbiAgfVxuXG4gICZfX2lkZW50aWNvbiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZGVkZWRlJztcblxuICAgIEBtZWRpYSAjeyR3YWxsZXQtYmFsYW5jZS1icmVha3BvaW50LXJhbmdlfSB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDQlO1xuICAgIH1cbiAgfVxuXG4gICZfX2VsbGlwc2lzIHtcbiAgICAvLyBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgLy8gdG9wOiAyMHB4O1xuICAgIC8vIHJpZ2h0OiAyNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiA0NXB4O1xuICB9XG5cbiAgJl9fYmFsYW5jZS13cmFwcGVyIHtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgfVxufVxuXG4udG9rZW4tbWVudS1kcm9wZG93biB7XG4gIGhlaWdodDogNTVweDtcbiAgd2lkdGg6IDE5MXB4O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwwLDAsMC44Mik7XG4gIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwIHJnYmEoMCwwLDAsMC41KTtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBtYXJnaW4tdG9wOiAyMHB4O1xuICBtYXJnaW4tbGVmdDogMTA1cHg7XG4gIHotaW5kZXg6IDIwMDA7XG5cbiAgJl9fY2xvc2UtYXJlYSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHotaW5kZXg6IDIxMDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgfVxuXG4gICZfX2NvbnRhaW5lciB7XG4gICAgcGFkZGluZzogMTZweCAzNHB4IDMycHg7XG4gICAgei1pbmRleDogMjIwMDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cblxuICAmX19vcHRpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cblxuICAmX19vcHRpb24ge1xuICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgbGluZS1oZWlnaHQ6IDIxcHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG59IiwiLmFkZC10b2tlbiB7XG4gIHdpZHRoOiA0OThweDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDEyO1xuICBmb250LWZhbWlseTogJ0RJTiBOZXh0IExpZ2h0JztcblxuICAmX193cmFwcGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgkYmxhY2ssIC4wOCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgfVxuXG4gICZfX3RpdGxlLWNvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAzMHB4IDYwcHggMTJweDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdhbGxlcnk7XG4gICAgZmxleDogMCAwIGF1dG87XG4gIH1cblxuICAmX190aXRsZSB7XG4gICAgY29sb3I6ICRzY29ycGlvbjtcbiAgICBmb250LXNpemU6IDIwcHg7XG4gICAgbGluZS1oZWlnaHQ6IDI2cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgbWFyZ2luLWJvdHRvbTogMTJweDtcbiAgfVxuXG4gICZfX2Rlc2NyaXB0aW9uIHtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIH1cblxuICAmX19kZXNjcmlwdGlvbiArICZfX2Rlc2NyaXB0aW9uIHtcbiAgICBtYXJnaW4tdG9wOiAyNHB4O1xuICB9XG5cbiAgJl9fY29uZmlybWF0aW9uLWRlc2NyaXB0aW9uIHtcbiAgICBtYXJnaW46IDEycHggMDtcbiAgfVxuXG4gICZfX2NvbnRlbnQtY29udGFpbmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdhbGxlcnk7XG4gIH1cblxuICAmX19pbnB1dC1jb250YWluZXIge1xuICAgIHBhZGRpbmc6IDExcHggMDtcbiAgICB3aWR0aDogMjYzcHg7XG4gICAgbWFyZ2luOiAwIGF1dG87XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG5cbiAgJl9fc2VhcmNoLWlucHV0LWVycm9yLW1lc3NhZ2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IC0xMHB4O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgY29sb3I6ICRyZWQ7XG4gIH1cblxuICAmX19pbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyOiAycHggc29saWQgJGdhbGxlcnk7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIHBhZGRpbmc6IDVweCAxNXB4O1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBsaW5lLWhlaWdodDogMTlweDtcblxuICAgICY6OnBsYWNlaG9sZGVyIHtcbiAgICAgIGNvbG9yOiAkc2lsdmVyO1xuICAgIH1cbiAgfVxuXG4gICZfX2Zvb3RlcnMge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgJl9fYWRkLWN1c3RvbSB7XG4gICAgY29sb3I6ICRzY29ycGlvbjtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIHBhZGRpbmc6IDEycHggMDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuMDUpO1xuICAgIH1cblxuICAgICY6YWN0aXZlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjEpO1xuICAgIH1cblxuICAgIC5mYSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICByaWdodDogMjRweDtcbiAgICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgIH1cbiAgfVxuXG4gICZfX2FkZC1jdXN0b20tZm9ybSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG4gICAgbWFyZ2luOiA4cHggMCA1MXB4O1xuICB9XG5cbiAgJl9fYWRkLWN1c3RvbS1maWVsZCB7XG4gICAgd2lkdGg6IDI5MHB4O1xuICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICYtLWVycm9yIHtcbiAgICAgIC5hZGQtdG9rZW5fX2FkZC1jdXN0b20taW5wdXQge1xuICAgICAgICBib3JkZXItY29sb3I6ICRyZWQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJl9fYWRkLWN1c3RvbS1lcnJvci1tZXNzYWdlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAtMjFweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGNvbG9yOiAkcmVkO1xuICB9XG5cbiAgJl9fYWRkLWN1c3RvbS1sYWJlbCB7XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyMXB4O1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgfVxuXG4gICZfX2FkZC1jdXN0b20taW5wdXQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRzaWx2ZXI7XG4gICAgcGFkZGluZzogNXB4IDE1cHg7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxOXB4O1xuXG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgY29sb3I6ICRzaWx2ZXI7XG4gICAgfVxuICB9XG5cbiAgJl9fYWRkLWN1c3RvbS1maWVsZCArICZfX2FkZC1jdXN0b20tZmllbGQge1xuICAgIG1hcmdpbi10b3A6IDIxcHg7XG4gIH1cblxuICAmX19idXR0b25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgICBtYXJnaW46IDMwcHggMCA1MXB4O1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICB9XG5cbiAgJl9fdG9rZW4taWNvbnMtY29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IHdyYXA7XG4gIH1cblxuICAmX190b2tlbi13cmFwcGVyIHtcbiAgICB0cmFuc2l0aW9uOiAyMDBtcyBlYXNlLWluLW91dDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgICBmbGV4OiAwIDAgNDIuNSU7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiAxMnB4O1xuICAgIG1hcmdpbjogMi41JTtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgICY6aG92ZXIge1xuICAgICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgkbWFsaWJ1LWJsdWUsIC41KTtcbiAgICB9XG5cbiAgICAmLS1zZWxlY3RlZCB7XG4gICAgICBib3JkZXI6IDJweCBzb2xpZCAkbWFsaWJ1LWJsdWUgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAmLS1kaXNhYmxlZCB7XG4gICAgICBvcGFjaXR5OiAuNDtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxuXG4gICZfX3Rva2VuLWRhdGEge1xuICAgIGFsaWduLXNlbGY6IGZsZXgtc3RhcnQ7XG4gIH1cblxuICAmX190b2tlbi1uYW1lIHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE5cHg7XG4gIH1cblxuICAmX190b2tlbi1zeW1ib2wge1xuICAgIGZvbnQtc2l6ZTogMjJweDtcbiAgICBsaW5lLWhlaWdodDogMjlweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICB9XG5cbiAgJl9fdG9rZW4taWNvbiB7XG4gICAgd2lkdGg6IDYwcHg7XG4gICAgaGVpZ2h0OiA2MHB4O1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiBjb250YWluO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwIHJnYmEoJGJsYWNrLCAuMjQpO1xuICAgIG1hcmdpbi1yaWdodDogMTJweDtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgfVxuXG4gICZfX3Rva2VuLW1lc3NhZ2Uge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBjb2xvcjogJGNhcmliYmVhbi1ncmVlbjtcbiAgICBmb250LXNpemU6IDExcHg7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDg1cHg7XG4gIH1cblxuICAmX19jb25maXJtYXRpb24tdG9rZW4tbGlzdCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbiBub3dyYXA7XG5cbiAgICAudG9rZW4tYmFsYW5jZSB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG5cbiAgICAgICZfX2Ftb3VudCB7XG4gICAgICAgIGNvbG9yOiAkc2NvcnBpb247XG4gICAgICAgIGZvbnQtc2l6ZTogNDNweDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDQzcHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogOHB4O1xuICAgICAgfVxuXG4gICAgICAmX19zeW1ib2wge1xuICAgICAgICBjb2xvcjogJHNjb3JwaW9uO1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gICZfX2NvbmZpcm1hdGlvbi10aXRsZSB7XG4gICAgcGFkZGluZzogMzBweCAxMjBweCAxMnB4O1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGJyZWFrLXNtYWxsKSB7XG4gICAgICBwYWRkaW5nOiAyMHB4IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG4gIH1cblxuICAmX19jb25maXJtYXRpb24tY29udGVudCB7XG4gICAgcGFkZGluZy1ib3R0b206IDYwcHg7XG4gIH1cblxuICAmX19jb25maXJtYXRpb24tdG9rZW4tbGlzdC1pdGVtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG5cbiAgJl9fY29uZmlybWF0aW9uLXRva2VuLWxpc3QtaXRlbSArICZfX2NvbmZpcm1hdGlvbi10b2tlbi1saXN0LWl0ZW0ge1xuICAgIG1hcmdpbi10b3A6IDMwcHg7XG4gIH1cblxuICAmX19jb25maXJtYXRpb24tdG9rZW4taWNvbiB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxOHB4O1xuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGJyZWFrLXNtYWxsKSB7XG4gICAgdG9wOiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgJl9fd3JhcHBlciB7XG4gICAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgICBmbGV4OiAxIDEgYXV0bztcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICB9XG5cbiAgICAmX19mb290ZXJzIHtcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ2FsbGVyeTtcbiAgICB9XG5cbiAgICAmX190b2tlbi1pY29uIHtcbiAgICAgIHdpZHRoOiA1MHB4O1xuICAgICAgaGVpZ2h0OiA1MHB4O1xuICAgIH1cblxuICAgICZfX3Rva2VuLXN5bWJvbCB7XG4gICAgICBmb250LXNpemU6IDE4cHg7XG4gICAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICB9XG5cbiAgICAmX190b2tlbi1uYW1lIHtcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xuICAgIH1cblxuICAgICZfX2J1dHRvbnMge1xuICAgICAgZmxleC1mbG93OiByb3cgbm93cmFwO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBwYWRkaW5nOiAxMnB4IDA7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGdhbGxlcnk7XG5cbiAgICAgIGJ1dHRvbiB7XG4gICAgICAgIGZsZXg6IDEgMCBhdXRvO1xuICAgICAgICBtYXJnaW46IDAgMTJweDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi5jdXJyZW5jeS1kaXNwbGF5IHtcbiAgaGVpZ2h0OiA1NHB4O1xuICB3aWR0aDogMTAwJcOfO1xuICBib3JkZXI6IDFweCBzb2xpZCAkYWx0bztcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gIGNvbG9yOiAkZHVzdHktZ3JheTtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgZm9udC1zaXplOiAxNnB4O1xuICBmb250LXdlaWdodDogMzAwO1xuICBwYWRkaW5nOiA4cHggMTBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICZfX3ByaW1hcnktcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG5cbiAgJl9faW5wdXQge1xuICAgIGNvbG9yOiAkc2NvcnBpb247XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgbGluZS1oZWlnaHQ6IDIycHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIG91dGxpbmU6IDAgIWltcG9ydGFudDtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gIH1cblxuICAmX19wcmltYXJ5LWN1cnJlbmN5IHtcbiAgICBjb2xvcjogJHNjb3JwaW9uO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBmb250LXNpemU6IDE2cHg7XG4gICAgbGluZS1oZWlnaHQ6IDIycHg7XG4gIH1cblxuICAmX19jb252ZXJ0ZWQtcm93IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG5cbiAgJl9fY29udmVydGVkLXZhbHVlLFxuICAmX19jb252ZXJ0ZWQtY3VycmVuY3kge1xuICAgIGNvbG9yOiAkZHVzdHktZ3JheTtcbiAgICBmb250LWZhbWlseTogUm9ib3RvO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBsaW5lLWhlaWdodDogMTJweDtcbiAgfVxuXG4gICZfX2lucHV0LXdyYXBwZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG5cbiAgJl9fY3VycmVuY3ktc3ltYm9sIHtcbiAgICBtYXJnaW4tdG9wOiAxcHg7XG4gIH1cbn0iLCIuYWNjb3VudC1tZW51IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiAxMDA7XG4gIHRvcDogNThweDtcbiAgd2lkdGg6IDMxMHB4O1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4gICAgcmlnaHQ6IGNhbGMoKCgxMDB2dyAtIDEwMCUpIC8gMikgKyA4cHgpO1xuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNTc2cHgpIHtcbiAgICByaWdodDogY2FsYygoMTAwdncgLSA4NXZ3KSAvIDIpO1xuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY5cHgpIHtcbiAgICByaWdodDogY2FsYygoMTAwdncgLSA4MHZ3KSAvIDIpO1xuICB9XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI4MXB4KSB7XG4gICAgcmlnaHQ6IGNhbGMoKDEwMHZ3IC0gNjV2dykgLyAyKTtcbiAgfVxuXG4gICZfX2ljb24ge1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gICZfX2hlYWRlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICAmX19sb2dvdXQtYnV0dG9uIHtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZHVzdHktZ3JheTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBjb2xvcjogJHdoaXRlO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgbGluZS1oZWlnaHQ6IDIzcHg7XG4gICAgcGFkZGluZzogMCAyNHB4O1xuICAgIGZvbnQtd2VpZ2h0OiAyMDA7XG4gIH1cblxuICBpbWcge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgfVxuXG4gICZfX2FjY291bnRzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogY29sdW1uIG5vd3JhcDtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIG1heC1oZWlnaHQ6IDI0MHB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAyMDA7XG5cbiAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4gICAgICBtYXgtaGVpZ2h0OiAyMTVweDtcbiAgICB9XG5cbiAgICAua2V5cmluZy1sYWJlbCB7XG4gICAgICBtYXJnaW4tdG9wOiA1cHg7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmxhY2s7XG4gICAgICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gICAgfVxuICB9XG5cbiAgJl9fYWNjb3VudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IHJvdyBub3dyYXA7XG4gICAgcGFkZGluZzogMTZweCAxNHB4O1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTc1cHgpIHtcbiAgICAgIHBhZGRpbmc6IDEycHggMTRweDtcbiAgICB9XG4gIH1cblxuICAmX19hY2NvdW50LWluZm8ge1xuICAgIGZsZXg6IDEgMCBhdXRvO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuICAgIHBhZGRpbmctdG9wOiA0cHg7XG4gIH1cblxuICAmX19jaGVjay1tYXJrIHtcbiAgICB3aWR0aDogMTRweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gICAgZmxleDogMCAwIGF1dG87XG4gIH1cblxuICAmX19jaGVjay1tYXJrLWljb24ge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImltYWdlcy9jaGVjay13aGl0ZS5zdmdcIik7XG4gICAgaGVpZ2h0OiAxOHB4O1xuICAgIHdpZHRoOiAxOHB4O1xuICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgYmFja2dyb3VuZC1wb3NpdGlvbjogY2VudGVyO1xuICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgICBtYXJnaW46IDNweCAwO1xuICB9XG5cbiAgLmlkZW50aWNvbiB7XG4gICAgbWFyZ2luOiAwIDEycHggMCAwO1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICB9XG5cbiAgJl9fbmFtZSB7XG4gICAgY29sb3I6ICR3aGl0ZTtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgZm9udC13ZWlnaHQ6IDIwMDtcbiAgICBsaW5lLWhlaWdodDogMTZweDtcbiAgfVxuXG4gICZfX2JhbGFuY2Uge1xuICAgIGNvbG9yOiAkZHVzdHktZ3JheTtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE5cHg7XG4gIH1cblxuICAmX19hY3Rpb24ge1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICBsaW5lLWhlaWdodDogMThweDtcbiAgICBmb250LXdlaWdodDogMjAwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxufVxuIiwiLm1lbnUge1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJhY2tncm91bmQ6IHJnYmEoJGJsYWNrLCAuOCk7XG4gIGJveC1zaGFkb3c6IHJnYmEoJGJsYWNrLCAuMTUpIDAgMnB4IDJweCAycHg7XG4gIG1pbi13aWR0aDogMTUwcHg7XG4gIGNvbG9yOiAkd2hpdGU7XG5cbiAgJl9faXRlbSB7XG4gICAgcGFkZGluZzogMThweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZmxvdzogcm93IG5vd3JhcDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB6LWluZGV4OiAyMDA7XG4gICAgZm9udC13ZWlnaHQ6IDIwMDtcblxuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4gICAgICBwYWRkaW5nOiAxNHB4O1xuICAgIH1cblxuICAgICYtLWNsaWNrYWJsZSB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCR3aGl0ZSwgLjA1KTtcbiAgICAgIH1cblxuICAgICAgJjphY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCR3aGl0ZSwgLjEpO1xuICAgICAgfVxuICAgIH1cblxuICAgICZfX2ljb24ge1xuICAgICAgaGVpZ2h0OiAxNnB4O1xuICAgICAgd2lkdGg6IDE2cHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDE0cHg7XG4gICAgfVxuXG4gICAgJl9fdGV4dCB7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICBsaW5lLWhlaWdodDogMjFweDtcbiAgICB9XG4gIH1cblxuICAmX19kaXZpZGVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkc2NvcnBpb247XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxcHg7XG4gIH1cblxuICAmX19jbG9zZS1hcmVhIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHotaW5kZXg6IDEwMDtcbiAgfVxufVxuIiwiLmdhcy1zbGlkZXIge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAzMTNweDtcblxuICAmX19pbnB1dCB7XG4gICAgd2lkdGg6IDMxN3B4O1xuICAgIG1hcmdpbi1sZWZ0OiAtMnB4O1xuICAgIHotaW5kZXg6IDI7XG4gIH1cblxuICBpbnB1dFt0eXBlPXJhbmdlXSB7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lICFpbXBvcnRhbnQ7XG4gIH1cblxuICBpbnB1dFt0eXBlPXJhbmdlXTo6LXdlYmtpdC1zbGlkZXItdGh1bWIge1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZSAhaW1wb3J0YW50O1xuICAgIGhlaWdodDogMjZweDtcbiAgICB3aWR0aDogMjZweDtcbiAgICBib3JkZXI6IDJweCBzb2xpZCAjQjhCOEI4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7XG4gICAgYm94LXNoYWRvdzogMCAycHggNHB4IDAgcmdiYSgwLDAsMCwwLjA4KTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHotaW5kZXg6IDEwO1xuICB9XG5cbiAgJl9fYmFyIHtcbiAgICBoZWlnaHQ6IDZweDtcbiAgICB3aWR0aDogMzEzcHg7XG4gICAgYmFja2dyb3VuZDogJGFsdG87XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMTFweDtcbiAgICB6LWluZGV4OiAwO1xuICB9XG5cbiAgJl9fbG93LCAmX19oaWdoIHtcbiAgICBoZWlnaHQ6IDZweDtcbiAgICB3aWR0aDogNDlweDtcbiAgICB6LWluZGV4OiAxO1xuICB9XG5cbiAgJl9fbG93IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY3JpbXNvbjtcbiAgfVxuXG4gICZfX2hpZ2gge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjYXJpYmJlYW4tZ3JlZW47XG4gIH1cbn0iLCIuc2V0dGluZ3Mge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQ6ICR3aGl0ZTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuICBoZWlnaHQ6IGF1dG87XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuXG4uc2V0dGluZ3NfX2hlYWRlciB7XG4gIHBhZGRpbmc6IDI1cHg7XG59XG5cbi5zZXR0aW5nc19fY2xvc2UtYnV0dG9uOjphZnRlciB7XG4gIGNvbnRlbnQ6ICdcXDAwRDcnO1xuICBmb250LXNpemU6IDQwcHg7XG4gIGNvbG9yOiAkZHVzdHktZ3JheTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDI1cHg7XG4gIHJpZ2h0OiAzMHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5zZXR0aW5nc19fZXJyb3Ige1xuICBwYWRkaW5nLWJvdHRvbTogMjBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBjb2xvcjogJGNyaW1zb247XG59XG5cbi5zZXR0aW5nc19fY29udGVudCB7XG4gIHBhZGRpbmc6IDAgMjVweDtcbn1cblxuLnNldHRpbmdzX19jb250ZW50LXJvdyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIHBhZGRpbmc6IDEwcHggMCAyMHB4O1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG4gIH1cbn1cblxuLnNldHRpbmdzX19jb250ZW50LWl0ZW0ge1xuICBmbGV4OiAxO1xuICBtaW4td2lkdGg6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHBhZGRpbmc6IDAgNXB4O1xuICBoZWlnaHQ6IDcxcHg7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTc1cHgpIHtcbiAgICBoZWlnaHQ6IGluaXRpYWw7XG4gICAgcGFkZGluZzogNXB4IDA7XG4gIH1cblxuICAmLS13aXRob3V0LWhlaWdodCB7XG4gICAgaGVpZ2h0OiBpbml0aWFsO1xuICB9XG59XG5cbi5zZXR0aW5nc19fY29udGVudC1pdGVtLWNvbCB7XG4gIG1heC13aWR0aDogMzAwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTc1cHgpIHtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cblxuLnNldHRpbmdzX19jb250ZW50LWRlc2NyaXB0aW9uIHtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gIHBhZGRpbmctdG9wOiA1cHg7XG59XG5cbi5zZXR0aW5nc19faW5wdXQge1xuICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgaGVpZ2h0OiA0MHB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAkYWx0bztcbn1cblxuLnNldHRpbmdzX19pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG4gIGNvbG9yOiAkZHVzdHktZ3JheTtcbn1cblxuLnNldHRpbmdzX19pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG4gIGNvbG9yOiAkZHVzdHktZ3JheTtcbn1cblxuLnNldHRpbmdzX19pbnB1dDotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xuICBmb250LXdlaWdodDogMTAwO1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG59XG5cbi5zZXR0aW5nc19faW5wdXQ6LW1vei1wbGFjZWhvbGRlciB7XG4gIGZvbnQtd2VpZ2h0OiAxMDA7XG4gIGNvbG9yOiAkZHVzdHktZ3JheTtcbn1cblxuLnNldHRpbmdzX19wcm92aWRlci13cmFwcGVyIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAkYWx0bztcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBwYWRkaW5nOiAxNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbn1cblxuLnNldHRpbmdzX19wcm92aWRlci1pY29uIHtcbiAgaGVpZ2h0OiAxMHB4O1xuICB3aWR0aDogMTBweDtcbiAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xufVxuXG4uc2V0dGluZ3NfX3JwYy1zYXZlLWJ1dHRvbiB7XG4gIGFsaWduLXNlbGY6IGZsZXgtZW5kO1xuICBwYWRkaW5nOiA1cHg7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIGNvbG9yOiAkZHVzdHktZ3JheTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uc2V0dGluZ3NfX2NsZWFyLWJ1dHRvbiB7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgYm9yZGVyOiAxcHggc29saWQgJGN1cmlvdXMtYmx1ZTtcbiAgY29sb3I6ICRjdXJpb3VzLWJsdWU7XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgcGFkZGluZzogMThweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4uc2V0dGluZ3NfX2NsZWFyLWJ1dHRvbi0tcmVkIHtcbiAgYm9yZGVyOiAxcHggc29saWQgJG1vbnpvO1xuICBjb2xvcjogJG1vbnpvO1xufVxuXG4uc2V0dGluZ3NfX2luZm8tbG9nby13cmFwcGVyIHtcbiAgaGVpZ2h0OiA4MHB4O1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xufVxuXG4uc2V0dGluZ3NfX2luZm8tbG9nbyB7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG4gIG1heC13aWR0aDogMTAwJTtcbn1cblxuLnNldHRpbmdzX19pbmZvLWl0ZW0ge1xuICBwYWRkaW5nOiAxMHB4IDA7XG59XG5cbi5zZXR0aW5nc19faW5mby1saW5rLWhlYWRlciB7XG4gIHBhZGRpbmctYm90dG9tOiAxNXB4O1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4gICAgcGFkZGluZy1ib3R0b206IDVweDtcbiAgfVxufVxuXG4uc2V0dGluZ3NfX2luZm8tbGluay1pdGVtIHtcbiAgcGFkZGluZzogMTVweCAwO1xuXG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4gICAgcGFkZGluZzogNXB4IDA7XG4gIH1cbn1cblxuLnNldHRpbmdzX19pbmZvLXZlcnNpb24tbnVtYmVyIHtcbiAgcGFkZGluZy10b3A6IDVweDtcbiAgZm9udC1zaXplOiAxM3B4O1xuICBjb2xvcjogJGR1c3R5LWdyYXk7XG59XG5cbi5zZXR0aW5nc19faW5mby1hYm91dCB7XG4gIGNvbG9yOiAkZHVzdHktZ3JheTtcbiAgbWFyZ2luLWJvdHRvbTogMTVweDtcbn1cblxuLnNldHRpbmdzX19pbmZvLWxpbmsge1xuICBjb2xvcjogJGN1cmlvdXMtYmx1ZTtcbn1cblxuLnNldHRpbmdzX19pbmZvLXNlcGFyYXRvciB7XG4gIG1hcmdpbjogMTVweCAwO1xuICB3aWR0aDogODBweDtcbiAgYm9yZGVyLWNvbG9yOiAkYWx0bztcbiAgYm9yZGVyOiBub25lO1xuICBoZWlnaHQ6IDFweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogJGFsdG87XG4gIGNvbG9yOiAkYWx0bztcbn1cbiIsIi50YWItYmFyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG59XG5cbi50YWItYmFyX190YWIge1xuICBtaW4td2lkdGg6IDA7XG4gIGZsZXg6IDAgMCBhdXRvO1xuICBwYWRkaW5nOiAxNXB4IDI1cHg7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkYWx0bztcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZm9udC1zaXplOiAxOHB4O1xufVxuXG4udGFiLWJhcl9fdGFiLS1hY3RpdmUge1xuICBib3JkZXItY29sb3I6ICRibGFjaztcbn1cblxuLnRhYi1iYXJfX2dyb3ctdGFiIHtcbiAgZmxleC1ncm93OiAxO1xufVxuIiwiLnNpbXBsZS1kcm9wZG93biB7XG4gIGhlaWdodDogNTZweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXI6IDFweCBzb2xpZCAkYWx0bztcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgY29sb3I6ICM0ZDRkNGQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uc2ltcGxlLWRyb3Bkb3duX19jYXJldCB7XG4gIGNvbG9yOiAkc2lsdmVyO1xuICBwYWRkaW5nOiAwIDEwcHg7XG59XG5cbi5zaW1wbGUtZHJvcGRvd25fX3NlbGVjdGVkIHtcbiAgZmxleC1ncm93OiAxO1xuICBwYWRkaW5nOiAwIDE1cHg7XG59XG5cbi5zaW1wbGUtZHJvcGRvd25fX29wdGlvbnMge1xuICB6LWluZGV4OiAxMDUwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGhlaWdodDogMjIwcHg7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXI6IDFweCBzb2xpZCAjZDJkOGRkO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAzcHggNnB4IDAgcmdiYSgwLCAwLCAwLCAuMTEpO1xuICBib3gtc2hhZG93OiAwIDNweCA2cHggMCByZ2JhKDAsIDAsIDAsIC4xMSk7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgbGVmdDogMDtcbiAgdG9wOiAxMDAlO1xufVxuXG4uc2ltcGxlLWRyb3Bkb3duX19vcHRpb24ge1xuICBwYWRkaW5nOiAxMHB4O1xuXG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRnYWxsZXJ5O1xuICB9XG59XG5cbi5zaW1wbGUtZHJvcGRvd25fX29wdGlvbi0tc2VsZWN0ZWQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWx0bztcblxuICAmOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYWx0bztcbiAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gIH1cbn1cblxuLnNpbXBsZS1kcm9wZG93bl9fY2xvc2UtYXJlYSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAxMDAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuIiwiLnJlcXVlc3Qtc2lnbmF0dXJlIHtcbiAgJl9fY29udGFpbmVyIHtcbiAgICB3aWR0aDogMzgwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgICBib3gtc2hhZG93OiAwIDJweCA0cHggMCByZ2JhKDAsMCwwLDAuMDgpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1mbG93OiBjb2x1bW4gbm93cmFwO1xuICAgIHotaW5kZXg6IDI1O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJGJyZWFrLXNtYWxsKSB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHRvcDogMDtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgfVxuXG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGJyZWFrLWxhcmdlKSB7XG4gICAgICBtYXgtaGVpZ2h0OiA2MjBweDtcbiAgICB9XG4gIH1cblxuICAmX19oZWFkZXIge1xuICAgIGhlaWdodDogNjRweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGZsZXg6IDAgMCBhdXRvO1xuICB9XG5cbiAgJl9faGVhZGVyLWJhY2tncm91bmQge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYXRoZW5zLWdyZXk7XG4gICAgei1pbmRleDogMjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gIH1cblxuICAmX19oZWFkZXJfX3RleHQge1xuICAgIGhlaWdodDogMjlweDtcbiAgICB3aWR0aDogMTc5cHg7XG4gICAgY29sb3I6ICM1QjVENjc7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBmb250LXNpemU6IDIycHg7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICBsaW5lLWhlaWdodDogMjlweDtcbiAgICB6LWluZGV4OiAzO1xuICB9XG5cbiAgJl9faGVhZGVyX190aXAtY29udGFpbmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB9XG5cbiAgJl9faGVhZGVyX190aXAge1xuICAgIGhlaWdodDogMjVweDtcbiAgICB3aWR0aDogMjVweDtcbiAgICBiYWNrZ3JvdW5kOiAkYXRoZW5zLWdyZXk7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IC04cHg7XG4gICAgei1pbmRleDogMTtcbiAgfVxuXG4gICZfX2FjY291bnQtaW5mbyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgbWFyZ2luLXRvcDogMThweDtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICB9XG5cbiAgJl9fYWNjb3VudCB7XG4gICAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICAgIG1hcmdpbi1sZWZ0OiAxN3B4O1xuICB9XG5cbiAgJl9fYWNjb3VudC10ZXh0IHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gIH1cblxuICAmX19iYWxhbmNlIHtcbiAgICBjb2xvcjogJGR1c3R5LWdyYXk7XG4gICAgbWFyZ2luLXJpZ2h0OiAxN3B4O1xuICAgIHdpZHRoOiAxMjRweDtcbiAgfVxuXG4gICZfX2JhbGFuY2UtdGV4dCB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICB9XG5cbiAgJl9fYmFsYW5jZS12YWx1ZSB7XG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgbWFyZ2luLXRvcDogMi41cHg7XG4gIH1cblxuICAmX19yZXF1ZXN0LWljb24ge1xuICAgIG1hcmdpbi10b3A6IDI1cHg7XG4gIH1cblxuICAmX19ib2R5IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgICBmbGV4OiAxIDEgYXV0bztcbiAgICBoZWlnaHQ6IDA7XG4gIH1cblxuICAmX19yZXF1ZXN0LWluZm8ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIH1cblxuICAmX19oZWFkbGluZSB7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIHdpZHRoOiAyNDBweDtcbiAgICBjb2xvcjogJHR1bmRvcmE7XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICBsaW5lLWhlaWdodDogMjRweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgbWFyZ2luLXRvcDogMjBweDtcbiAgfVxuXG4gICZfX25vdGljZSxcbiAgJl9fd2FybmluZyB7XG4gICAgZm9udC1mYW1pbHk6IFwiQXZlbmlyIE5leHRcIjtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE5cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIG1hcmdpbi10b3A6IDQxcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTFweDtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gICZfX25vdGljZSB7XG4gICAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICB9XG5cbiAgJl9fd2FybmluZyB7XG4gICAgY29sb3I6ICRjcmltc29uO1xuICB9XG5cbiAgJl9fcm93cyB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRnZXlzZXI7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgfVxuXG4gICZfX3JvdyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWZsb3c6IGNvbHVtbjtcbiAgfVxuXG4gICZfX3Jvdy10aXRsZSB7XG4gICAgd2lkdGg6IDgwcHg7XG4gICAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICAgIGZvbnQtZmFtaWx5OiBSb2JvdG87XG4gICAgZm9udC1zaXplOiAxNnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAyMnB4O1xuICAgIG1hcmdpbi10b3A6IDEycHg7XG4gICAgbWFyZ2luLWxlZnQ6IDE4cHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAmX19yb3ctdmFsdWUge1xuICAgIGNvbG9yOiAkc2NvcnBpb247XG4gICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgbGluZS1oZWlnaHQ6IDE5cHg7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2QyZDhkZDtcbiAgICBwYWRkaW5nOiA2cHggMThweCAxNXB4O1xuICB9XG5cbiAgJl9fZm9vdGVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1ldmVubHk7XG4gICAgZm9udC1zaXplOiAyMnB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBmbGV4OiAwIDAgYXV0bztcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGdleXNlcjtcblxuICAgICZfX2NhbmNlbC1idXR0b24sXG4gICAgJl9fc2lnbi1idXR0b24ge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgIGZsZXg6IDEgMCBhdXRvO1xuICAgICAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgICBoZWlnaHQ6IDU1cHg7XG4gICAgICBsaW5lLWhlaWdodDogMzJweDtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICBtYXgtd2lkdGg6IDE2MnB4O1xuICAgICAgbWFyZ2luOiAxMnB4O1xuICAgIH1cblxuICAgICZfX2NhbmNlbC1idXR0b24ge1xuICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRkdXN0eS1ncmF5O1xuICAgICAgbWFyZ2luLXJpZ2h0OiA2cHg7XG4gICAgfVxuXG4gICAgJl9fc2lnbi1idXR0b24ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNhcmliYmVhbi1ncmVlbjtcbiAgICAgIGJvcmRlci13aWR0aDogMDtcbiAgICAgIGNvbG9yOiAkd2hpdGU7XG4gICAgICBtYXJnaW4tbGVmdDogNnB4O1xuICAgIH1cbiAgfVxufSIsIi5hY2NvdW50LWRyb3Bkb3duLW1pbmkge1xuICBoZWlnaHQ6IDIycHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcbiAgZm9udC1mYW1pbHk6IFJvYm90bztcbiAgbGluZS1oZWlnaHQ6IDE2cHg7XG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgd2lkdGg6IDEyNHB4O1xuXG4gICZfX2Nsb3NlLWFyZWEge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgfVxuXG4gICZfX2xpc3Qge1xuICAgIHotaW5kZXg6IDEwNTA7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGhlaWdodDogMTgwcHg7XG4gICAgd2lkdGg6IDk2cHhweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ2V5c2VyO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XG4gICAgYm94LXNoYWRvdzogMCAzcHggNnB4IDAgcmdiYSgwICwwICwwICwuMTEpO1xuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgfVxuXG4gIC5hY2NvdW50LWxpc3QtaXRlbSB7XG4gICAgbWFyZ2luLXRvcDogNnB4O1xuICB9XG5cbiAgLmFjY291bnQtbGlzdC1pdGVtX19hY2NvdW50LW5hbWUge1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB3aWR0aDogODBweDtcbiAgfVxuXG4gIC5hY2NvdW50LWxpc3QtaXRlbV9fdG9wLXJvdyB7XG4gICAgbWFyZ2luOiAwO1xuICB9XG5cbiAgLmFjY291bnQtbGlzdC1pdGVtX19pY29uIHtcbiAgICBwb3NpdGlvbjogaW5pdGlhbDtcbiAgfVxufSIsIi5lZGl0YWJsZS1sYWJlbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgJl9fdmFsdWUge1xuICAgIG1heC13aWR0aDogMjUwcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB9XG5cbiAgJl9faW5wdXQge1xuICAgIHdpZHRoOiAyNTBweDtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRhbHRvO1xuXG4gICAgJi0tZXJyb3Ige1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgJG1vbnpvO1xuICAgIH1cbiAgfVxuXG4gICZfX2ljb24td3JhcHBlciB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICAgIGxlZnQ6IDEwMCU7XG4gIH1cblxuICAmX19pY29uIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgY29sb3I6ICRkdXN0eS1ncmF5O1xuICB9XG59XG4iLCIvKlxuICBUcnVtcHNcbiAqL1xuXG4vLyBUcmFuc2l0aW9uc1xuXG4vKiB1bml2ZXJzYWwgKi9cbi5hcHAtcHJpbWFyeSAubWFpbi1lbnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEwMCU7XG59XG5cbi8qIGNlbnRlciBwb3NpdGlvbiAqL1xuLmFwcC1wcmltYXJ5LmZyb20tcmlnaHQgLm1haW4tZW50ZXItYWN0aXZlLFxuLmFwcC1wcmltYXJ5LmZyb20tbGVmdCAubWFpbi1lbnRlci1hY3RpdmUge1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDMwMG1zIGVhc2UtaW47XG59XG5cbi8qIGV4aXRlZCBwb3NpdGlvbnMgKi9cbi5hcHAtcHJpbWFyeS5mcm9tLWxlZnQgLm1haW4tbGVhdmUtYWN0aXZlIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDM2MHB4KTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDMwMG1zIGVhc2UtaW47XG59XG5cbi5hcHAtcHJpbWFyeS5mcm9tLXJpZ2h0IC5tYWluLWxlYXZlLWFjdGl2ZSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMzYwcHgpO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMzAwbXMgZWFzZS1pbjtcbn1cblxuLnNpZGViYXIuZnJvbS1sZWZ0IHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zMjBweCk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAzMDBtcyBlYXNlLWluO1xufVxuXG4vKiBsb2FkZXIgdHJhbnNpdGlvbnMgKi9cbi5sb2FkZXItZW50ZXIsXG4ubG9hZGVyLWxlYXZlLWFjdGl2ZSB7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMTUwIGVhc2UtaW47XG59XG5cbi5sb2FkZXItZW50ZXItYWN0aXZlLFxuLmxvYWRlci1sZWF2ZSB7XG4gIG9wYWNpdHk6IDE7XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMTUwIGVhc2UtaW47XG59XG5cbi8qIGVudGVyaW5nIHBvc2l0aW9ucyAqL1xuLmFwcC1wcmltYXJ5LmZyb20tcmlnaHQgLm1haW4tZW50ZXI6bm90KC5tYWluLWVudGVyLWFjdGl2ZSkge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMzYwcHgpO1xufVxuXG4uYXBwLXByaW1hcnkuZnJvbS1sZWZ0IC5tYWluLWVudGVyOm5vdCgubWFpbi1lbnRlci1hY3RpdmUpIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0zNjBweCk7XG59XG5cbmkuZmEuZmEtcXVlc3Rpb24tY2lyY2xlLmZhLWxnLm1lbnUtaWNvbiB7XG4gIGZvbnQtc2l6ZTogMThweDtcbn1cblxuLy8gVGhpcyB0ZXh0IGlzIGNvbnRhaW5lZCBpbnNpZGUgYSBkaXYuXG4vLyBJRCBuZWVkZWQgdG8gb3ZlcnJpZGUgdXNlciBhZ2VudCBzdHlsZXNoZWV0LlxuLy8gU2VlIGNvbXBvbmVudHMvbW9kYWwuc2Nzc1xuXG4vKiBzdHlsZWxpbnQtZGlzYWJsZSAqL1xuI2J1eS1tb2RhbC1jb250ZW50LWZvb3Rlci10ZXh0IHtcbiAgZm9udC1mYW1pbHk6ICdESU4gT1QnO1xuICBmb250LXNpemU6IDE2cHg7XG59XG4vKiBzdHlsZWxpbnQtZW5hYmxlICovXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7OztHQUtHO0FFTEg7O0dBRUc7QUFTSDs7O0dBR0c7QUErQkg7O0dBRUc7QUFXSDs7Ozs7OztHQU9HO0FBRUg7O0dBRUc7QUNyRUgs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QUc7QUFDSCxBQUFBLElBQUk7QUFDSixBQUFBLE1BQU07QUFDTixBQUFBLE1BQU07QUFDTixBQUFBLE1BQU07QUFDTixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLENBQUM7QUFDRCxBQUFBLFVBQVU7QUFDVixBQUFBLEdBQUc7QUFDSCxBQUFBLENBQUM7QUFDRCxBQUFBLElBQUk7QUFDSixBQUFBLE9BQU87QUFDUCxBQUFBLE9BQU87QUFDUCxBQUFBLEdBQUc7QUFDSCxBQUFBLElBQUk7QUFDSixBQUFBLElBQUk7QUFDSixBQUFBLEdBQUc7QUFDSCxBQUFBLEdBQUc7QUFDSCxBQUFBLEVBQUU7QUFDRixBQUFBLEdBQUc7QUFDSCxBQUFBLEdBQUc7QUFDSCxBQUFBLEdBQUc7QUFDSCxBQUFBLENBQUM7QUFDRCxBQUFBLENBQUM7QUFDRCxBQUFBLElBQUk7QUFDSixBQUFBLEtBQUs7QUFDTCxBQUFBLE1BQU07QUFDTixBQUFBLE1BQU07QUFDTixBQUFBLEdBQUc7QUFDSCxBQUFBLEdBQUc7QUFDSCxBQUFBLEVBQUU7QUFDRixBQUFBLEdBQUc7QUFDSCxBQUFBLENBQUM7QUFDRCxBQUFBLENBQUM7QUFDRCxBQUFBLENBQUM7QUFDRCxBQUFBLE1BQU07QUFDTixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLFFBQVE7QUFDUixBQUFBLElBQUk7QUFDSixBQUFBLEtBQUs7QUFDTCxBQUFBLE1BQU07QUFDTixBQUFBLEtBQUs7QUFDTCxBQUFBLE9BQU87QUFDUCxBQUFBLEtBQUs7QUFDTCxBQUFBLEtBQUs7QUFDTCxBQUFBLEtBQUs7QUFDTCxBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLEVBQUU7QUFDRixBQUFBLE9BQU87QUFDUCxBQUFBLEtB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 */ diff --git a/old-ui/app/css/reset.css b/old-ui/app/css/reset.css new file mode 100644 index 000000000..9ce89e8bc --- /dev/null +++ b/old-ui/app/css/reset.css @@ -0,0 +1,48 @@ +/* http://meyerweb.com/eric/tools/css/reset/ + v2.0 | 20110126 + License: none (public domain) +*/ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} \ No newline at end of file diff --git a/old-ui/app/css/transitions.css b/old-ui/app/css/transitions.css new file mode 100644 index 000000000..393a944f9 --- /dev/null +++ b/old-ui/app/css/transitions.css @@ -0,0 +1,42 @@ +/* universal */ +.app-primary .main-enter { + position: absolute; + width: 100%; +} + +/* center position */ +.app-primary.from-right .main-enter-active, +.app-primary.from-left .main-enter-active { + overflow-x: hidden; + transform: translateX(0px); + transition: transform 300ms ease-in; +} + +/* exited positions */ +.app-primary.from-left .main-leave-active { + transform: translateX(360px); + transition: transform 300ms ease-in; +} +.app-primary.from-right .main-leave-active { + transform: translateX(-360px); + transition: transform 300ms ease-in; +} + +/* loader transitions */ +.loader-enter, .loader-leave-active { + opacity: 0.0; + transition: opacity 150 ease-in; +} +.loader-enter-active, .loader-leave { + opacity: 1.0; + transition: opacity 150 ease-in; +} + +/* entering positions */ +.app-primary.from-right .main-enter:not(.main-enter-active) { + transform: translateX(360px); +} +.app-primary.from-left .main-enter:not(.main-enter-active) { + transform: translateX(-360px); +} + diff --git a/old-ui/app/first-time/init-menu.js b/old-ui/app/first-time/init-menu.js new file mode 100644 index 000000000..4f1d5d186 --- /dev/null +++ b/old-ui/app/first-time/init-menu.js @@ -0,0 +1,179 @@ +const inherits = require('util').inherits +const EventEmitter = require('events').EventEmitter +const Component = require('react').Component +const connect = require('react-redux').connect +const h = require('react-hyperscript') +const Mascot = require('../components/mascot') +const actions = require('../../../ui/app/actions') +const Tooltip = require('../components/tooltip') +const getCaretCoordinates = require('textarea-caret') + +module.exports = connect(mapStateToProps)(InitializeMenuScreen) + +inherits(InitializeMenuScreen, Component) +function InitializeMenuScreen () { + Component.call(this) + this.animationEventEmitter = new EventEmitter() +} + +function mapStateToProps (state) { + return { + // state from plugin + currentView: state.appState.currentView, + warning: state.appState.warning, + } +} + +InitializeMenuScreen.prototype.render = function () { + var state = this.props + + switch (state.currentView.name) { + + default: + return this.renderMenu(state) + + } +} + +// InitializeMenuScreen.prototype.componentDidMount = function(){ +// document.getElementById('password-box').focus() +// } + +InitializeMenuScreen.prototype.renderMenu = function (state) { + return ( + + h('.initialize-screen.flex-column.flex-center.flex-grow', [ + + h(Mascot, { + animationEventEmitter: this.animationEventEmitter, + }), + + h('h1', { + style: { + fontSize: '1.3em', + textTransform: 'uppercase', + color: '#7F8082', + marginBottom: 10, + }, + }, 'MetaMask'), + + + h('div', [ + h('h3', { + style: { + fontSize: '0.8em', + color: '#7F8082', + display: 'inline', + }, + }, 'Encrypt your new DEN'), + + h(Tooltip, { + title: 'Your DEN is your password-encrypted storage within MetaMask.', + }, [ + h('i.fa.fa-question-circle.pointer', { + style: { + fontSize: '18px', + position: 'relative', + color: 'rgb(247, 134, 28)', + top: '2px', + marginLeft: '4px', + }, + }), + ]), + ]), + + h('span.in-progress-notification', state.warning), + + // password + h('input.large-input.letter-spacey', { + type: 'password', + id: 'password-box', + placeholder: 'New Password (min 8 chars)', + onInput: this.inputChanged.bind(this), + style: { + width: 260, + marginTop: 12, + }, + }), + + // confirm password + h('input.large-input.letter-spacey', { + type: 'password', + id: 'password-box-confirm', + placeholder: 'Confirm Password', + onKeyPress: this.createVaultOnEnter.bind(this), + onInput: this.inputChanged.bind(this), + style: { + width: 260, + marginTop: 16, + }, + }), + + + h('button.primary', { + onClick: this.createNewVaultAndKeychain.bind(this), + style: { + margin: 12, + }, + }, 'Create'), + + h('.flex-row.flex-center.flex-grow', [ + h('p.pointer', { + onClick: this.showRestoreVault.bind(this), + style: { + fontSize: '0.8em', + color: 'rgb(247, 134, 28)', + textDecoration: 'underline', + }, + }, 'Import Existing DEN'), + ]), + + ]) + ) +} + +InitializeMenuScreen.prototype.createVaultOnEnter = function (event) { + if (event.key === 'Enter') { + event.preventDefault() + this.createNewVaultAndKeychain() + } +} + +InitializeMenuScreen.prototype.componentDidMount = function () { + document.getElementById('password-box').focus() +} + +InitializeMenuScreen.prototype.showRestoreVault = function () { + this.props.dispatch(actions.showRestoreVault()) +} + +InitializeMenuScreen.prototype.createNewVaultAndKeychain = function () { + var passwordBox = document.getElementById('password-box') + var password = passwordBox.value + var passwordConfirmBox = document.getElementById('password-box-confirm') + var passwordConfirm = passwordConfirmBox.value + + if (password.length < 8) { + this.warning = 'password not long enough' + this.props.dispatch(actions.displayWarning(this.warning)) + return + } + if (password !== passwordConfirm) { + this.warning = 'passwords don\'t match' + this.props.dispatch(actions.displayWarning(this.warning)) + return + } + + this.props.dispatch(actions.createNewVaultAndKeychain(password)) +} + +InitializeMenuScreen.prototype.inputChanged = function (event) { + // tell mascot to look at page action + var element = event.target + var boundingRect = element.getBoundingClientRect() + var coordinates = getCaretCoordinates(element, element.selectionEnd) + this.animationEventEmitter.emit('point', { + x: boundingRect.left + coordinates.left - element.scrollLeft, + y: boundingRect.top + coordinates.top - element.scrollTop, + }) +} diff --git a/old-ui/app/img/identicon-tardigrade.png b/old-ui/app/img/identicon-tardigrade.png new file mode 100644 index 000000000..1742a32b8 Binary files /dev/null and b/old-ui/app/img/identicon-tardigrade.png differ diff --git a/old-ui/app/img/identicon-walrus.png b/old-ui/app/img/identicon-walrus.png new file mode 100644 index 000000000..d58fae912 Binary files /dev/null and b/old-ui/app/img/identicon-walrus.png differ diff --git a/old-ui/app/info.js b/old-ui/app/info.js new file mode 100644 index 000000000..db9f30f23 --- /dev/null +++ b/old-ui/app/info.js @@ -0,0 +1,155 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const h = require('react-hyperscript') +const connect = require('react-redux').connect +const actions = require('../../ui/app/actions') + +module.exports = connect(mapStateToProps)(InfoScreen) + +function mapStateToProps (state) { + return {} +} + +inherits(InfoScreen, Component) +function InfoScreen () { + Component.call(this) +} + +InfoScreen.prototype.render = function () { + const state = this.props + const version = global.platform.getVersion() + + return ( + h('.flex-column.flex-grow', { + style: { + maxWidth: '400px', + }, + }, [ + + // subtitle and nav + h('.section-title.flex-row.flex-center', [ + h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', { + onClick: (event) => { + state.dispatch(actions.goHome()) + }, + }), + h('h2.page-subtitle', 'Info'), + ]), + + // main view + h('.flex-column.flex-justify-center.flex-grow.select-none', [ + h('.flex-space-around', { + style: { + padding: '20px', + }, + }, [ + // current version number + + h('.info.info-gray', [ + h('div', 'Metamask'), + h('div', { + style: { + marginBottom: '10px', + }, + }, `Version: ${version}`), + ]), + + h('div', { + style: { + marginBottom: '5px', + }}, + [ + h('div', [ + h('a', { + href: 'https://metamask.io/privacy.html', + target: '_blank', + onClick (event) { this.navigateTo(event.target.href) }, + }, [ + h('div.info', 'Privacy Policy'), + ]), + ]), + h('div', [ + h('a', { + href: 'https://metamask.io/terms.html', + target: '_blank', + onClick (event) { this.navigateTo(event.target.href) }, + }, [ + h('div.info', 'Terms of Use'), + ]), + ]), + h('div', [ + h('a', { + href: 'https://metamask.io/attributions.html', + target: '_blank', + onClick (event) { this.navigateTo(event.target.href) }, + }, [ + h('div.info', 'Attributions'), + ]), + ]), + ] + ), + + h('hr', { + style: { + margin: '10px 0 ', + width: '7em', + }, + }), + + h('div', { + style: { + paddingLeft: '30px', + }}, + [ + h('div.fa.fa-support', [ + h('a.info', { + href: 'https://support.metamask.io', + target: '_blank', + }, 'Visit our Support Center'), + ]), + + h('div', [ + h('a', { + href: 'https://metamask.io/', + target: '_blank', + }, [ + h('img.icon-size', { + src: 'images/icon-128.png', + style: { + // IE6-9 + filter: 'grayscale(100%)', + // Microsoft Edge and Firefox 35+ + WebkitFilter: 'grayscale(100%)', + }, + }), + h('div.info', 'Visit our web site'), + ]), + ]), + + h('div', [ + h('.fa.fa-twitter', [ + h('a.info', { + href: 'https://twitter.com/metamask_io', + target: '_blank', + }, 'Follow us on Twitter'), + ]), + ]), + + h('div.fa.fa-envelope', [ + h('a.info', { + target: '_blank', + style: { width: '85vw' }, + href: 'mailto:help@metamask.io?subject=Feedback', + }, 'Email us!'), + ]), + ]), + ]), + ]), + ]) + ) +} + +InfoScreen.prototype.navigateTo = function (url) { + global.platform.openWindow({ url }) +} + diff --git a/old-ui/app/infura-conversion.json b/old-ui/app/infura-conversion.json new file mode 100644 index 000000000..9a96fe069 --- /dev/null +++ b/old-ui/app/infura-conversion.json @@ -0,0 +1,653 @@ +{ + "objects": [ + { + "symbol": "ethaud", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "aud", + "name": "Australian Dollar" + } + }, + { + "symbol": "ethhkd", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "hkd", + "name": "Hong Kong Dollar" + } + }, + { + "symbol": "ethsgd", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "sgd", + "name": "Singapore Dollar" + } + }, + { + "symbol": "ethidr", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "idr", + "name": "Indonesian Rupiah" + } + }, + { + "symbol": "ethphp", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "php", + "name": "Philippine Peso" + } + }, + { + "symbol": "eth1st", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "1st", + "name": "FirstBlood" + } + }, + { + "symbol": "ethadt", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "adt", + "name": "adToken" + } + }, + { + "symbol": "ethadx", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "adx", + "name": "AdEx" + } + }, + { + "symbol": "ethant", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "ant", + "name": "Aragon" + } + }, + { + "symbol": "ethbat", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "bat", + "name": "Basic Attention Token" + } + }, + { + "symbol": "ethbnt", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "bnt", + "name": "Bancor" + } + }, + { + "symbol": "ethbtc", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "btc", + "name": "Bitcoin" + } + }, + { + "symbol": "ethcad", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "cad", + "name": "Canadian Dollar" + } + }, + { + "symbol": "ethcfi", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "cfi", + "name": "Cofound.it" + } + }, + { + "symbol": "ethcrb", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "crb", + "name": "CreditBit" + } + }, + { + "symbol": "ethcvc", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "cvc", + "name": "Civic" + } + }, + { + "symbol": "ethdash", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "dash", + "name": "Dash" + } + }, + { + "symbol": "ethdgd", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "dgd", + "name": "DigixDAO" + } + }, + { + "symbol": "ethetc", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "etc", + "name": "Ethereum Classic" + } + }, + { + "symbol": "etheur", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "eur", + "name": "Euro" + } + }, + { + "symbol": "ethfun", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "fun", + "name": "FunFair" + } + }, + { + "symbol": "ethgbp", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "gbp", + "name": "Pound Sterling" + } + }, + { + "symbol": "ethgno", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "gno", + "name": "Gnosis" + } + }, + { + "symbol": "ethgnt", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "gnt", + "name": "Golem" + } + }, + { + "symbol": "ethgup", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "gup", + "name": "Matchpool" + } + }, + { + "symbol": "ethhmq", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "hmq", + "name": "Humaniq" + } + }, + { + "symbol": "ethjpy", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "jpy", + "name": "Japanese Yen" + } + }, + { + "symbol": "ethlgd", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "lgd", + "name": "Legends Room" + } + }, + { + "symbol": "ethlsk", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "lsk", + "name": "Lisk" + } + }, + { + "symbol": "ethltc", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "ltc", + "name": "Litecoin" + } + }, + { + "symbol": "ethlun", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "lun", + "name": "Lunyr" + } + }, + { + "symbol": "ethmco", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "mco", + "name": "Monaco" + } + }, + { + "symbol": "ethmtl", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "mtl", + "name": "Metal" + } + }, + { + "symbol": "ethmyst", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "myst", + "name": "Mysterium" + } + }, + { + "symbol": "ethnmr", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "nmr", + "name": "Numeraire" + } + }, + { + "symbol": "ethomg", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "omg", + "name": "OmiseGO" + } + }, + { + "symbol": "ethpay", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "pay", + "name": "TenX" + } + }, + { + "symbol": "ethptoy", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "ptoy", + "name": "Patientory" + } + }, + { + "symbol": "ethqrl", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "qrl", + "name": "Quantum-Resistant Ledger" + } + }, + { + "symbol": "ethqtum", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "qtum", + "name": "Qtum" + } + }, + { + "symbol": "ethrep", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "rep", + "name": "Augur" + } + }, + { + "symbol": "ethrlc", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "rlc", + "name": "iEx.ec" + } + }, + { + "symbol": "ethrub", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "rub", + "name": "Russian Ruble" + } + }, + { + "symbol": "ethsc", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "sc", + "name": "Siacoin" + } + }, + { + "symbol": "ethsngls", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "sngls", + "name": "SingularDTV" + } + }, + { + "symbol": "ethsnt", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "snt", + "name": "Status" + } + }, + { + "symbol": "ethsteem", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "steem", + "name": "Steem" + } + }, + { + "symbol": "ethstorj", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "storj", + "name": "Storj" + } + }, + { + "symbol": "ethtime", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "time", + "name": "ChronoBank" + } + }, + { + "symbol": "ethtkn", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "tkn", + "name": "TokenCard" + } + }, + { + "symbol": "ethtrst", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "trst", + "name": "WeTrust" + } + }, + { + "symbol": "ethuah", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "uah", + "name": "Ukrainian Hryvnia" + } + }, + { + "symbol": "ethusd", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "usd", + "name": "United States Dollar" + } + }, + { + "symbol": "ethwings", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "wings", + "name": "Wings" + } + }, + { + "symbol": "ethxem", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "xem", + "name": "NEM" + } + }, + { + "symbol": "ethxlm", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "xlm", + "name": "Stellar Lumen" + } + }, + { + "symbol": "ethxmr", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "xmr", + "name": "Monero" + } + }, + { + "symbol": "ethxrp", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "xrp", + "name": "Ripple" + } + }, + { + "symbol": "ethzec", + "base": { + "code": "eth", + "name": "Ethereum" + }, + "quote": { + "code": "zec", + "name": "Zcash" + } + } + ] +} diff --git a/old-ui/app/keychains/hd/create-vault-complete.js b/old-ui/app/keychains/hd/create-vault-complete.js new file mode 100644 index 000000000..736e922b7 --- /dev/null +++ b/old-ui/app/keychains/hd/create-vault-complete.js @@ -0,0 +1,91 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const connect = require('react-redux').connect +const h = require('react-hyperscript') +const actions = require('../../../../ui/app/actions') +const exportAsFile = require('../../util').exportAsFile + +module.exports = connect(mapStateToProps)(CreateVaultCompleteScreen) + +inherits(CreateVaultCompleteScreen, Component) +function CreateVaultCompleteScreen () { + Component.call(this) +} + +function mapStateToProps (state) { + return { + seed: state.appState.currentView.seedWords, + cachedSeed: state.metamask.seedWords, + } +} + +CreateVaultCompleteScreen.prototype.render = function () { + var state = this.props + var seed = state.seed || state.cachedSeed || '' + + return ( + + h('.initialize-screen.flex-column.flex-center.flex-grow', [ + + // // subtitle and nav + // h('.section-title.flex-row.flex-center', [ + // h('h2.page-subtitle', 'Vault Created'), + // ]), + + h('h3.flex-center.text-transform-uppercase', { + style: { + background: '#EBEBEB', + color: '#AEAEAE', + marginTop: 36, + marginBottom: 8, + width: '100%', + fontSize: '20px', + padding: 6, + }, + }, [ + 'Vault Created', + ]), + + h('div', { + style: { + fontSize: '1em', + marginTop: '10px', + textAlign: 'center', + }, + }, [ + h('span.error', 'These 12 words are the only way to restore your MetaMask accounts.\nSave them somewhere safe and secret.'), + ]), + + h('textarea.twelve-word-phrase', { + readOnly: true, + value: seed, + }), + + h('button.primary', { + onClick: () => this.confirmSeedWords() + .then(account => this.showAccountDetail(account)), + style: { + margin: '24px', + fontSize: '0.9em', + marginBottom: '10px', + }, + }, 'I\'ve copied it somewhere safe'), + + h('button.primary', { + onClick: () => exportAsFile(`MetaMask Seed Words`, seed), + style: { + margin: '10px', + fontSize: '0.9em', + }, + }, 'Save Seed Words As File'), + ]) + ) +} + +CreateVaultCompleteScreen.prototype.confirmSeedWords = function () { + return this.props.dispatch(actions.confirmSeedWords()) +} + +CreateVaultCompleteScreen.prototype.showAccountDetail = function (account) { + return this.props.dispatch(actions.showAccountDetail(account)) +} diff --git a/old-ui/app/keychains/hd/recover-seed/confirmation.js b/old-ui/app/keychains/hd/recover-seed/confirmation.js new file mode 100644 index 000000000..eb0298a09 --- /dev/null +++ b/old-ui/app/keychains/hd/recover-seed/confirmation.js @@ -0,0 +1,121 @@ +const inherits = require('util').inherits + +const Component = require('react').Component +const connect = require('react-redux').connect +const h = require('react-hyperscript') +const actions = require('../../../../../ui/app/actions') + +module.exports = connect(mapStateToProps)(RevealSeedConfirmation) + +inherits(RevealSeedConfirmation, Component) +function RevealSeedConfirmation () { + Component.call(this) +} + +function mapStateToProps (state) { + return { + warning: state.appState.warning, + } +} + +RevealSeedConfirmation.prototype.render = function () { + const props = this.props + + return ( + + h('.initialize-screen.flex-column.flex-center.flex-grow', { + style: { maxWidth: '420px' }, + }, [ + + h('h3.flex-center.text-transform-uppercase', { + style: { + background: '#EBEBEB', + color: '#AEAEAE', + marginBottom: 24, + width: '100%', + fontSize: '20px', + padding: 6, + }, + }, [ + 'Reveal Seed Words', + ]), + + h('.div', { + style: { + display: 'flex', + flexDirection: 'column', + padding: '20px', + justifyContent: 'center', + }, + }, [ + + h('h4', 'Do not recover your seed words in a public place! These words can be used to steal all your accounts.'), + + // confirmation + h('input.large-input.letter-spacey', { + type: 'password', + id: 'password-box', + placeholder: 'Enter your password to confirm', + onKeyPress: this.checkConfirmation.bind(this), + style: { + width: 260, + marginTop: '12px', + }, + }), + + h('.flex-row.flex-start', { + style: { + marginTop: 30, + width: '50%', + }, + }, [ + // cancel + h('button.primary', { + onClick: this.goHome.bind(this), + }, 'CANCEL'), + + // submit + h('button.primary', { + style: { marginLeft: '10px' }, + onClick: this.revealSeedWords.bind(this), + }, 'OK'), + + ]), + + (props.warning) && ( + h('span.error', { + style: { + margin: '20px', + }, + }, props.warning.split('-')) + ), + + props.inProgress && ( + h('span.in-progress-notification', 'Generating Seed...') + ), + ]), + ]) + ) +} + +RevealSeedConfirmation.prototype.componentDidMount = function () { + document.getElementById('password-box').focus() +} + +RevealSeedConfirmation.prototype.goHome = function () { + this.props.dispatch(actions.showConfigPage(false)) +} + +// create vault + +RevealSeedConfirmation.prototype.checkConfirmation = function (event) { + if (event.key === 'Enter') { + event.preventDefault() + this.revealSeedWords() + } +} + +RevealSeedConfirmation.prototype.revealSeedWords = function () { + var password = document.getElementById('password-box').value + this.props.dispatch(actions.requestRevealSeed(password)) +} diff --git a/old-ui/app/keychains/hd/restore-vault.js b/old-ui/app/keychains/hd/restore-vault.js new file mode 100644 index 000000000..222172dfd --- /dev/null +++ b/old-ui/app/keychains/hd/restore-vault.js @@ -0,0 +1,152 @@ +const inherits = require('util').inherits +const PersistentForm = require('../../../lib/persistent-form') +const connect = require('react-redux').connect +const h = require('react-hyperscript') +const actions = require('../../../../ui/app/actions') + +module.exports = connect(mapStateToProps)(RestoreVaultScreen) + +inherits(RestoreVaultScreen, PersistentForm) +function RestoreVaultScreen () { + PersistentForm.call(this) +} + +function mapStateToProps (state) { + return { + warning: state.appState.warning, + forgottenPassword: state.appState.forgottenPassword, + } +} + +RestoreVaultScreen.prototype.render = function () { + var state = this.props + this.persistentFormParentId = 'restore-vault-form' + + return ( + + h('.initialize-screen.flex-column.flex-center.flex-grow', [ + + h('h3.flex-center.text-transform-uppercase', { + style: { + background: '#EBEBEB', + color: '#AEAEAE', + marginBottom: 24, + width: '100%', + fontSize: '20px', + padding: 6, + }, + }, [ + 'Restore Vault', + ]), + + // wallet seed entry + h('h3', 'Wallet Seed'), + h('textarea.twelve-word-phrase.letter-spacey', { + dataset: { + persistentFormId: 'wallet-seed', + }, + placeholder: 'Enter your secret twelve word phrase here to restore your vault.', + }), + + // password + h('input.large-input.letter-spacey', { + type: 'password', + id: 'password-box', + placeholder: 'New Password (min 8 chars)', + dataset: { + persistentFormId: 'password', + }, + style: { + width: 260, + marginTop: 12, + }, + }), + + // confirm password + h('input.large-input.letter-spacey', { + type: 'password', + id: 'password-box-confirm', + placeholder: 'Confirm Password', + onKeyPress: this.createOnEnter.bind(this), + dataset: { + persistentFormId: 'password-confirmation', + }, + style: { + width: 260, + marginTop: 16, + }, + }), + + (state.warning) && ( + h('span.error.in-progress-notification', state.warning) + ), + + // submit + + h('.flex-row.flex-space-between', { + style: { + marginTop: 30, + width: '50%', + }, + }, [ + + // cancel + h('button.primary', { + onClick: this.showInitializeMenu.bind(this), + }, 'CANCEL'), + + // submit + h('button.primary', { + onClick: this.createNewVaultAndRestore.bind(this), + }, 'OK'), + + ]), + ]) + + ) +} + +RestoreVaultScreen.prototype.showInitializeMenu = function () { + if (this.props.forgottenPassword) { + this.props.dispatch(actions.backToUnlockView()) + } else { + this.props.dispatch(actions.showInitializeMenu()) + } +} + +RestoreVaultScreen.prototype.createOnEnter = function (event) { + if (event.key === 'Enter') { + this.createNewVaultAndRestore() + } +} + +RestoreVaultScreen.prototype.createNewVaultAndRestore = function () { + // check password + var passwordBox = document.getElementById('password-box') + var password = passwordBox.value + var passwordConfirmBox = document.getElementById('password-box-confirm') + var passwordConfirm = passwordConfirmBox.value + if (password.length < 8) { + this.warning = 'Password not long enough' + + this.props.dispatch(actions.displayWarning(this.warning)) + return + } + if (password !== passwordConfirm) { + this.warning = 'Passwords don\'t match' + this.props.dispatch(actions.displayWarning(this.warning)) + return + } + // check seed + var seedBox = document.querySelector('textarea.twelve-word-phrase') + var seed = seedBox.value.trim() + if (seed.split(' ').length !== 12) { + this.warning = 'seed phrases are 12 words long' + this.props.dispatch(actions.displayWarning(this.warning)) + return + } + // submit + this.warning = null + this.props.dispatch(actions.displayWarning(this.warning)) + this.props.dispatch(actions.createNewVaultAndRestore(password, seed)) +} diff --git a/old-ui/app/new-keychain.js b/old-ui/app/new-keychain.js new file mode 100644 index 000000000..cc9633166 --- /dev/null +++ b/old-ui/app/new-keychain.js @@ -0,0 +1,29 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const h = require('react-hyperscript') +const connect = require('react-redux').connect + +module.exports = connect(mapStateToProps)(NewKeychain) + +function mapStateToProps (state) { + return {} +} + +inherits(NewKeychain, Component) +function NewKeychain () { + Component.call(this) +} + +NewKeychain.prototype.render = function () { + // const props = this.props + + return ( + h('div', { + style: { + background: 'blue', + }, + }, [ + h('h1', `Here's a list!!!!`), + ]) + ) +} diff --git a/old-ui/app/send.js b/old-ui/app/send.js new file mode 100644 index 000000000..9ab064aea --- /dev/null +++ b/old-ui/app/send.js @@ -0,0 +1,293 @@ +const inherits = require('util').inherits +const PersistentForm = require('../lib/persistent-form') +const h = require('react-hyperscript') +const connect = require('react-redux').connect +const Identicon = require('./components/identicon') +const actions = require('../../ui/app/actions') +const util = require('./util') +const numericBalance = require('./util').numericBalance +const addressSummary = require('./util').addressSummary +const isHex = require('./util').isHex +const EthBalance = require('./components/eth-balance') +const EnsInput = require('./components/ens-input') +const ethUtil = require('ethereumjs-util') +module.exports = connect(mapStateToProps)(SendTransactionScreen) + +function mapStateToProps (state) { + var result = { + address: state.metamask.selectedAddress, + accounts: state.metamask.accounts, + identities: state.metamask.identities, + warning: state.appState.warning, + network: state.metamask.network, + addressBook: state.metamask.addressBook, + conversionRate: state.metamask.conversionRate, + currentCurrency: state.metamask.currentCurrency, + } + + result.error = result.warning && result.warning.split('.')[0] + + result.account = result.accounts[result.address] + result.identity = result.identities[result.address] + result.balance = result.account ? numericBalance(result.account.balance) : null + + return result +} + +inherits(SendTransactionScreen, PersistentForm) +function SendTransactionScreen () { + PersistentForm.call(this) +} + +SendTransactionScreen.prototype.render = function () { + this.persistentFormParentId = 'send-tx-form' + + const props = this.props + const { + address, + account, + identity, + network, + identities, + addressBook, + conversionRate, + currentCurrency, + } = props + + return ( + + h('.send-screen.flex-column.flex-grow', [ + + // + // Sender Profile + // + + h('.account-data-subsection.flex-row.flex-grow', { + style: { + margin: '0 20px', + }, + }, [ + + // header - identicon + nav + h('.flex-row.flex-space-between', { + style: { + marginTop: '15px', + }, + }, [ + // back button + h('i.fa.fa-arrow-left.fa-lg.cursor-pointer.color-orange', { + onClick: this.back.bind(this), + }), + + // large identicon + h('.identicon-wrapper.flex-column.flex-center.select-none', [ + h(Identicon, { + diameter: 62, + address: address, + }), + ]), + + // invisible place holder + h('i.fa.fa-users.fa-lg.invisible', { + style: { + marginTop: '28px', + }, + }), + + ]), + + // account label + + h('.flex-column', { + style: { + marginTop: '10px', + alignItems: 'flex-start', + }, + }, [ + h('h2.font-medium.color-forest.flex-center', { + style: { + paddingTop: '8px', + marginBottom: '8px', + }, + }, identity && identity.name), + + // address and getter actions + h('.flex-row.flex-center', { + style: { + marginBottom: '8px', + }, + }, [ + + h('div', { + style: { + lineHeight: '16px', + }, + }, addressSummary(address)), + + ]), + + // balance + h('.flex-row.flex-center', [ + + h(EthBalance, { + value: account && account.balance, + conversionRate, + currentCurrency, + }), + + ]), + ]), + ]), + + // + // Required Fields + // + + h('h3.flex-center.text-transform-uppercase', { + style: { + background: '#EBEBEB', + color: '#AEAEAE', + marginTop: '15px', + marginBottom: '16px', + }, + }, [ + 'Send Transaction', + ]), + + // error message + props.error && h('span.error.flex-center', props.error), + + // 'to' field + h('section.flex-row.flex-center', [ + h(EnsInput, { + name: 'address', + placeholder: 'Recipient Address', + onChange: this.recipientDidChange.bind(this), + network, + identities, + addressBook, + }), + ]), + + // 'amount' and send button + h('section.flex-row.flex-center', [ + + h('input.large-input', { + name: 'amount', + placeholder: 'Amount', + type: 'number', + style: { + marginRight: '6px', + }, + dataset: { + persistentFormId: 'tx-amount', + }, + }), + + h('button.primary', { + onClick: this.onSubmit.bind(this), + style: { + textTransform: 'uppercase', + }, + }, 'Next'), + + ]), + + // + // Optional Fields + // + h('h3.flex-center.text-transform-uppercase', { + style: { + background: '#EBEBEB', + color: '#AEAEAE', + marginTop: '16px', + marginBottom: '16px', + }, + }, [ + 'Transaction Data (optional)', + ]), + + // 'data' field + h('section.flex-column.flex-center', [ + h('input.large-input', { + name: 'txData', + placeholder: '0x01234', + style: { + width: '100%', + resize: 'none', + }, + dataset: { + persistentFormId: 'tx-data', + }, + }), + ]), + ]) + ) +} + +SendTransactionScreen.prototype.navigateToAccounts = function (event) { + event.stopPropagation() + this.props.dispatch(actions.showAccountsPage()) +} + +SendTransactionScreen.prototype.back = function () { + var address = this.props.address + this.props.dispatch(actions.backToAccountDetail(address)) +} + +SendTransactionScreen.prototype.recipientDidChange = function (recipient, nickname) { + this.setState({ + recipient: recipient, + nickname: nickname, + }) +} + +SendTransactionScreen.prototype.onSubmit = function () { + const state = this.state || {} + const recipient = state.recipient || document.querySelector('input[name="address"]').value.replace(/^[.\s]+|[.\s]+$/g, '') + const nickname = state.nickname || ' ' + const input = document.querySelector('input[name="amount"]').value + const value = util.normalizeEthStringToWei(input) + const txData = document.querySelector('input[name="txData"]').value + const balance = this.props.balance + let message + + if (value.gt(balance)) { + message = 'Insufficient funds.' + return this.props.dispatch(actions.displayWarning(message)) + } + + if (input < 0) { + message = 'Can not send negative amounts of ETH.' + return this.props.dispatch(actions.displayWarning(message)) + } + + if ((util.isInvalidChecksumAddress(recipient))) { + message = 'Recipient address checksum is invalid.' + return this.props.dispatch(actions.displayWarning(message)) + } + + if ((!util.isValidAddress(recipient) && !txData) || (!recipient && !txData)) { + message = 'Recipient address is invalid.' + return this.props.dispatch(actions.displayWarning(message)) + } + + if (!isHex(ethUtil.stripHexPrefix(txData)) && txData) { + message = 'Transaction data must be hex string.' + return this.props.dispatch(actions.displayWarning(message)) + } + + this.props.dispatch(actions.hideWarning()) + + this.props.dispatch(actions.addToAddressBook(recipient, nickname)) + + var txParams = { + from: this.props.address, + value: '0x' + value.toString(16), + } + + if (recipient) txParams.to = ethUtil.addHexPrefix(recipient) + if (txData) txParams.data = txData + + this.props.dispatch(actions.signTx(txParams)) +} diff --git a/old-ui/app/settings.js b/old-ui/app/settings.js new file mode 100644 index 000000000..8df37c555 --- /dev/null +++ b/old-ui/app/settings.js @@ -0,0 +1,59 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const h = require('react-hyperscript') +const connect = require('react-redux').connect +const actions = require('../../ui/app/actions') + +module.exports = connect(mapStateToProps)(AppSettingsPage) + +function mapStateToProps (state) { + return {} +} + +inherits(AppSettingsPage, Component) +function AppSettingsPage () { + Component.call(this) +} + +AppSettingsPage.prototype.render = function () { + return ( + + h('.account-detail-section.flex-column.flex-grow', [ + + // subtitle and nav + h('.flex-row.flex-center', [ + h('i.fa.fa-arrow-left.fa-lg.cursor-pointer', { + onClick: this.navigateToAccounts.bind(this), + }), + h('h2.page-subtitle', 'Settings'), + ]), + + h('label', { + htmlFor: 'settings-rpc-endpoint', + }, 'RPC Endpoint:'), + h('input', { + type: 'url', + id: 'settings-rpc-endpoint', + onKeyPress: this.onKeyPress.bind(this), + }), + + ]) + + ) +} + +AppSettingsPage.prototype.componentDidMount = function () { + document.querySelector('input').focus() +} + +AppSettingsPage.prototype.onKeyPress = function (event) { + // get submit event + if (event.key === 'Enter') { + // this.submitPassword(event) + } +} + +AppSettingsPage.prototype.navigateToAccounts = function (event) { + event.stopPropagation() + this.props.dispatch(actions.showAccountsPage()) +} diff --git a/old-ui/app/template.js b/old-ui/app/template.js new file mode 100644 index 000000000..d15b30fd2 --- /dev/null +++ b/old-ui/app/template.js @@ -0,0 +1,30 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const h = require('react-hyperscript') +const connect = require('react-redux').connect + +module.exports = connect(mapStateToProps)(COMPONENTNAME) + +function mapStateToProps (state) { + return {} +} + +inherits(COMPONENTNAME, Component) +function COMPONENTNAME () { + Component.call(this) +} + +COMPONENTNAME.prototype.render = function () { + const props = this.props + + return ( + h('div', { + style: { + background: 'blue', + }, + }, [ + `Hello, ${props.sender}`, + ]) + ) +} + diff --git a/old-ui/app/unlock.js b/old-ui/app/unlock.js new file mode 100644 index 000000000..a1f791552 --- /dev/null +++ b/old-ui/app/unlock.js @@ -0,0 +1,122 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const h = require('react-hyperscript') +const connect = require('react-redux').connect +const actions = require('../../ui/app/actions') +const getCaretCoordinates = require('textarea-caret') +const EventEmitter = require('events').EventEmitter + +const Mascot = require('./components/mascot') + +module.exports = connect(mapStateToProps)(UnlockScreen) + +inherits(UnlockScreen, Component) +function UnlockScreen () { + Component.call(this) + this.animationEventEmitter = new EventEmitter() +} + +function mapStateToProps (state) { + return { + warning: state.appState.warning, + } +} + +UnlockScreen.prototype.render = function () { + const state = this.props + const warning = state.warning + return ( + h('.flex-column', { + style: { + width: 'inherit', + }, + }, [ + h('.unlock-screen.flex-column.flex-center.flex-grow', [ + + h(Mascot, { + animationEventEmitter: this.animationEventEmitter, + }), + + h('h1', { + style: { + fontSize: '1.4em', + textTransform: 'uppercase', + color: '#7F8082', + }, + }, 'MetaMask'), + + h('input.large-input', { + type: 'password', + id: 'password-box', + placeholder: 'enter password', + style: { + + }, + onKeyPress: this.onKeyPress.bind(this), + onInput: this.inputChanged.bind(this), + }), + + h('.error', { + style: { + display: warning ? 'block' : 'none', + padding: '0 20px', + textAlign: 'center', + }, + }, warning), + + h('button.primary.cursor-pointer', { + onClick: this.onSubmit.bind(this), + style: { + margin: 10, + }, + }, 'Unlock'), + ]), + + h('.flex-row.flex-center.flex-grow', [ + h('p.pointer', { + onClick: () => this.props.dispatch(actions.forgotPassword()), + style: { + fontSize: '0.8em', + color: 'rgb(247, 134, 28)', + textDecoration: 'underline', + }, + }, 'Restore from seed phrase'), + ]), + ]) + ) +} + +UnlockScreen.prototype.componentDidMount = function () { + document.getElementById('password-box').focus() +} + +UnlockScreen.prototype.onSubmit = function (event) { + const input = document.getElementById('password-box') + const password = input.value + this.props.dispatch(actions.tryUnlockMetamask(password)) +} + +UnlockScreen.prototype.onKeyPress = function (event) { + if (event.key === 'Enter') { + this.submitPassword(event) + } +} + +UnlockScreen.prototype.submitPassword = function (event) { + var element = event.target + var password = element.value + // reset input + element.value = '' + this.props.dispatch(actions.tryUnlockMetamask(password)) +} + +UnlockScreen.prototype.inputChanged = function (event) { + // tell mascot to look at page action + var element = event.target + var boundingRect = element.getBoundingClientRect() + var coordinates = getCaretCoordinates(element, element.selectionEnd) + this.animationEventEmitter.emit('point', { + x: boundingRect.left + coordinates.left - element.scrollLeft, + y: boundingRect.top + coordinates.top - element.scrollTop, + }) +} diff --git a/old-ui/app/util.js b/old-ui/app/util.js new file mode 100644 index 000000000..3f8b4dcc3 --- /dev/null +++ b/old-ui/app/util.js @@ -0,0 +1,240 @@ +const ethUtil = require('ethereumjs-util') + +var valueTable = { + wei: '1000000000000000000', + kwei: '1000000000000000', + mwei: '1000000000000', + gwei: '1000000000', + szabo: '1000000', + finney: '1000', + ether: '1', + kether: '0.001', + mether: '0.000001', + gether: '0.000000001', + tether: '0.000000000001', +} +var bnTable = {} +for (var currency in valueTable) { + bnTable[currency] = new ethUtil.BN(valueTable[currency], 10) +} + +module.exports = { + valuesFor: valuesFor, + addressSummary: addressSummary, + miniAddressSummary: miniAddressSummary, + isAllOneCase: isAllOneCase, + isValidAddress: isValidAddress, + numericBalance: numericBalance, + parseBalance: parseBalance, + formatBalance: formatBalance, + generateBalanceObject: generateBalanceObject, + dataSize: dataSize, + readableDate: readableDate, + normalizeToWei: normalizeToWei, + normalizeEthStringToWei: normalizeEthStringToWei, + normalizeNumberToWei: normalizeNumberToWei, + valueTable: valueTable, + bnTable: bnTable, + isHex: isHex, + exportAsFile: exportAsFile, + isInvalidChecksumAddress, +} + +function valuesFor (obj) { + if (!obj) return [] + return Object.keys(obj) + .map(function (key) { return obj[key] }) +} + +function addressSummary (address, firstSegLength = 10, lastSegLength = 4, includeHex = true) { + if (!address) return '' + let checked = ethUtil.toChecksumAddress(address) + if (!includeHex) { + checked = ethUtil.stripHexPrefix(checked) + } + return checked ? checked.slice(0, firstSegLength) + '...' + checked.slice(checked.length - lastSegLength) : '...' +} + +function miniAddressSummary (address) { + if (!address) return '' + var checked = ethUtil.toChecksumAddress(address) + return checked ? checked.slice(0, 4) + '...' + checked.slice(-4) : '...' +} + +function isValidAddress (address) { + var prefixed = ethUtil.addHexPrefix(address) + if (address === '0x0000000000000000000000000000000000000000') return false + return (isAllOneCase(prefixed) && ethUtil.isValidAddress(prefixed)) || ethUtil.isValidChecksumAddress(prefixed) +} + +function isInvalidChecksumAddress (address) { + var prefixed = ethUtil.addHexPrefix(address) + if (address === '0x0000000000000000000000000000000000000000') return false + return !isAllOneCase(prefixed) && !ethUtil.isValidChecksumAddress(prefixed) && ethUtil.isValidAddress(prefixed) +} + +function isAllOneCase (address) { + if (!address) return true + var lower = address.toLowerCase() + var upper = address.toUpperCase() + return address === lower || address === upper +} + +// Takes wei Hex, returns wei BN, even if input is null +function numericBalance (balance) { + if (!balance) return new ethUtil.BN(0, 16) + var stripped = ethUtil.stripHexPrefix(balance) + return new ethUtil.BN(stripped, 16) +} + +// Takes hex, returns [beforeDecimal, afterDecimal] +function parseBalance (balance) { + var beforeDecimal, afterDecimal + const wei = numericBalance(balance) + var weiString = wei.toString() + const trailingZeros = /0+$/ + + beforeDecimal = weiString.length > 18 ? weiString.slice(0, weiString.length - 18) : '0' + afterDecimal = ('000000000000000000' + wei).slice(-18).replace(trailingZeros, '') + if (afterDecimal === '') { afterDecimal = '0' } + return [beforeDecimal, afterDecimal] +} + +// Takes wei hex, returns an object with three properties. +// Its "formatted" property is what we generally use to render values. +function formatBalance (balance, decimalsToKeep, needsParse = true) { + var parsed = needsParse ? parseBalance(balance) : balance.split('.') + var beforeDecimal = parsed[0] + var afterDecimal = parsed[1] + var formatted = 'None' + if (decimalsToKeep === undefined) { + if (beforeDecimal === '0') { + if (afterDecimal !== '0') { + var sigFigs = afterDecimal.match(/^0*(.{2})/) // default: grabs 2 most significant digits + if (sigFigs) { afterDecimal = sigFigs[0] } + formatted = '0.' + afterDecimal + ' ETH' + } + } else { + formatted = beforeDecimal + '.' + afterDecimal.slice(0, 3) + ' ETH' + } + } else { + afterDecimal += Array(decimalsToKeep).join('0') + formatted = beforeDecimal + '.' + afterDecimal.slice(0, decimalsToKeep) + ' ETH' + } + return formatted +} + + +function generateBalanceObject (formattedBalance, decimalsToKeep = 1) { + var balance = formattedBalance.split(' ')[0] + var label = formattedBalance.split(' ')[1] + var beforeDecimal = balance.split('.')[0] + var afterDecimal = balance.split('.')[1] + var shortBalance = shortenBalance(balance, decimalsToKeep) + + if (beforeDecimal === '0' && afterDecimal.substr(0, 5) === '00000') { + // eslint-disable-next-line eqeqeq + if (afterDecimal == 0) { + balance = '0' + } else { + balance = '<1.0e-5' + } + } else if (beforeDecimal !== '0') { + balance = `${beforeDecimal}.${afterDecimal.slice(0, decimalsToKeep)}` + } + + return { balance, label, shortBalance } +} + +function shortenBalance (balance, decimalsToKeep = 1) { + var truncatedValue + var convertedBalance = parseFloat(balance) + if (convertedBalance > 1000000) { + truncatedValue = (balance / 1000000).toFixed(decimalsToKeep) + return `${truncatedValue}m` + } else if (convertedBalance > 1000) { + truncatedValue = (balance / 1000).toFixed(decimalsToKeep) + return `${truncatedValue}k` + } else if (convertedBalance === 0) { + return '0' + } else if (convertedBalance < 0.001) { + return '<0.001' + } else if (convertedBalance < 1) { + var stringBalance = convertedBalance.toString() + if (stringBalance.split('.')[1].length > 3) { + return convertedBalance.toFixed(3) + } else { + return stringBalance + } + } else { + return convertedBalance.toFixed(decimalsToKeep) + } +} + +function dataSize (data) { + var size = data ? ethUtil.stripHexPrefix(data).length : 0 + return size + ' bytes' +} + +// Takes a BN and an ethereum currency name, +// returns a BN in wei +function normalizeToWei (amount, currency) { + try { + return amount.mul(bnTable.wei).div(bnTable[currency]) + } catch (e) {} + return amount +} + +function normalizeEthStringToWei (str) { + const parts = str.split('.') + let eth = new ethUtil.BN(parts[0], 10).mul(bnTable.wei) + if (parts[1]) { + var decimal = parts[1] + while (decimal.length < 18) { + decimal += '0' + } + const decimalBN = new ethUtil.BN(decimal, 10) + eth = eth.add(decimalBN) + } + return eth +} + +var multiple = new ethUtil.BN('10000', 10) +function normalizeNumberToWei (n, currency) { + var enlarged = n * 10000 + var amount = new ethUtil.BN(String(enlarged), 10) + return normalizeToWei(amount, currency).div(multiple) +} + +function readableDate (ms) { + var date = new Date(ms) + var month = date.getMonth() + var day = date.getDate() + var year = date.getFullYear() + var hours = date.getHours() + var minutes = '0' + date.getMinutes() + var seconds = '0' + date.getSeconds() + + var dateStr = `${month}/${day}/${year}` + var time = `${hours}:${minutes.substr(-2)}:${seconds.substr(-2)}` + return `${dateStr} ${time}` +} + +function isHex (str) { + return Boolean(str.match(/^(0x)?[0-9a-fA-F]+$/)) +} + +function exportAsFile (filename, data) { + // source: https://stackoverflow.com/a/33542499 by Ludovic Feltz + const blob = new Blob([data], {type: 'text/csv'}) + if (window.navigator.msSaveOrOpenBlob) { + window.navigator.msSaveBlob(blob, filename) + } else { + const elem = window.document.createElement('a') + elem.href = window.URL.createObjectURL(blob) + elem.download = filename + document.body.appendChild(elem) + elem.click() + document.body.removeChild(elem) + } +} diff --git a/old-ui/css.js b/old-ui/css.js new file mode 100644 index 000000000..21b311c28 --- /dev/null +++ b/old-ui/css.js @@ -0,0 +1,30 @@ +const fs = require('fs') +const path = require('path') + +module.exports = bundleCss + +var cssFiles = { + 'fonts.css': fs.readFileSync(path.join(__dirname, '/app/css/fonts.css'), 'utf8'), + 'reset.css': fs.readFileSync(path.join(__dirname, '/app/css/reset.css'), 'utf8'), + 'lib.css': fs.readFileSync(path.join(__dirname, '/app/css/lib.css'), 'utf8'), + 'index.css': fs.readFileSync(path.join(__dirname, '/app/css/index.css'), 'utf8'), + 'transitions.css': fs.readFileSync(path.join(__dirname, '/app/css/transitions.css'), 'utf8'), + 'first-time.css': fs.readFileSync(path.join(__dirname, '../mascara/src/app/first-time/index.css'), 'utf8'), + 'react-tooltip-component.css': fs.readFileSync(path.join(__dirname, '..', 'node_modules', 'react-tooltip-component', 'dist', 'react-tooltip-component.css'), 'utf8'), + 'react-css': fs.readFileSync(path.join(__dirname, '..', 'node_modules', 'react-select', 'dist', 'react-select.css'), 'utf8'), +} + +function bundleCss () { + var cssBundle = Object.keys(cssFiles).reduce(function (bundle, fileName) { + var fileContent = cssFiles[fileName] + var output = String() + + output += '/*========== ' + fileName + ' ==========*/\n\n' + output += fileContent + output += '\n\n' + + return bundle + output + }, String()) + + return cssBundle +} diff --git a/old-ui/design/00-metamask-SignIn.jpg b/old-ui/design/00-metamask-SignIn.jpg new file mode 100644 index 000000000..2becdb032 Binary files /dev/null and b/old-ui/design/00-metamask-SignIn.jpg differ diff --git a/old-ui/design/01-metamask-SelectAcc.jpg b/old-ui/design/01-metamask-SelectAcc.jpg new file mode 100644 index 000000000..239091a98 Binary files /dev/null and b/old-ui/design/01-metamask-SelectAcc.jpg differ diff --git a/old-ui/design/02-metamask-AccDetails.jpg b/old-ui/design/02-metamask-AccDetails.jpg new file mode 100644 index 000000000..d7d408ffc Binary files /dev/null and b/old-ui/design/02-metamask-AccDetails.jpg differ diff --git a/old-ui/design/02a-metamask-AccDetails-OverToken.jpg b/old-ui/design/02a-metamask-AccDetails-OverToken.jpg new file mode 100644 index 000000000..f26ff31e8 Binary files /dev/null and b/old-ui/design/02a-metamask-AccDetails-OverToken.jpg differ diff --git a/old-ui/design/02a-metamask-AccDetails-OverTransaction.jpg b/old-ui/design/02a-metamask-AccDetails-OverTransaction.jpg new file mode 100644 index 000000000..8a06be6b9 Binary files /dev/null and b/old-ui/design/02a-metamask-AccDetails-OverTransaction.jpg differ diff --git a/old-ui/design/02a-metamask-AccDetails.jpg b/old-ui/design/02a-metamask-AccDetails.jpg new file mode 100644 index 000000000..c37e0f539 Binary files /dev/null and b/old-ui/design/02a-metamask-AccDetails.jpg differ diff --git a/old-ui/design/02b-metamask-AccDetails-Send.jpg b/old-ui/design/02b-metamask-AccDetails-Send.jpg new file mode 100644 index 000000000..10f2d27fd Binary files /dev/null and b/old-ui/design/02b-metamask-AccDetails-Send.jpg differ diff --git a/old-ui/design/03-metamask-Qr.jpg b/old-ui/design/03-metamask-Qr.jpg new file mode 100644 index 000000000..9c09de42f Binary files /dev/null and b/old-ui/design/03-metamask-Qr.jpg differ diff --git a/old-ui/design/05-metamask-Menu.jpg b/old-ui/design/05-metamask-Menu.jpg new file mode 100644 index 000000000..0a43d7b2a Binary files /dev/null and b/old-ui/design/05-metamask-Menu.jpg differ diff --git a/old-ui/design/chromeStorePics/final_screen_dao_accounts.png b/old-ui/design/chromeStorePics/final_screen_dao_accounts.png new file mode 100644 index 000000000..805cc96b6 Binary files /dev/null and b/old-ui/design/chromeStorePics/final_screen_dao_accounts.png differ diff --git a/old-ui/design/chromeStorePics/final_screen_dao_locked.png b/old-ui/design/chromeStorePics/final_screen_dao_locked.png new file mode 100644 index 000000000..9d9e33930 Binary files /dev/null and b/old-ui/design/chromeStorePics/final_screen_dao_locked.png differ diff --git a/old-ui/design/chromeStorePics/final_screen_dao_notification.png b/old-ui/design/chromeStorePics/final_screen_dao_notification.png new file mode 100644 index 000000000..d56a5ce62 Binary files /dev/null and b/old-ui/design/chromeStorePics/final_screen_dao_notification.png differ diff --git a/old-ui/design/chromeStorePics/final_screen_wei_account.png b/old-ui/design/chromeStorePics/final_screen_wei_account.png new file mode 100644 index 000000000..d503ff301 Binary files /dev/null and b/old-ui/design/chromeStorePics/final_screen_wei_account.png differ diff --git a/old-ui/design/chromeStorePics/final_screen_wei_notification.png b/old-ui/design/chromeStorePics/final_screen_wei_notification.png new file mode 100644 index 000000000..3560c51ff Binary files /dev/null and b/old-ui/design/chromeStorePics/final_screen_wei_notification.png differ diff --git a/old-ui/design/chromeStorePics/icon-128.png b/old-ui/design/chromeStorePics/icon-128.png new file mode 100644 index 000000000..ae687147d Binary files /dev/null and b/old-ui/design/chromeStorePics/icon-128.png differ diff --git a/old-ui/design/chromeStorePics/icon-64.png b/old-ui/design/chromeStorePics/icon-64.png new file mode 100644 index 000000000..7062cf4f1 Binary files /dev/null and b/old-ui/design/chromeStorePics/icon-64.png differ diff --git a/old-ui/design/chromeStorePics/metamask_icon.ai b/old-ui/design/chromeStorePics/metamask_icon.ai new file mode 100644 index 000000000..27400c5a4 --- /dev/null +++ b/old-ui/design/chromeStorePics/metamask_icon.ai @@ -0,0 +1,2383 @@ +%PDF-1.5 %âãÏÓ +1 0 obj <>/OCGs[5 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + application/pdf + + + metamask_icon + + + Adobe Illustrator CC 2015 (Macintosh) + 2016-06-15T14:23:12-04:00 + 2016-06-15T14:23:12-04:00 + 2016-06-15T14:23:12-04:00 + + + + 240 + 256 + JPEG + /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAADwAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXnP5r/mvB5Tg/RmnAT6/cJyUMKx28bVAkf+ZjT4U+k7UDYuo1HBsObl6bTce5+l5X+Wf5t6jonm KZtfu5rzTNVcG+lkZpHilACLOAamgUBWC/sgUrxAzEwakxl6uRczUaYSj6eYfS9vcQXEEdxA6ywT KskUimqsjCqsCOoIObUG3UkUvxQ7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXY q7FXYq7FXYq7FXln5rfnHb+X1l0bQnWfXCCs0+zR2tfEGoaTwXoO/hmJqNTw7Dm5mm0plvL6fvfO U889xPJcXEjTTzM0ksshLO7saszMdySTUk5qybdsBSzAl7R+Rv5ni0dPKutTqto5ppNw/KqyOwH1 c0BHFuVVJpTpvUUz9Jnr0n4Ov1mnv1D4ve82LrHYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq 7FUn1Pzl5W0yF5r3VLeNI9no4kYfNU5N+GY89XijsZC/mfkHIhpMstxE18h8ynCmqg7iorQ7HMhx 3Yq7FXYq7FXYq7FXjf5v/nG2nPL5e8tXAN9Ro9Rv039A7D04WBp6nUM1Ph7fFXjg6nU16Y83P0ul v1S5PAWZmYsxJYmpJ3JJzWu0axV2KuxV9Ifkr+Zq67py6FrF1y121+G3eUjlcwKtQeRPxyIAeXci jbnkc2mlz8Qo83U6vT8J4h9L1PMxwnYq7FXYq7FXYq7FXYq7FXYq7FXYqlN95s8t2I/0jUYQQaFE b1HHzWPk34Zi5Nbhh9Uh9/3OVi0Waf0xP3fex7UfzX0WEOtjBNdSCoR2AjjPgak8/wDhcwcvbWIf SDL7B+v7HOxdi5T9REftP6vtYre/mf5ouD+5eK0UdoowxPzMnqfhmsydsZpcqj7h+u3aY+x8Eedy 95/VTFdc803n1dptVv5powSVjeRmqx7IhNMxPEy5jRJPx2cwY8WEWAB8N0l8gRXnm/z/AKXazpXT 7WX65NCo5II4PjHqVrXk3FDX+btXNtodLETDqddqiYH7H1LnQPOuxV2KuxV2KuZlVSzEBQKknYAD FXhX5t/nOsyzaB5XuCEDBbzVoXZSSrA8Ld0I2qKM/foNt81+o1X8Mfm7LTaT+KXyeI5r3YuxV2Ku xV2KqtpdXNpdQ3VrI0NzA6yQyoaMroaqwPiCMINboIsUX1j+XH5g6f5w0WOcNHDq0I439irbqwoD IiklvTaux7dK1GbnBmEx5ukz4DjPky3Lmh2KuxV2KuxV2KuxVKb/AM2eW7CoudQhDA0KI3qMD7rH yYZjZdbhh9Uh9/3OVi0Waf0xP3fex6//ADY0OHktnbzXTKaKxpFGw8QTyb/hcwMnbWIfSDL7B+Pg 5+PsXKa4iI/afx8WO3/5ra9OJEtYIbVG2RqNJIo/1iQv/C5gZe2sp+kCP2n8fBz8XYuIVxEy+wfj 4sVvdY1a+FLy8muFBLBZJGZQT4KTQZrMmfJP6pE/F2ePBjh9MQPghMqbXYqler+YLPTgUJ9W57Qq en+se2X4dPKfuaMueMPewW+vrm9uGnuH5Ox2G/FR/KoPQZtYQERQdZOZkbL3L/nG7y8Y7PVPMEqj lOy2VqxBDBEpJKQSPsszINu6nNpoYbGTqdfPcRe1ZnuvdirsVdirsVeF/n1+Y96l1N5O04+lCERt Vn35uXAkWBfBOJVmI+1XjsAeWv1ec3wD4uy0eAVxn4PEM17sXYq7FXYq7FXYq7FU18seZNU8uaxD qumymOeKqsBQh0YUZCGDDceI2O+ESlH6TRYmEZbSFh7bbfmL5mubeO4iv6xSqHQ+lD0YV/kzVy7U 1MTRl9kf1Owj2XpiLEftP61T/Hvmv/lt/wCSUP8AzRkf5W1P877I/qZfyTp/5v2n9bv8e+a/+W3/ AJJQ/wDNGP8AK2p/nfZH9S/yTp/5v2n9bv8AHvmv/lt/5JQ/80Y/ytqf532R/Uv8k6f+b9p/W7/H vmv/AJbf+SUP/NGP8ran+d9kf1L/ACTp/wCb9p/W7/Hvmv8A5bf+SUP/ADRj/K2p/nfZH9S/yTp/ 5v2n9bHtW1/WtUeuoXTz8eiGioCNtkUKv4ZDNqsmX6zbdh0uPF9ApL8ob3Yq7FXYq7FWO695pW0d rWyo9wtRJKd1Q+A8WH3ZmYNLxby5OJn1PDtHmw6SR5JGkclnclmY9STuTmzArZ1xN7uhhlmmSGJS 8sjBI0HUsxoAPpwhiS+zvLGhxaF5e0/SIiGFlAkTOoIDuB8b0JNOb1bN5jhwxAdBknxSJ70zybB2 KuxV2KpX5o12HQfL2oaxNxK2UDyKjHiHkpSOOu9ObkL9OQyT4Yks8cOKQHe+Nr6+u7+8mvLyVp7q 4cyTTOaszNuSc0ZJJsu/AAFBRwJdirsVdirsVdirsVdirKvI2tmC6OmzN+5uDWEmlFkp03/mp9/z zX67BY4hzDm6PNR4T1Z5mpdo7FXYq7FXYqg7laSn33y2PJgVLJIdirsVWu6IjO7BUUEsxNAAOpJO IFqTTD9c81yT1gsGaKIH4px8LtT+Xuo/HNlg0gG8ubrs2qJ2ixzM1w3Yqzz8k/L66z5/s2kAMGmK 2oSAkgkwkCKlO4ldDTwBzJ0sOKfucbVz4YHz2fU+bd0rsVdirsVdirxT/nIzzWi2ll5ZtZ1Mkj/W dRjQnkqoB6KPTajli9D/ACqcwNbk2EQ7DQ49zIvB81zs3Yq7FXYq7FXYq7FXYq7FW0d0dXRirqQV YGhBG4IIxItQXp3ljWjqunc5Cv1qI8J1Xb/Van+UPxrmh1WDw5bcnc6fNxx35pvmO5DsVdirsVQ1 2v2W+gnJwYlD5YxdiqheXttZwGe4cRxjap6k+AHc5KEDI0GM5iIssE1fzBeakeB/dWw6Qqevux7n Nth08Ye91eXPKfuSzL2h2KuxV9If84/eVk03ys+tyEm51lqhSKcIYHdEArv8Zq3uKZtdHjqN97qN bkuVdz1PMtw3Yq7FXYqp3V1b2ltNdXMgit4EaWaVjRVRByZifAAYCaSBez418169Nr/mPUdYl5Vv Z2kjVyCyRVpEhIp9iMKv0Zo8k+KRLv8AHDhiB3JVkGbsVdirsVdirsVdirsVdirsVTPy7q50vU45 2J9B/guFHdD36H7J3/DKNTh8SFdejdgy8Er6PUYpY5okljblHIoZGHQqwqDmhIINF3QNiwuwJdir sVUrlaxH23yUeaCg8tYJfq2t2Wmx/vW5TleUcC/abtv/ACj3OXYsEp8uTVlzRhz5sD1DULm+uGnu GLE/ZX9lR/KozbY8YgKDqsmQyNlDZNg7FXYqiNN0+51HUbXT7UBrm8mjggUmgLysEWp7bnDEWaRK VCy+0tM0+307TbXT7YEW9nDHbwgmp4RKEWp+QzfRFCnnpSs2UThQ7FXYq7FXmX59ebIdL8ovpEMw Goauyx+mrFXW2U8pH2/Zbj6dD15HwOYmryVGupczR4uKd9A+ac1Tt3Yq7FXYq7FXYq7FXYq7FXYq 7FXYqzXyJrSem2lztRgS9sSQAQT8SD3ruPpzV6/Bvxj4ux0Wb+EsxzWuwdirsVadeSlfEEYhDE9b 8zwWLNb24E10pKuK/AhHjTqa9s2ODSme52Dh5tSI7DcsJmmlmkaWVy8jmrOxqTm0AAFB1hJJsrMK HYq7FXYq9S/5x+8qvqXmp9bkIFtoq1CEV5zTo6IBXb4RVq9jTMzR47lfc4WtyVHh730jm0dS7FXY q7FXYq+X/wA+dQmuvzGu4JPsWMFvBF/qtGJ/+JTHNTq5Xk9zudHGsY83nmYrlOxV2KuxV2KuxV2K uxV2KuxV2KtqrMwVQSxNABuSTirN/Lfl9LBVurhQ1626g7iMeA/yvE/R89VqdRx7D6XZ6fT8O55s tUggEdDuM1zmt4pdirsVYZ5s8s+pLJfWS0lNXmhH7fcsv+V4jv8APrs9JqaHDJ1+p01+qLDM2brn Yq7FXYq7FX0n/wA48to48kyR2cwfUPrLyanEdmjZvhiA2rwMaAj35ZtdHXBtzdRrr49+XR6hmW4b sVdirsVdir5I/Ne/+vfmJrs1QeFx6G3/AC7osP8AzLzTag3Mu800axhieUN7sVdirsVdirsVdirs VdirsVdirMPLHl8wAXt4hE5/uYmFCg/mI8f1ZrdVqL9MeTsdNgr1HmyXMJzEXatWOndf1ZVMbswr ZFLsVdiqGu13VvoOTgWJYV5o8vFS9/aL8O7XEQ7eLj28c2ml1H8MnXanT/xBi+Z7guxV2KuxVP8A yLf+abLzPZP5ZDyarI4SO3XdZVO7JKKgenQVYkjiPiqKVFuKUhIcPNqzRiYni5PsKIymJDKFWXiP UCElQ1N6EgEivtm7dCuxV2KuxV4P+Zn5i/m7o189tNbRaNYszi2urVBOsqEkD/SJAw5bV2VG8QNs 12fNlie4Oy0+DFId5eL3FxPczyXFxI01xMzSTSuSzu7GrMzHckk1JzBJt2AFLMCXYq7FXYq7FXYq 7FXYq7FXYqyvyv5fZWF9ex0IobaNvv5kfq/2s1+q1H8Mfi5+mwfxS+DKswHOdiqrbuVkA7Nsf4ZG Q2SEZlTN2KuxVTnTlEfbcfRhid0FBZcwYd5k8uNAz3tkg+rdZYl6oe7KKfZ/V8umy02pv0y5uu1G nr1R5MbzNcN2KuxVnH5Z/mdP5MuXjayhudPu5Fa9cJS6CAEUjkqoIFa8W2/1ak5kYM/B02cbUafx Ou76X8s+ZdL8x6RDqumGU2s32TLG8R5DZl+IUbi1VJQlajrm1hMSFh1GTGYGimmTYOxV2KqN9HZS Wk0d8sT2boVuEnCmIodiHDfDT54DVbpF3s+b/wAyfI/kCy9fU/LvmWzJZix0f1BOQSWJWF4OZXsq q6/N81efFAbxkPc7bBmmdpRPveZZiOY7FXYq7FXYq7FXYq7FXYqybyz5cMhjv7xaRD4oYSPteDN/ k+Hj8uuDqdTXpi5um09+osvzXOwdirsVdiqYIwZA3iMoIZt4pdirsVS9l4sV8DTLg1tEAih6YVYT 5k8vGzY3dsC1qxJdf99knpt+z4ZtNNqOLY83W6jT8O45JBmW4jsVZP8Alp5c07zH5z0/SNQd1tZz I7rH1f0o2l4V/ZDcNzl2CAlMAtOomYQJD65gggt4I7e3jWGCFRHFFGAqIiiiqqjYADYAZugKdGTa /FDsVdirHfNvkDyv5rjUava87iNGSC7iYxzRhvBhs1DuA4I9sqyYYz5tuLNKHJ4v5q/5x58xWBlu NAuE1S1G6270iuQCTtv+7fitN+QJ7LmDk0Uh9O7sMeuifq2eUzQzQTPDMjRTRMUkjcFWVlNCrA7g g5hkU5oNrMCXYq7FXYq7FXYq7FWR+XfLJuAl5eDjBUGKEjdx4nwX9fy64Wo1NemPNzNPpr9UuTMs 1rsXYq7FXYq7FUVavVSh6jcfLK5hkFfIMnYq7FUHdLSWviK/wyyHJgVLJoWuiOjI4DIwKsp3BB2I OINKRbB/MPl19Pb6xb1ezY713MZPY+3gfo+e10+o49j9Tq9Rp+DcckkzKcZmP5P3EsH5k6G8cTTM ZZIyqgkhZIXRm27IrFj7DL9Mf3gcfVC8ZfWWbl0jsVdirsVdirwr87POX5jaTqj6dFIdP0O4VTaX dorK8o6lXuDusgZTVUI+HrUHfX6rLOJrkHZaTFjkL5l4jmvdi7FXYq7FXYq7FXYqn/lzy6t8purr kLZTREG3Mg77/wAvbbMTU6jg2HNy9Pp+Lc8maqqooVQFVRRVGwAHYZqyXZAN4q7FXYq7FXYqvhfj Ip7dD9ORkNkhHZUzdirsVULpKoG/l/jkoFiULlrF2KrJYYpozHKiyRt9pGAIP0HCCQbCCAdiwTzD obabcB4qm0lJ9M7nif5Sf1ZttPn4xvzdXqMPAduT6E/Jz8tofLejx6pqMStrt+iyNzSj20bLtCOY DK9G/edN/h7VO+02DhFnmXn9Vn4zQ+kPSMynEdirsVdirsVS7zBoGl6/pM+l6nCJrScUI6MrD7Lo ezKehyM4CQos4TMTYfKfn3yJq3lDWHs7pWkspCTYX1KJMgp4Vo61oy9vlQ5p82EwNF3WHMMgsMYq MpbnVGKuxVvFXYqnnlvQDfSfWbhSLRDsP9+MOw9h3zF1Oo4BQ5uVp8HEbPJm6IiIqIoVFACqBQAD YADNUTbswKXYq7FXYq7FXYq7FXYqjoX5xg9+h+eUyFFmF+BLsVWyLyRl8RtiChAZewdirsVTjyfZ JeeZ9NidOarOkpUio/dH1Afo45mdnx4s8R5/du4faE+HBI+X37Pds7N4t2KuxV2KuxV2KuxV5Z+Y esC91gWcZBhsKpUb1kahf7qcfozke2dTx5eEcoff1/U9b2PpuDFxHnP7un62K5p3buxV2KuxV1Bi qFukowcdDsfnlkCxKhk2LsVdirsVdirsVdirsVRFo/xFfHcZCYZBE5WydirsVQEq8ZGHv+vLgdmB W4UOxVmH5WQCTzOzn/dFvI4+kqn/ABvm27GiDm90T+h1PbUiMI85D9L17OpeVdirsVdirsVdiqG1 K/i0+wuL2X7ECFyK0qR0Ue7HbKs+UY4GZ6Btw4jkmIjqXh000k0zzSsWkkYu7HqWY1Jzz+UjIknm XvYxEQAOQWYGTsVdirsVdiq2ROaFfHp88INIKAIIJB6jrlrB2FXYq7FXYq7FXYq7FV0bcXDeBwEJ CPylm7FXYqhbtTyDdiKfTlkCxKhk2LsVZ7+UduW1S+uO0cCx/TI4P/MvN32HC5yl3Cvn/Y6PtydQ jHvN/L+16jnSPNuxV2KuxV2KuxVhP5l60IrOPSY6+rccZZj29NSeI+l1r9GaHtzUgQGMc5bn3f2/ c73sTTEzOQ8o7D3/ANn3vOM5d6d2KuxV2KuxV2KuxVCXiFT6iqWB+1Sn8csgejEhBfW4/Bvw/rlv Chr64n8px4Va+uD+T8ceBWvrv+R+P9mHgVv67/kfj/ZjwK19cP8AL+OPArX1yT+UY8KtfXJfBfx/ rjwhU2s5Ge3Ut9rv/DMeYosgr5FLsVUL3l9WZlFWX4hX26/hkoc0FKDdSnwHyGZPCGKhZ6oLy3We CTlGxIBoBupKnt4jLMuA45cMhu1Yc0ckeKPJ6F+UmpSxapdQMapPGrGvjG1BT/kYc2vYs6nKPeL+ X9rqO3IeiMu418/7HsA3GdE807FXYq7FXYq7FXi/mfVP0nrl1dA1i5cIaGo9NPhUj/Wpy+nOF7Qz +LmlLpyHuH4t7jQYPCwxj15n3n8UlWYbmOxV2KuxV2KuxV2KuIB2PTFUDdWaV5caqe/cZbCbAhAy WjCpQ8h4d8tElUCCDQ9ckrWKpZrHmHTtKUeuxeY9II6F6eJBIoMztJoMmf6dh3nk4Os7Rxaceo2e 4c2Far5x1a+5JE31W3bb04z8RHu/X7qZ0ul7IxYtz6pef6v7XltX2zmy7A8EfL9f9id+R9d9WP8A Rc5q8YLW7kjdR1Tfeo6j2+WaztrRcJ8WPI8/1/jr73adh6/iHgy5jl7u78dPcy5RyYL4mmc+9GnN o1HK9iP1ZjzCQisrZOxVp1DoynowIPyOIKscl/dc+ewSvL2p1zNiL5NZNCy888na79QvDa3DgWlw d2Y0CPTZvDfofo8M67tfQ+LDiiPXH7Q8b2Nr/CnwSPol9h7/ANb2PytcvZ6rYSqwX96odu3FzRq/ Qc5fRZTDPEjvr57PT6/GJ4ZA91/J79A3KJT7Z2bxS/FXYq7FXYqk/m7VRpug3UyvwnkX0oN6Hm+1 V91FWzC7Rz+FhkevIe8/i3N7PweLmiOnM/D8U8azhnt3Yq7FXYq7FXYq7FXYq7FXEAih6Yqg54Ch 5L9j9WWRlbAhQeNHFGFcmChJ9b0DXL6ALpN8lt2kVwysfcSLyI+hfpzP0WqwY5XliZfju/b8HB12 DPkjWKQj+O/9nxYTe/l55tilc+gt11Zpo5VPInc7OUcn6M6XD23pSBvw+RH6rDzGXsXUgnbi8wf1 0Uiu9K1SzAa7s5rdTsGljZAfkWAzZYtTjyfTKMvcQ67Jp8kPqiY+8KNrczWtxHcQNwliYMje4yeX HGcTGXIscWWWOQlHmHrei39tqUMVzAQyMKuvdGAqVb3GcDqsEsMjGX9vm+g6bUxzQE4/2eSco3Fw 3gcwyHITAEEAjodxlLJ2KXYqx/X7J5UubeJgj3MThHaoVWcFakgHau+Z2kyiMoyPKJH2OPqMZnjl EcyCEB5f/LjSLBEm1AC+ux1Dbwqd+iftf7KvyGZ2t7dy5DUPRH7fn+p1ej7DxYxc/XL7Pl+tkDoI 3KqAoX7IGwA7UzUg3u7iq2fQWlzGfTbadl4mWJHK+HJQaZ30JcUQe8PAzjwyI7iiskxdirsVdirz L8y9S9fV4rFSeFmnxj/iySjH/heOcp25n4sogP4R9p/ZT1PYmDhxmZ/iP2D9tsPzSO7dirsVdirs VdirsVdirsVdiriARQ9MVQc8BT4hun6ssjK2BDdq1JCP5h+IxmNkhF5WydiqAu9A0O8Ltc2FvLJJ 9uQxrzP+zpy/HMnHrc0KEZyAHnt8nGyaPDO+KEST5b/NRsPLOlaYH/R0RgEn205u6kjvRy1D8snn 12TNXiG68h+hjp9Hjw2MYoHzP6VVlZTRhQ5SC5CJt5l4hCaEdK98hKKQVfIMnYqo3dstxEV2DjdG 8DkoSooKhp8jrW2mqJE3UH+XJZB1ChddLSWviMYcmJfQsESwwRxL9mNQo+QFM9BAfPyV+FDsVdiq jeXdvZ2st1cOEhhUs7HwGQyZIwiZS2AZ48cpyEY7kvD7+7kvL2e7kFHuJGkYDoORrQfLOAzZDOZk ept73FjEICI6ClDK2x2KuxV2KuxV2KuxV2KuxV2KuxVxAIoeh64qhZIjE4dd0B+7LAbY1SKBBAI6 HplbJ2KuxV2KrJI1kWh69jhBpBCElhaM77jscsErYkK8NwGor/a7HxyEopBV8iydiqhcW5kKyRkL Mn2GPT3ByUZVz5IbVDcyQLTizuI2U9mYgZZijcuEdWGSXDEnufQeegPn7sVdirsVYb+ZmqGDS4dP Q/Fdvyk6f3cRBp47tT7s0fbmfhxiA/iP2D9tO67EwcWQzP8ACPtP7LeaZyr1TsVdirsVdirsVdir sVdirsVdirsVWvJGgq7BR2qaYgEoQc2qW4BVVMn4A/x/DLRiKLVIbscAGQjbpWtPbtgMFtEJIj/Z NfbvlZFJtdil2KuxVogEUIqMUIWa3K1ZN18O4yyMkEKkFxyoj9ex8cEoqCr5Bk7FUTpEdv8Apmxe YqkQuYWmZjReIcVJJ2+z3zI0kgMsCeXEPvcfVRJxSA58J+57pnfPBuxV2KuxV5B531M3/mK4INYr b/R46eEZPL/hy2cV2rn8TOe6O3y/bb2fZeHw8A75b/P9lJDmudi7FXYq7FXYq7FXYq7FXYqoSXtq nWQE+A3/AFZIQJRaEk1c7iOP5Fj/AAH9csGHvRaFkv7t+shA8F2/VvlgxgLagSSanqckhVtY+UnI 9F3+nBIqjcrQ7FVRZ5V/aqPA75ExCbVUuwdnFPcZEwTauro32SDkCEt4pdiqhNbhqsmzeHY5KMmJ DoJzXhJs3YnDKPUKCr5Bk7FWd+RvOPp+npOoyfu9ltJ2/Z7CNj4fy+HTpnQ9k9pVWKZ/qn9H6vk8 92r2dd5YD3j9P6/m9CzpXnHYq7FXhnnLS30vzHeW4BWF3M1vQED05PiAX2U1X6M4vX4PDzSHTmPj +Ke00GfxMMT15H4fi0l5N4nMOnMdybxONK7kfHFXVPjirVT44q6p8cVdU+OKuqcKrZEEiFT9B8Di DSoB0ZGKt1GWgpW4q7FWwCTQdT0xVHxR+mgXv1Jysm0L8CuxV2KuxV2KqiXEq96jwORMQm1dbpD9 oFfxGQMCm1VWVhVSD8sjSVssSyDfY9jhBpSFkbsh4S9f2W7HCRfJVbIpdir0fyR5zW4WPStRci5A 421wxr6ngjH+bw8fn16jsvtTjrHk+roe/wAvf9/v58x2n2Zw3kx/T1Hd5+77vdym2b50TsVef/m1 pJktbTVY1FYCYJyAa8X3Qk+CtUf7LNH21guImOmx/H45u97Ez1IwPXcfj8cnmOc49G7FXYq7FXYq 7FXYq7FXYqpTw+otR9odMINKgiCDQ9csS1iqItI6vzPRenzyMiqLyCHYq7FXYq7FXYq7FXYq4Eg1 HXFVVLmRdj8Q9+uRMQm1UXETijinz3GR4SE2vRgopXkg6N1p88iUoTWNf0bRoBNqd3Hao1eAc1Zq UrxQVZqV3oMtw6fJlNQFtWbUQxC5mmMXn5w+TbYqYJbi8J7wRFeP/I4xfhmwx9i6g86j7z+q3Ayd sYByuXuH66ehfl//AM5Q+UtVuk0rzAH0mT4Y7XUp6GGToo9dgW9JjWpY/B1qV79Tp4zEAJkGQeX1 BgZkwFRe3wzRTRJNC6yRSANHIhDKyncEEbEHL2hC6xpcGq6ZcafOSIp1oWHUEEMp+hgDlWfCMkDA 8i24MxxTExzDwG5t5ra5ltpl4zQO0ci9aMh4kfeM4ecDEkHmHuYTEoiQ5FTyLJ2KuxV2KuxV2Kux V2KuxVDXMNayL/shkolKGAJIA6nYZNUwRAihR2yolC7FXYq7FXYq7FW1VmPFQWJ6AbnEC+Skgc0V DpGpzbpbPTxYcR/w1MyIaTLLlEuPPV4o85BEDy3rJNDBT3Lp/A5aOzs3837Q1HtHD/O+wq48pamR UvCPYs38Fy4dk5e+P4+DSe1sXdL7P1q8Xk+cj97cqp/yVLfrK5ZHsiXWX4+xql2vHpH8farR+Tog f3l0zDwVAv6y2Wx7IHWX2Ncu1z0j9quvlLTlIPqzVH+Uv/NOWfyTi75fZ+pq/lbL3R+39b5x/OyS VfzBvrLmWt7JII7ZDT4VeFJW6UrV5Cc2uk00MUKiHV6rUTyyuRYJmS4zsVfU/wDziJp/mFdA1bUJ 72QaC8/oWOnHiUNwqq00+68h8JRBxeh+LkKgHCgvoLFDx/8AM3SBZeYfrMakQ36erWlF9RfhkA8e zH55yna+Dgy8Q5S+/r+v4vV9kZ+PFwnnHb4dP1fBiOat2rsVdirsVdirsVdirsVdiqvaWF9euUtL eW4cdViRnI+fEHJ48Up/SCfcwyZYw+oge9PY/wArfMqQrdskahhX0ORaVK+KqD+GbQdkZjGzQdbL tnCDQstDybIrFJboJKv2k4EkfOrKckOxz1l9jWe2B0j9v7FaLyfbj++uHf8A1AF/XyyyPZEesj+P m1y7Xl0iPv8A1Ky+U9MBqXlYeBZf4KMsHZWLvl+Pg1HtXKekfx8VceW9G/5Z6+/N/wDmrLv5Ow/z ftP62r+Uc3877B+pXTSNLQUFrER/lKGP3tXLY6TEP4R8mqWryn+I/NWis7SI1igjjPiqgfqGWRww jyAHwapZpy5kn4q2WNbsVdirsVdirsVdir5U/O7/AMmdrP8A0bf9QsWZEOTRPmwbJMU28p+XL3zL 5l03QbIH6xqNwkAcKX9NWPxysq78Y0q7ewOKv0B8teXNJ8t6FZ6HpEPoafYpwgjJLHclmZierMzF ifE4WKZYqxn8wtFj1Hy7PMIw11YqZoHrSiggyj6UB28QM13amAZMJPWO/wCv7HY9l6g48wH8Mtv1 fa8XzkXr3Yq7FXYq7FXYqmOm+Xdc1Ir9SspZkbYS8eMe3/FjUT8cvxaXLk+mJP3fNx82qxY/qkB9 /wAubK9I/KjUpZEfVJ0t4OrRRHnL8q04D51ObTB2LMm8hoeXP9X3usz9tQArGLPny/X9zL9N/L3y tYgH6r9akH+7Lk+pX5rtH/wubTF2Zgh0s+e/7PsdVm7Tzz60PLb9v2sghhhhiWKFFjiQUSNAFUD2 A2zPjEAUOTgSkSbPNfhQo3NnaXScLmFJV3oHANK+HhjSQUovPKNhIpNo720gHwgMXSvuG5fgcrOM MxkKQ3fl7zBa1IjW6Qb8o9zT/V+E/cMgcZbBkCXNdCNzHNG8Ug2ZWFCCPHvkKZ2vW4gbo4+nb9eB VTFLsUOxV2KuxV2KuxVpnVBViAPE4q8U89flBq3mfzvf6yt/b2un3Xo8Kh3mAjhSNqpRF6pt8eWx nQa5Qsr7b/nH3yssai51C+llH2mjaKNT/sTHIR/wWPiFfDD178qfyf8AKnli6/Ttrp3p35jMVrcT SPI4jcDm4ViVUsNgwANKjocnC+rXOuj1DJsHYq0yqylWAZWFGU7gg9sVeBa/pbaXrN3YN0gkIQ+K H4kP0qQc4fVYfDySj3H+x7nS5vExxl3j+1L8ob21VmYKoJYmgA3JOICkp5p3kjzRfjlFYPHHt8c9 IhuKggPQn6Bmbi7OzT5Rr37OFl7RwQ5yv3bsp0z8o3qj6nfLQN8cNupNV9pG40/4DNli7E6zl8B+ v9jrM3bnSEfif1ftZlp3lLy5p9Da2EQdSGWRx6jgjuGfkR9GbbFosOP6Yj7/AL3U5dbmyfVI/d9y bZlOK7FXYq7FXYq7FXYq7FVKe1tbheM8KSgdA6huvz+WNKCkWoeSdNnFbVjav4CrqfoJr+OQOMNg yFILvylrlpVolE6AVLQtv16cTRvuyswLYMgSx5b23k9OZWRx1SRSp/GhyBDMFUXUF/aQj5Gv9MaV VW7ganxUJ7EYFVVZWFVII8RviriQBUmgHUnFUNNfINo/iPiemGlQTu7mrmpxVrFWReVfLr3cyXt0 g+poaorb+ow26fyg9a/LxyyEba5zrZneXNDsVdirsVYV538iXeuajBe2Uscb8PSnEpIFFJKsOIap 3pmo7Q7OlmmJRIG1G3cdndpRwwMZAnexShp35S6ZEQ1/eS3J2PCICJfcGvMn6KZDF2JAfVIy+xnl 7bmfpiI/b+plmk+X9H0lWXT7VYOf22BLMfYsxZqfTmzwabHi+gU6vPqcmX6zaYZe0OxV2KuxV2Ku xV2KuxV2KuxV2KuxV2KuxVRu7K1vITDcxiSM9j/AjcYCLSDSQ3vkbTpSWtZHtif2f7xfuJDf8NkD jDMZCkV55O1m3HJEW4UVJMR3FP8AJbifurkDAsxkCXjRtX/5Yrjb/ip/6YOEsuIK40PX5lANpKQO nIcev+tTHgK8YVB5S8wEf7y/8lI/+asPAUcYVU8ma4w3RE9mcfwrj4ZR4gRlr5EvfXT61NGIK/vP TLF6eAqoGSGNByBmccaRRrHGOKIAqqOwAoBlrSuxV2Kv/9k= + + + + proof:pdf + uuid:65E6390686CF11DBA6E2D887CEACB407 + xmp.did:d4d07395-aa96-47c2-a9e5-d0351947bb0c + uuid:c63c1031-e157-9748-9c58-86481308e954 + + uuid:1abccb90-0c26-4942-b156-fd2eb962e3e1 + xmp.did:58fdc1b8-1448-3a44-9e20-282d8ec1cf95 + uuid:65E6390686CF11DBA6E2D887CEACB407 + proof:pdf + + + + + saved + xmp.iid:d4d07395-aa96-47c2-a9e5-d0351947bb0c + 2016-06-15T14:23:10-04:00 + Adobe Illustrator CC 2015 (Macintosh) + / + + + + Web + Document + 1 + True + False + + 128.000000 + 128.000000 + Pixels + + + + Cyan + Magenta + Yellow + Black + + + + + + Default Swatch Group + 0 + + + + White + RGB + PROCESS + 255 + 255 + 255 + + + Black + RGB + PROCESS + 0 + 0 + 0 + + + RGB Red + RGB + PROCESS + 255 + 0 + 0 + + + RGB Yellow + RGB + PROCESS + 255 + 255 + 0 + + + RGB Green + RGB + PROCESS + 0 + 255 + 0 + + + RGB Cyan + RGB + PROCESS + 0 + 255 + 255 + + + RGB Blue + RGB + PROCESS + 0 + 0 + 255 + + + RGB Magenta + RGB + PROCESS + 255 + 0 + 255 + + + R=193 G=39 B=45 + RGB + PROCESS + 193 + 39 + 45 + + + R=237 G=28 B=36 + RGB + PROCESS + 237 + 28 + 36 + + + R=241 G=90 B=36 + RGB + PROCESS + 241 + 90 + 36 + + + R=247 G=147 B=30 + RGB + PROCESS + 247 + 147 + 30 + + + R=251 G=176 B=59 + RGB + PROCESS + 251 + 176 + 59 + + + R=252 G=238 B=33 + RGB + PROCESS + 252 + 238 + 33 + + + R=217 G=224 B=33 + RGB + PROCESS + 217 + 224 + 33 + + + R=140 G=198 B=63 + RGB + PROCESS + 140 + 198 + 63 + + + R=57 G=181 B=74 + RGB + PROCESS + 57 + 181 + 74 + + + R=0 G=146 B=69 + RGB + PROCESS + 0 + 146 + 69 + + + R=0 G=104 B=55 + RGB + PROCESS + 0 + 104 + 55 + + + R=34 G=181 B=115 + RGB + PROCESS + 34 + 181 + 115 + + + R=0 G=169 B=157 + RGB + PROCESS + 0 + 169 + 157 + + + R=41 G=171 B=226 + RGB + PROCESS + 41 + 171 + 226 + + + R=0 G=113 B=188 + RGB + PROCESS + 0 + 113 + 188 + + + R=46 G=49 B=146 + RGB + PROCESS + 46 + 49 + 146 + + + R=27 G=20 B=100 + RGB + PROCESS + 27 + 20 + 100 + + + R=102 G=45 B=145 + RGB + PROCESS + 102 + 45 + 145 + + + R=147 G=39 B=143 + RGB + PROCESS + 147 + 39 + 143 + + + R=158 G=0 B=93 + RGB + PROCESS + 158 + 0 + 93 + + + R=212 G=20 B=90 + RGB + PROCESS + 212 + 20 + 90 + + + R=237 G=30 B=121 + RGB + PROCESS + 237 + 30 + 121 + + + R=199 G=178 B=153 + RGB + PROCESS + 199 + 178 + 153 + + + R=153 G=134 B=117 + RGB + PROCESS + 153 + 134 + 117 + + + R=115 G=99 B=87 + RGB + PROCESS + 115 + 99 + 87 + + + R=83 G=71 B=65 + RGB + PROCESS + 83 + 71 + 65 + + + R=198 G=156 B=109 + RGB + PROCESS + 198 + 156 + 109 + + + R=166 G=124 B=82 + RGB + PROCESS + 166 + 124 + 82 + + + R=140 G=98 B=57 + RGB + PROCESS + 140 + 98 + 57 + + + R=117 G=76 B=36 + RGB + PROCESS + 117 + 76 + 36 + + + R=96 G=56 B=19 + RGB + PROCESS + 96 + 56 + 19 + + + R=66 G=33 B=11 + RGB + PROCESS + 66 + 33 + 11 + + + + + + Grays + 1 + + + + R=0 G=0 B=0 + RGB + PROCESS + 0 + 0 + 0 + + + R=26 G=26 B=26 + RGB + PROCESS + 26 + 26 + 26 + + + R=51 G=51 B=51 + RGB + PROCESS + 51 + 51 + 51 + + + R=77 G=77 B=77 + RGB + PROCESS + 77 + 77 + 77 + + + R=102 G=102 B=102 + RGB + PROCESS + 102 + 102 + 102 + + + R=128 G=128 B=128 + RGB + PROCESS + 128 + 128 + 128 + + + R=153 G=153 B=153 + RGB + PROCESS + 153 + 153 + 153 + + + R=179 G=179 B=179 + RGB + PROCESS + 179 + 179 + 179 + + + R=204 G=204 B=204 + RGB + PROCESS + 204 + 204 + 204 + + + R=230 G=230 B=230 + RGB + PROCESS + 230 + 230 + 230 + + + R=242 G=242 B=242 + RGB + PROCESS + 242 + 242 + 242 + + + + + + Web Color Group + 1 + + + + R=63 G=169 B=245 + RGB + PROCESS + 63 + 169 + 245 + + + R=122 G=201 B=67 + RGB + PROCESS + 122 + 201 + 67 + + + R=255 G=147 B=30 + RGB + PROCESS + 255 + 147 + 30 + + + R=255 G=29 B=37 + RGB + PROCESS + 255 + 29 + 37 + + + R=255 G=123 B=172 + RGB + PROCESS + 255 + 123 + 172 + + + R=189 G=204 B=212 + RGB + PROCESS + 189 + 204 + 212 + + + + + + + Adobe PDF library 15.00 + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 3 0 obj <> endobj 7 0 obj <>/Resources<>/ExtGState<>/ProcSet[/PDF/ImageC]/Properties<>/XObject<>>>/Thumb 14 0 R/TrimBox[0.0 0.0 128.0 128.0]/Type/Page>> endobj 8 0 obj <>stream +H‰Ò÷wVÐ÷u6PprqVà*ä2´Ô3·4R04S°°Ô32°P°4Õ³´´T(Jå +WÈ*Ðw6PH/æ‚H™+¡¥™X«¡¥¹)Hwr.—¾g®‚K>W —«/Ðì@.€ÓŠ  endstream endobj 9 0 obj <> endobj 14 0 obj <>stream +8;W:dYmnJk$j=`^PKX*GV"-/6MPPhMW4o*jFegTA5n:ROqi. +8M?-(/t#IN>re.=TbIMqYWQK1D%b&pOLGa]H?hKs'8Gqa4A/k;[i&\e-=4:h!/H6BW;~> endstream endobj 16 0 obj [/Indexed/DeviceRGB 255 17 0 R] endobj 17 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 13 0 obj <>/Filter/FlateDecode/Height 947/Intent/RelativeColorimetric/Length 90241/Name/X/SMask 18 0 R/Subtype/Image/Type/XObject/Width 880>>stream +H‰ì×ÏoiÀñù@H•–•²™y&¶á‰Ã8´™_Én²á¶„Äâ—ØÖyŸÛA¢'¸íŠ?6GŽöÀ3ˆ+ZHÒ¥Y•ÂaÏÃóÎkO“¦jÓ6ÍÄÎ÷£g§®×™oíÌ×Uà Gÿ”ÔHIIé_÷AÛg€K/˜Ec‘F6‰ÊÌLrcãh”…I €§²2É$Ò†Ô˜”ÄUå4w$5Ç_7ÎBQâUmÈ"ŤŽ>˜äÆ&k2èW$%Nib²ˆ;’žˆIß“uaêvÕ¿,HJÌì \þü­u—Ž.&£ã1ÙŒ^·úâ‚ž@ÍǤl_“ÄLrs:#›Ñ˜,3÷‚2]Ñ IJ€«Î7¡d+65ãìi1Ù$¥¾Lb#ùšþ ’àêÚ¸œd]G>&åY=ég’답*_Ó/’à*²â:p¼¹.uÊ™cRæI©fû")®’ ŠºË¬#q4ÎŒ=sLÎ&=(’P÷£{ HJ€+b~’»†œn™ç+ÉcS¦Fs´ˆîm0¤'®€&&c““ܼXIúÑ=Œ3—££øzER,»¢‰ÉD#0ô)ø2=é“rš»ýÈöšîÙ +I °œšÒÓ˜Ô<—˜lfw«£{ Ý!šjÀÒØ̯Lßð1y^%©ã»´ÌL‘„³ã‘”Kd0œÕMM‘ ?9¿˜|T•i½#w$z`Yø˜”A_æÕ÷*bÒÏ83º¥oè­” ooà¢îîæg5ó&¹yEÙŒ–êTG’¯Uó”À‚ò9'Û×|LJÝ{”þX?¾¦G·BR,$“w¶×%ŽÆÙŤïI=¢ÍìT’`‘APÔ 7Þ¾.±ÙÝêØô‚br–”ñìpeêiô$Àâjú ŒÝ47šv“Í”Y}èØ%å`HR,‚yLJ²"I8ÉÌÅgäñÑšÕ­l^¯HJ€Ë/˜›Im9i5&O&e¤'f…¤¸¤šT“ÄHM.GLú™ÔIés·HJ€KçQL¦®ßÆÙ%ŠÉæL´rýI$%ÀeÒÄd‘…šmåeŠÉfÊÔèv' Ÿ0Z×´™M\FiûéøÄÑsס+™KÊÁ¤h_“¾$å²Æäñ¤tn”íó=&·Vl“­çâgš‡òÏèÉI ÐŽYL¦Æ&¡+´$’¸ýV|æH½gF’Ð_H@R\8+uL¾õy‰Æ¤Ì;mQFRwÂzòÕ<Œp1‚ ð1y'YÕ$Ó˜´‹“þ„ËÌØ8Ô°ÔkÙ”AcRÿÓ’M²Ý­Î"Æd“”cMÊÄŒ“u½"Éx…š˜Ü\Õ›äfqc²IÊú*B¹µR‘”¯TàèŸEbd)bÒŸ¿ÎîVÇ&¦¹Ì×`iÍ+«¨lœ™E/ÉG“ºm‘FEV³j&)ÎSÑÄdJ–™i?Ï{´'õÒ$éèeZ¡'Î͉˜Œ#Ii»ý^ÑŒõÒâP²°")ΉϪ $^Õâ*ÒhYcRG/mš×IyóõŠ¤xiMLÚdm’IÛO¾ ˜‰&ebà")^‚O©ß¦‘ÄQ™™Ö3ïbFêíX¯7f ”Ïm0t%ÛkW“üªÄ䣪L]XJlªyWàìf1¹©MînuZ¯»z2‰ÊÌU´.B³ 8 ßNã¼#©™æFËJâö¯•Ñ––ÄÜÎV+’à ‚ °âªIr­©µéVG›JÚŽºÖ“ÒÆ«¿¸é²øÅÀ5} ñªMÍ$7råcÒ_þ83º Í2µøoXFAeg·``±•:&“P ªÌˆÉGIéסHÂùRñ‘¼œÀ5dõAãþ‚E6©†S8ÎLëwÙ¦tkJæ’Ò‡7gçZÑÝm]Fî NÞGÞ3ÿY÷›×*’ «˜¿u%Ñd2NÒv¼]ÂÑ5™Ô+#©ÑµzüW§ÍÒmó­[‡vãŸw¾ð ÜøëOº¿ûΚīú´î/X}Æõú즟Ó ùÈž(ظ9ý?Žl¸?êݳû;݃Q÷¨è~t»ÿûwÖoo†³Ÿ ¸¹`Á41)©‹¥"ˆÉgÎ476ŽÞÿêWÜÂñ©xzG°Á‡öMÝžxþ7ÁýéÚþhýp´qh{‡£ÞáÎƃ²÷énÿá¤ÿç\¿û¶ùå w Ö×Zᶂ3º7í{ßû’MÂ23>)™§ïí25EÜ©êo‘|‘€+«¾¸Œ¬>8q/8úõ×÷ím¿žÞÁ¨« yÏöþ3î=÷?¶ÝÛî½?~w­L#IÞ\d»ï÷ØΕ/doàÞ±ú=Hâhœ™‚˜|žÑå’dö]Ò¯$à*ð©wO—‘Õc¿ÿ­Ä}»¡ y°ÓÓz<*\@~R¸¹/}}F«RÛòHºÿxwãï¬ÝÞ Gõ]ØÆas€ ¿&àù’lÅÆu“Ï9“úñ×—xµ")`ù•­çmȺû;=-Ƀ -ÆOÕ8鉫ÇCmÈ‘{ÒmG.&?)ºûéÆûßî¼{3”ù]¸ˆ;Õ,VÅ0Ö1¹©o`³»Õi½Ít4)'¹Ñ­Ü›U,Àä‡öÍÓ© ù‘]?¹b<Øéݳ½ÿNúš‘ÊÞ=ŸŽ;.]LÚº*ý_w6Ž¤û—®ß}ÛhLú[I‘ê­$”›¯ën­p+Áb˜Ådjlb4‡ü›¹õ6[Ü©×0”ík¿`I{-ɯêðG_>²á]ß¹zt•8rÝø¿I_Kò¾ô}4º™äñјüغžüÓ÷¯Oòèö¦in¾Ó­Žng¸`¸HU•™ûN4ÎÝ›™˜|™‘yRþŸýr ‘#+ãx½ˆ/>¨°ŠÙ骞é®S³yXAQȃÄ™šêéì²kf„UX”DvE#»&™éªsªúæÖBðeÑ…<ø HQ¼°%éîêË\’ÍíµýΩêËÌdg's«žÉÿǟá:™©>çÌ÷ýŽ°x‰Q +àÈ!K· +Wú <Ó* ²º'’œ°%ÌŸ­YLj%éâV‡ì§æšmaþo!û‹—Ç©k¸vÜ>¢Ñw áŒu{=€Q†®<\ȃ*fƸmqÈäþY%Å”RÓp»€£ÀV{Œ ¹Þà“äŠuž‘ÆèeïW&×)ä“!)¢ÛsE÷2JÝ“ªÙæ?¿•ýÉçÒ‹Ó†goh¾ÔŽeÉ ßµiF—žäGžÞbÎÉ}/ÖðgŒ. +Œ,šÈ%­«m.Ô7®¼'äÙFÑX—¢ÈÈ!T­Õ€ITV $yæ¶9Iפ±ÅÍ?_ȼñ‚±0•ÚÔ;¨WóiéææÑ;ÀhÓû«9:ÉFQ]…°ãiétëœïB)`”5yIeˆëüÔ[¯¬Á³¡°jž*lróaÕºS²ÚÂ"u û¹3Ü$“ôÓhòÛ¯NTò©Â´¾µùúŽA}Ù·¥O.Ï¡q€ÑÅïˤ3!"çIÚ»Žkha˳J)Ï@) i¨ýqéª1×ÖJÙ¦oÕ¹rE—IWt³+>»]²hlôrW9,“-nÞrÍ_}iœÄ#e’R=“椔ê 5 ]Œ(ý?"a§¸­ÉöIK9ƒ;z´ì>Š²äg9dËÏ68 =F¦GY/²Õ€‘@¶…Õäæ@ 9Û‹FJ“T2Ùæ[—ÌŸ~>íÚ:ekóžG÷½áÜ<úQ2é¤èÜB&M)}YÆ¢ÅÇ}ª±\ek±ý²ÙâfÍeJ#¥.Þ-3 +i¤HòF·'î>hd,“®I#Éä_¿™ýÑ‹ÆâTj›~Qš5¸c§Rñ`ôˆn:Ës· e8Éà ù¤P·ÑîÕØ/di]Ò¨ÇmþàªÑ ¬+µó²!g¤”«Ö’ÕV¬Ž=¬ï‡@n’Iú$«¿{%óí3úÂTjûÎ[ÌÔ££×à“`ôˆþÄ®ž–;Òm¤Þ$­XOT„ª4ŽÑí¹=€=AÆŵëü͆Þ­|¤¹h‘Ë‘"6½XWövÙZñY,{œÅ&y`¡ w¥Éµs£/NÂÙ®MDŸz3z2 F’È^Ä™ÒA rÛgäàBµ¢œ7h²øéu¡”° Ȳ¤hI”¢})CòF +WW®zÙ¶°:‚­lÕgÒëÜlØ7ɃÔHi’J&ÛÂüï¢ù³/¤ ÓºgË.°}› ÍCœ§¯ãÃ'ÁˆËdîD|V“Öª'9TL*ù4ŸI]˜Š6… ” x74MVK™ä¤%X½ ¹T8ÒÅÛEëNÉZ!f8ìîahä@&¥Íš-ûã³ÆåÏì´AsñׄO‚Q"2–òsOÓ-Ïʃú®÷#äà­dõñ¡bÀ£ýë¬ÒÈ-t‚gHë®IòFÒHVù jÝ.YÒ!•Ñ…‘@¢CdÒ•ï@2ùǯe¿ÿ¼qyJÎŽºC4ú3©n¯w0"D2È¥øÌXiÖàÉQˆ×Ï–J©Á' &ò:?E³áÇdŒ!×ëªG®èIK¼S²î•ÙŠÏb$ut³õõǭ2ÙäÒ'}~¢˜Ó§Èd”bNþãŠctá“`d Kñ•¨ˆ\š29j‘uCîÈ Ú£¹yÔ À“ 5,Ò§å9­»´¡Ö.~ü&g·¸’(r‹\‘&$–·‹Öz‘µ„kdd’‰jd_&éõn,dþò¸kë”·]ú—•|Ú·ÓÑ‚$´l¤wƒ)-åÙH]’—(¤ŸHò…­ó&í”,¤ð„ ›”tHU4¾ñÑ×x¦æIE$\+²µ€­ø¬ãK™lôÒÍÖ“ÈI*™ìøæ?^Ï^O/N¥¼Çì*)ßÖiÄit<~O&=Û SZÌ0ÉÑL¬úŽñçÞKû578ÞhËsZ—?¢Ö5‹üĬæeÈÍÈV­õ"k K +››>•#g‰ÛãV™¤±-Ì?}=óÆ ÆÂTj¡šOK¥<ý>µNh aÔuOB×në¥Y#qkBÞ)‘çÓÑfiQõ@ 7”@òOl­oµÊØ-n… 9 =)Š÷Êì~erÅ—ÆzC9z9I×lr“&¿ùJ¦’O-NbW¡˜3„­Ó²ˆÓh a†dRçŽ<œ‰+²}D?NJiPJÀÑGö£%í:?5üp•²±n2¡°žÕTI2v·ÌÖ‹rBökä ä&™l ófÁüå'<[wm}2Iÿ¥4Kš¹tw¨•ýèÏH r»¼"!‡Ÿh³¨˜ÐöÍÍ£’Ž Õ.:Ñòœ¦æ17¹ÖâfÍ$W¬qé`ÁÚÂZ ØZ 'RÌ\%nò~ø¸2Ùæ¿/fß|i|a*åíJ&¹òÉr>-fÒjÑ@’ôeRØcÜÑ}'yGBvžèr*'êr +¥Œ>Ê|´.WãB~’ü0ä¬îɱã³{•ÉH ›ÜŒ232ɤÍð±MReÅ7ÿr!óÃÅic/õ_È–òmÖ͇O‚äˆôãJÏ!dòfH)Ot¡”€ÑE9äÒ#jÔj¦É'C—õ]ñaÕºWf+>ëKc™ätÈLº&rK˜¿%SͧH&ÅÞê1'‹ÿeçýjuQüA2p!Ïž˜³„*å Èä‘UªKWÏ?ÛÅ-02hZÏ!Ïn¨KÿâO×.ê¡?Š åZd‰¤”æ½Êäz‘ѤÙ£w´r“L’IÞ*˜×ÎSÑ–2¹‡¶+TòIÛ,5‡N$“‡®6ãºà G7Ñ —”ÒwôhQXI¢4ò:?5üìÆ«hq“²Á-²Ç¾(®ìvÑêø,vHzî&¯û.“aþç’ùæKã…iݵõ½ÈdTöåOph2ÖEÍ ɤ˜ú0ÈJ>-zB‚éø²°èþŒÞßb8,´A6ºMgñdÍ$K I«¼,ëE¶°Ÿµ…ªç±[ö ó8¥®Æ¶0ÿöšyå³úÂTŠïSÏ r†lßöS]Ô|Ñ©+Û&Ãò¬™_¿ç9Eªzb‚(Jr2éh›+’É“¼)€£ó⇻¤”AŒ!·àÜð«·_:Ûª.Æ%£îÙ±4¨EÑ3wËì~ÅÞ ÄsO®¼q9ÛÔFÈ$·þ½Æ~þÕEßѨâ£H¼(òM°Ð"0ê>º"C|¸)4ß {ôúöèõe’òÿdU¼Å­ß¿º´±¢¯/«|Ì}Že.’½žôtóD Œ_ø(^¥ u¶)³’¤‚‚œTJª ‚8([Eåœ;ü”úZ¦gbßÄDRÐ!TY;ûû¥­g³ü$Ñ÷=ëW__ò­äh8pü8ÖùùSÝþqOã ¸*¦«”5¸œ:ÈMb¼)Óƒr2ÎÂ`N‚˜y@:äÅßèûi–ŸÙöXÝg±«®ØæìÝ*Û-³X=”z™º•Íb-osëWÌŸ¾Y[Vý‰È$þ‰J›|!Ùh…|’‰$¬çpä6V2à’LRö“w´õ¬Žs²U¤""ˆYýA(„\A“þÉ®[u0#0j>kø6ÚÎNÀZÜî„ Óä*PŒ–˜$åId×v`ýõ;K?ü’†29±ïGÅ3@£/)ÉhqGÇa«¢LæH&)‡#f•2§ò¢Ý¥:"ˆ™@ +¤´Çc¾°Øè‡1Bu€íUìU!h’B +ä¡m²‘›Õ?IÔòXü¦qýBf=«Oò¨-çuÑäÎS]*pb  L¢pº¡³=a ™¤“d0°‘¸« ¦'ÍÙ%â}Q¶ŠJ÷â1ßÐíkvä-Ež&Y÷…%þ÷úéû»Í‡ŒÑ“!‡µL6ÁªyÖ¯¿±„-ZÊNô¨Å¿…›´w@ÕMŒE‚<‡©V +½+Qf1XGbuô.•ALø}åœÃõÀ{øì;×jÞé:˜1°XºM;`ïmœ¾öþ)Ý’r¼2ÙâÖ?¯™?ûÊbÉÑÓ¥^"ˆT‘.4²{óÀ7±Ïî„VÌ:7ÐcO¬ °î–Ùn™µ¸]‡ƒ&IŸIÊ´¹õ·×­]Ô׳ºŸ›¨L&Ù¼á®~ãe¥?61‚þ8qW 6É$åуS-èÜÑJ+j—”’ &‰HàR#Y(Íu3C¸"š¤ÇvaµÖäVO í¯”qˤgáŠþŸ/™ß{NÈd* ð¬w4~ž›²‹8`ਡ«Oþ®D™éàÀT +¢¯žž(‚ ƃ‚º(r„Vu¥¥6z‹0FÏ|¸iïUì6—ÆèÉô”º_ÍUp_š |ò7//…y e2•£6©ka•…E9JT×Ähý<'|€»éË eæ’\xËyì(µ7QÔQ1Z)7•#÷5eoÓˆÀ¨ƒ0Æ‹gÞ+Û¨‘wC–xc òX”¶SÍg")“-nýkýâÅEßÑJÙÔN[ìê*ú¤«õ†Š FAÒK¸¢L®LR7‰R.’šL—BME#@Ù* +~U¿üÌÝŠÙtEEVOtÑ7ïU콊ÝؾÌxéÛÔœ'’isëöóÆjf=«£Oòôº[Z¬¹Oà ÔÒÄ((®ŠAúî>®Š&™Ö]‰r’"šÊÑ‚|f0`A|0Ä/2}€+58{™:ØÂ!ELTÇ€uB†1Hôz“ºGQ0‘gáÚâÖ[—|Q_[VSoér^G›½þyµ?lñD$g=?ÿÈ©Õ•LêN9Áš +±¬•K¥Ü*RYÄ£pØÔáÓu0ë%Kˆ¢'üäÝ*Û- l€p•D I™ÖD2Mnݾbþä…L)«¡Oò´›äYæñÐׯžîR3OF"“R õj"“iO8åä%ªÀÕÁÑ{“§Pqs Î?Heøe}-°ÄXJÚÈNÀî•m\Ñ-ëžÔH/}G¢Ï©ý¤Z&œœžLæð¸/çu>7&ÊI wQ)µ /º+Pê.bŽPà"Â$Nþö5ûØ5ÏB]Œ=á{»2È·`¡[Šø¤‘³—Hnk¬?¼¶´±¢®-«ÓsÈò\ïÄ粓ùy*dâqPúºŸäò†9’IÊغº,1ýì—ík[×ÇõìÅØ`Ä÷^Ù÷A¦/önƒ¾3¬ÖÕ•ìŒËcËèVÚn´ì©a­-_s%YñS’µ…²îM{b ¶FÇ £oZÆ”±Žnk›E–%ÇytÜ$mAûs%E±Äv]ùûåÃáúJWÈøëßùê^xœAž ÍXkŒ­È0v_•ÝKÓ‰Õò i$é‡ðFߪ†/Ñu(“ jL’Ižž²÷íþ‚§O%»k“¥/S‰‹r7B>YÌœ,7©70‡‘í§Ý™Às)“]ubûQ9OŸÎˆƒL³1Œ2$j¥ˆ¡Ên*ð2Ó*쾊O&iVóÎ"sÎÎràœ+ˆ 2L²ÇjèÐÈžCüÝóÖ³ßxÒœÿŠ‘ëJ™ 9:J µÊŒ ÛH(“´žhxàA&xk Âi&æÒõ‰Iu$6Ô•æj•õ“:.æÍE– Q\-^*%V¤@V;•ƒR¼M½ù€]‡d’L’ÖWí<}*©wç&Kߊ{òÂÕ-7@-&;. +C»6õ§˜6 “@9TB–U¤fðI¤[#vÛ1©‘r¶`·’,¢Î×f/5nßÐ ÙûT¤LÖ¹ýÞ¤õëoÄsIÃw»T&™ôÉ錿\Žßç#¹UB™ä£XJ&éuoÏÁ¾‚Ž6TEžÖÚ-E®HLäëìþu[íòÓFÙä‡Uf +‘–x¾è¬–ÏšÆX¥›¾zÃ{FEr6°ÿqÄúiVÈd>Õ½›løÅ +žÁ\½UvÌ^dKáCR&‡òpûöÔ÷€6ÓkÚ„o@)µ»ªÐÈÆÉ›zx¹üùZÎZfBÏøv¨5n“F’CÒÅ µ`Žr·{LÅ·«y«Îí7¿gÎ2H&•Õ;xù@ÁíkÕAîœSYQ•ÙC,¥•2è9ØWp¹ +¥ôô°±Œc¸!{)²r±õ»*ûâR¨²ÁjÞ!¬ú&Ù#±8ËScM‡¤—}«¢Zi€*H&—˜MøÓfàé$“\õPÝ +Å´Á\¤¦ðId e²žDÒIЄã—F1÷úšÅÅ|CîeH Åld›Ô¬6i.2K8¤tŷ׎&Ît±(ÕQ—+ý¨Zf€B*R&ëÜ~?gÿö›ý4Ä|Wï~™ ¿!ù$÷ô°ó1Ì[äN¡™Ikq¤úS‰ó(Tì[È'iͧ4*m€ù†ì~¤@žŒ­?­ŒÅ>˜èûKT™ô)ŠÎ•òàJà3t +dEµÃ€.¡"!™|çëg_ç’F>";,o)%OõQý³ã¶ÈîÈ~Z£æ”2F»Bt-Å´Á=Ý—J‰)‡ìRbdŒ‚Ž¬°/}0iñÍ +3›†Àœ%f_,%.už ;ÕÖ}å꺊oÓZãö_`>÷19¬)žÛ‚”€Ö™Ĥ b˜´È-‹Å 2z[&•€;BE¦ººz1i6 ”ÈöCÓ¯!öG9™¸h¿tšÅj9«î'I#…8ä˳BœÐ!…=úÂ*ªt-T:zT™óçï”G´\2z;¬³F3¹}ZgÀµL‚hž€èâHòÓÖ¸‹!Èfi´VáL:ä†,NÆÏ0E«šwHÈV§sR I „!ø-UàÖLÒ1äô”ýÊ#4¦¦’zävØBÚ`®VðŒ|¹uÚã” ™4ŠiÈ$ˆ\"&^ÊX×jÙbÞŸ±—Ø mýRòÆÕò q6ÆØÖH ¶JERçö»ÏÚ/-N&™w£'“,¥ÍŒÆ¹§Ó¿‰8‹!ÈféIƒ|²”1T÷€BãŽÖÀíSû?…D%ÿ}ê35fW§ÌŠôCÈŠ\É!/–5n“:VC1€@‚í#Î&R&ÿþ£ç2rÚò!¹“¹Ú"H Ÿ<•…O"›$;Þ,Æ”ÛGµ)¤!“ ÚP‡iîýáq£ñ‚¹6k^›³6åž¾´éÛnóìmØÙG©úÅ£òÒÚüÀÕóÜt‚,Qè¢\W +Îù¢³Hoô[¨]H&élB§’¿‰¬OS&c1–[pà‰Uyu¸¸§û®þ«Ãý×ìÆóNã'vã96áãcÎ9)´ãÓ¾/ì‘I™ Wî’É%fÓÅïí<}*©Gz{-¥…/0™DÖ§)“T”!LÒSßXvîê¹aíµïÄ?:n­Í[°‘ëÊœU•êX%ðÕè *R&ëÜ~oÒùÅ×㹤‘w£-“dr>ÙˆÁ'‘›r*+*1“=È9¬)z»Ky$ÎS†pÈ$"Ó”IWc®QÊ@&Á~!ïêAZÿÛ‘[WæÔ è*È'WŠ|쌰95n¿õ}óăF.i(Ÿx»yBà [(¤5ò‡ì8|i+&¾üYjÈÌhœ¥zíÀ­àž>ñ€þ˜¾2m^?f¯A)ÁÍ\(Ã'ÁN Ú,1»š·^{Â,g´“I&}²<§õ¥Ç¾Ð dŸçTVÔ€»í­aI”€½$7¬½úXÿUékªt sUâò dl’É:·OOÙ¯<2wõ)·×6Öö¯¤ô¶E û=òLq<{ hЩôK¬|7†’£%†Fñ‰E=ikô¡½¢ÒÑA(¦ô#cúia®78’HwÎ:;i¡'á}h%Z^àø¾ÄÜN®^£ô7VÒº°u±ý“QIHNŒì¹“Ûcž­Mfté+ +0 è¶Ì'ÙÏöÝ0$:HJåÑ\¨‡ý ;``pPL¶=N¿¯ìMø.›H1Eb’~«Ô“ŽvsK`TO„=éhÄwÑ“7”íàÚ|óë‰õGOY±Za§ž¤–èÈŽîL•7eÇ ÈÕ‹É×ö[ó÷ë…¤&ýšê¿ÉŒî;Œb1‡˜Älx"ìIwÛô¨!}9pXÉfõ¬v¢`®7xgV~Ï€\çë\zÏ€D“-/Ø_~ɬeõbJ²¯©þ«¦ƒ¿ºšÔz!QyrãÁTS¦çè•´.}?]›ù$ûþÃÆÅi³;o")·:F…ìª)(&Û‚¿S´^Ü/ÛÁǦ‚1I¦G úÃ)!üb³±®ˆZ1 pôâ8ö•Ä•†…žT-@Kpê +émýÔ crEð¿?m}÷ÓF!©•e_JRPF +7øõb1‡žT}<ì€xà´•4zàVèþ,&µ™ì²yeÁºŒ¤TõäJ=©–èqŸñùÌ#cz>)ÿR’v:¬ž5Â[Q§ŠˆÅГÊO¸"¥õ¾5¤o)À £c’ßÁ^Øm¬ÎXÝy³ƒ¤Tعš…žT=ë%o¤-øoKÔ2¬˜ÒU~cÒßîÍ õB£òô>(h1*éàh¨|:6©Llö‡'ë Þ‘4 =÷îœuiš7eGôÇéo{üäés‰’͈â¯KjÏÖDŠE1!3e0ƒ0á”R,êIéû °%Ðy)¦ô…1½]5×æÍάü¼>‹¾#Vg¬–‡¤rô|›%¾âó‡¬çv…¤VV>&I5l±ýS½–À¨<žv Z œ€;RLj/í1¨'{uª¡O‰• +§ØÞszÔ(¦ð¢ o?;ˆIÏÖ&œmTž@Lª>‹¹`|wÛdF—¾Ÿ[ŽpY!©=;®Ÿ­Yk ÞARª§;o^˜2›²³îúLh ~ªÄ_Ù› |¢ïGÄdO˜ q‘»/ˆ‰zRéñãqáèõ¬cðÁäw°_}9~eÁ¢žìÈÎè¿Õi«åq$åi–ø²àÿÊ[?~$N%Y²“7›Õ2zÙ‰SEx1©ú,æ‚ðÎHDúŠlEô¢©gµ3JJéy}F}Å7)?¤'|(¢GÙüÏÍoåâŤæáùß*iÝs´‰¤F‘GOª=±`r£3RÏ8)˜pÙáìùÏÄ/Mó÷æM$¥jºóæÙªu=9(&—˜|m¿5³Ó(¦té7Ìš5è÷zM '•O \]„Ÿ]èI€»T¶Ù±ýñµïÈÎè3êÉóuÄä0 ‚–Ç›eëÕ/$ªiF1‰—ãûDÿa*b1‡˜Tzz_ž­WÓ8/w‹½zæîg'=s’rV~ä@?]š;¤„ªÜÂ(&—»0òÓÏÆË›H1áÊ¿[P=kWË»zBfÍ`d.Àd*XŒJZ—¾œC€’²Ô^ØmtÂÀèÈ.è'ú‚h ôäVÕ QLþãõqƒr9<ÑÒo•Dÿ–ZF§_ªˆÜ8bRõ‰…=éÛ×v§àîÑ9*ÙL¸ìW‚À9Ð7Ý9ëL=¹%ÑS[ +còõ'ÌÆz>‰wâ­TÒºçè¾£QEx=©ôD19—ú-Ædø•!}?†Åd!©}3§·«æZƒ#)•ònmDzÁ¢˜ly_|1^Ëç—N±ô›d`Q0ÔÂl¸9'0ÊNnb¬ÎXÝ9«ƒ¤TÀå™0ZdWü¯f“Ë‚Ÿ8d=ÿpœJ²l#&ïäBsØÔ¨A¿7çFÍñD“£qÚ‡JZ—¾œ* ×Öレ¸º€žT=åeŸS·HÏ'¸YTø“o4>dä“òo†­E„|—~ $¶#&1¾±ÒW`¸ —“Ú‘1½)ÌõÆدÿß6î:Žãþ'P¥­÷ùœ}ŸOà¿ õÏÎÚnÔe*°²±¡FÇÖÒرïs¶ã|q’ +†(iCÚ4P+¾ $ Š +c€T6•©^b§íú-–Û4¨¼ïœ†jeË·O|÷zë©S~?_îq¤ŒC—jžÜRÑrÌ–EË“¿>˜jìâE›k¿ú.C-ün#¶Eð<ãI«O{€vE5‹Ó„Ð&E¤N³& “݆)£-ñ•:<¹…¢µ IÒó'%}—8ÐHûµÐwÑV4éÛÀdìÇ=Yv •1|žDhó*;ÁóÌáÔÒ <éÂO†kãrÖÐî(ôNˆÉy%ß*ˆï~*Y´yÉ&W±Aª4ù!x2ÞzÒsY-L"´©Ñ=\LÏïeó5ëÆ”RF»…IÑö%IF»¦â\3Ää_¾ñœ8ž7 “å 0¹ú¬>hžÜq¨ x2¾ã©`õ+ƒIÏåÕÇ™Bhó#R¾ú¸¹8-áÉÈw±*ÎÓ1Y’³eÑVò÷O[“»x!mh?þý[ ¾Ë<‡$|`2Þs2låš½O íû¡¸Eç®ä°ÑûÛÑÔÒŒX)#Z§!ºSÖåÑ€4ÚYÏè—oy’ž?ªfƒï8åê¿úºj–—˜ÍOÀ“1O«_³™ç£9O"¤%z© ïdßþ„y©.nNY2¢uâê˜5«›UñŒÙVò\Q~ïÓɲ|Ä“k½¸îxr™ðdŒ'?¬¾Ÿa•pK „tE7s!müê`jqZv¢£[>hƒZ˜-%É6Ú}Ÿša„ÉßzØ,Úœ<©tù~O…ù./g¸nË`4§L*—$iÔrð$B:£›¹d³ñ]ì\Y¤œÔ/´AÍWàÉMÄdøS“áÿxÈšÙÃé«MûaF=L¸|E˜xŽŸVßÏžìí íû¡8Ggp8Í^Úo^›Ý) ¤Œ^F°²—jðä¦arÎ úÅçSõA£hs¼éÖ±ZŽ+‡«ü‡R$àɸN¸ôôA¡z[B÷¶DQe‡•3ì‡R·¦<Õ®ŒÉY¢ŽnkE>ÂdKÉ·Gä÷M)—ØŒžÚÏxd"6T\®lƒ,‘&c<¡'Uf;í +ßåÚw&BÈ ¯è¢ÍgöðwüÔâ´)#Ù„˜S’´£]\Q­ÖVòìQùâ>“$I_jJ÷éŽXÕ,÷\^³YÂSðd|'z’¶D%Ë{o1í›!ä…‡qx';qÀì†öèèÆÚˆÚ><¹a˜ XÂä™/§¾ö/¤ í‡:zÑ556hzÞó„^Ï`tN¸úʦ]aÔr˜DhKUvXÅeg§–fĤ~ü uïbU4u»+’&gËbÖ8õ”5ñ€I˜Ä nÝ£ŸT¹Á¾c’%NæáÉøN~(ôdÆXÙÚ÷'Bh%º«é=øõ½f»j-NK2z]©ë§Wô"LÎy't é»lÄ^fZ÷êƒ&Éa,·- EžŒë„K¯v|deKhß™¡÷Ds8Í^{2ycÊ"~ttû­o×DZ§©`‘©ÖVò­‚xé³hó²ÃðvÛ «‰ªd¹—ÙN–È“ñ“ù`õ}‡»ÂʼnCh‹VrèÒfg‹Ö­iÑ™ÔO ´ŽÑ‚¶|Ù,Ií‹@ô3&ç•üó³Ö7örúÓ~x£]5K~àÊ <é'àɸN¸ôjÇG=‡=`jß–¡ÿ}ëÓÆ‹ŸäWÇ­n¤ŒZ«ž\LÒ³­äo¿`Mì2 iCûÉ|µa’'BN$àɸN~(ô¤Í<'x[)ÝÛ!tÊDJ›ÿò`òßÇàɨu¹O®&ç¼à7üéçR•,±ñRÛØ6¸=<·ÉÏÊÒ{.Íqí;!tïèê&O6vóse±8-@ʨÔmˆkãÀä$b²­ä›Ãâ•ýfÙa%˜ÜŒ*Ù*—$Køðd\ÇSÁÒ«:ßå8zmýˆ”Gw²—÷›„ÉSV¤ŒJ bNɦn˜õcÍ°y%ß8,ŽçÍbÚ(g€ÉM¹Ž2¬šåÊå=N܆'ã=*à “NB}R9|ž~&µ8-áÉÈDKy¡*›%©gýUïkyòô—¬c{x!mh?¡1©gße~Ö 0LÆvÂ¥W;î÷Âï í;!ô>£k¼hó™YÓ·@ÊÈÔmˆwGÅyxòbrÎ ~±Ÿ=‘ͱ{9hsª®ÒÛˆù!x2¦ã÷<é’¤ï íÛ!ôþ£—f!müà³f" e¿×!ONYWÇ,íB룓-%ß‘'>“,;¬ä“›} š^&ÙCE"OÆtzK¯6šã8ƒõ]ôö¬dÙëGR·fàɈt}BÌ)ILÒNµ-^3Äd[É¿/ì3GlV&77uçégî#KœÌ“1üP°ô—)—^I\ûÎD}Ðè&/¤o>Ìß­‹SHhç+<ù1IÏy_þéuìA^´ñ +ÓsÿÔMzìC*ðd\'\z•1zûAûÎD­®›½ödò&<Ùÿu¢;e]ª xò^˜,ÉYo`Γ§ZõAƒ>©ð +Óýì£9®œ$Y"?LÆtzK_ÉÒ14*Y|Ù!Ô¯)7ð$½UÏ­¥±RöyäÉËuýfÛ²/É–’ôüá$y¦hs:Úa<#<(‡){;qÂSðdL§·ôtëƒ&¾ìêëè}ZHßy$yyLܘ²: eŸw}\Ìy²Y’Úñ¶¥j†µ•üç°|aŸIŸQ%‡“#?xÞCE"OÆq–1™½Nb5˵ïI„ÐÚÞÉ~ótòÖŒèèæZcôEÐòáÉ÷b’ž-%ÿò¬õÕ‡8}@i?qqN…Ñ~Æ NøÀdl'\z¤ï.o í›!´–èج±›ÿ«lÝœ–í(B«®Ûªðä]˜,ÉYo åÉSO¥&w±"0¹ªf¹rµ‚ +Lì&\÷üPby?èÞ“¡u‰Îr!m¼¼ßì† éèFZK—GÉÿbrΓͲøñc)ßeE›+Wÿq‹ytÛT?˜w»» ×]ÙÁ–ð]®}["„Ö«²Š¤ìKï5Ez’~ãœJÏ+ùâT3ÏÊYnüñO26h«ÜÀSE‘H 'ã·¢MO$tŽ·‚a0?“°Ùj9VuÙK'/KèÉ~C·€³cζïIú-OVä/îKѸmúÁkÒ¡ºÇuΦ ˜)"&㸔ö]»LyÌ÷ð´Ä‚öX)cMïáÿÓÎê’²¯L=yn\Ωô¬éäÛ¬’ crÑ—'ÏÜm—³¼†˜ìa´5ͪr(„E=»•øpÓuŽ7ò<š +ã“ [€’rd{þ¾d7ì“.’²¯Ð`Ñw(ºŒ·ßÆÇdø£´üë£â;wrºø(œM=zRyüª´ÀŠÑ +7]&!êIˆšËj9ö—C©Õiôdÿy·!Nm»ž¤˜œSiúðǯ¦Æ†X9‹ƒ©×éðrª‚÷ ¿„˜ŒëR:ØwßPá<à+ôÈÓyýø^{¡á¬´$eYn;ï·‚ú2^€“%)’u’†³’Å©Ôêù ûKw EžŒßŠ.ß ®¼UàxlâidûõWì•)I•Ò5IpãÎËy%gMGàÆ”d“ Z¾9"~t]uÁ©Ôût¨‘çÚµ®´…ɲÁ2±ŠÃÁ¦ë¼E#á{ÜøX€tp7 ìõ#©Õi±4i>“àÑf-ø’2Ìx ÞjL†?bòµGÅ“{y9Ëk¦ +¸AQóש'=FE¡4b2¾‹&alÈ6>“` +¥ŒõôÝüôhêBÛé")ûÇ;õ¾ïIúþs*ÝQò•‡ÅäçY9c"à¦1é²’»ãz2–k¦lºvy0 7>`%åïJ®N ôd¿Xn;ïµä¬é ¼Å˜œWÁO8þ@ªžgå,צ¸)´_cƒvÅ ¢H$“q\ѾûÞMž_€˜£—@%ËƇ؛çâ´XBRö‰³cÎœJ÷cRΆ1ÙÑò­’xî‹ÉZŽU]†Ã¨¿èÜå-Ó9NE¡w¢'c·ŠÃÁ¦ëœ Ið=®]óc fiÙÅ~²ß>?!–ÛNIÙ–&ļ’fÆûðæb2ü Zž8,¾W䥌e|þa(!Æm³e?MQ‘H 'c·¢M÷s¼Yà*‡+!\VuÙËSLÉîQÑ5Kp#ê}Ö“ômçj¢£åŸ:S»ùHÆüØú5ò\»ŒŠb¦ˆ˜ŒÝòØÔC·)—ÕÃI0>Ð èjYÎòön>_+””“æc Ötº™ž5ˆ7“ó*püÁT³Ì›6=ö°nWÁ%4EQ¡4z2~+êÉœEO±ï1ô$|T9cýü^µJ×t,ÁšÎŽ9A§™ŵK2ŒÉŽ’'+òù{“•,uCLö/Ú»ÑA›Z"Ì +ÄdìÖ•MW.oä¹ñ€žBgDtÊ¿v(uñ˜Xš4ßKp}´G½ß“³¡-ß8,žý‚]ÎâôéoôŠÐ^ð×÷‚žôÑ“ñ[J›^Í󀞀£c¢œ±ž(òNÃY™’]$eo£ êh9[•Æ£ñ:1ùv“¯tŽí᥌e|ÈáÖ áq½'èÉKèÉø­âp°é4 ­b>ÑH†ýöAûBÛ ŠÅt2Áõn¦{¶'é‹Í©ô¼’¿(Õ*°rGOßÓ¡z>ØÊ(-èɘ-¥ƒ¯dö¤6=“гª.k؉‘Ôê´èNšO&¸Ž3£¢7{’¾UGÉ“ùËû“¾Ç*Y†sgzÒ‹>XA[ &ã·fŠÁ¦û.oäqC€ë¡ó¢”±žÙgŸs.´$e/;?n>¯.É0&µü×câ‡û’T’51¹}Ôó<¨ÊÝ;(*”FOÆkE;®Ãëa«Àñ\Àšª.ûÃ×S+S=ÙË–&EÇ—ÔoÆ3òrL†ßdAË¿}Óyb/§‹‰ñI†E¡\ÕE"žŒ×*;î»Ü÷pI€µÑ‹¢’eCö¿«buZ ){Ù» Ñ#=I_cN¥ç•|ék)žr–ŸdØ@Q?h—.›3EÄd¼–^tñs*g5 xºà†ÐÙQÊXÏí·£˜ìš®&¸¦å£âýVOô䩪ì(Ióådt1>ð±h[[AEXÚýÌ•ºÀŠÏºÜ“yK{Ì÷.ß/ÖT˱ªË^>˜¼xL,Mšo'ø¸å¶svÜy[¥Çä¢/ß*¥|O’J’ÆgÍöC{::ÈýœEQ1SDLÆk%>¼>Ð…¢žçÑ<ŸIè t -e¬oßÉçꩦ$’²7Ÿ-g«ÒHIΆ(&ÿñ-ñä^^Îrãs ›„*B¯…ÅaôdÌVØ“-W*×jäñ˜À͉’òùû’ÝI±ÜvºHÊžôNÝLOÒ:W%_ù†31dÓ¨ŸXØûܸ¼ÐvºHÊ^²|T¼Û›Ý“ôïÏ+9§Ò/Hòr–ãd‰‰zžëÿ³_w¿q\eÇ÷?@êMQð̙ݙãþô"»³³»NÓÐuhEA(¤¨iKÚõ¾Ì™}·³v(„AHQ©"«@…D¨(µ¼W‚DUÔl¼ÞM›ÄŽ-'öEyf&Ù¦QÚÆñ|~G¶V ?ÏÎ|ÇÖÅÎmÔzR¥3|}pÓ¬™3ð•€ QJéoJ¬ÍpôdÔ\nÉ÷€cò\‘¿º7nž,Š Aײþ»Ãm£ÂÉûã‹zÒsð­€ ‚Š˜Þ¡Ÿ«˜ë³Ö2’2J®¶­yw”ªoãK2Ðüß/X'& ÚŠÇŠ*Ä ¡®pbR¡3|wŽÞÞ)ðÅ€ A7“ɤöʃbrµc® )#ƒf± ø†÷døëpâ[»M_úÂ&«g][Ù‡?@O*v¼ '…ã—d5Ä-`˨[ÿÓáÄÚ GOFÊÅïntLλ£=—ÿú 95fPL +Ù뛌&ÞÌÂÑý¼ˆ!&;ÁÄ=Û¡ @OÀ¢çK1ÅŽ=Îú5ó:’2J.778&©$éÃkûâ4ôRJGL*ÈsͽšÖ¨+òãèI…N,ˆIñèçij&}`K¢¤üé—ësEvDÁÐRÛÏ¿îý—d“}ÁϬ“O“I­bË_9¢•3„ÍDþ‘a`à(r\áÛË|Ρ@OÀ@·—²Mo¬úߎ$Ög­åiù)„ÑœRð~c²b]ôø_žµ¾û+$åïH!n~ðF]1—GL*v‚×ZƒFŽ‰¹i 2áèTÇ'Ø{ ëzÇ\ARFMábõ¾z’~w¾bõÿí×Ìö˜1™ÔðQ¾žeô¡”5¨+¼zR¡“b2§5¨e˜ôm€-Œî3Ô¯ˆ_Ÿá~ÌÈ®) —Ö§îIúÅ—Ÿ/ó_ìOxŽ^JéˆIÅQOÒøy˜Tì„=é¥Fš9CúÀ–W¶é‰£Ÿ)Å×føÊ´üšRÚ´µÚ1[æ§ëIú­¾àg +üåÝ• &•æèôNA„Íü®@Oªt\á»No”¶VË0ùÛ[%ÇdRûÑ—ØbÛ¤˜ARJwuÊê þ‰’²þ¯oXß7h •4bô0$ÄÎm~a 'U:á냰ýÀ­6µGÙÖß8”XŸµÐ“ÒÑÕOГôÎW¬žËÿøuóØNVL1éÒ… Q¥–pô00bèIeΘ{ˆÖ žÅ 6 =q(B:±w…¹6Ñ”r­µÞ¯[ç?^ORLRIv+Ö/¿¯gôRJþ:Aˆà{MªAOzˆI¥N0n/­¹ÁÙÛê {Na»þÊc5H$¥,+Ô“órÓê~¼˜ì ~®ÈOí‰Wl½lãÁªfíC+û0¥…+ГªœØÍwÚZ°ÒW”BAâ9ú›Ï%ÖgÑ“’-µyÏ唋w-ÉÅäÛG¬F)å¸UkÌ(¥ã·5ÎÖ?Á¬…C%©Ñ;…ô=ÕGŸLj/íbýšII¹Œ¤”‡z¾ïYwëÉðç“~Æ<¶““šôåHÁ×™®Õ´Fi1—GL*t\áÛµŤHã5$ gP!©ÿ||5¬ÙY¥,úû_¬ñ;ö$ý°çúÞ8˜hdýWššôÍH¡„hæ ×ÑÄØC~aÄГʜ`Ö ›»ŽÞÈ2Ä$ÈR±ýªüç æú¬µ2-¿¬ÔD=y©q{I’óeÞœ®¯îMИJ)1 wTÏ2Ï¡´˜Ë#&:á¸=ûFI¢'@ºÿL&µãÆ¥fâZÇDRʲÔ2çÝÑn™‡%Ù%ALž)ð~Ñ(¦˜_þ²·"H1IWá0J W '•91ÖS;nZkå é«PJé§k3=) ýå{‚‡=^)&ÿú¬õí/è…íò7¢¬5fPOG‘3—÷Ç-Ò#á›&Þ7@.ôd{LÿOÑ\Ÿµ–‘”’ ª~O’ywtAðßLLéÅŽü%h¢//­©8ŒÒÂèIeNðî@§é7sb¢€îH…íúÉÝÆbÛ¼Ö1W”2\jðnÅê¹þõµ} Ï bRön@”Ñz4²ÌM³³Ÿ6Ž +'?îÏZØt‹Ðüw +Ù«0T¶õ?<“XŸµÐ“R,¶Ì¾àg Öɧ¥”?<#àÞhCªsm-lŒzR34•d=‹·Nˆº#QÃ}Œ«˜k3I)Á´õ÷çùwž`Å”&}àÿ‚çø-!2#adÈLœM<^0k‘¢û¶VÍ0é{0DO¥É¤6³“-š×:&zr“­µèÏþÖsV-£—m]8òW¢/h‰¸È?2l N,˜µ—ÖèF!‚»·ôU tS¢˜üæãìÏ[/OÉï+լץÿÕM¤bã÷®G-ü4»µ1p¶ü ý´cÐÔ³ 7 +ˆºSlz{ó°Ù¼[±®4å÷•š–Ú¼çòÓûý¤,Ûòw"K„è½#cP]äÇ“ªœpÖôA à9þHßFtK+Ç~ÿtbÄd·ÌU.½¬ÔtuÊZ|!HJáèÙëQVÏ2×aÂa~]ÄГjºu7s†½„î͘¬fôß2ž“‚žì¹|yJ~\©ébÓ¨*¶/^LjÒ—¢)È &lFi‘GLªrÂYWmnZ«:LúÐó¨bû^ÿªÙÜ/É 'C—Ö*åÍ´ü¾RÊjǼҴΗù|Åz·ÌOíARÂU3Œ¾Â"ÿ=©Ì‰Ån Z¤Y3gÙK0ŒÉÓû îí1Ù-óA•K+QÃ/µù¼;J#è¹ü|”¥”ü…¨i®­ËÍœM>^Г"¥ [od™ô% “Ií'{}q{L†ÿII³Ø6We÷•‚V¦­gRO†S ¤üñî8 KúÂ@Dˆ›¼ôÕÅ\>&;sp6é¸"èÉl\¤µZ= òSìÔž8µÊ<Õc™_øhO^~ø~ÝBOnvLµV;&ýåáеçòw&GOL…¤üµ( žlæ ÿê|ÆŒzR•“z2³Mغç0ñà— à +Ûõ—w~Lº£wŒÉ°dú_ž–ŸXª¡†¿Ò2çoÄ‚ËϼÈ0aL&5éËQPÏRK0¿0“*¹¼?‡%‰ž‰¨I¨LÞ™´z.¿[LÞ(™ŠµØ2We÷•‚(ãćÓñ“Rð³ëûOúI‰‡ˆâ<‡bRΈ_èI•ŽxÔw%¥·r†ô=e‰ &?iP™üϘ 3潚ü¸R5ü ú‘Ñç¾ào±^ÚÅþË~Ýü¶qœq×ÐC^ +G»C‘;ô­0œSOõ!ä’¢ì(m© ˆ“ @bcµÓÄ_v–¤(J–k EÛ@m·…‘KÛ8§š¸h/M Hhb IY–eIàQ}v‡¦ÛÀ¶Þ¸rç7øb¡ŽðyH~¤Ô¼ò0¶qòi_’ð¤VÇ·°ÙäS¾‡!=“˜üÅ#_¼m‘L¶Ä¤g˜¢ÇÎõiõ¾Ò°»“à= îæÙØÅçX.‰o“÷7Í›=ð<©ËéÌZ¤Ød†áR‰Úÿè“'Ÿ4É!¤‘¦àsÛÀd‡”÷ªêq¥ak5kÁ‰ƒýôM·MJ(¾PtKx˜ôžÂ÷¤#€IŽïÉìØmB…9c-¹|~Û˜”žl–¸r\iØÆŒUýâ?ÏD'3&H©aåaæ¤Å‘om“ºß“?ýþwÔP9Ô¯"BH«$&É;m5wˆI©—'¾6­ÞWv§ìyþ‘Ci~ãt›”Êw íg“#̵͎.pô9òú FЧz‰®iõÛˆÒ$úØ)Ø&É$ÂÉ#}²)‹Ör%ÞR+ [Š=Ú“~t;¤¤ Õ›†ö!š²›¦§Q²Éײð¤^Gzr<ým‡v`˜ [ýN"„tHb’~øðõØ’Ëç |˜ôôRà —+Ç•†­O[ Nü±¤,p"åG§b" RêÒÔш“6O>}˜\10Oêu²cÞÄ+#CþÍ‚Ñ&(_H„P補¢íõÁ‰(™D +d˜”ÿ!ý†Õ©XKµ¯tkcÆZ*yÇÍ…ª þÁÉ( ¤ w¯<Ì\›*Dö bÜàìû‘ž,“$=OšÂV¿–¡p'1™K.:|/˜lÓ¥À—+<¹ÿ­LZódg¬4bº5ÈëHâi&o练Ɏ[îU­ÖlL=´tŠ _wù“‡H£Y œø{¯D'†òõCÁ%A¤)CyŠt‘)µ8“tDzP¤ÛË |!B!ŽDñëŸD¾ÊóEg ‡ìÌ“~§¬ÞWF/ûÜVs¤é'éA÷ˆ\’U/! +.a{ÏÒ0£ç•Ã‡Ž)ÃzÒfnÚ›><‰ +.²Ä•ç#_žãuÑMLzb)Z‹‚¯O«÷•Vµfc+UïÅßøéA¤üãË)•¯" +4²DÙ'¥ÈÜ)58=™2è6L"„Š>^&Ư~Ì“Ínc²#–{UõÄÒ­µš'ùí T’ò«ÿÍ Zå;‰ ¤Ôëøž$U:rîiõˆ +_ôÍ’K² £ì³·x#LJ®4K\¹¯4Œ^ömΔþX]ð[ãüòX„VBùf¢@)5:¾'7}OV2L¨Þ=„Pøi“³Ï²›gcÍÀ0éY¥h-8ñµiõ¾Ò§óVk6¶\‰o¬ô'éNqë¿ü|$ŸT¿Ÿ(Ð$)éyùÄ÷6AÊß“µg O"„Hb²’1ÿñflÉåsa²ÓrE½²tku*F’ŸßöŒæò—?ŠL$ |õ„»)¯>´ R†õøžÞ ‘Ѹ•oB(LÑ7H>IwUóÆéhÝáóÁc’þŠºàÊ}¥[3½ì;š/‘²)øgoñŸ2ºq€”á®CJ‘=¸ R†òHO¦½Y—Òð$B¨kѧJÁ6‹)ó¯§b ÂFÀ’l{²h-8ñÕ©˜rbéV³´ãûýyZŒ›gcFÝ;è›HùÒ¢à’¤t@Ê°ߓŤA#v齌·3B¨ILÒ×ODxRzûàI©”;e«5 Rîkw'w9¬¦OÊóÇØDÂ)Ã$¥)Cy|OÒ[X¤Ú)ß7„P¿GŸ$EÛ,¦Ì¿¼6D˜\ØGLJ¢Ô_ŸVO,­Z›¶hÖ»ô\/¹üïoÆÊÃf>‰¯¡×!å•Ã‡6AÊ0ß“NÊ(É+ƒêMC… ’d.ÉþðòiaŸ1Ùé^Õj©&–VmÌXu—æw}¸q:ZÉø¤L«ßa\RŠìÁM24§íI³’aÊw !Ž +¶yõÅ¡¯ó|ÑÙ%0öý¥Ke®œXºµ\±véIÿÙ¤)ÃHÂã{’fZ;qR†òCõ{ ã·/Dnçy]&¥Oˆ²kÓꉥU«S±ù=ŒlÞ'凯G‹¶w%)ÃH¦3àcòt:B­ŽxOå †êßè3$—0.e#·ÎñºP†É¶O +|¥ªžXZE€_¤¹ï”ô\(Z×ODhÒ“Å”A-Á“¡]%Òf.É“ŸžÕ>ߘìònE½²ô‰Ñ«Ýp­½¯ý†E‡ßÎó«/z¤T¾ç(ЄOJ¤ìÛs-ëÍËM*_*„PE˜¤ïúJÆüèÔ}û{ PmÈÿ3‰ÿ\Š)W–>µÎ[w*]ðdû:@¤,ðwƒ”Z$I™·¶Q@Êþ9âˆ7,aN“¡E“¿«‹žÃdÇ$KeÞR­,}jÍÆVª]ß‘Rðÿäø•±ÈDÂP¾ó(è$)]²ßŽô¤c³™cCð$BhGlïùþkÑF¯bRz’@²>­Zú´V³N¯|×Héð[çø¥l$R†=ñ€”y²ÎÀƒ‰›:Q¾E¡>ªHŸüióϯFœxÏb²ÓJÕj©V–V5Ü®yR^ +èÎrkÜ'e’‰´úýGÁÕ!%ýð ®àôèñôö±¬:ªW!ÔGåÆ{¯DNžì¢‚h®À—J\9±ô‰è¾\‰w÷ŠACl +þ¯w¬‹Ï±‰„R†>"¥°éÒj¨¦ÎÖÇž'Å3†°J†)_„P¿”K²wG¾Î÷&)‚ ¹w­¦Zút¿ÖýÝ ßVwø§gcž)ßH™åaO&nr°#œÞ󬦲l'µÌî3³óyx³YëÙó}fž×d§ûKöJd¿AòÆR–óH9Eª}Ñ%T€ÉT¬ÒŒSè²Ö4<‰zbtXÏçôóGÙ§§ÇWgBŽ'W¹³ÕV­ŒD—ºêÕã1¤T}› gLb’“i[šÖwÇšSð$Bèñ LæÙ¹#ì³ÓãžVLÆÙX´”C+;ݪÛòdÐ #ÿç+ÁÄo÷I©ü–A{‹0É]cÁeR(ÀdŠ–Ö™ÃFÅ3êð$Bè‘xt@Óûæ•V‡ I¦“Ò“«³ÕVm­Ì´¹d¯E¯!)y’ÆJ¤ä>Dýƒž*¾î:!œ“©Zóây1Mz/P¾£BI‹Žfòäï0Þ …Ҏɸ; »GÚ*‡Òz͹6HOöI¹`)ýÚØ\NW~ã §Š£§ÍaI±TûëéVß“žMÓ¬úð$Bè¡¢'üåãctL&Éݪ£\Y©·lÝiŠk>„±®WËÎÅccóyœh)ˆGÕ‹“¼`J–“i\¥1µªËW羫òÝ…JH„ÉrÞøðõmLÞÃôä*wîµ@Ê¡xòœ½Ñ²HzCx“ œ/+Î…cf%¯þ&B_‘$Gc&/• É´.>)=y V`ñpBˆšËé_5ÉB#„É·‚:ʹ•…¶Úv't†³‹ú¤,;¼Âfs8ךœKUÚÃeD‘Ò 0™âp1>îéð$Bhgó9ýÂ1ójÙILJup6Ûê­•…Èí7köÐ6’$å?Ï:ï•L2ñ¨z‘à¡×§Æb`¥}…îö;‚ê=†R=f¿ü¾ùïyq($&ãžjke¤»M±‘®k²´o×xŸ”s9§[Ò"L +UöB.•€Ét/MëO0ôtx!Dùœþn‰}~ÆyLÒ¿îV]=´2ÒfÛ^åCÝQ’”_œuÞy™ÍæpÀ%(I—͹À䈬€‹!òI-ðy÷Bs9ýçß5“k£ŽI᛼AÎQn­ŒÔ©{Sѯëp篧íóGímî«¿Ë2=d¤7¸»Rš&Óº4M 5þ³ó‡4Ù<‰P¶£'À|ž-¿È>;=NGðÈc2ncÑR­Œt»¡`¾’”´«AJåÅØxÿÐwÈ&Ó·ˆ‘4¸p#§ÇB×äžÎ£)Óe6ºýËyƒ0ùÉ)«›%L^_°×«Žrhe¤{-G^óáO9&%½4”j2¾Q/ +LòÒAHi˜LÙ"Còɇ¦v¶øMîÃ¥ÏÅ)3ô0‰Pf£Û¿âÕ‚ñçŸXëa†0)¤QqVgsI½µ²ÐVÛ^Uô¶B¿”ööŸ~l׋âÕ GÞÌpé‹þ3ß ‡˜LÍÒ4íRIÛ9²&MÓ?¸ýáV ¬!$)n+ÜYe6ºý\£V0®œïÐYO'¯jã •Ñçí¦ÓSm­,´uÎ^¯)òdÔw>ú‘Rù CÒ /eO— 5`2é‹ ù j'#®Ã=%ÆJŒ¬XÌHÜPe9zT¢wÌ?üp¼f“}iTœnÕQn­ŒtwÑRµÇäïí)OX"£pOù%tû˜¼T&“»´»ÀÏî]3ˆîîÍ)“$É7e„Pf[prÞ¸||l5pnd“Ò“+ÁĽH9ðzçìûK6]mŤ z¢Í¿R8!Ÿ>uñ=oÄD!±h`™ EÙE}^:zû¯OÇÅ)“ÞÂvNVùîB%¤Ϩ¸“t¾g“13nÕ…v”‹käÛjç,2¼ÂYÓ'½@]>Þ'¥ò;q´ãQÍ)“d¸zÙ³b±¤T¼´ˆ‘¥™ÿ ‚O?Ç :÷wu\­Àhv¡ßŸ#‰z´Ùœñ›×Æèl]¡CVÝùž„èŸß ¢Žrne¡ÛuûšÒý&w{LJåwâÈ'R-°F‘E?!«R/DJ¨rø‹I—$ÿd±ø<12,èRŒ¡ÏêEV%UªÞ<¡„7Ÿg¿:fþg^œªÇd¿`bcÑꩶÖÈ×[¶è:+7íù•ˆ”¾>VΫ¿³©’’ßùáq‰ ªüÒ´P+þÁ©™}Üc¡oäû¿VD¡¯0ùÁ+ ˜ÜŒ[uõÜÊB›KöZ¨~ã RôyñUs.§+¿+3UÕgD—È0:Ï=/mCÔ*´þ#iU}ƒ$É]Úù¬9eÒ88 ?šNü!„¾"::ß-™_Ì:kÀäúXãQG9·²ÐzÕ¹–€½'Iyµì\8R¯Ø*µ«KƸ/”Î!ö~T˜k4×NFòIÇÊž.¯9]ÿÅ)3ôû€#BÿóyöÎËìoÛL>¢‹{cÑRn­ÑnëœÝ[¶n7ÄÕV>ñ)WçKRQ˜æ”Yõ#UzŒO?'ås©¤=РÊg]“dužÓC. R>Ó +¥'Ý}§ÓnM›ty!´×¸/0yþ(ûÛ[v7t®%ãOZ×ì•`bsI=·²P'LŠ'ol“òó3ö{%RÅJæµ }&¾»ûß|áDQÀ5M,÷º$)KßàB’cuq…û×\ùÜB銞„Éöö—SV‡'èOfwê­5òõÎÙ7ëðÊÇ'HÉ#RΘs9§­‚'•ÛÿR/)ÅÈ–1‹BrT¹§kœû,pYÿ +û}Æ+Ÿ;B(Řüä”Õ É¯GE't”s+ ÝmF\õÄwOŸ;ËþéKl¤T÷È’_šS¦OÅÓc•f@Ê=-M‹//èò:GnW?q„Pò£gE9o“O%Š•`â^ ¤x›m{5HÜž”¤üôÔøò‹Œ^ĔߙM:'ôZ!2«WòƶŒ4¨ro+¾no¾p¨êÒEfDÊjt…K„Гâ¾AbkÚ&ŸV·ê=ÕÜÊBÝj·%ý•ºÜ¡»†HI¯c8gçR¥üc­hJ\#Yª£YZi\\ºhñ<]RÆ]£Qì_^ìv„Юè±PvÐ7>>i­‡ <µ]«NèlµÕskä»ÓT?î'íõP²5m‚”IˆF@O³æ”¸ŒŠU)xUîaíT¥§žÎ}#F;BÉèÉ@‡ =~¯œ_ `rm,Z=ÕÜùî·"¼©žõ£]HÙ ?ž´jñjR*~¦yýT ŒTI*{zó¥çÔ¢,í‹HFç“ß +óãÜ—Wª!DÏÂdUb’;É<¯ÞµŠs³®ž[#ßVÛ¦-šÌ÷ëQî|ô_öËç·ãŠãûäT èhw–äŽr+ŠþP‹»KR*„B›¤@êE` ¨kRäÎ.Iñ‡tiaýi‘^ª¢ArÈ¥¨ÛkP_Úƒb£¢DJ²lÙ2Ë£úfgI»rlX?gwø>Xðàƒ<ß÷æ}æ"WÊ +*eœ¨ç ˜Oh•)–5Àˆ´Ð‹°ŽPÅ…èèšù¯øŽÎÂãõ]lx™hà¨ð7&Êäñ\¢B{Œîµå—òìÔ­xúäúhv„RÂzE¥Œ,¤Y0™C˜>yÜòáôFÈòÑ ƒUJA)™¬ÚÆ_~œÞD™<¦KTèn33”­[jÇ»»_Ÿ\'Øö§?½^ÌòáB¥Œ‚ï’ðkBŸ<~UŠc„>ˆº«7òDœ³çÊA³AÈ$ðñ;)± Q&%ºÐAG¾t)K‡ûä^Ûêy4ν*þ¶ oú“¥Ä{Mú°O8p×Õr\r@x"B™<¹òXt˜¥ù)ÆP¤ž·äÇŽ)Qž'eRì>¡”ÈqبrÛ‘ï]JƾИ·k7l†ÇJ){Þ'¸ë@o<‡ø®qÀ°Nª4M[-F§Êl"N¾Á•A§Š2y:q¿!߸f°l W2÷ÖZì;fj#üñ§·SWfåüd2SËøúÎׄíøÊäiÕ“¢Îœ)~ì.—y†V‰ ê²hG™J¹áMòNª‚Jù"·\ø­ç øFcþå}”IµJÓ´q Ì%žM ñ¥‚ùdú‚œ* “å,©çŒÏÞËlù(“òúŒ:ò¥KU†+™ÍŒô ß'áGJ)ý2‰3,”Iþ#kì£LªZšÆ ‹9:à»F-GÐ'ä´™\ÌAθþnºçq“ìÊÞ’ˆˆ`wÉÊö.…ÙkY=–ø״ʆ7 ?>:Ï•²ŠJù¬‹Î1À+˜­—æ§À4V‹(“*—¯iâ½Àæ¾Äl"ž¾K¤÷!‚¨Ê“2ÙG™Œà9Û•.]*Ó±à„×î“¢U@)áûá[©r7æÃ]Âæ>ÉcæÛ’uëLŠÍD¯††M™bŽV [ÉîFQ ˜)”ÉØz¡ìµeK—º W2÷´›|ŸÝÒóèí2ýý›& µô»%n0î“÷I—€]4™–ƒu†åkšÇ¢¸YN‡€fhäù³‹Ùò;Afªbküe2®€$Üopí‘®^J2\¶´2Þ´Ï ŒÞ)ÓÞH¡R>}Ýy¡Rà«EôÉÉ*°ÊñoæÏÖëyâ»dÜ‚ ˜ ªÍ}òÓ iØAbI_ˆÈ ”­€:òÕKUàl¡ÿ•iþµ +Ýdôó’õ˳4«ã¢<@{ÎdŽÎb}râJÓ4E¹7lê;|@Ü*åw&‚$!“ÀŸÏ§»Uke2®ðt¼é‡-:”í] +³¨ã“ëá,ƒ!ß¼l]}Í¥”~ÛÄ ½=oz{Ö¤Xåø5Q¥É$>¾äŒeL²ç)µLÕÒ¹×/] +³»ž³ì O¶g6½*åbeœC³>©ÿêÂ7„WHõ¬³+žµ¦Á#bµøX&Çå»Ú¾8)rXª—Éu”É$ÀÝÀ§ƒŽ|ïR•GmkÛVl„RÞ¼lýüURšÕ™+ÿÚ‘ØB#æ0UúηôIEKØ£À9ð~âš,ŸbðÔ² su¡‘è“rX`¹üñí,Põv¨Âx#õŸEÚ÷èšr TUºUënM¾t)ÌN²ô O¾sžTÊ,™p¥að]~C@0Š 蓉-«#$¸Z|fˆå—«¹)E\Ñ%¡.rolϛ͂ / ߺbüEä2y§L{í¢L& "tä{—ª~@¡C"Èña(“ÉRÛ +¨tïR•Á²u·f©:ÝæëïNºRÂeØš3CŸQ‘äJXkl¾Æë ÿ ØcàfS,ŒhäIC¨cŽø¡=²§—Þu¢0_WfkÅÔç¥é>£kŠnLåÕé1º×–¯^ª²»¤¬O®‡> ß~¨”µœQ±'tÏÂÿz©`²Ð'#Á’WÅ xV +íùt`Oùš=Æ÷?öËï7Ž«ŠãóðFÔ{æNvfüÀo–ˆwvv—*µQ«J¨•*0• +‰DÓÄ?öÞ™ýaïÚå úОúB¼ „J_$<©Îz½;¶ÙÇð¹ëõ¶‰iÛ{wF#ùe=ç{Ïù\&C[›²ÑÄr!ȱìö7Á&ˆÓ'kn¼~Ѻ{Å]çžÆë2 @ ¶*n{ÕQ®^ºQwÛ+î£e¯ÁÇ”wùTóƒç†ð>~'Ÿ,¦U)+…DBÆGbe!Ÿ˜z/°EÀ"Ÿ…¾-|tÊŒWXüb•ó¬vÁFã¢<ë®6NêHýâP&?p›‚drèA[‘³_Wm_š‚Û +5?&PÊFòüÝÛçà“‹¾ú1ÕJÒ'ý3p˜|R]]ž9åM‘µŠã]9LL2 ìQ +¤äŸLrH‚PÎà<ɤv4øØÎ’ÓV­^Z‚¯ºYv?Óý¤`¬óø¼ùvFù˜RB¬(˜çM( ä“ +ÊH4J»¢oÕ§X)Ï¢ ¶G)<ñÆ®@’C„*pç&ÌŸ½Êî\q7H&5¶³UQ¯^ZÒ^u¶—å-îR)E÷7ß?‡A¡|^õu6æ¬0H%›ÒLÏOª©ŽRŽ„è…ÏКrñ{$$ˆA@Ê$n|Ÿ^vš$“znâ‚°WSo_Z²[sSrd¤RÞ›÷>|ãÜ|š”RŠ +Ô% +Xâ3ä“ÊJ*%ê0|ÿ,Ï™"g–ò,Ê3å9!¢+“Ÿ\JdRõÚ"NôtgÉQ®^ºÒŠ¼ÏRà“÷¥lrï?R)³iÙàÒ'a,P˜ ä“* JycºÓ¼Ÿq?î„¿DVIêÀ1œ?É ’IM<(«÷.-i¯¸[õ-îg–b¥\ð~ýº{¨ò ÖŸ!É¥O–Z•¢:,Øž9{áòœÙµJ¡:3‘6pè²Ví‚Ý•IòI-¬ o¿®Þ¾´äѲ×àcøÈÊÝ·85…÷ïkÞõ×ìk,Kù(;í9‰g©Ç' Ã8Âr¨ú[†ÁÅa/³#<™4+“, +:VInI§”É(oýù½ ÉdØ^r”«—–@Ô›¡—Ÿ¼/•’{w?p¯_´æ&Ì4(e”ýDŒRc”սёƒ¦D>Ì]+X§kd•qjÄ2éÇ2y{6ƒ½pŸdRw ­ÈS®^ºòyÉKÛ Š•R¤E)10KŸ‘£ÒŸ¨Ž(. ßE6æL´, b±T!‚Е®Ln’ÉT€í¿Î½Ýeõê¥%ÛUõ-V* ¿ÿÔ[}…i¯”ðIX+Ù¯ÁUBòÉ®é™ÃîT&íC8«“6O®ʳDÚPô1­[]™\ô”/&¢àÖ°UñÚªÕKKöjn#•÷2L¦ðþvÉ©O%J©z¸Qžá¿«~çë°.È'º Ãèí‘ðÏ„9í+¬R¦Tã¬D‰L.úÖïètdRõ>"úV+ôþ[Wo_ú±_w7B/W3Ì “O.9+Sl>Ët]Ó‰Oš"oÃOBƒ|r +V‰Nͪø^è3´2 X)¯mP ¢?sÖbÖºùVf{D0”/#¢o`ï7øØÎ’ÓVm_Zò°’Òµ–ÐÞ_~ì” ÖBÖÒpSøE£ÒTTzÕó–aLÏtZvµð2Z)ü8¥°J¸¥†q%ˆS&–I?–IHÉd:AÓ7Ë.ùäɲ¿ÒGËé=Pkɳ)¼?ü(å­_ý¸;YDl’ÉÓg‰žO_…†!Æ;‰FJ*…Ø*e—•' )“¿•2ÉÇH&Ó úÞ ½½šzÓ½z,T©=Y]¥¼=+eQ/¥Ï0gª•"ªcïb|¤è›²¹ÕI»k˜ÊóFƒ É$!ÁÞßYrÚªíKK”Ü4.©”»5›ÁJ©Íj–šå÷;>i†:'¢:nA){;,n±ŸXepx}P<‚4®MX½y£žd’@ =ÊÕK? è«©öI™®FÑmrïæ[™Å¬UT=úN–r ŸI!ŸÔ¡ £+–bÜ(ß9“q£¥ar²J‚èanÂüðs÷æ=’I¬ÝuîíÕÔ ˜fÀ'-'§Lu‹,QJ •RùtRJHE¹ÀxŽ‰üÙØ<È'õ*\ÄøaO…Ïpw@Ó£©e‡ü nhzuÒF÷a•Â·È-‰TÀ_›°~õºM2I<‰Üõ»ËêL3Ú+îvÕmà «nñ €˜aø`áV‹»­ò©x|€qß*ú&L£×:¨t+Ãè½/,äîC&MXe°î’UH‚8m¤L^Íþ×U¯I2IÁV9öå¦{5·)èÐuø’Rõ +ÆAòâ³Çä“)(#±Ên£a•¡oó$¥<2ªcI§GG&/Zw®¸$“ÄQ ¡·¯Ú¾ôŠÞŠèÜ}!iD÷æÜ_~Ͼz¾£dÈ4‡0£°‹éòÉ´”b)ß+¾·àÛ2 •ãd•„¾tdò}wCxkªW 1°  >¶³ä´U ˜~lUH&¿6(¥ðî^q1š0 ”ÉÚP´¹o=&ŸL_õv|©ð’È™Ò$+ˆÄA<”G” N„y>Ëer‘–ñÿ@B6Ë.ù䉳»»:À/… Jy'Qʹ sx7o}Š‰Ä'oL“O¦® Ãàâ°ïsS£ao^<ËÆI) -2¹ò +ûÉ$ñlÈ¿WS/`š±_w›tŸ–7Œ¦¾ïþüU6?„J)p°0gÂ%z½‚*uÕ#–"À#¾eDy”• Žƒ”ÉÚ”ýן8´Èˆgg­ènWÝöª£ÜÁ4c³[åý4¤R~zÙÅ°ÂÈ:¥,âß,ÆG¡ ŸL}†ïµÊ³âàÞAÃH¯L¶Bo­H‹ŒxV°ß”ÔÛ—~ì,9Ê›;˜`:A)1¬0²²C³|E"“”ÉEd’xv–Û­Å +´¯ÚÁtb¯X:ŒOÀ°ÂÈZº` …RâFyxÙQh$“TIcz¦“‘7ü8'a0y&ˆ'‘2Y™d˜ÌŸ“L/b³]U/`š±_w[Q|$•÷wYKR‡‘õ§wìßE Wp÷· Ÿ=Nd¥Òc¨TWˆd@øgBßDHª“vréPŸX‚x^`ÌaLã?¾ë´ÂØ$I&‰›æÿQî`šñ°â’O™º„¦ðnÍfY)å¯*˜ðÍŽLL¦¹ czæÀ$ÇGÂÀD<àRž‰žÀÄÑ•ÉÛ³Ìd’Iâ…‰“ÃÇvkêLên{Õy´L2ùUÁ+º»=ØJË$FîwÏB!¸ ™LouMòò·_9[ƵR`Ê#JÇAÊä­Ù ¦ñ}’IâØlVÆÔk˜^ìÕÝÐ[[$«<9¸Z¡÷ñ;™ù ³¨z®>I)±…E߆Eܘ&™LiÅ÷Ã/QÜ/|çe0ïAñ• ºEߊH&ÿÇ~ý¼È‘Öqï?Àƒ,º îTUÏôót<ž÷d`éê_3M¶G³*„½˜ˆ&ô©§úw÷ÌÁì +‚H\A¼Ä=xraOjVDÄÍEI`NÿšI&ó£éãø­ªžÎŒÄ8™éš§ë™Ï—7E69t}ûy^&™§+¸t€©×z™­Â“/Þ½%ÖvÿpçÒ\ÞÔ§Š”"é>ãA“§nB¡Ðþ÷.ÌŽ÷W†ˆC’(Ày˜¤S÷÷ß&ÑÄrît+ºY‹H˜J W"U|C±~î‘ò®KJéǬwÒRÅ”!’3c[È1 FÒd÷I2qÇõ…ðxC¤o)BÇi)¡çLƒNÝÕ0‰&Ýéë%6$5åKL™¶ë¬#xËý¶¢¯ŸGÊ;—ænÄ䟴T%m8ª<û9â„%€ÉS4ôºÇo¼¼÷§œ6è÷…•Ð I¤@Kq=oêw¿;G§nÛŠ“h‚Ñ…Þ|§!ß`JÕd}ž<ìv,þYžøÎl6¦I&‘o­øzI¾Ák³i[Ñ–ì—”èp뺤¼u1œ3Oú*î“QLê#d„àIÕ'²÷ÞòíLH˜†ˆ;Œ,¥ ±o+R£1ý—ß ÿ;Ï‹ ˜DþDæéX|»Á†² ¦Rƒ&뎯íKì!‘Rð]ç?y;œi'|›WçÃôKCr0þýXÈ,>“¤{;P™7`H¤dt¢~øÎììs×ãVB¾F ö´*ß`ŠµVÄ7÷¥÷°'ø§×ØûÂ9Ó8™“–QN;±×–&U¤÷qök¤·¯ÑTh’:0‰”lŒÉ.0‰üϹÇm>hÊ7˜JmTå¿ÙÀE«Ø÷HyÞ Rú}ÅÓ¿_J9pIc˜T~B{˜Lh"axoßv% L"%Ë›:0‰N²–ûÜ®Ë7˜Jm7XÛŠ¶d¿ÜÀµJ¤´ùßY>ç;)EÒ{d ;L*;¡½—[0é&õÊ|X$ÁH¤l´ÛÙ˜öÓL˜D'±çqY¾ÁTjÐd]ßâ#mc÷¿w%R›×ò¦/—¾÷oS†•ÔÇæÆŒŸãa’~/؉0½÷ª+Éñ ¤^&?¸þôë +\CèD£}£­#Ig˜JÑñE>òBöm‡”õÝ'R–Ó†ˆ"ixØŒŒÿcÓχ¸n' é×=B¾–3÷]LöItâµÜçf-"Ý`*EŸ'¾ËGßI—”¾)¥\R&'vØ’NK)¤VŒÏ3,L*>¡½ß ôÒEÜ}û²o|„| +˜DÒ£Å[+ò¡lƒ©Ôvƒu,Þ’ýfZË­+øGïÍÑí_ˆë“2€íÒT$fvÉS3DJÛU¥z¤DJF+7õ›çûÀ$’íÝÝ; ù S¦Á2[+áK}ŒtŸ]‹ÿaB¤ôþz1eØ mÌ ©ÌÁœÜлö~>ˆä ‘²R"…¢eΙFc!ü·έÙ|÷’ÝF• W"Ò%¦FôIÒç O§)…KÊä±HéýÅrÚ°š8û:¹ÂÓæôÌ3RÆ¿$ %R$Z㼩×ô{W"=Áqé éÑ®•¸t†)Óp™mÕyÛŠ¶d¿Ù@ç}z‹ÿöÝY:3—ŽJJú[“ºˆ½F¢È,“§qBîЖ&í$H‰‚Ý“óa²os\7h¢=$ü†²%¦Lƒ&ëÙøµ8ͤçjß¹4ç‘ò§n1åÈ¡˜ÔÉ·3Àä)žÐè틤³ % +n´º…¸^_ÐG˜,À“hZ¢m|R‘Ï0e"™¯—<9‘ÍìXÎiI¤$O.½ä‘ë<“z>>ãj˜<í3ÞÛ!¥R¢ æœi¦^Léº L¢©‹’ÖrД/15®D6ªÀäÄ–³mEé¿úÖl6¦öÈuŸ¥”AÏ]W6<‰ÙÝÝ=HÊ"H‰­k!î.§áI4Õy˜´€I„¼åܬE¤KL™¶j‘6¾õÍ#åýkìæ[FÎ|Ž„ñÀr1¹Ÿ Ì÷[Cœ YI½˜2ÜŸ!M]t¦-Åu:ñ~÷îl˜DAˆVt­Ä¥3L™MÖ¼UàÒ߬JIùãç‘’þ³:vT¹ð +QÁÀ$æEãmHf¤DSš‡É¼©ß½4·Z&Q0"ùvò%¦Läs|÷'ªýç‘’þPJVÂÈÇ4 ²µ‚ À€”hšó0yÇÅdÇÂ…‚‚ÔF… e3L™žVñ[Ò—Z.)ÿòƒHm^sHéÀ=10˜Ã H‰¦³¥„^ˆ;˜ly˜,pég/B‡Œ~õ‹\:Ôi»á|ª ¥ÑÑÚüÞ‡”Ù˜F˜,& z BîÈF +&Hã‘’ž#RʆBl¿þö,Ý m+ +L¢`åýÚªó¡l‰©Ñ Éú6~Tú¶®K¬'ø'W"õyƒ0i%Ã#“˜—Ÿg¤L襔AO¨I,g¿¸~˜et)ãAAŒööI™Á““êI…á(ðkWÝu%±ÿñ2«Íß?ûêXÌÆ[ž«æçE"\Nƒ”HZ„É[òѮ&QPs/èÈ )_b¯É†+‘ÍZ¤%ûª\Áy®ÙÑ¿^% ÜΓ˜cGÊê›_ I–Ò†)щ7Æd˜DÁo«Î‡Ò=¦DÛ †˜>V`í%¶^ŒnÚ_&|l½!Û#˜ÀOfÑ!¥ˆÑ!e +¤D'aòçß?t1¹Š‹<ÂÏã²|‰)Óz‰áXð«ëZÎg»z9x;$Ù"%ævæ)ËiÃ)‘ÿÑŽecÚô^çÀ$R£Öë¾Ó”/± 7h²áJd£â]úkUµ¾ˆÒ³g}Åq€Ob&3ûIYJ¤D~FÛ•3›çû×0‰k³‘î1.³Íz¤mE[²_¨ª=.FéãíZÜA<‰™Üì#¥VNÒÉ.Ógüã*ëÛ|×R®–ûܨÈ÷˜=­²öÞ§Š&Ir«}dEGwžÄL~F¤4çƤDèø&s¦Q›×>¹é Þ&‘¢Ñn÷l.]bj´Ó` Ç…Ø væ‘uf|éc0~̈” ³¤D“hŒÉÿ°_n¿œe÷ßÑ6vâù¾/ÛrÑ+.¸…î&Ù» -©Bªè‰ÝcO³ÝÝ"N*HˆsVpI…zQ.¸h%Ê P©@ ŠO‰ÃÚq¼»-kÞoœ¸&ÍzcÇ›wÆyý4;kïóþæ5È$wèx“ÕÓPÊÑ°’@cÜl±š.Øíú7žx€[:qΙ³PJ0öÊ${‘p—!ÿYKŠVÞb—±1`= ™5Z™«-–µ0û~)Ä,ȸgG)OEI)ÝÓ‡[K@éÈäÂ#¯ïÊ$|Œ=ä“+qÙÌòËØPOŸDoŒ[”µ¤kÉVfÙÃ'‘»Ÿ«gÌ1sg-gf"ùp„]N@° w 3ææ߈®Æ%-Y,p|¸–²Zy‹ÝÇ‚iyÙ1íÁþ…ŽÕ¸*ÅDIOu=‚ÜítNZüacîéˆÃ­( (8sá §Ìõ•'£%­È$!“àø@þ³6Ï/cãAÍðÉѲî*ªåe}¿Yó>‰Q´c›33¡gÂóC)Á¡CB2÷d²¬e 2 Žä?eGneøel ØLY(Q¢Õæü4ùäÛ:Ò]ñrD í*ålØ= ¥ý ãaϼ/“ÝÊ_¡-t쯥,vAò¥¶h,œXÖâM}ow¿#ÈÑ$Dç­«”3áy(%¸ t0b3ææå¯F+™d/O8 Ÿ¬&d3ËïcA‡žájBâµt„l§ï/hA;];Iä¨CJïQJJ öƒdò©ðo¿-í®Töæ€z“*iµ•á÷± Óʉõ¤XF™Œ:–72'ŠzÚ¬výaf·@ŽeºJ;}Ÿ3R‚=LÚ3á¥/N‘F–µ„L°ž”ì>tZyëZÊbÿ*Ç­Š¶¨ÆUÁVf¯/…˜Å9®!¥l{JéÌ™L@)Á.™ü d€]h +VâðÉ°•ô$Ñ*#À%RJsc™¥þiø$—ÐÎñ»0†R‚.±ÙðÉdL@&è@ƒ@»»ž†RŽ€š+–Q,£8“+δ¹q¦h_=ŸDX³«”q(%ð8wr⧟Ÿ¤¶‡LÐ ÃÚ¼jå­í,¿’z€ëIQàþ6ǃj\ÑkNA[f‹kø$Â^¥œñ”rθ%ÄòrþäÄ?;ù¯s +2 Àh"Vâ² ™<4õ4^WGú«ŠZU‚6¸và“â=J©IF.œ +wˆÍ„c³=×ÎMïý~Ñ_Ÿghf‡]áüÃùS’É·Ï©Šƒª`6SV‹ÛÇOV™£d‹-6秋1õ}·Àᓈ/ÒUÊÔ#÷å ç?É?I}¼G½ö¶¹ý>š Ÿ;9ñôG'žú#Ï~,üüCáçÚ¹ð†øÎIó9³=3 zöêÛ+À{žaŸ†¥kŒ½?qz8gdò%È$}Y¶eÍå–±àCBN=sXlQOª‚¶ÞÔ÷šå‚O"~É«ú#æ——îYŽ[ïØ⟬¿>}í©èëOM ʫߌþþÉèËON ľ6õ»¯Lþò±É_=>¿~|ò'Ÿ›üÞ™È÷ÏÌÅOF‰¤‡LìYO€å9Ï™‡`hg&W$m¾äÆÏ=4ñó“Iú@ÓA3ÒÈð+YÐÙLYæyr¡Ag;5MWÚÛÚL"~Š6r+«ÚWÔ»ÅÍEI×ÿ¾0 íKVû²µs„‹²ž[ ÝdE-i•ÑrB Ê¿µõÖyÃ?<º÷oÿ¿Ÿïùˆ®{>úçoGßxzþütô/ÏDÿô­hGž╯O]ýòäϾ0ù‹Ç&îѽÙs¿úèg#—>¹|Ȩô™É¿?+V¹ ™ /¤”› ¢ÅícA§™e·×ò1?½›öö7|ñM<™\ÍÝ·“·.Iö[GK3·SÔ­¹ž7.J|Ããà7äÌïux¡çº‡ý>ºÕÑæÁ¡?Ûù·<®{ôÞ_ÿÀ}ç·dÎ)±™²¥š´*n?ªó¢™à­&LC²+YСÇŸ­èºâLmá­pø$â›x>¹}QÒ˜“e1–LWe›ž^¾Íø£9RgΈ¡7Q¯dDGžûp#oU]t;w¦%­èåŽÝÇ‚ÎF’ÿÛ 0¶9‡Ä²†O"~Jhç(^_”ï^TfØóüm3Æ4{èýÉžûæ~{xyÞúËëiIÕ¥àŽR®'ùk$è4Ò;“ý $¶¨hY4J ŸD|s‹¢¿uIngù«=UWÂ'¸#4&+qÙDOŽ­¬¨8èœáYuH&UYŸè.qáö|2§hÆo,Jöž,4Ò‚Ú©À]’øšš”zÚTe“{lÍÚ¼€OM5®ŠZãÒÛâðIÄ'1G±™—í+Š½a#5õÀ!¥¤aaØ@Óʉ͔…šµ„*Ú¢ ­îGæhs¯ç'iÀo½ ÙK0ÒH‹½ðr÷$>‡,¨âÈf–fƒŠ÷èQÖ²Àým[l¸ÓE­:>‰ø"Kæ¶òVû²ÜF={j®Ù•üm €é(Ðæ‚hql !!¯&$ +g8ÖŠ®»& ŸD¸Óyµù®Õ̉öÅ^/€ZŽõ´,iUà®J|β-«®dŸÙ@ÓÊ[ëIó$Ù¿Í€¡UÑÕ¸*Ùbw—Ã'æ¼ê˜C¸•7ï‰ìÝ|BÍ4<}¡);²‘áØàB/°×R^`†|2&Vã溳ËCðI„7æ’R¶r²}E±w `§é]ëiiJ @_hF6Œ5¹'7¸leDÅ‘h›Áð|’ž[)¦v—9|a6'ðÝEÑÌŠ›‹’½X€¨¹ @hFª IýÉ>°Á…l¼êÂ'Ä¥˜(kYÔÓe‚O"ŒÙ=~ÍŒh_V¨DÐK#-JZ¡äè ûÀòÉõ$zf@lO&éF[uΨÒÖÞ \| ™“ï]T-îV~£æ +ø$ý¡ÙHòOk idŒ¡mÀÏ'Wâ'ÞßæÂs›Y3Î7%{¥¿ÑH‹’VöæÀÇЀTÙ)R04+qøä`¬8ÓÔÏ÷AÚãWÏÀ'¾„vŽ_+o½wQÑ87¹ûøš+Pòô¡óÂUOKöi 4kóŠý« «Žybk:j¹†O"Œ1ÇïÆ¥©í¬h_F‚ýi¤EI«wsàgh@jóüÓhê)«¸+çà T㪨UEK³Ïá“c–Ìñë r‹»I€Ÿ©¹¢`KöòÀ·Ð€TÙÌòOkpÙÊŠ²–¨šƒSK¨¢-ÖÒÒ*×|aJÈœ½7žx€L²ý¢‚O‚}izïõ´,iUà.O|ÎÆ‚™—mXå°mSuá“°F>©EûrÇ$á“S–ÌÙÛÎMQûÝ\”Mî&>§æ +ô<} !jqj !!GÏœuW•È'µg’!ø$”PÇ'§Û/ªí\”½F€Ï©§eI+T=·ƒ¦£ìÈF†ZƒH3'HÅÿÇ~ùü6•aØÿF5¾ç‡0t +ˆJ¸¢)H ®º¤‹A]Têª*CpŽ&ö½NÐÍl»LÿƒnfÓU¥YTª*¡V‚‰%±ûú6aÀýî50C00D‰?ŸÜ÷Õ“+osï÷½ç9ôöØ¿£Atò±jJ|÷LGq'¸Îl/£-~zG²7 0‚œ„OðhA„W¶\îm5”ž-Ö2è™ïVôÜÌÇ*Z¼<Ó„!ÁìQã=Êd™¿FÀäÓ-ŠšVö"`R!ZÏZ®Í¿­æÒÊ øä» |²;?Eï*8ÓÏ0KÎ2ùHGܲ,KööÑÌ¡êxµ9±U”÷ªšˆë¯lu,öhOÒ°U´Eú—ú<·X ¡Là“®-<[l/Â'Á{Ð-ŠšVö.`R¡ W»À¿ªæÒ-‰zZâÞúR¢‘ö_QSOùÇúµ³W !LäùÔyŽÜL‚÷§™¨zÞmG##]›UMÅYøä»YϨꜪÏÆü]Ã'‘ñÇŸºÎ‚å:âÙÙGéï-‰ðĵÅà.dì‘­¢ôÛJ À(h5êiI5˾ª†â:b-#Ñ0o#%ºE?+IFà“Èx£ý‘û¦lõÉ'—Qw`ï4smÀH*Á³3Ï¿§†â9b#Ÿ|µ9á.Ī:æŸìIdü .2}'úlYöƒ; {oCéEM+>#¡ÕXÏJö=5—ÇóÁkäþŽ Õïviª¢-:Ó¿úlšÛ-°Å—É^aªo‹Á}Å^ÀtšyŸ`$´u-éÚž§†Ò+áÆúf´¢g+«jZбþ¥>ÏmHÈ¢ÏÐÃ+[wQ€Ã>˜öj`"!jU.ûªÊZFÂ'G“òe›XM)ÿp_‰0ÛªDžÏ[߉î+ö¢‡ƒv…Àhh5Ö³Òµù÷ÔPZy…ëêhR¢‘–U­hÆüsý|_þšðç­WŽõm±³(Ù‹z%QOC)MM«­¢ôár¯ª‰Ð«cÿ‚K3«‚;êð>‰Œ;½²|z2 ö“vAÀ' ­F;Ï¿¤†Ò³ƒë*÷Gœ@èžÒΩŠVÕ,|o‚akhé9> ö—nI4¨ó¡”¼íE##É‹Ø÷ÔD\[4s¸®Ž"%6 ±*ù¤þApÆÃ'‘±Å6×ñMrg> öº¤´òªÂ^°L*› ûžšuKg>9‚ÚœèÎOÑë‚>‰Œ5´›ß,)öŠ‡^IÔÓµÀëÐ^4süKj¶ï“[EYÓ¸®î†ÞÉÿJSÕ”ðöÈ$2¶øÃæÝ;A»9¸+ù[:h´Zyt># ½¨kIw.ö=5‘ž-Ö3¸«îž(zvò±ª|ò|W‚asËrxî³÷8”ÐqYO£öØÍóÓžIM$¸«ŠUËwÑŠž -k)åñ>‰Œ%‘`Òt„sðgÅ^àÓ.È +{Ó0yÐ=k=+Ù7Ô8\òɲE*Îþ'‹”¨k_°k>‰Œ1+þ¤m;Q×O–à“àé•D= ¥`7ä“tôwKüKj"ôÞT,)Éþ'‡µtŒž_§¦ýS>‰Œ)þ¤yvtp2 œvµÀèžÕ*(¯l¹ÜKj"ëYË+ldTmNüwv*‰À'‘q$³mçíã³eÉÞ àÐÓ-‰zÍÀnh)Ö2Òµù—Ô8¼à¢Êþ'‡šV­¬ï“fE"™Á>‰|ŸìÚI0&†ÍŸ`•@6,{IMd«(éí¡Xž£Õã\Œž_ýÁ÷I†O"`ƾøa߉îÂ'Á˜è•D# ¥`7«)ÙÊ øä^°Ñ*ßR›[US$“ýqËrØ£ýsm¿¾¶á“`¸Ž?o­¼ªpW.“éI]¸Ø÷ÔD6rðÉhÕÉÇ*sÖÐ'“‘dJ‰\^Lùä“EÿˆgoèĬ§Qþ솖bsÞB!ï΂Åþù& +=Sb#£VS2‘HÀ'‘ƒ?]/¢®}¶,û6€PÑ.È +wñ0iO6süëi"=[Ô´Â-µª=×Ò±‡·äé“7È'#‘_G‚p[rH£ýÑòÊÊsÄ“%Å^ lôJ¢ž†Rð +´$E¤Fìj®-Ö3>YMù#D?ÝVä“ñx‰`t “öÑ~9:X–ì%ÂI¯$êi(%¯@±–A-¿®#kéYå¿>?v|:™H$âñøÐ'¡”ÈþGŸ¡G߉ eÒå®ZÚø$¯@QÓª[â_OãèÙ¢+êœXÏ(z ÿ¼uìÈ…ë333ä“d•C¥ä–ä%˜¨¥H#÷{€0C‡&ú€×iå•Ç½ž&ÒÌ ôÉFà“ù,N>y=?}ò)åÐ'¡”È~fŧ®s´o ¯l±¯?3tb¶óªÂ]¿L$kI;¡á:þ‰Ö™‡OŠfV­¦Té·çN|òI"qn蓉D>‰ìg^Ìmßà¾boz%ÑHK¼„nXµ9±¹`yÜëi[EY×2ÔWÔ”ØȨ‡·c·~óóéx’Lòøtr¨”ðId?³âÏÒÎ’¿w;‹ÒåÞ}èÄlåU¨û€× V3'à“ï‹k‹õ¬êûiJ4É'g§~÷é/ÕÇW.$.¹p}蓉DJ‰ì[‚Aê—å`Y²/>Cz%QOËP¼ +­C#-»%þõ4 ¯lù÷Ó0—‰Vä“ÿ¹‹ÇE>ù“™™óç’Ñ™™xH$ŸDö#þ=Òºó>½ŸD» +ì= À$AÑY°H\îõ4:Ý襑S…´O‚|#£ÜŠÉøå⟞={éô©ËG.\?}ò|Ù¿øSÔ+KÚ¸'‹ü‹ÀKz%QOC)ø–JJ6sµù×Ó,¨LT&)ÉþЪøä?nž8ù³dìâUëì%õñ•óç’¤”䓉D‚”’[E³óòJâËä’b_yvÑ.„õ`t½ªiÕ- {7Í‚^×z6¤eBC4³êïüðG?½úã™™S¿H’Ož>u™|òøtrè“/}Aö”`~ +Ês¢ƒ»’}åØ›tHOFBëðxž7ãq!D5²z[®ÎZ_ÏŠGŸ‹G7­‡7­Õ?EÿöûI#Ï^¼»xÕ:{i:ž<.™!¥ |2óöë­§ô à¸oöc4ÅóÎŒ‰ l€f`̈'¦Áæ苪R•JmªÝ’Ø€9ÚĆ€²Ùv÷ô¢Í~JÕªR/z±Ò¶» æ`!Y`sÀe¥Ðç±Á6„Cãד<¯þ Øï3óÖ Á¥áõe+õävP³öãa>ï–ÞÖzÃ^ãðdPˆÙϦ¶‚‡Ó5¿˜»¿­%JÓãi„B±(.vÓÂn¾“›ïàBn=4ëæf]´WÞìí¼™Ûy‹Ü×íFðd~Us©d/0_O––ØÏUßOJ’„žÄu¦¥£ž„ëÒþç"óaÇ°Œmñë$%†Å[‘/MÍÅòJ¢(1MŒ*%’ˆ—‡–ûùH¿ ÅZ¸‹ {X1Ô®‡(e¦4}KŸ1ú%ù«Ñ.ÔghjªR^²6'Kj©'!Îf+-¾‰žÄuúõbòYó?ÝGOb¹<ììŽó›Ãâ +ë›8†åT›ÃìÇSsmÜåßÖ•$+F½".÷ÑâPì(’…. +ŹÚ¬›6ã:T†¯“‰˜Q•‡ßµÖO"ùŸ4TJÍ•WìÆr'xÒ(9“ž”$ I‰ë”ËO= ÷ëýÏ“XN·=Æ? +Ð+3ó›8†åB0 ë®ÞÌgS[=%ôÕ;Ë‹/£qUæbÔ'D}$âC‘*±‡,=\ØC¡8/C1Ô®¹õÔŠ@;…‹m™•x""ž´5ýåÿò»rƒÔø «ÕtÙñ¡ÔHÊêÀ“çªo˜ŒN ekk+k—àÒà’1ùrÒ#¶ÿ@`>ævt[#™îƨ•´“Ó'KfMÆ Ÿâ¥ûdÑ'S¿|%3¼YB²ˆWˆôóËýüR/YŠC‘Dœk'Š(κh +Û@†S™¸8½e1üô‹[õ °gþÝYž4šíùUÍÆrgI­Ó(9+ÊŠ'%IÒét¬u‚KkKöäö8÷Ó¤¤DtåÑT0Ë|‰‘éÉùvÔÆ8Õ{¾ÐbR–I6ÓeGùºXé(´Z9›-áÉAÖ:Á¥­E1þÓ/'Èþ|ÂÅ´Ñֽɲ×ön”‚ºÃíw4eé©’¡¢à·ÜÇ/©Ãt“…DÊyØC=£n®„Üzu °‚„ïÚô‘^<CO³ /×Æ Qˆ÷¡LÁ# 8£üKÖ&<£'A˰ß¼†‹æëàÉ‹–£ä$;)«ƒ“Šr§ÉèO¶¶¶êt:ÖDÁ¥å§»eï3}lœß›DObÚh{Œ@RbªÀxi¥"Ð/žI)ƒú(óˆ*~±‡À]xA¿p×ò…=qõ© µSõ͸òÔÇC¹ò¦fTª™>¨ø|¤{1Æ~05“ìÉç£$ÜùšåïI°Ÿa6‡ÄeŸøÅï?*´Ø/ÔÔåW5›æëàÉÒ;g³•ßl•k£àÒÈJä,÷h±‡,v(ÜuP}J>0ž:Åx)Ñ[¤KUW:žúRc}ß?)à%Šø„ïï +± ûÁÔJðZ½œ$O|vØŸ Á_ +Pôš 3>Ào ‰ßt™Œ’C’®š, ùUÍ‚d7–; ­V %g³I’${r5Tpi`ùÔ“ÛüNß›DObZjwœßW˜ó,[\{SÌó¥D¼|²¨—~HÕ—(ÒÏ/)êK´$ 0ìáÂ"'?nL¡v½º$êNv;ƒú¦Uÿ ó›5K$tpðvÃx~OØe=˜š)ÈïN§#Ü|‡þ=!%ü™0ÂÊ#\ vF ßõ +sS…ä0HàÉb³<)V:€”çªo(ž”I©c­\¹¿è&™zõ€b2Æ|À1ì$mñëÊ$öä;Äko¢`\}ê|0O%_ßRȧ´ÐEÂr ‰ã|'ÒPê›uq³n9ùdæÔœ;xê˜ß@߇àu†÷ZÙH?Œ°ŸJm òK]ÜTÛ{áI.ñ‡Í;üÓaCØkðýºÆ(9 +ji²4˜.;ÉNÊꌒ³¢Üi2:ždm\¹½ü“ÛxžÝÿLd>×vÒ`ën‹+ÙÂáªÌ¿Õ£>¢.ÒŸ¦¾ÞTõQéy¸°‡$K!ß¼¢>·^UŸ+qGpå)çgQŸ‚ä9¦Ý”w6›²'Ÿ $惩•àµÚ «^fÕ{—½w‹>KÂÃiòšö8`ˆ ˆ_~\j07•Yêf;0²Øì,©uŠ•8çl¶¤'u:k²àÊáõn ¿7)0Ÿk ;]Ûcü£€wÒÕøEÎiÉUQŸêS7b`Þ’*ø0ÜõÚ{ò¹Œ½v¢.Ô®OUŸ‹K)ý–—ô©6ýtÛ‰ÈÜ-XnF÷†+6¶²óáøbŒýTj&Ù“C¦5ËS6{;/$_"²¹Uà2¥lhÍ/ÂqsHüÊ}_ µ™› +-v“¥Y`¾ž+àI“Ñ©"¥Žµ[påâú§¿ŽÏåi‚4æagiã.¿ÔËÏuR1Nµýù¶÷ɬ›[x¶_ÜÿzóBÔRamOÍvð¤ ÙKjb¥<ÉÙl’$¡'qe^ò–Øç^}Š±Ø;U’”PÔKP•Ø»›‚„¨¨‘fx<(ìÙ£†ÚãÃYºJLßæ¿yþÊ•kàIûµ«_"„Ýä­’þ´°'Í“rÏþÇ~Ùþ´uÝqœ?b¯»øßkã'‚I +Áƾ`bâø‚±½h[•4Aix°ÍCxˆ!)ICKÚ7Û‹©ÕTeRÖ½ë¶JU¥M{ÑfmÕM—'ìÚDiE”ec¿s¯íÑð䛋Ãù飫+„ñ½œïïü>gHñ—vÚäPšœJÓQðIçŸÔm¸¸¶Ho¥T«ÜÔ'i­WB‚?ZFÿ|2.u/S(”rõ¶ëcÀ*'}²°©JîJ¦€øvÊfT"x­LÎ_?¸Èþ³;ÿHÝðÉ‚Ã6eEkà nU‰[_éNùdQaUJZkŠ„áшv›²’w1…’qˆR +ƒ5±mY˜¹°«l•Q«¤lDnež6¼ž$@Ú¡¨O¦ÏÒ¾?ˆÇwdõá[:åïœ(“Ôšy¸–Ûo5êbx”½¨ÌõpmZî ²‘>Å«Î +…Ññ²¥Vk²k¹µ…WX£ Ü2å“.—‹ú$­µµ<Â<¾ÎHÞÅJf‰'oD¥\½mÎÙXé"V™sæ@É6˜æ“2ÐCR?LúÏ<ÛM‚½Ö'¿d^•¾s‚ø0ñÉÅËV¶…±Vt¯‹ùå+zâ“&€¾Úúñ9&ìC¡¶Ì+%¼Ô¤WëÅëød¿üë®o*ÓxÑ'áyÀ' nðI\\{¨Ä-*%ÇqÔ'i­*’„‡CÊø5´r“ú$åEf­R‚,L[˜ÂSíHÜi©XîqÀE“œmG¹b’"푯# ‹W0h’äm¸û¡ ß³Yß Bà—~RÚ¦dR¼ö8K§½øË,uáNûì{ëä¤_¾dàHòA›Nmr(ŒÑ©¬hP–5èJª7ød‘ÞžòI—ËE•’V¢n >y =º†–éVCyÑY_)«ÄÄ*=™ßÀ)¹˜$Ì÷¨ƒO¾wJÓRozÿ´jÎ?D’?Ûæ@h§|8Ö‡7Š7„_òÌ!À½úñxKÖ}rB¸v6Á!µfÁ'Íup-0ó¿mÔAö “J¸¯î~øÍ€âó®|%G|²¨´|RWqTmáή¯tk­ÖC%nÑ'¡¨OÒJ”É•·XÉû—BÉ"É›M”Rdî¼|ÚO­rÏË Òñ¡i/þã™ü@ƒ±€#Ãý5Þ<ÖŠ@/wyàñ ·¥|ra€yxUê6ÌâÃòåëøÁEÊúª¡)¯ì‹|š/OùdêÆ^m½sN̸RÎvËç×õIÙ™^…ºŒ×pN}ñI-× âÜà“£ nŠôvTSSTØ>ér¹¨OÒZq’ ,“|2J}’²WØB)…mV°Jù„`Ùž)ia K c=À>«èr 6q¬ÿöñý‘vHB†gzf †;ñ&’™_¼‚%ï¾\ai/^Æ3þìž# {aúä5ÆU{˜„-é“šdüÎ; ³í$Ÿ™Ú…àu&¼(Ú»ñ(øä\ÛìäÀ'u‡‚«‡'Q–5ݪ7ø¤Öj}ÉÜ(ú$TžPR -)ëw.€G#ÌÊ›T&){‚xòf ¥LZe´G>ÓV™Í±B‘˜æÀ´ÃÈþ´¸Y*kR 3]+Ì÷£ÕUŸ73ðkã»[)g»¹]ß'û™û—É{0·ˆv£ñ–,6~¨ AöàSy¸ZðɺÔAFÌžž³¿{¢ êÇcm™ÉìcSí°áÖ×/ÿf@ëg~ßR¨*«Ó–óZ“]ôI]©|ׂO*q§|ÒårQŸÜÓdò*Ÿ¼I7Êž”r3Ÿ\m•½ò™¢Vù""2)›ñâ¹vôY3óæÏ©®JÍqq” V™î šs~´k}b9áEÔM +±dKßz9A|X¾|/ô㬶#Ò÷/…²Ã€RÂÝÚ*b}L¸ÃÔ¦V™Ó„d.Çøï-øã…uÕÖÔךxõgºè–e–#ïŸV϶#ñ³» 䔋&°¡O +×ï.Kßw¹ÂÒþöžôf±ßÇZÑÝþÃiÕSç—§â×í2Ìø¸ÐÏÿ¥‘.üÕ&>)=¾bÇÎç«ËxðIÇ«ŒvÖÀ§|îÁ'QMMJ)óò¥vZR•p”Œ_cVn²’·-…" ñaù½‹LúJ ›p¬—Ze®&9Þ +B¸/êG“ôn£î›eõà^;Í“SžÌô³uføø„íÂu‡Gšö£Í%Aô¼ä}—C<¼*ûÑxK¶V‡”ßœ(ØÈ'5frÝoæoÜ?çÞã äíÙb£ƒœ,¾®÷*^uZò vÅ¡àêµ\ø¤®Ô>‰‹kÁ'_27®öɼ¼<©Å†–$ëþx„˜äãët{¡ì]žY)“Vé“>µÊœ D ƒ8ÒŽ¦<²Û'µgy³ž³'Gö†&¹zʃp¾}¼0ÀcÏ7Ó³D¤o]ÈùBG’¼ïr…¥ëÎÖ "$\§½xô§7‰®öªª¿533> +ºýol•Mze[nwð ÷Ùhûë¦à“Êy­ÉžòIÑ>©âÜà“j•[ôI—ËJ)µÙÐÚéJ"`’>e—¤nX +EZ¶£”¢Uö%¬RܨCRe]`þÂêˆ&ùQ“Òë0,O˜¤ÖÄo2Ǩ”ÂL¯¶~rŽ ?ßLÏ8Äv<ûæzÒîwCrºí§ øä½9ü{³¡”ð7'<$H}îÒ­âG®]NÃŒ™Ñí}ã´m’~r²¶ªËø2KÆ脇ŸT•¸õ•nÖÀ¯öI(ê“{²ŸüÕ¡Yþû Fò†¥P$$.^·§”ð©ÙnùT;JLv©í‚’–c\0I0À¿že{\¥/'MüPcNË$ÿ?ÓÍD)_?Vòœ3=¯ Z§›4ãzoy4,}ëå +‹Wð¤W–%Ÿœô ±6Ôê0¥¤q“ìé9û­“û£~ Ùö—Fºpš9Y~Cùi@£2:UÖ‚O*+À'Õ^aqpõà“Ez;ª©)*l}ÒårIí6´v¾ˆOƇepD}2ÊJÞ­Ên€(åà6•’l¿äÔ*w°¡64å•Íw“¼r¬ØRY›šÎZa:?+¢–VØþt&u¼uû3=ã/;åKKÄ .™ïß`–¤î¸"Ò²ã“hÚ‹ÿÑ‚©LlÃø™HhíÕÖ;ç8Ñl#~â+D{ÓËI?³8¤ëQã+”œ£à°MÁÕ§|Rc´áâZ­Õ +>©V¹S>™——'µÞÐÚá"+=²rƒ!cTêV¥Pv D)/n_)¿ +²ðY°Ê™J*ô²±× ÿöVÙ„Åø³fæÆÏتª’y›&ù”RžáË'=ÂKý²‰WnÛîH×'EUøvH¾D7ÿ´YèÇÙðIpB0Ã/ZpmUµ®-Â)þB·ÓǙгŸ[I_xQšûüÚýAv¦—½ÑX SÄÙµ&»®â(ø$ÃÙU%ÿc¿ìÚºÎ8ž¿$ŠÏ¹¾c›Ø´áݾÁ`À€ÄM¶–ÀÒ%¤ ÆÆ&‡¼‘€I•vÚ/ɦj‹º*R¥ü2Mý¡¢U“ªj­ª‚kÞŒ1yéH3ÚÌtUÙsïÅJBñ˵¯ÏÑWGWß—s¾Ïù~›¦Öx < "<™ŸÃ{–Ýî®`8LV¯Ñ¢×)QV)U¤üè<ö§¡}ÿB×SºÛTG³Ã{XØÀ~!7JÔ~pÁ¡´§O¸sì¾Wú—ÎàÉòÚÖ—òdy‹”%ê#Qž›qÈÈà¸Åòdd=õaÑ딈(«Ä'lêHÉŸÆp‡ùÓÔL/8¡Êt æy7ä>úS{ñ&½JMa­$ù )¹»í3Öýë8žqf RÎ$Øõœ¡~¸,]»âr@#,O>¾LM»à%Ìóäß~[ˆÃÅM’³ŸÁÐpç¨ ~›ýàýƒý‰õ‘aÙ'N¥¼Êú +Ó,gØGCOÊôÖ—ò$‡”ÛĦ223ؾ{UñQ«ïÒä0!"z^"eTõ„*Ó'ˆTмM9%·ßTkÕª¢¹ á«Ž$×e:;_Þ_r'èé8jÒ)IÔ«ðÿ.Š]k¹#8æO +Ï“pC`Â:TjÏ“ñu4œ½»-Z¸C€»I¼O´K Ã…V7~“üç‚ìËþ‚úúfyu«JoåyR]ež”—ÙèJs‰ÆDx2OÇ-v£—Gضô‰‹^¤DDY¨? Š”p†UΞÀý„*…Éb6IYœ›qâ  ýõ°¼oe Ó²†|ºxÓ9 ñ®Õ7}t¸pÎ…Æ»ÅDJðÒ´%Á“†¤‘ñË-4B­øð¿½ÔD—eëç<ù»7J”Zs¬OټጭҵÞ8¨»qœ ø$àDáAiB<¹8DÏœ’9lºÂJÓ.½± fOŒ'APºŠ ÚÏ`h¸Ó)ƒ;ă”\ßA%všy¨û^öÿ‡;Ê€'«õJ­ RUa•2¦yrˆ åÖ^n‹ÇäÐjýt•½H‰ˆ²_é@J˜Ãƒ8Ø'{$~îœÏrH°\ž3N<çBŸ“½VVgh\ Ym&Hr}ô«tæ÷;T!W\ž¾ ¢îq¾J)¿»@‚ ^{OÀF V­1žtY«’q Ží”CˆãI¦ïàLõÝ9ú¶]<©®µO*™=1žÔÔÚ”áɼì?£ LÅ#€Éåt e,Ð=Ò`?Tù ¡Êøòw¼M:м~Lúû×KZêcÙªÔ™3C’1ñOlm4|Ù…§œ±v0 2°ý‰ÚïþY)or¢Íå£î ‰.áy²½¥†ópbæyR¥3ÝhSCElÚÑ$Ñw,pH¹8DÞWø*cTUšK*,À“Ez3ð¤¼Ì<)glåe6ÔØHx2Ÿ·¿Þm+#²Ÿß–FD¯M"¢œPš‘2F•S.ô ¡Ê“âæp/þº ýá Új¬{¬ÚL“dô¹k÷—†ÜhÓ@OËÊØ%àœ…Ádœ¹ÀÍßcñ«,ë'À“1¼x X¡áöHß?®)¬4ij,2Æ Y¤7Os×%Ó‹<¹mÛ6±y‡Œ4 vg—†qd­^“Š^•DD9§ !%G•0ÏŸæ¨ÒÁQef%± +º@Úß;eNkõ«»MQ’\ËÐ,‘B·èn/÷âñn”ѵrì€$yžäæ¥KÔŠØõ•ý‚Ú_ñá{ƒX¨zdÞƒ>ð ˜üÆAµ†1Ç“dÈÎ]-¼kŒ|p"hQ“6É£ó´ÿTaQµYVeUj¹ÎNo–2&àIºÒ <¹]×HIx2Æò¨dõZô’$"Ê]Eø9ƒH š fNà-O•ði°“îÅŸ¥‡÷—Öb‰©ÌJ’|NWì~1ÐÓ·bS.”¢»ÀÆÎJ_¿¸rB°PÓ.ÉD—eèïf­>ò«]ë™0IžäªC©k½Þ¦»1tdÏû¤'ù¦òýÙì Ìh4ªXzl)¨Ù<©®²OâR#ðdy™ x²D}’ðäV^v[¡±ZE?¿MúP""”a¤ä©r¶O:%[*¹/bIrÎ…¾êÂ×~ýJs}},(:ñA1Î@¯Ö7}|¤ ؃Œ3³nÐhÜõÒ©"åjéÅe„ø••å‚U +õcA +¨ïî 4¸¯"E˜Œâ(ë@cCã£2¨£õHÉú¤¥â“Å!:ì¡ovj€'+j' ª÷¨*¬„'ónÜb·`rõZôb$"Ú2Ê4Rrq”ûpÀ‰¶Uú»wLØ%@’À`_ÛÑÍöÖFŸJYÉAZ®ˆG‚·Ìº™äç>- ì§àIôáyñ *Wôíaš…q;zÐG·h9· â@¶^ì–ê ®;[ßÔûqòñP÷½ìA÷‰C¡`ö–Ö5OªjZÔU6EU3]i&<™/ÃËîiäâŽåŠð$‘PŠðs‘raÝ5Pålžìay2w©ÒßÍr×B/†‹~£z½©¦8 +Jm.‘äZšs/¿Sg~¯}g¸w C®ž]p Ðia¬ÀðøŠøe•ýZñá¥K¬|Šuççvp¶j©Ž'¹ÚÑ™ÿضsÞ½ö†¼OæSöÉÒÙý…EZkŒ'UVž'åŒ xr»®ƒðä·Ø=ýñ +úqLÊ–ƒOüz$"ÚJ¤üv(CHù<x¤Á~<Õƒs‹*!I'ì4çBÓN|ûME—E«aLEÑ4T‘­¢ˆÇàMú¯ºð”CߘVžœtJ„2Ü0IôjÊ ýw„ú?ûõþÓÖyÆ<È´â÷=çð1I Hˆmˆc° v –¥JKÚrÁW Ià`ÈÍ\BºV[Öh?L‹4E›Ú©Ú«ºI™6m•²[Ì\ Ž¹äF³\H“†=ç°<–R°{ló¾úÊrHìÎû<çù¼c²X=i‘A…Ü>IW´ +ñPJþP£ÓéÿpL>æàºL”:Ï_H÷IWiÍŠâ +¥Êž¤5¦ÌüêUž¬ªª +{’2µ¿›î-¡n´t•‘¼ IHR2ó—©{‘rÊÍ,«Ò‰’B•Ü€³¦Ù1`ò·uÍ s‹–% ŒL^I®JwM.ü‚Â/?O¦‹x6yàÁp8’¼›’"SgQŒ½µáw ß×Ëõ%¥aŠ–µTªÀ«BŒ6ŠP!³ÆßJ÷.ÈÔ˜sµFð¤b¯<‰wÀ“9Ù¦ÿódñdJ-7·›Ïú¾÷e7úª—I݃$$©š9 I¹¢ÊÀ*¬Êø1&– +IŽ;ÑŸOЧîVkÂTªÌ¬Ô+ Š´ rÀŠâwKýÍX4O¶SÓnNF’·Râg¡?êÀ±{Êã7GEû "{’ÿª­j󇇷]xÀ"?s…´Q3n:ØJÔ žÜ¥×+5VyéõÄ“)¿BÝòg½4´€ämHB’™—–”«TiãUÛÈ+pÀ*¿Ñç'èË5y{ù*ŒQV-=ãAJGåŸ5ÍgCñÛØkqKèñyZò>Jð„¼œ'Ÿ\ÀÃö˜ú :bÒ…þöÖE&¢V Š«ÀR]é­z94Ýx ‡ØIº(ÿ“3 <©)1 ž”ï­<©ÔéÀ“ŠÌjâÉ]üV^{-ÔM½¼Bž$$qô¤\ÉÝj´ ˜‘P•C07-ÜeÜmÄ ÉŸÎ./- O=–Ÿz©–ݦ6ÿòå„ ZP<ˆG†`«˜•u{¿ƒLŠoIh¥Ó§p,5h‘M7!è6¢fD¬@áPÓ`ÞsÇŠ¦asÅ(¹ é§3òµF¥Ê”«ÚŒd ˈ'7Çâ¶ò‰—+þ}ŒämHB’Ú š!%$ÐB¹ÏΫò;–¤EŽ‚ÿ4èÂCVtýðö*£6<ï`؉;@-,?Í« Ú¿ÄüêE¿½Ã™¸eß6ífž^"¤ü¶N÷R =ø^;8ý¶Â9ëáiª÷y\;ˆw°bWjOˆÞ`ø‹3sÖÃÛ™Ø+䑇;+o«Qƒ'U:0R¾·2[[M<™úËÍmåBý²Ÿ;’ø%áHéæ†Èݳ”¿ ûlß‘*‡¸ Ÿ5m܉FíøFmÖÛåÅ[5æð°KmI†Çºð¦»&wÒ…¬HtOÂIAô‚™l§fÏ3€¥/½ÒwSÂ<¹Ø‹g;±PíÑí œ¶¨µz—‚?^‰Rr‘ߣ×zßÝu§]ñ¨‹‚c‚£6jÆMO¶3?«ËOj˵ÀHZcO2»Í‚'s¶×O¦ââöñY_ÿÒUFò$!ÙTI R®R¥ ‰&aJÂë„ ÛЯßU7«³5¦•y'ÂÐL¢Ã}¯ÖðY}ÐzHTRÂNœÂâ{²~à¡%oŸ¤ÈÓ‹ØïBƒQµ(ÔÇ7‹µBÅ•JÌ­)I£QýxÞXgæW½ôÒ™¹KÔ4Rˆý¬¤|Ü)ÿÔº•-<¨ÒéÀ“Û «Oæd›ˆ'SvÝäö1ÔC-ÂISê¾#!Ù„™KRFŽ’`+=ÞŒ‡í2ÑU ÃqÀŠN#vÙïêÓ•…9šòåa§2³RëNBR6(s A¢yÒšhY>)ˆ[*ÓnæÉE¼ uû$E‚gÐ`CTž´È Mþz1+b;jA±êå÷eFýëóƒ]é/ú˜¥~î\0ç¥B^jÆ-Úƒèq—ü¶K)×Td—çì9žÄ; Kðä÷ÕµàIFC<™RKØÄk¯-ôà¥÷É›Ž„dsf>aH¹* J?¨Ò!Ž*á@’£v<é·ŽÉ=Õù»ŠË„Ç®˜jsFôÙÓÚ¬€ Y‘8˜´È|v›—ÓG=ÛEO®@Úb/¾ïFѵ¾üôÇãL…~Ÿ"ªa¹ê2‡?h.+ý ® Ø•±t•~ÞÇ }A’ÂÕÞé)4ÝN=ò0¾–Œ£5¥æ@vI x2[[M<™Êë&·‰‹^9”Ó³^:$uë‘lÚ$,)§Ü \ÕÄijÄa&F=áƒÃ64Õ„>?A_xc§±¤$L)vK2bîs7áuƒöï xÌàŽ‰âÉ'ŠSQÁ×?æ½qo¤LÕ…üEqDÓ;pþ +4¢OëÒ‹´†ð¹cý‡”HšÊJ¯Õç{2–Þcž÷r†œ÷2«†þl'5)Ry<8ÇÛÏ¡"ðdAqx’-,ûOn!žLúµ²ƒPíP`’÷ ɦðTO\RF¨rØ! ²~ÒFì² 'ºcAï¿™c.Õ †Ý†æcʇå_{íð;ÐÜ:1<éoÂq-Œ§—è©Û'ñxó»Ð`C4ž ºð'G¹Eåá +YO!EJÒhÐ_?žçïÈXºÊ|}…žã$I…^uÿ¹ Ra´Q3nò‰UžÜ¶Ï,xR©Ó'‘^O<™jËÍíàb uõâ +ñ$ ‰ôIhRòk œ¡FœHàÊÚ°° Ÿ $ÿeA7j³*ôûØ•yǪÌë‡Ö& Ë@£5Þ:&R‚Ãc÷äÄi<ífâW ³]ÒwMâg¡OžAë?…Etl¦™ºy„]?&#%i0è¯Ët¦#—úix¼Ì{ךõs—Eª 73ÝΑòvSFVqy¦¦zûCf~5ñdê.nC=ÔË+´äíFBB"$ñI)T9ÚÈq‘Så*ÆXÓÀBðó`#¶¡_ɪ-/ +9"ɵHÉ¿Ú*T#6î®m«vv'Р÷xyÌpŽž÷Jß5 ðäÃsXh–yÒŠ&]ø§‡·…kK2Üe&céu“]œ$_\aB`Åull%lhì(Œ©6êa3ÜB3»ÍàÉ <ɽy•'¥¶Y1.~Ý[ºé¯yO†¤î8!ÉBJN•-Ô¨‹ú·--R•>kÚ¸9ÐGï(¬•ªíjÓ2–ÔfV-½Ù9‚¶iL7j³‚. œˆÞ“Ùˆ[ã[E ‡'±ä-“ø™»D Ûeƒñ¤ÐP£v|¹&oŸo8ƒ¨ÿç¯ö——þ¨>¢3}é=æy/ÿ<ñ2ëœï!/õÀ#Ú“gÖÃÜmeÞÚ_ +ŒÌ./g ËàMA~5xRÃ/âÉYnnŸ÷e@™=ïc$ï5!“?iHéfUŽ¹°Ï†8Ucl²Ïê3šìÞ]\¶<òTfVjª%K”*Ž”o‹ÿÙ€‡ù[µ'Gã^àÉGÒwMRd¼ic» ÿzjЂš¾Ò“ðá"¤f¿îÃcycžLä‹>†c¤—Z§$Ãùâ<%Öcçat3¿jØ™µ«’x2åÛb^ºËHHH"“d¤ŒPeàþ‡…j½ HkX5û²øÙ!°\;áûÓhGÐ…‡¬(jOú›ñ4¿5qôd=sŽ†Q"y×$~îµázŽfp¬¨3kVyŠDñÇ7Ì%Ûs¦Î3/ûiÈœ—Lnø +½ÔB~r‹óÌi£î¹ÿË~™?5‘圿c˜2Ýýš •¨Â$H¸CDaAÅ™µ$""WW$uwjªö—ÝfvvÜÒÚÚ­Ú£f·v§¦œ­©-‡P rÂpˆr„kÐì·»!‹NÐBwß«O½êP ýº¿Çû<¦}Ý- OÈôøä[Ê|Î'³³³±OîŠÁ†¯#Äe#Üþgƒá…`RJ–13­C_^Ýÿñ…èêSŠl­F¥I?¯}I™8±Än¹ðf`NÒ$ÿã|Ø@ ±e¥,ßyŸdç§M‹ÈU›n$9Kô1|N=ñÀ@~{ 太7ú$—ÜÅ»™I_œ²2ù¬FBÓØú"íÔl3‚œÙ~n@♨©zº·2|R¥Êا:¡ÑÄDçx|r])±Oó03á[´<+$x¡a0˜Í.¥„uNÔ3ûšûzÞŽ–ZÉïkÂÿ`ŒºQSúê}£—žm‘>Ê@,•º5:,™ÌkQ0ÎP~"¶Ï@öø#!ðýñ°Š¿  ^)¢ÆÆøä\3Õg”øå“ý%ÄÝ‹Náë§0OùäÓ|¦?ø¤™†Zƒ}œ1Ií +DÃPÃ2ß$í¯B‘G²öFçÄÅ¥s>¾7gƒO†`Ÿ îÁúä¼r_§ì„ðµ†Á`¼bcæ RJX䨙žm^³ ØCWÛ˜ýZû=Öúuù¾[ùÍ‚˜ò\å mR”JëݦֶÎÌ—äóÍ{ðCGµ·>Š0 þúäý’Ÿœ»üP‹ K…¯qã²QÄï>ÙUD ‰¯.Òsãt–úÓ¢ƒSVäî¤áÈÿ6 &éa²!0ÝZÁtýЄ~wQ>“”$ÒbŸÜUƒ•Ièó`’ÏÛñ¡ƒ5®`SJ`ºqmåÜNÌÙ(`ÙÜŒXðÇõ{ïVFÞ)‰êüyŒá}U|RšW³±ŒTê"Þ<·†ù½´Äï ‰Þb?<„óɾRê‘™æ-èO,»­_2"ÅƼŸÉZÒYèká>ù§saž”8©ÓüÞ o +…Úr+9g[ë9m¡Òj¸ƒÌÿ6F€O&­û¤ü@ÁFŸZ‰ðØúø{->—9Ú_b æu—R +'ê¼TçY«äX´Spž…mxæ´5t¸1ìÛªÈOõ›òãÎd%¾£N?¯`j£b½9néyÆŽ“ò¡ËDwá»Oe$o>9lB“õÞƒŽñT1¨ÚS ÑGŸý%įN€LÈÖ&Ý6È'À$;èÛ˜ãXÀM’ƒY¤• L+`ç麻" |2;[2‰}r÷ 3»y‹Ôe§ -/1 ãìÞ1JY+v¥„åÕ"Xê«ŸvC0dÎ-á㊹¯1¬¶ÑK­$0Ò(ýó•Ÿ\Œ.ÏUžÔiÔÉiò£Ú—t Ä’®eBëߎ(¥‚Ñiµ&åŸè©÷Y)‹÷ UðôjÔLÏ6£EÁ+E´p%ÜL \!@}Œco1qëœì³¢ƒÓVôüâLØÑ¥¶Ï¸¬¡ª¤²¸ô¨Äy”ö-e>øäºLÖaŸ âñ9;î\ƒ ƒ :f­ä˜YôJYC=i¢[IŠqK=Ç&\CkZn%aë|ÞÎJæu>~W-»mß(ˆ©ÌSžÉJTªÓ¼ غdîĹüDlŸì.ÚÓ탄€®ô<' Üί ¿¸ìÌû­"º.ùê“Êá2rÕA­´­• ë´Qãuj2&jÖB÷W£²÷bèØÌŒŒŒ}2ûdÐ.p! vÂÝÉGZb0˜€#~¥6¡Éz´`ÛÊÓÁ^Æ[ç<3¯í¡ÏÀ-;i÷ÍP0ÌGúneä’¨_D—ç*³µš(•Ö»Œ)2×ôRh-܆Of ø۳ådWá‹„Ü7<r¢¹¶ô7x9Kr²ŽôåPàÁ©—ŒT’ÜÏùY'è ~Õa\ÖÐÞªPY\zllfLt‘’²Ñ'v"<¶<ÌLì–š¥ v´â@‚ƒÙ"WÊ‘ +–7ט‡u±€UÎÙ¨9V/¡}yÜr¦ 5HïÕ„ß.‘;>:Røn|BrؘäKbÆŠ%3Ë”Â[¢_D°Ïr*#þ»BÉ}ƒÄ©R‚®ô_!ùú¨™† / +]bf±•œi"ûŒp~}¾ÙSL<®'á·ü(%DpÚ˜Þ)±Ü"í©Ÿ<£ÓaŸÜecÁ†–2SðÊÂ`0[FüJ9c%wB-^rË¥VòY;«—×Ün¦MZÑL²ß\:\{Z‘wL­II=’˜áÍ-3ƒÎ-¯çÊD7kŒ¯–Ár!‚nBÓáKCä@^•8 }õI¾´`GÐ~¯) ³MĬ”°ª©†°5»lkz9o£À'—hµ†ÀHæp£ôoWö|>º"WyöxbjZê£Ú’&X±ü?B{ãO¬V'u~` zb3÷àTóa•0A¯C.¡ëBÌ@º.9ȱjI·ÞŸdª—Œ™HÞÖ Õ€Þb¦AJ'êè® +š|;õdî!Iì“»b0[¶K¡å®¶Ñ‚—ƒÙ>¢UÊ‘j¬Á®Äçۀ͚ÓK€³hw+Vé¾N³-Ô=“ìƨ_ž®ÎSäg©êôMü ¬23‚õLÁeÒã½0³Þé/!º×½Ñ«xô$#Õ¤}´†šk¾.ÄÌb+9Ý@BŒüRJ.¬O-üœc‡£Áv‹‰Ÿ„‹{e‘à“Æ™ ß›ãñI¡¥­3㓇ÏÚ“-­Â—ƒÙ>¢UJ`ÆJ +õZ\ëzÉæœ`/~ÞκåMTóQ£ô¿Õá)=p£ ¦ôÕñŒ¤HoöJ bÉ! Orw?tTûŇC—‰®"b3ñè»L˜-´àE!ræ[¨F‰³ÐŸàûCWI_g´É4²Íd`}Ž]åáà“yyjðIIdûdÐV&m?ƒTtwâbÇ`vâTJØŒ¦…9Ùè–ðñÇ6ú!èåŠ=i¦Ç,ÒžÚð;ƨæ³qç²ÔÉiÑ ûT/8¤L¡‹\×KÿJ©`s:=Þ©'z‹ PG¯>9PF +t¯C¼9O皇WI§·ð½šî¢=ãf~ÎÃ"ŸXuôˆ‰þúò>:63;;ûänŸ3>¹ÐŠì<¥"ƒá*%,æ‡Zñª…Ç-çÙ.;гväî`æ¥VröÓú›Êˆ__:\§Ì?®ÎHO9’ñSÁ[sK¥Ž½ôÜâf^Ôp)ÙUDxõÉ¡ +ê‘™&è5Ô¨™ž±â]æUÀ.ü¸žìÙäDð*ŸÔKúŒ’™&þÃNWÖl3âº|˜¬£‡Mô7å‘œO†ïÍ™T©T¬O†-Fxø?Ö¢²hG bmï f;ˆM)a%£5Ì®$ø›y-°5{ô.@&A)W8ü†Üôj=Pö×+û?¹ðvužâ܉„´ÔpH¯Ê·£†)SdÂœ–œô¯ t áÔ¿ ”ÝE{ÀRV æ“\ܧ™w(xXEÎX5 ~ØíOÎBÉHÁÃò ¶ßO¦êé‘šÐ/òÍÿدۧ¦²;à¼éЙ¾Û1÷ÜsÃÊZiWË*AY+,âÝiÝ)«ÖÖjʃ" +†›„<’ ‹¾è‹ng:wÚ7}×v:Ó±o;íl¢ ‚_òù');½-ÿT[ª¼L)á¯Aßúé‘GuD5äKOš  ß wŸ¶Q@î¥ÌýL´0Rjò$»¾vÏœÄü$£ƒ 긣¹dÆÑVúû_¿äð¹’š’-žÌã #l©5V¸¨Oˆ÷JÜ—ƒÉhrŠ”*-¢:§…*Làå²W\V¹ÖAã_ÒxŸï‘–¼â¸#?(üófáou¸î³ÒÊŠò¥gö›ÎlkË÷ŽíÔ–êÇ–VýõRÁpƒ0 [±1ØH¸×v}#²eQÀ¼¹ÔFÊÀ5Ãà òGRfô!C1 ž´Hºvþ­Y诂 ÀCMÆœoÝG-4ÔÆ¿R9žˆÒ¯xÅ'Mˆ¨•”w„L?! +vèÉe§“¡ªêGï”ÔT +ô¤¾›âÉ¿^txZÄ`vIrˆ”@ ‡ó“ï1ÉP^ÚÒËþ»ÖA—ë]t3snúïÛû¿ºZä¨9zéì‰O*O>qú*°üøeÞìÉOõýìÀ“ëBÀ,0LþfÏÃZáÉmqœ·'¡èSVªæu“ÇÇ–¬Ö¡‚&RÂÁj=ï ðñ =€aÙ³Ó™qGîÐ}'O>w¸`ï¹&mèI6¥d÷ò`n¼è¢ÑăÁ¼õÉRÂÌÚi´ÿ€d!`K•—ˆò•aS^óxýÆ{¤x/c瀵à…_]=ä¬ùàÂÙ²òòòíŨpqÙÛ_púNýøþ:XG€”`ŒþzÃè·â›u»IŒwEr?0OÀ„adçm¤jV2¹²àD炼C¢nã¨E:rø\IMÉO"&uØdVµµ»01žwJ܃Éfr”c­"<Ã’‡î6ZD¼T… ’„Ä”W1³eŸq½‹N8óƒ­{ÿÕ´ÿWµ~~ì'U'¯Ú–—ª-/·’²„‘²¥ºx¸A*ÀhÆxKrÓ“¡6þUÐGRÎ;È@½!¨‘”“ŸdF•ðgá0˜Ú „ÍC‹²KÃ-Æw@“5%&¥ååÙГºlJÕ¢>aÕçD f7&'Hi¡ NF©ïÑàž—¶ô²ŸŸ-»i¼WŠIá7“Îüá¶ü¿7ö]>RûYiyEEqYåM¯ +s_I‚—ǘ'‹JOÿù⾑ëä[³áq#—%î˜Oœ#V¼üÇ\/†ÚHR²D½aÑ)dˆ”°fçâhjoeN[CÍùBy9zRßM)Ù`Ïw¢>ï–¸/ Ã%ÜI ·žµÓLìwºèzÖ ™âªŸ<ïd°|ÑEŸvPBØKrÁ×µ½ŠY}âãÊS¦“•¯Ø²ÐÄHyéLéÍäQyÜ$Nä†'UR.º ÷qÖQ è3²ø ˜œ'!³a¤)#˜Œ(ÏKmXX?%Ó¡#xZ“6Þ6¦½ÉÌ“ì5å#Ï:ø¯ Ã+|I ûÜ}ÅËr9‘ö ^Bÿ^‚*UaÆ{¤õ.:æÈ¿{ÿWW‹\__ùôø™ÊSEÇ«6aÙûÓÃ×…'Íü¹µî3vÊ}`õ Üt«4’'%\9àŽp_÷x;²iËeeHŸuJñnéi]t‰¹EJ ¶á¤¹¸Ð¯xÅ‘&4'EÊ ôµ{Bvó“hZWüÁy§˜ÚŒšµ±WM ©àÀ.oz’·°il2Ãärçw#>¯ “;YpQu£Ïª+”>ì&Ü¿þÛ—M[Â1Ÿ¸ìgìt,1æ¹·¡T¤j×’"eÀl¼a€¤÷`F-ºéxJÓIñ$ùÏ-Éd2¡'õÚî1O®uHêdà¾(0LNeƒ”ÙEÜn¶rÿîow"jß„SÆ<»§$e:K §? »(1hNŠ”pÙx‹õ§ùIà„2i¥)Ì¥]µÐoê÷U+MñdoaÓÒõŠ¶ ñ»¸„1Ì6É>)a?š²RØ%¹÷]’E—8)§Â€ŒTI©=°XVýdÑ) Ô%EJ¸¦¿VXpÑô.´i›ö‰dڌЛL&ô¤^›Ìêµêɇ9ð´ƒFx¯ “›É2)áF²vî_|÷dÙ#΀xcrs̵‰ªsðX‘d` ‡¡6ÒŸ)fÃðMÊWùlšž!ægÛ´{R–æÛ¤Q µþü(H=©ß¶âÖ:(m¸/ “³É6)-DÛS9‘­H`ÌÕÁçOJ ±SÄ¤Ö +)çìäAíždH ×Lµ’XZwÿy§æ³Ã¸Eœ³KЛL¦„'“újj½òà½ÞE¹/ “ãÉ&)Ó6ä—*‹²”s¤Ä™|üâ´,$CJ¸` Þv1R¦k­…Ý„Ížœµ'%À$zRŸÕK=˜ '1L2É)á°+ÁÞãý•wO"J¾ä¡SVšs¤Ä$ØÙ'ïÞèI•”OšÒ†I6‹Ú5žGd 2c‚nxþ¡'uÖdV/8È<ï”Ø4ðó_ &÷“5RŽZè¼CDOrÉJ»8k§cY)tò¤ŒðFl¼E¼‰”A¥Ÿµ hºT9mÓr±°^9¿MOòæ6MMÁ¤ã{ŸïO +Ü'?ƒÑK6H™ü–‘2$liÛã0Ég“móN:‘ùBk"%&© +ÂXùů8rK¾‘”fãÃ’›‘2-wŸsh9†È’êÉ U<™‡žÔY“‹ ‹¶S(}Œ÷ÌÇ`0ºKvH YòP|GqLØM&­I©»ÀX”Ã7 o$eàša¬YH×­]ZŠk'diR¦£–wUOæ¡'uÔÅZõ“x¯Ä}Úc0=fƒ”VÄ‚“ÿ7ÝÍ̃IÀrP‹ŒÖZ)#¼‡EQI¹ä&¯ Æ×x2¨ô!;ëwŽöe6O&Y}[òA’²1©«vÕkµƒÀ’|ÚA¹Ïy £Ódš”[ ᕘ"“C—%¨HŽ“LTR†]dHi~)œÿg¿Ü–ÚFÒ8îWØû­šHÝÌÔj/r1Ï°·3¯°w°9gCÓ>É6¶!KRµÁ<Ä<Á^Bå>aŒBI–Š÷k  >ÈƦ%òÿêW*aK²Äÿkõ¯ßÞÕ»Ù)üh7'ÑïkáÄ'ßG òÉx>ª2¯Ã‚Ñ{f*ïv@¨™©RÒeKÂ쮨L@43Lz‚j¥¬Æ ´Ä¸Jyd/nj[C•’¾-=Ò/þ‹$±¤ý~û$Ê+1ƒ†ùö’N>ùÛ¯ðÉð”+“¶u­›×>?1Ô·: äÌZ)–úg,'S®”(åX¸JYO²ç7ô!JI_‘s6R:L§\ä,î¿Iª±9Ún‹?Ã'CV®O¶ÝÄåM¸ÌN)iVÚK`å 쯧dÖ3ZA@)gYâžàž7QÊ·÷tÛ“ÉI•’Ô¢•aãú仇>ªò’ŠPÜŸŸ¸¯è‚ú&\f¤”4+•…ÑtjÓÅ>Ùi¤yI˜þJªËú¥Ür¡cH>'þ ŒvvŒÆ¨ÅÍbÔ|#~z"à“!)7©O«×(ñ£5Syc®³PJïjteåOÎâ9C5n@)CÃÉ¢¬øHä“žj¾¼¥5-©”ö¤ë8 +ÅoHŸ\6_?৖‚ +AEdRÝö±Àå½ ¸r+åTƒ®¶—€O‘nŽ×’RTY%”rÈw–ôÍ…JI_½ O,“^cøöI¾“þ›´ød(Ê•Éž¸NMÒ[ÇË0Ž•rºÎƒ3—‹—„ ¥ vž;ÖÉòw÷µ­ÅJIÔ⌎<œÈ*éDê +Ÿ-QO˜»‚½^øƒg*J= å¯\íÿ”g‡yãhÍTÞÕ€«ÊÔ•’h¦å$¥üÑÀy(—V†‘óC)C;VÊ7wõÍ…þJIªùê¶ÞΰÉEÖg|ä“¥å¹má™$|2 å†eçÞSÈ$`¶LW)w¢Æ~RýC!ÎÕÆî´×c)eJéO)[iöúŽ¶¹Ø_)I5‹õ‰¢5ÊÂ×£‘4‹Â<•|2ðåÊ䧂ù!ÏzëðIÀ¬°Ý­3U¥¤Y©3º°…`C–R·Ì’›—¥$ig˜òÿC(𔲙æ/oi¤Žç}rkQ{~C¯'FOpýj|´OR·4Ss»ðÉÕ†ÌÈÉGk¦}ò€™RO™SñIVÆÚT?N+ÍʱÑ"¥T«”dŒ/ojdç•’<óÍ]}²u­(k _m@>YŒIŸŒ@&CPnFâ:­zÏLõ= ønJ9 µØ‰õ”úÇ~è¬ð½8”2RîÇÙc¥\ÔÊ5:fìËæùe _Nz߶¬¹b”KKù>øÚ}Ì^ÄÊ»ð=`ŸìLE)é +Õ¸ÑÍ©.à;'s÷‚ƒRŸÊr¥¤O^ÜÔ)”Òsôµ2¬t"Cè¤çw¢óÒUÄuŲ„^‘cá§Nè­›‡g^òp9H¥œ†*´³†ƒ—Xxh¦yILa5¥œ5¤‹ÅGì¼O› Ú»ûZwE6ÖУS(…aé ³åԜ瓿‹Ÿ•ÚjT ×'×ÿHÝr´fâ= PÂÅ•’&¦Kýƒÿüw²¼“R1•”rعãíî’ÞW)éêÐÉ"ƽr%>Ô'£²7h§$4)*¿DÔêjDEd@v,°ã7L‹ *%MLÕ¸áÍ} ,8®¨ì'Ý¡”AåT)·°Í…o•’|òå-­•fR)Ç€”û°Ð]Ÿ,E|2 uœõÀç'†òŽ|çH¥Œê»ídÕ?˜€Fš—Ääé_P)Õ|lwÛɲwÿÒ6¿UJúäý}ìЭÕâ&mKâ'i*>ä’é8«¦3Žž˜ÊÛ.¢”Äe(0­ «ÄŒËWJòØFm3;Ç#ý~}GÛ\øJ)·Üm-Æè:ÌçÛYãt%Ø8'¥O¾_š“Ÿ p‰˜L‡W1”Aab¥¤³öx›…˜î +¯%¤RqŒY(%m¡”~ apò¼ié¯nk›‹_)%ýIžI¶é_)»9N2?Ü'KËl[üè* |2°%£iÿç/‡y£÷ÔtTw)œ2™RÒ)eatVÔß?¸ÖÍ»$¥t·PJŸ1Ö“ìÅMmë¥\Њtÿ×!íÜ‹ƒfËš+ ^\ûÓ©´ ‚X2šešã +LyÀY&SJâÀ2Õ7.H+Ã*±Á¦1;¥´ ”¾ ¥Ü³ç7ô³JIûôÉA’Ñ·äŠ~®3l˜Gy'=O;‘ˆk’ød ë$J³÷ÌÄ»ì“ ”’Ž¯% ¡‡f¥î +ßK@)ƒ IcUèR#O|’Ø\ÐÞÞÓ);Ÿi¦ù(Ÿd=Ÿ pmÈ\ ?ô£5Sy[@_¤RŽé“•˜á:AÆÎÉðb…R +ŠÆÛ©DÙÖ¢vV)éÏr”‘mŽ¸‚»jhg‡%ëdçK‚ŸJ *ˆåÚ¾×{Ï “€@3¶R’¤åT¥üÎÁTh¦yY—­”i(¥/H wêäg}òÅM­a餔§Ú9Zú•cFß^槕ùRÔ$]ùï?~R­M¨~åÊdÏ2é}ûùß2€ 3–RîDý¤ú{S¤“åÕø¥+¥…ùq®.’4î,é› _”’ö·ïk#eÒ;·–˜lËš£¯HX~?+'Tßr}ò0¯}\Å`„ÿJIP%ftWÔß3˜"$´Lðò½<¥Lc–ô ÿ»ûÚ©Rn¹T…îØÈs,¹ü6‚(/ ÓÝaÒ[6"ŠÅ Õ§¼P"NNÿüDŽ[u€ÆPÊeÞÊ0Gõ ƒ©ÓHó²0.S)©ë”?uÀ!‹ o$¥|{Oÿ¢”‹Ú«[Z+Íè+Z 9±™a}ÆuTMÛ¢àÒYà“,!Cù§7íц LøTJòzJýÝ‚YÐÎÕØå)%ýÐ~RýS2Fi†–þê¶F&é)%¹åî’>üDÇ ´$úŒëjlNîˆ9’–ß~…O¯"2{Uæø¡À”7!Œ…TÊQ.AsS%ftsêïÌ‚î +¯% oápV ¥ô§””þòæ±Rn¹ìÇ™3T6(Íj¼Ïa?!%³ÿQª‹€O¬\™ìmüÂí­ÊÛ&@*å(Ÿ¤m;‹·ÜU¦aq(eÐ » |qC?VÊEíõ­“u¿¼¾£ÕÁN?Ÿ,FÍÊc.½>´r±sš3ŽÖLåcaŸìH¥*¤”tŒò³ƒÔ¥•a嘥 ”Ë^Œ{2ém‹õáǤέ „ÙLÍ•„¹+˜«/ðÉ€Õ†LÄÉñÞS¼fá†tqøì_‰ÊoÌ'Ï»+¼–J¹ ¥ •e¶õÏkžO>¿¡×“Œ¼ÑÎõ±™>^~ùoGyÛ2w¯gÿêê |2H%dŸV¯ÙyÞ[Çkzhr§)~ÐÔ_f;‹wÝÕ‡,¥ž:J +¼ôXß\ÐH)iûöžNæ/Ãêwp'ËËÂø*>×'É0+ÂO©6dÝ‚ñ¿5sP¦"H$jIc R.“f˜Žê›—C3Í˱ͥ¼Lh`zÛ݇úÖ¢TJÚV¢Ì)°AÇWÎeçdçÿÏ~¹/µ‘\q˜·HªRµÅôepU²ù?ï‘}‹€m°Û F +`¯×y ïCì_yƒccŒ.ˆ‹î#É1Žrº[2·õ®¥iÙüN}5ÕŒeszÎ×Ù«ìŃLŽTèrü8F…k?#ŸdÖû ¾œk”’n–¥õ'Á@®R[‡Ë<0¥4Ö.¥§”oçœÍ)‡|rû®SŠ2¥”òF‡¾£•OvqÎs[É[¹¥ ¥.Ïá“£ºÍõ器­+ð5r•RÒšJÕ$”òAÍpÕÕ¾R®H(åuµÐ’_MðÝY¶¥•rož_•±bì“ýK;·›Èz®˜Â'G&Æ:µð×DûG×zÀ`¹F)iNÑPóm?!’R\ä½KúJ0”Ú}•8ß™QJùâöø¡§î\üd%Ás½S€çÒ•*ØñI>92¡kÑÜ`Í”8Ýpñ^|{\ª”û!y´"­?žjR–¡”ö1JYŽ‰gsÒy5íTü¢RÖS"ç¹ziŸ<Ë\H½üü|rtBÕ¢µîþw]¶.;À7ÀE¥Ì,‰¼'I-¬?ž^?d ”¶ AYŒðí»J)3Ø¥;èùHm[µO(…ñà“#Bø)vºáªÊÚn-—(eH–b¢iûÁ@Ðt¯“9Ïío (eð¥<^á/ï°­)çx™·Öù¹ŒGEÏüÃ.­ß…]¥/ðÉQ Uˆé[´¹>>–Ö› +†Ê9¥¤ÅqD`ÖßdªIy–PJëR–Øæ¤óú«%Õ)¯?cåøY> á e•žPŸ‘Ð…h¦Ùû5n½— ú•2³$òž¬¯Ú*`jò½Œ?(¥º™9ñ_ÿådXcí“ö÷’y²âf=7»èjOŽ@Œ©*d7þÖHËöO®ýv€!ã›k¿R†d9nÿÁ€-ü¹ ”Ò·ý­G“™”ØÈ^Ü/FxsûÝûõ”:ú‘óç<·h|ÒFeìšBÅsU?-©dï×%Úpsè)%M(ZàˆJ‚çÃrØJY[µÿMG¿«”{óüÍ}ÖûÑ\)uª4ž[ŠLÐâØ»¥U>91¦ª@æß~æ6mwŒQÊý$…03 ’=ã-™¡)åAJy%´›k¼–»÷Y~‘Óº÷OŘÊ^6$*± ªN¿É lÆsUU©”8Ýp­· /#•öß_ Ô'Qí~PJKù'9©ÄùÞv©:§®õ>€ÁÒ¯‘­uNëj‚#<¿èìÎ2rÈ·Ç·H#§œ-ÍëY~6ßõˆÏè5 ú“¨òϺ÷F,ý!?<A¨ô•$§~€RÚÂ×Û¹œàtÜ#™Ì†\Û.…h·Ç”OÖÓŒ +ÔZãÖ›‹ÑH’ÀR”zbÿÛ™a[]{TÜÑ…ôò݃¾ë–˱$5mâµyS¡Ž:Š¨~È I)“3 ¸ŠjR´Õg<Þó„è$¬‘–í'²‘²ßðI‰ÞKŒ4Ï@Cùx™gØÛ9çÕ´³9© ‡|Ñç=èþ›Yþ9ã~?$³ž[Pbé’Xª¿hýëƒ Iu®Å¨kZbàJ™Kj-ôÕ5ÔSâ$¢OyaadƦPÝððTò+j_È¥õހߋŸ¾^4w*q^ðØÞ<}Ïyy‡]¯‘=™Ü¾ëì/pÅÏúDΈeÌ­­Úϲ¾ƒ°†RRkA)¯ö{)&3‹rÏ›ÐNŸ´?ÿ ’O'¬öÈ$à«Á×ÒHï®FW#éÇZR£<·ÈßÜcd†¤ˆŸ£‘ý>ùfŽÿ‘¹¯G?-ŒX–â‚Ä’žps¨¯ŠÃ¥”(e€ÐƯ&ôÖ[äZjà“¶Be¾™ü{#í´ŸºÖ~›®F¶´FÒ/ÇØaXì?d;3JÏø ‡ì—ÉíigQ~áôÏh½$8Z‘å¸R܆žzöó† N¢n¶{¸€RC3¥ò³?ÿ’>i'~ñþA׆~-«º¬Ùo ¸ž¦ÖHò´ãžñ½y¾}×Ùœt6¿CžcwŽg=730n’yOEd).È{á7?*:”20>¬‹ƒ°üÏ쟕ÖÀ'í„Jû–÷—FZ¶Ÿ¹Ö[úñS…H3I+q~è‰wØ›{ìå¦4rò‹Ò@"º=í Özb¹¯-<Ërüì{ojÔÚª(,E)ËPÊ œn¸Õ¤¬Å™òšçðI¡ÓÞJ±FJ½®­·kÓHú±–Å(Ï-²ÝYöjÚ!ýëhä”ó…ÙÏÛ"ë¹÷É~0‚‘÷äqDTÜ|Óžø¶“‚¯kJÅ=‰º¦îƒUÊ +”òÓlÓõÆÛHËFôO=·Ac„7RNû©k½%7œžF¶Ö•FÖWE%Ζyæ!ÛѹEL)‡ÜœCèw¾šaœû×)K½>Ë“¨¨&e=¥ ’ðíQŠ 2@(å°!«$“©Ñõ—ï•ÙxPÊCgÛû)vºŸØ„’4²±&ª ~²Âó!þvÎÙ¾ëtR3X‡<ÇÞC‘õÜ|ò¼XjÓ(,ËbLT’œ¤šRa½`€ÐyWÊr}rž%]÷ŒLB)ƒ •êZj‚’ßÂë ~ßšÜÉèS9Æ +ÛÈÞÜg/oÿ:élß! ôWvî)» R&/‚‘„Š<‰ºd ÖËux}UE¤9D ªaèJgëßnÔh?‘t,íh”2ˆè$™úÜø¼?ü*n,~JaÖÍî–†l1Âs |w–½šV긩52‡<“IºÞß{$²žkÑ'ωeÞ“…eI¶P[µ_;0(J1‘ëªàZE_¡”ýÉ4Í"ÕQJ/ ¥v¨ ¿ÿ鯔üÿiŸ€a`4’²¥5’²çGaþîÛ™q^Þa[SiäV°yæ“SÎëû̺F^j•´Èy.‰e9®òF™lÚ®&øB* ~–PÊ¡ò~]Y m™~áA +<•^?ÍÌ‹¯¯J#×ÕK¦šàÅÈÿÙ¯—¥6²3€ã¼GqŸKg6É"UYä=ì·w°läºK€I²˜UööCÌ di9ÜoBÂPK`ìÎ÷õi5š›„àèòúWW‹©rMŸsºû×¼äûsž!ý´0ÒÇ$üϼÖÈo€AÙ`YŽ ,kIobµ/1ÕYàœR˜ç»·Cˆ”¿ìfÙl¸³-ô)gŒàÄ[øΚi§™ö¥§(jRŒ„‡y5Ê>Yì0Àv¦Ñ¹Qý†ü™'·g¹v4Þ –Å<‰€%°¤¡{¡©Ž¹kJ¤|¤¾¬H; Α{Fˆ”0Þá¬Ö3ÌΈ«¬Ô¾èEõiðM +hTç`HNÀ9•0/,°½9ckõøa´‡ ÙŽÉõqv¸Ð…úÃòÐEÈqH–#²çuÝÛ€ê,X;ø: R>Rðµå¬¢pš©?¡|,òäc ד0Ãÿ2é󖢨û†TŒô ?Ïã¼â/ÙÖ: ´–ëIF¶{rgŽk÷aç„zXž,‰‹„ôE÷ö î^-)Ja"åãÅœ·HÊF’¡}ž)»:Üù¼^ÁWÀש{­)Šê›ÚÙÌòzZ\Äùi„ƒ|w–mL +i¹±žf¤ÉIãp¡ ïqí!,Ý€åiT*X6–},ÖIÄ[G"åcä¼5áø9ýàçGëïº6@ÃBOÂvV “EÝ#‘)qe¥È¿b;ÓÌ$¦[‰÷òäî/›p¬'¹g¤"å]Çû8WvJ:«HJ;£5)ŠêzõÖ§b3‹ŒCžÇøÉ"Ï¿b[S†â° +Ó­»§Æä?ž­³ƒ×âÈ2µã­gË+XºçŸåiT\$$lªÁR_0óµ¤(…LÊ RÖu_Nït³¤”—)H²È“w8QÍÄw0uÎL Ó¾ŽEu=xï43ÈÈ‹8¯DøqïÏó #§9”Œ¼õ䘱3˵ƒ­_Ê·l ç¥,qe¸ö}>l)‚ê+K ²¬å +JûEõFÌY•õ´¼ÁxG¤¼Ã°þ‡ZÚ¼Êpú6¡¨¾/…/ÿgÃ}ËCÕ˜(Yì0ÀvfØú8ûð½'Ií–ÓL¸úp<ÙB‚*Z²æ§QYKèÞÿ×ÿâ†{âA¤ ÊÒ"÷HI°L‹›eO–‰”w8?ÿý^:Òù'ÌÓ¾|EuP½‘ G;ƒ'—Iqá…¾;Ë6'‘Ž¹Qd¤vÂõTàÉ9~d™ÚmÖ¿å,ß–ò,&.I#:ÏóYÊvRRiá¬J¤QÊ@1)¿1ÜɹYÆI»ÊJí GQÔ}SŒC6³Ž`È‹8//òÃÛš2ÖÇÙG—‘‰‘¿É #¿ µ“l0BUq2,«qܸ?uß&Ã<N"ò;^ÄR˜Hy›óÖDR&MTÓs"å·†aΚ©}É(Šº{u÷è12†<ðã ߟçhÈ1ÃO»Ùz9Àöî¼8²Lí¤ò +–î À²Õ˜ X>egQQ°LeûNVHé—Áã× Po$þdzÿ‚Hù‹aáœÀ÷#Àûf…#›YdäEBž-±ã ß›CC*åƈ‘Ýi/ Ž,S;±†3KuþiQžFq·ÃþÇo(u/è¾ Ïã¼’'%¤„ì”h§Ô°×Õ—éÛ›—¢(½)FÂ+µe¥È¿b;3 9Š€Ätl`‚ÉÜšÑo*ê¨KERXžÅ–êvÐ~KRB˜^œêÖ((CÖ…´]eÝy Rª1â^þl¦¹³fj_Š®RШÎñƒÎ žö•0/,°½9ckÊȵ©^ƒ²|üÙ~@,S»¦¨ö,‹–DXF‘@úïÖA Ê’7Ï,M‘HÙêó2©–V¤ñL5œã9^{-iØi¦¦…¢¨Ç®Þb¤¤úãEœ—Bâà%ÛžfhHbä£{rÌØžáÚíDýVùx,«1‚e7«Æ9L,‘ò]g%<Ï/3.)­!&¥…ÞH3çß„IŠzÜÚÙÌr8¯%ÄÙ+ùî,Ûg œÜ1òé0¹>Î_“'û ŒbOÁ2O"â<Î,}ÏÔußÝ}<‚ê8½÷_"¥ß—i§ÙE’¨Þ¿VO:Îugã몴Sú…¢°Ÿ2ÞƒÕ(+/òü+¶=m(Øxé&ÖP¾=K˜ì³”| ÀŒËª’TÓqðtªDܹ½ÿZ)ýœUw’¦3Ĥ¼LšˆIÝkAQƒšbd-!*a^\0öçùÿÙ¯¯­6’4€ã¼ÈΠ®€g眫¹šG˜[û1vplK*e”f¯æìçÙ]À#µ!”œÖÚ¯º‘ +F|êîOço6rèªêêþiwÑ÷ïêÈh˜üsv{ÁÈùÉ“N-ß³e9,ª1 Kpì5ôýîÐμ $Léh«@¤ì—Ö¤lÁ ?ehZÝ÷)«É_ô$¼°ñ—ƒºÃZØ'àâà¡Ö®Õ¬¢øÑŠ±ÿÈ€é3T–à`‰0醴*,°<‰q° úÀ‰aê`‰”ãe?R»[桵õƒ–ò)߮뱿…g_vðÅvÝÏ;W_ùׯütàGíÿ‹Ë¿½ü·†ÿ¨ÓÀGBßƒî ¾š5Sü,nìà‰±»èûïü,1rª‚…ØYôåü£=7©)¯ËRXT㲑қñòÝžºùöuåù n¤™¿ %=S2üÓ&|£Ý ©å%R¶ÒâÝšÐOÀ´¾.?‡]ÙHZï^(ÉÏWì t–àµ8¯Ùïcô_\ùÑuÿ]|Äã|t×·ÊÉã•0Ûlh´XnÑaó‰ºÜÁ23•D'uëÙª´Ëaîêð,#UÜ*åýirÚmR¢Ÿü4ÔÝ’-xOÿ¦™åR–#‚•ˆ€}ï—ƒŸ•þÆg¿÷ëÿ¾<þæà›?ùçÃ|tÝÿ>Þ¿6à£Þ툢Æ,È÷—1rjƒ¥Ù]dùQž•”Ë÷næpW?ŽøR °„g=Ár`0Eõ$+…ÄHÛÄžê³Í0ogù§ ÑN‹îËßµ´¼AÊC¿¨FäÀçãØ™c}4‰sÈÐï”;Ú{l€[ÐíD]Ùá +7•D¿H¨;Ë~–•Ð°Lðf +ÛS˜f ¦Ë6À°óäDÊ~^#eAý×Àq˜n­u›ÁMx÷!‘rê‚uA¿<(”`Wæ–•ˆ8[e­ôWha dÚ‚ù©Æ¤=uÃN2‘²×Û,û°.Û™¹¸¼@JÙHÜ3ø›¢ÜÔÑs¾½@¤œºŸâ_n #HÅ8‰òú*kZ°ìd:B¦0˜˜("åõ®(£.—“Òô3Óú¾F¤¤¨Ûíp…£ó‰ê¶ýØ@¿*¨))߃eÞ‚e5ÎëI K0Aè›)^‰)Çéýš€÷fÚgkÆå¤|1ëÞLÜCßÝå¾ö—0R”ÝÑ3üK‚šÂl[ÂA9,ª1^_eí4Yè«Zi^I³7QÃL)‘‚¯'×e+c4ÓÒ"×LwÆ¥¤¼¯Çe*YTÖ¢$ú¾¦(77Õ× "%z°{ ôëšòKPAI–ä%!¤ñ‰‚ø&‡H9jÿÛò R*wzR…ô¸*‘ŸÌ¯Eçà};S”ËÊùÙ΢H‰‹Éíyãè97•D¿¨é/oÁÀN¥8X¦xË’¤M£¶Oƒ©lkx7“6)ÑO½î ÙÎÖ¸…/w’Ò¦r.8§=‰½‹)Ê…)ùæÏ)=¹÷„á_ ”ÓÒj²à(ªDD-ÁI ËN–¡û+5ÌÀqT{{xRÖˆ”@ÊM¡Ö~îÓËe/Òƒ*)O½JX¢ï_ŠraJ,³Ï¼¹A>Þûè0¹³àËùþe@9¶|Ï–%#â `™²påaXa6`N†™=x?ãŸ3zÝÉ6|IþÜõêûHiHý +Ë}!ORÔ¤Ú{ÂÀ6X¬òrûK H~P.è–A^ +‰ã¨¨%Dx€­”`ÔõUó@¤¡4ïnŠÀríï½ÜEÊ™‹áÀrh®‹Àß³å¾à®»ûÐ RÞe0Û; ¾œðóŽ¢F +¶sÎr” KU+mŒš)Ã7{b¼iƬw"¥Æä–XÖÕ,ÐëÕw‘ÒrI 3 ak')jB=çÛ DÊ;í`Ý)°´¥T ‰“(?ïÁ²“eèt¹³@‰öT ˜+ëHÙÎòî¦heŒ/ æ–—5–¿~,(Y‹Î¡oOŠrk°ÅW8:±<¸}gÑ7ðGQß_Þ†¥u±•Câ4Æë,A•t½ÜI0ÞRH)‡ïúlgÅ…Â\DÊWôXŽ²¤¬‹AIôíIQîLÉý%ÔAç–½ã¯8å±>Ã2Ì–çIÑXbëeÒÁ›)^‰0"åð3öiC4ÓÌf˜ +¹…”–óŠ”<&)j‚Áýöõ#ƒH9Ñ`za’>Ú(jrÙ°,*Q‹jL6’ø†™t­4¯Æ.Æ~ÓÌXïDÊ·YÖÑ“fô(æ*RšJ6÷ÌþN¤(—ó³E‘r¢>åpCC_kÊãÙªA”XÖâ¼™Òîúl0lÕÜzõU­h"å0}\—@ÊvZh†ÍÌèœÿzõ@¢¨|…?ÓM˜¢&™’ožñíyƒH9‰`V_?2ðW™¢¾È†¥iÁ²g ÞHiQt² ]5·^#ÉÏÃò$ú•®=ا 3ð~ͧ)æRÚCxù;<éÎãÒ àï>ŠrwË ^îK}~öè™F;úSÔåò¶-ƒ¼ ©Ï°Ä†ÍíF‚Ñ™Ö`oš€øLJ¯Â²»)ôŒ­Ïj†)ç{^÷õ(̾• RRÔ¤Û{Ì´° æ¦`>aVÑW–¢¦UÙƒåqT,[®Uo µ8/(9)½Z÷…ì¤ykUjŒ¹”zÇOIÖ¢s JôíFQîn¤» "å­aòÏÙíy#÷œÈ_?â "t•94˜º_ÎísŠ¢]–å0ÀR4Rß"BÃn¦øqD%ýH=NJ¨»%;ãdÊ©¤|õ@ŸyUý¤¯ÛÐœÀßGå…r~¶³è#RŽÝÁ23•D_GŠš\¶*á ¨D9"j Í3Ûiè>Ðïiüb8× ÌéqR¾Í²&À²kaÒ¡¤œ¹8m3ÈÎã’îÏug=ãÛó‘rÔ`ÆvÙuÏ&Šr_}X”<‰ò³o8 –pΠâHY [Ë-ìSEé]–½[5ÑÇ– +¿ëõRŸv! 6&‰”uW,3tž9±ÃFw*ʃå{¶›Ù°ƒuœK8C0p%<˜”ð'[iü¾û>¬Ëvšw²&¥ +és.Ç}Åë±93€¿e(Ê;í=aÿùÇ.4§sµûÐ@_5ŠÂ `™³`V +Y°\eŽ0œäIÌ:ÿ«TÙ'%úybõH™á͌њóHÙ½¯ÏÙT¼•èÛ„¢<ÜBHDÊá{óÕ(jJ‚TPRÃ2Æϓ†e›F7TKp8á›I9Íç?ÉŒO¢•áï3LÛL9ГÖ9ÿŸýzûi#»8οÐvwI¸xÎœËËV6j»+5UWiz‘¶jWEjÕ6UwÛ•¶Y !!`¶Ç\’¨ªö±ÍCU©O•"íc»}¬Z. !€mÀ`nÆ1$Üß™±½, iÀg`~ÖW£‘•Œ3g,Õj.„,Xhí#æ&ÛøH’òÿ—èîE×½^æÂ,í€eÚõ°ÌD8¸ñÙ¤Ô>¤®Øf£uŠgõû”y5sRò宺„_ÿŸ†y(iM´òáF2¤ln¯‘L^U—Kÿ’a˜+‹;°´*[ì.À2cÚ™´%˜j>T˜yëYI ÎêžSKùëœû£¾cJg·ö)e§xJª•…_7HJ +s÷ZØÐG¦~³¹5¸8cÍLû2aØ~ÉeRZ© X°a PÉé–Ò–»Õ„€· _"¥ö!µ´1 ÖëaÌRDÛg¤TÓ.Êc ¿5´´ÿ!`˜çòó±fŠ¤Ü“#Mt²'$>0ìÅr`9-E* »9 M;–6ÐéHÊ'Ë)éZLÏ>‘oéVâs¿* +úMȺ¹€ýÄÆç6†•·©v1zÞDR>Õ“÷.1|(aØKç¨v’ÒX.õ(Xf£®ÐÚj”§‚"C>1óL@d"ú'ÔFÊÖƒ(Ï÷W+ŸÉ +J|¡—=jRš ?‡ °Õ~ÿc˜·’ÖäU>ÒH‘”[09ÒD§Ú„þ°ýßfX·8À2Ó«è’‹1½vJw[I{¼-ÓNK±np¯–6D`6KNsÿKvª9g¤€{,´´ßóæŤuÿ +ÓN8W5Ô@Æ/3¸2úWÃPñ¢-§;Eº‹/…Ùj¯R¥F¹-‡ ó,RFõ¯üåŃ/ZmÒ™žÛ ¡º„_ÝlÚox ó`c—ØÐG¦vȹ!¸#M4Þ.öúšc˜gƒïú)›p31R°Ô'c&ÂSA±…_ ¥÷Z‹±õ>‘‹Ñ&÷)ëOò¤´æ–ö›ü<<ï^ HJÇ“÷/3í+‚a^ž<@Á²‹ƒß²Q |‚MwæÙ<›—I¹cDöš(rm?²B ï°2=G~ý·7†y³É6>ÒäuRÂéß¹@7§`¶×ÅXÚûË…n‘‰(ãäÊi¹¥0Ù")K=ìS'ž‹òÍZsõë–špÒoÁÚÁÂ!)1LW­t¸‘x™”C äþž–öµÀ0V€¥-ºT€-vs°Ü€eŒ•GPðq³±)³º§…”°]Zà´@…zé&ã3_öx3R­àjÏí÷3†y¹ñæYO‰߽H7•`¦+–Ii¥‚ +–™ˆâMnï•òù-ÛM“”H©xå .´ªbŸõ[¹k`©À&]OÊz5^BÖÁ’©åóë¿“1̳©TªŒë¾u1Ì»Ikò*i¤Þ!%œ)œ/œµþ‹aØ3S°´w@wó!¾f«6‡r±Ý—y.(JŸ¨l¹I™-eÒ1$¼ÿ°Oä7€L†øpûÇEö×èÀÏÍsߣ?8I^ç3 ÓgÔÔ†Ï`„˜†A)ڭ•ªT#Åýu°d3Ÿÿ"À0LKãW˜væ•Ó“cÍLû5Ç0ìù‹m fHwq`H)·[è¶?Îf l“î&¥ãÆ}x?gr9Èò7 ãAúi3ûËïèÇgiÛÈÙSÆwOAŒWUÕFuµ2dm­b$x’…€”j¶55½¹L•²S 3ÞRøŸ XÚoT ÃÆ.1€–vìí9&ÈH#lÓÁ1 {‰”*mìÍD:ÄWÂÌÔn[3Pk”ð¡.#eI™^µŸ‹±õ{ÔÇ?ë/Œ„wÆ%»ÝÀþôkø‰ù›·Iý[ä[¯f(@¾rÈ8\¥ tdÄ`†½%Å}ãsO:ñ¢*+++Źˆ”ÅI~žÚž”¨J Ó<<ï\ ž”p‚÷Z˜ö«aØs`™”Ø`™‰ð]„åj/OÝBÊlQ+½jgÍÖc~€çèþ¼¿æÿmc?Goþ‚ž;cÖ¿I¾ó5òFÏ2ÊÃÆ—+ÕVRáÐDm=Òç‹Á7M³è¸ +·¨²^‘j·€”ÓRÀVû͉aoª6™˜”pj#MNÀbØÁ(îÀÒÞŸ ˆÅî,s×T;T\ºK=(œã'ËHJŽ!!8‘ÇýJù›¶ ÇéngÿºDoýÖìø±ùÁióô rœǘ²_uµÒãá*£¶Æ >æ r;U:;–ÏçPΤ´g¸^’\îªKâãô'­‰V>ܨ~{çÉ{-LÿuÆ0l·‹m û© ‚åJD€Ír±!p©‡Ow +çÈ{DJУÓj1ä£ o + 娟ý³™ýíCöÇ_Ñ+ï˜gO™'¾Z%Æ;0$lá$¸‘“ÝäSㄘ†QJó6)µ«ò“N5@ÜÏÒA˹´ßæõ¤âwi·ß^`rô¼9Õ.ô_d Ãö2°4-ÅÀ²‡g"/= pn6 œcî:)‘ Þõ{ÔÇ7lCÞ+½ü?WùíöñYz×üðŒùÎ×É7@ãW*CUFUuŽ¦ <@#ÛK@>#‚ÓçsD§Y•R}t*x¾ÂB–ö;Ã0§±fzðH9Ô@Æ[íÿýýó§o’Ó'ÈÉ#FMñ¥×|¯*¬È7¹Ñ© zÜ.nšjŸ×ÖêW¥MJX£åî:|Îc˜Kšjg£ç̓DJ8—;ç|h¿¶†•9¥JûoºS¤Bb)ÌXæ^K=0éj¡{§˜„6øp;{ïmòí¯’o%G™aúŒ× kk…iˆ¢!5Òq»! ;>ßñãÇKªÔåÉI)“sô$†¹#iM^å#ô ‘òþŽ?Z1̳ſËt_Xö¾,W"b& ß)“ûÄT€Ÿ=e¾j뱺Æ0j €ÐÑÍ€ÜN•j«†'%R–[•ÅKøùJ·•Ô}¿aVHZã—™vîJ â;¨ó=‚aV°eŸ)Â2}.Uæl +Î…„s„—#%a-Ʋ×øÅš‡ªÃJ€dºe¸“¸­JêóY>ŸUJõYIÉ”IiÁVû†a˜Ó½K 0¦„;o¢UÿÅÄ0Ìm)UúØc6°´VÂÿc¿ÎŸ›8ÏŽóW4ÄèØÕ¾Z`(„ÀLšiKòmÓÉ´Ia†i›Î0¡™iÒPsÙØ’åõm|ÃÊM(%à@®øÂ6Æ`°1™i2»ºµ+ár8@ìÒ6͸ϻ+É’6‡å×vÍwÖ«]iwýê•ô‘ð¯ªÇ0aùªŒDŸŠ”ƒúñ¿ÙJ*Wð3e0’9ÇS•t†Mƒ€”ªÛ+}Eö[%ö»åd°j˜‹j„¯+ÉÍbÌilLÅäô¬YÆ=÷<øŠ½ñ&>Âó°ä!žÏ¬*—ÓcF%>ª¿X7ûɃaXrj]YÇORÂuÊÙ6¸fæã†aØt +`©é°¼!Ùo—’ûÂ@UŒ”°„-@ʪLþ»FøïV{Ù[¼ÉDe%°¦«Žƒè:ÇBªgO<><9P>=‰a“°°“Ò¦)á"ý¹óÃ0lZ¦°Ô×ûŠìw6“{Â`UåÝ +¸+¤Ô—ßÖ’½oÛx«•·€©Ø»Ž¹*éÒb±™Í RŽ³*¥Å°ˆJñ¯Id>a0 Q00·âã`RYÇç=óáÂ0lº'jñþY"ö—Ùïo±ßƒ*ì€ÉÁj2´Mhü£mŽ`µ˜“)ª¤À¶Z !ã)ÉØêô¦d†è~™q3Ÿ$†¥ÉŸ#ؘ£qtO6 ™ þ3‰±$ÈA£wõ]`·qÛ"6ÍÅAQ7Sâoqý%Üÿj¸¿o~<ŸËše%ˆÉ‡Hi¨’ðüŒT€Ær|n=¼@·KÄ(ûùƒaXš4·Ý»Á6iI æY'¨væ…aØ”*FÇpÆ.cˆ‘‹¸¬§™+°Åmün…GÎÖŠæjÅó´ò%á­Ë‚Ûáß÷Žö×z÷ýþ­Wß›i"ÇÜo“3ÁŽ38n¤Ô=Ù'Ñ/‚;@JIÌÌœÁ0ì™R e-?iIÌ#üôÀ0,M 4¦ºÑG£‹ÓÅhŠæeEófêh$‘¢9ZÉ|­ì%µ|‰Zù#µzihÇ›¡=¿ z/pt“ÿD±ïL­·q¯Òñ9íÒiåÒY¹³!ÐÓZôÀ¼9s-³²ôä誴ZÇ“ú±Œ¿Z!é/ů ›¬Ib(Ÿ\ÏfOÇq=ëmšÛÎ~ˆ0 ›èıJB£ËÍ7EòÁ3£ùY°W4–-V·¼Þº,¼íõÐÎå¡Ý¿ z?pd=ã©joÓ^Oëà¢ÜÝ&wµÈÝ­éëjQºÎ]¿Üä¿ÖÖptßÂysÍY³Ð“Šð< ΢E‹ÆÙ“qRª’¯{Ÿd§¿ ØOQ ÃÒäÏzY2“ú  Üe>8†wI2„÷¸äˆÑÈm$ÄÄG#Íi†¨ lZéµ|‰ +bÜþF¸¸oUàpvàhŽÿ³RßÉJ_ß½Í<íÇ•‹§ä«mòµN¹çíêyjȸå+M©5*—â+rgC §<¹=ùèbÃb±Œ?&á&Ñޔ̉Ü,Æ/ ›¼i…Ä·Qè]Ã3—dÌ“kxïóaÁ0ìJˆÑ1œ±+ÅŠ:AŒÆ]ˆîÕŸî&jÙKáš×@Œ¡]+ƒß |’ë¯Ë÷ªñÝîmÜëm>è9Ìsá3¥³^¾Ò,_»(yYîéH¸Ĩt5Ç}جD +Å+±e¼¦´]¿ÜèiEOŽáyXf“úA¿0…úKéoýôÆ0,}jݳnÒ2› 9Ù †aceˆÑ(ÕÉbtš#ù¦h¾)ÆEú˜ÙZÉ|­tˆQ-_ÞözhçŠÀþÕÁ¿|àÿ´ÐwªÚÛ°ÛÓzÄs¾ŽrñâIåÒj¿®¹»•ºñZ‡|µ]Gc«“Wš(;ëGÐq(>fèÉ13Æ„dΓp“èa5IˆJ$*‰ú/ Ã&ia'‘³mÌI à˘†añÄá’éXG£‹Kˆ1ºéùh^Ýb,] «~¨Ö¼®ýYxûýï½8æôŸ(öÕïô6T.üÍàŸŽ·f¥ë\ Ým:ÛX‡-°=†FPbZ4>«Ñ“ÏâI(ƒ˜Œ{ònõd©ÈúaبIb0°Å$-› »èÅ° ›æ‰ézèa 4º¬ÔN¥cÞ̈ۦÏSË—¨ÕKõ? }ô«Ð®•ý«ƒ¿ç¯sQ1ž©4zÎ4Ê]­rO%¢p‘¢‘Z ©Ä¸ØlÎPb²“И)7¢'Ÿ“°$Vkf=94tb=xÔ-Þ/#næï ÃÆÈŸ#ô®áYaNíϘ†M—âJ”Œ4n#ÝŠÃq±\ÃK­ôûjÅË ÆðŽ7C{üø£9”‹'·øÎn÷6îñ´ö´ª\:KÕwí¢üe'¥cÏ…˜u1&)ñ‘±#zòÙ=i/£žZN)£…â­ât?|0 ›Lin»wƒ )á¤ÊZ^u ô‹õ8`Ø”*FG¼8 (‚ ]ÖˆÓqšu%ÚŒgiÒ ZÑ­x 1\ójxÛÏC{Þ|7ðI®ÿDåbÓ^ϹCžÖ#žöJÇI¥ó ùJ³|µ¢蘄Fº¢±A¹\¯/%¬È‡èÉL`’çùŒcR¿IEôZ¡8P>;ÊþM‡aØ©.;¸nâI gôç"&1,mb:4:è.11š£ù¦hÞLêFØ(9´°â‹jùuËÔêWÃ. íZØ·*pd} Îé;]ã­ßé9_§t|®\<­\:`×9¥»•º‘Š±]¾Ú&ÃÝa46¦¢±qª£=ùÔž¬V{àÉ¡åô‘":çûŠìHJ ›ìIb0Ÿ\Ïæ&’”p.e¯ìÿ} ›èıs ÷H4R7Ø4émóÂkÚñËÐî_¬Îö×¹|§ª½_|ä9wÈÓ~\îÖY˜.УÒÕ¢×l p˜$ÆiŽFôäÓaòÿì×ýSùÀñþÕ\€%¦2m¯g;wµ×ª¹këÝدíÔÞõ¦ã8wkQ„aDQÎgT +>‚òBxFäg»yØdI=Ïi{Ó?€~>»IEØ ŸÌÛu³›d÷ËÌ~÷µéiøZ#Lª‡…Ë„«æë>IéñRõãØ@®y-= rñ¸ú¢V¾r¶Øzl/Ü‘‹fÀa´˜1»–Š+Ñxr[¨âò¿•/|¸¶/PØßÀùšùÚÎHÝ—Eo½8x45ÂOò“üD??чŒD(ö<…¥®¸çõª¡‘<ù|ž4¥¦®&ÕçÄcEŠØGNkôÚÑÿê¦(j‰|Ù¦8)®¦$á(ÂÁtÅaÕ}Èõi\TŨ¥¡Qãb"a©½u˜TIFA)Î Ÿx;T¾ Åxñ£Àõýúl_Ëq_[…ÔyN꾄bìo†[…ÑN´âÔ(ÿ`éëã^a<ŠFØ›P"ÓŸjë"òäb˜4§¥1 ³Æž„£Á¿Gœ5â0?)fWíZ¦(j%S +­À¼8)Wµ`žþ㥨¥b@#ºQC£&Æ´éü”i»1b7à:l½\†âÊTŽ|W)y#|ìûá“Û峿’Ïï^Û¸‘ãk.õµVˆ½u¢÷¦8Ð(4¡GÚùûnã\D4hhäÇ{U4ºÑŠ#‹¸Q†½4‘'ó¤ILF= ¯H‘å+ ×¢ÿ´@QÔRql¨ÀÂg™V•”ðãâ!“â°ê?^ŠŠÆ.DG¸y™±Bfy"¹U4²Jq&rñø–pùÖÐéwC•ï¡köêù¾{§¤îK¢·^㟦>!Šq¼¡8чá-nwkžQ?ß‘ˆFõ»„Fò¤®˜LK³¤¤èáI<$,¦–/¶rV|”ÓÆ (j©86˜gAõ­š'!Ù®÷0©W%ö©žú ÜžÀ‡ ÝhÔÜKÅ•©Åxr»|f§\ýAàÒÇÁšOõ‡ý·¾»å¾ö*Ñs]ìoò“ƒüD¿ZrÑPô¨VԸ莡¥K…â¬ÉÉyraO2L wkîIø%É~åb‡UïY…¢¨gÍŸc~¸?}5$ ?+eë?@ê%*E²aq4樣1sCC*œ-\úV¸|kÄøÅï‚W? ÔfùŠüwJ|m•¾ö³’»Fì­†Z„‘väâÔ(ÿ`(¦Gt#p¬˜(ÃÅ"1&äÉ0™–Æ ú`R=ªö„cÿSbÓ{¡(jÁ xÈ´â¤|Ë,F¶[ðÖ¯÷©uU¶Ù´]Š Èp:?eÚnÄØ’„½\†âü–âÊ„ÂǪØ!W _þs öoþÎ×R&už—ÜW€‹bß-q°Y¾2"¢§FøÉl¢o.;„ÑÎX‰PÔßBÔ‹Gžœ—þ £&µW:â‚ëÚªÄGEý'%Š¢ž©p¡U8¾²¤„_óe›u•¬ÅјèFõÞ8,œc$oô݀h„g°bq¦rts¸ôÍð‰·Ãå[åªß/þ)pí¯9þ;Ǥö*±çšVº+ · +#í*ÿT4Ž{U1öó^\óðˆF@E—jÅݨ?x¨U<™˜6|£Ñ¨³'gðÐ8+Ìÿ=Jž¤¨u–l·ðY¦‡+‡IøµPþã¢ôˆ]* ¦Y4B¹a]ál FäbÙC§ß U¾/Ÿû}ðâGÚýþ9¾æRK™Ô}YôÞ†Û…Å 1€bt«rЈØ9°]MØPºDžœïÉÔT½1©¾ðàó‘Óª>r²zÏiE-£@®¸Ržôå˜tµ:%ȳ©S}ÂlïÐ2GňhdÐU=ÂÇ”’×Ãe[BŸÿ,tö—ò…ƒ5{uŸùoÚ}wŽùî’º.J=WÅ&a¤Ÿä ñ“ØDbD+ºçÚ@cܳoIŒÔb‘'ãYÒÓÓÓÒ†I +OrxŽ¹â_GÈ“µÎRŠ,¾ì %üÀ.4ë>"êJc,mZѳ¢ +E£öwÍ~=|ts¨|›|f§|~7Š±>Ûßèòµž–Ú«¤îË¢çºØ[lFþ§F0УæÆq¯0ÖÃßw«8Œ7O‰‰éjÝEžL <™˜Ô^*)a2ùºÄFž¤¨u—â°Š_””ðuÿaÂäº(ŽÆ¸3Ô-*‘‹ r1?%b7Lç£bä2ç&¥ø;Ê‘ï…ý \ö£Påûrõ®àÕ¿þ~ÐßXìk)“º/ŠÞz±ï–0Ð$ ÝFÚc„âƒ!DãD¿ŠÆ^6Þw…ѵ9t$(R«yRK¸Á`˜I6OrŽ}ì"ORÔú+T`ᘞ›”ðEá`z¸Ðªû@¨Xì\7ÆèXG#Š¸±#¹ßÄu‡Eqf(%o Oü$|ò§Q1^Ù¸¶ÏßÀù›K¥Îs’»FiÁ¯[눘Wå¢Ö‘¸ÑØ­~xA4’)"OÎÆ03ɃÉ<X<ä^‹8,ÿ>bUê=‘RµÌ86˜gy>Ljž 暧éÚ_‹Ø…šûdRÑÈÄܘ‚nÌÛ€hte¢On}þs¹ê×òùÝÁšOµYþ[þ¦_{•ÔuIì»)¶ð“ƒüä?ÑS¢Ws£fHaÌ­rÑ­Þ£»4%&Š‘ÐH%gäIHµÁ`˜I*OÎDIqZ“èI‡îS.EQËΟc>&Ńf¥Ðªûù¿,Å”s)gS‹‰¡hŽZcV˜è[0¤Ã¤Ý.ÛªØ!Wï +^Ù¼úiàFr±¥Lj«”º.Š½ubƒ0Ü +2ä§FùC1=ªtó G»–ŒÄH­»È“š'ÓSSg’ “33œÏGæL0>v±«9ÓRµZ)«ô™é9H̳̚‡z¦âh´ÅÊP·¨hÔ”X†å§óS¢[`/gSœŠk“âÊ4†N¿:³S¾ô1ˆÑ«ÀßT,uTKÝ—EO­è­š„¡»ªúÜüDÌ{¸ý~·0Ò!ŒvÆšgEýïþµ²‘'µ!3 3“|ž„3Â÷ ¥ˆ}RÌÂ|¨è?]SµìÂ…fá@ú³“>)2Ñõ¾HìBn´á.‡Y%"VŒä¿±"yаÄXœ©”¼.}3\¶%\¾5T±#xáÁ+{õ‡ý œ¯­Bê:µâp«0ÒÄ%ø”nÔÄ8áåÇ=üXO@Ä…ÜHh¤^µÈ“X’bR}qxVaÎò¥S-9V¢¨åDZ²Ýò¬g亄ÏëÚ:Ä.U ÌtAÚt¾1b7#¹a—âܤݬ+têPå{rõ.ùÜ‚5{u‡· ý-eRGµè©‘ˆ‹'Œy„¨chœcg\ŒêRÿû8E%C¯¸'- “+&ÓLr{ò1—Så“bÂ$E­Û8öì×ûoSçÀñüë¦\ìØ>N)BìBU~èÊP…ÚJÓ4­h[WuhÒ¤ªë½pÉÍ~i¡…¤í€RPB;ÄqÇqbÇqǹlÐvÉ9¶ãØ>vHÁÐøùìyßã$& ´åÒç y­‚ßÎÜüÄ?îãÇø —zøÑ~>mÅeÓÐ)+qeð•â“ÃÖ~jö$¼¬Ž‘RZ³˜”FJѤ»SkLš†=x‘½ß@Ê)vŽ—*ÿ¨ÑÝb”“ÑhbbLC±€¥I@ÂWé®+6Æÿ"~ô…رßÇNîŠ6¼;Ó\ +\Œ8ê‹áÞ3!OSÈk†ºø?æã'†é™º‘¢QIÂ}ªÄîŒVB¹ˆa&5{RÏ<)“mM{ÒFŸ-Eô)ÂÍ[ŒJO + üD¹!ôöýH _Eö*þœß®h$lƒ4.Š±4/Y’›*É¥×p‡EK‘X¹Q¬ú‰X³%QûLüÈŽØ'/Ï~úÚìÙ7£û"mú(. +¾VÁï4 +^~´Šq|zûh=ÔŠð›tT|Âb˜zR­'å7RJk“}>z&[`ß¾]ÃѽZù9‚aØE¸x©žßS¸*)á&|/£?SþQiÜ]‘=µI—45 ¹ÅO$‹÷E@cÕf±æg‰÷žø`{¼î¥ØG¿š=ùÇè™7fšJf.VFõa×iÊÅ%õ¹@ŒBÀÍ”ØO¹(‹1àf÷]ì7NÅ®»ÅˆnÄ°5‘ª=É0)­}OJ’—l…3ÝÀ —‚MI‰aÙáf‹õ+1){rfŸî{y nµVü öœòB ‘º1/íÆÒ<Ñò”XýãÄ¡ç>ûøױ㿛=ýçèÙ¿P1¶X"G#]ÇB}  Ä1ô²<”‹‹VìL²ä©ädP\ã¢YÊM ÃVMµž„ôÌ“k“ì )hÖߪ6ªÊ“¢Ò€a#pãôní2L +oiåГL‰„&c’ÑhbP\´b¹f¡Â»Óˆ•›µÏÄ?اb|eöÌëÑóoÏ´TDZFõáîãa÷¹P£0h§ää'†è™ê‘¹$I¹Ø“)Ãû„bÄ°ìMž”_sÛ¶mRÖxR"úœ0 ®Up0PY–Õ‰&Cè© RÂõÌ~åßwû¯Ñh\JþJfa™&YV,Í£•14²%’'E˱r£Xµ9qx[ü英˜ýÇëÑ {glæˆýHØu:Ü{6Ô×ò4‡|m‚¿ƒNÑ>*FŠÆ>è¥híÒh솻ØY•ˆa*J¥žÌÏ×æåIÙƒIvÐG« “‚’RéiˆaØC–(7oieR®áÎ=~Ì­âF3ýÓ2iÊcInªø‰TI®ŒF±‚YñàÓ‰Ú­TŒGvÄŽývöäkцw¢Íe‘öÑÎCž&aÐNó;0(n>èabôðÁ~ wÒht24.w#¢ÃTž +=©×jáœ&Z¶y˜ 7*Ñ“–ý.VªŸÞ£™f¤Œ3.šW$£ˆ¸€ÆdÉR~,׈–"*Æ÷¶&=?úB¼þ—±¯D?ÛýüoÑ ûgÚÞ‹tÔ…]gBýø?Úσ YÂÂEº€[ õÒŸÑÑàdJ¼KŒ hD7b¶Jjó¤ü‚FÊ2L.)“~ÞbL6eˆ†=pl ÏÐ'C{ò“¥šT¹&Y¦¡n”éÈô(Z6ˆ5?Mz.~ôÅØßwΞÜ=ûå¢Í1:êÂ=§Bîs¡K‚¿ƒ¤ Ђž´!î(.æ\Tbf(F Ã,zR›½˜$ô™£ IÂ)Ñ“–•™hð'á1\¯ä Ùýº$yêzýöTÝŽø'¿‰újôÜ_£û"—j"Žúp÷ñ°ët¨¯!äµ ~;U(qb˜¹Ñǽ2…@/ QîÎh%QŒ†=–TåÉôÛååIYêI‰=3ɉî¿ÕFåÇ"†aß>`$áRf*É›UÆ[ÕF¸†;sf]¬zë´½nºß*x[âc=âd8è‚}ÂØ€0áçÇø '=Œˆ]«ÒQñ™‚a˜:S›'µ +“ð!%åUb˜#†$FÊOI Ãî¬P»0¥ù¿ƒE)yÙšô¢É0O +wçäÕ€»ûŸÇ•Î/}Žäe_tÌî8C¬é7ò#èF ÃÖVêñ¤üjö휜Å@ø¡Ož$›`$ݪ6¦Ð“¶ÆÍúECÂþô»^ÉÝ©5‚-Src‚ˆRZ7ždSI4`x]µ”ö}ÄôHi¦#oVïÔ)#‰1IôI‹1^mX¶X[vRF>üÎCÉü8ÚÞžvX‡Ípñ¥¯3ØÓA§m¢÷ÒeO;Üùj° vx€%¤ø¬Á0l}§Oj +¤uƒI‰¾ œ¾>ô¬hÖߪ6¢'1ìñ%ÊrÞb¼QÉÑuwÒ÷‹æk´ËV(±À"Í‘õž³L•píàɦ‡ 09ánt·:),G:­£Ý¶q×Åɾ¶+^;ðR¶¥âCðuÙº÷¤ž½Q~~¾´ž<¹p$‰¦[z¨)=v1lý•bgXeÿ©â¾® ž¤7‰^4qÉr.U¼ai5’Úc0äÊcq+Ëäå ãü`ØÒ +˜uÚ‚=-½­n›¿£qÈÑè¶pçÒeO»lË{L姆aÙغ÷$¤+(Ö&‰…¾Î<)„écNñ±‹aë'‹pÀÈÛ5H’Ýçàfœp)²A"[2–bŽdcŒTj+ ÄKÌ‹­VëXçÿÙ/ûߦ®3ŽûoäʼníØؾβP4 +]é`/ݺn¬“ÚªnSÑ´vlëTUh´ˆ‰ØÇNÒº•N]×®h«R¶Ä÷ú-±¯ßóŠßWBÒ MjqL€ØÊ~¾{ιŽc‡Ð&ƒæ&ÎyôÑÕ½'`ÅÑ=ßïç°1°Jž·éîíéLøàÑ +ÀJ‡õr0ä€õñ~~*êõr:ª!8MÝ’B¡¬˜ÒöIñë¨T*¡ä|Rì¯IT}éç,¸é¤oa +ec’1a{Ìm"£néA#ñ§YüSÝ¿PMñþ#‰ÖMª|™,\ëõx@ã^[‹ÅòÂ9ï@È'V)Š%¾ò —Ü@ÐÚ9Þø&cþŠÝ’B¡P>—Ò÷IµZ¢|_ƒÁ ’1j¯[Hñ!Fò^¦P6ˆÉ.ÜÀuÖ¬¿Ùl¸ÝRKÖµ°³>12£mÅ{NtÈu£‘Ëϱ%Ïq›ÂÙ÷r#Ý£=îTÀ'’‰õ’ˆ%õXÁ-ÓAûp—ë|¯{¼ŸŸŠú>"nyIꪢP(ëœöIQ&u:€K`çÿÿ5¸×„«¨ªðšy¡)Êg’oŒX#Á!ç, œÈn4ÈOµ3FæJƒaþäŽâFØ€1‚*|L`lq7v „œ!GÒo‹ólN/‰[‚Xƈ[‚v†#Ýc}Ñ-) +eYJÛ'µPª2)ùvƒ~ü´¥÷£ÔMM¡¬sÄc×5 s«ÙI™,b>·Dú™Óõùíe?(lH‡\v8ŽËßûüo¥½íq¯42†¯Ö¡.×pW$VJÞš˼[’•¤ŸKìÃ].pˉˆº€™N†.-Jp:.}¯Q(”µ§T}µZ©T +%쓂ЇöÀ5cÔçê’*%…R œ¶ð¾ €FÂÉëF3ƒˆI"ÝLjɯC悈@2Á%„™Å%ŽzZSØ-YÑ$Çûù¡°+žÉã•œaŠzÉ[EÄÇ”ß6vŽöº'"Þ©¨¿À-C’÷…BY{JØ'5*•PÒ2I»Y¤Ïš´·[j³Rw7…².]$g+¼#ŒºY³þ?¯1ÀŒ LÒ€×ÍÛ¦_ݹd+Ù–¦F.;EVI&ífãE.浆c}|*`ÇJ¹à“…äÝR$éçà¿ŒötŽõy&"¾É˜:)º¥ôG¡PÖ†RòIøåÅß_§ÑÀ•a¡ô}RèC{àšAÌ\#éPhRÉÛœB‘òògÉõ +Ò_33óÌ­f"&ì‘lƒ_ÅH& M¤‘wBhÉJŒo{Û^+˜äHOçPØ•Ø>îN«\¢—Qè–¶ c¸Ëu¾×}á? P±¤P6Ô'Eut ©Q©Ô*UBY£PÔ(•°"l™ÄƒÛ|R•1én41Ô')›Ž‚wþº…™ob®š±CÂñ*ƒÃU´mæÈŽ¢-CrSäà +‡ü)8Ž[\áبûŸ¢+&|lÒÏ „œà– ‹±»‹å· Mì!ÇhO'qKÿ]jHú*¤P(÷Èú÷I­:g:F¯ÑÀ¦¦F­TªªŠªªj¹~mpHµR%z掯Ôí}h·Ø›¦/ð×Ìšì“’—;…²†dÉuÎÂ|ÚR;kÖgŒz¬—+ei…÷kwÉ™ý LØ,™p/s d2ÿp‘cÓn6ákñlœÇÆx¾×=ÜÝñJ¹Ä-¸·Lú¸ c¤»c¼ß3õMÆP@ÓÉàt2$yR(”{dúä‚=ªÁÁ!5*è¢B^UUQY¾µ¬ª²R­R1Úmõµ†ÛëÙ½ë©ý~îÙG^<Ýø{îÌŸ|mgìüYÂ,^ûAfâ“fýŒQ5*yÅS(_àŠFEøètÍÂÜn©%Ç(&ƒíLƒvþäŽâí!l2ñÌEgUÃqœ`j(\IÛ¢kÜbÙžôÛ.œó„¢d®Ü-  —l:hîrõ¹'"Þ©¨Ÿ¸eˆº%…²A‘Ö'EuÌ $qHÑ«åryEeÙ–­eå ”Û¿\»g×Îïìûú=z虧¾øBˉ£gÞlîhýKÄÓ–ðâco*` Ø/Fý£=n©âWºÁ]9sºzv¾‘‘¾ô)”û *z«áÐôï× 7A#L2Û ÐQ¼_sL&+úK¦½íqo[_Ù‘îÎÑžNHàœ:®R/± zÙtÀ>vÂçŒ÷ótˆå%©û‘B¡¬œ5ðÉBi,ü|PGµR©ªV(äUU•••eåå[ËÀ*|`ûcßÜûô¿ÿ‹ŸüÝož½á•wO™Ù÷ß +° áÀêr †ADPÒoKø8 I¤(φ­Re®d³õЭ×̤yR …rï Å—^ìë–“.‹˜ËF&kÙ6|¸nq#äR&ȨF~Qƒ*|LøA ±XâXˆå8o]‰UêetÁ-S~|Èp—k¬ÏCÜ2°lsMÇ¥/P +…’ç¾û¤( …:Fü4ðÆ…BU] Ÿ©Æ€F*«ªê ÌÞ¯íþñ?xþgÏùקŒ¯¼÷†åì;pŸ}¯ÛÑ +Æ8Öǃ@B°À=d”˜9±åa‡Â®¸½3ñ6Åà&²¨šwÖ¬§>IÙ¸dÈ5K®sÌ­fä·Ìu—Mú¬‘™mÚ!X4Æ>´¿ÿÔ!×ppÆrlþñ"Ç&C6l•|Î!´‡»:>?‚[ò«tKNu¸Oú¸TÀ6Ôå:ß랈x¡°h®é$&ßb’7)…B¹GŸÌÙ£F#‚ÕQ©]¬–ËååU•rµR ÿ V§«c˜Øþ½oí{îà“/ÿòç'^=óf³óƒwÕùá»I¿m(ì„ýŽ bÀ!S[Òωöõ‹öçWsn]„Ã*æµJ’¢ëhˆOf‘*‹ÒÈR«…r7Œ¹›¬éì—Ûoi‡ý/pôœÝØ3Ù!!„ Ü€¸BÁ +¥$ö$.V»H+µjÉøsÝ´å$!Á^ ,4ñøØcO‰í$>åàœÓº)HÛã$mzbµ+îÂï›Ï™uÜvÛ$c;ï«G£ñ—ªqÕ÷{Ïk_w9 ‘{å—¤*ã‡Ö¹Ús¢¾µm6.ÌeÛ²‘F6{1ÆN&CÿÀxLjƬž–’1Ràã+åDp GðD¬ _¦‡fSÁÅÑ0Üò¹%A,¦O á“ÉŽ';Nœ8uüøÉcÇŽ=zìÈ‘cŸ>„j~é ŸÿÆ׿úƒï~ûõ¿zág¯ýÆuþ/¿½âûóïê5HãÂH«bihïõ{hÃRY#òìc¤aÃJ@&=é ºë(;\e(eÅiÿàªl½3DLUC#7Ý|ëYgŽªSì>ÒŠÒµÁ>»£Ÿ»m¼¥É![±Œÿ5UUͼu íë…ˆ +½,êêd"0• ðŒ0&yî9‚`Û-ûð„©ŽÇ¼ˆ!äш&ÜRp{GöYŸ¿ÑNŸÔ¯ÿñ3²|ä“ŸzñÔ)ÐÙÑñ’Ãñµ¯|ù{ßùæë?zÕùæo]uþí÷¿„:âO¦Þ†.ÂçÒ!샓q1êÅ-Óú²œFuÜo|:q>ÒoÝÜl¦êæ3¼ªt  7\¤”DsÀ$óýÁ%ù½+]UX%“*̾ªØ×zä•s'ë»8ÃN“F¶WÝR=懪§½npèß\Z›J +ü£úü‰PsËmAÅß?ó!ªæ3ÚÒ˜~3Cê!û–‹‰Ûµ$·$ˆçŸGÜ'êµï¿ò­v¿rþ§¯ýŠ{û­_kÿ¡Ž¸˜¸Œ³© (%& {Äv9ê« äHãî„ûñ•0…rÁ?aL1Ƭ˜ÍQ"‚½6„5OmËE‚8´À!ãEáï›né?¿0çÐH&ßwKÆ赑F¶w©ªºåì©?Õá{ý†FªæP¾ñò¥?¿G™"ÜÒ'ˆ3ü¢¹thq4RÎêH@ˆ%°<Ž ¢¥Á%ÂmZÑpÅć»<÷aUPÇñ¨‡øQV¨£Ö·}1­°Ç'àf‹§®òÁ´sLÞêæq\Qˆòª™éq0ÔõÛsÜ»È÷š —¼ê44Ré\û¹ÜرŒ4òÖYÛÎÿñ±Èu8dÎ쳩ÐôР‹›\½aFú‘wSÉÀl*]#·$ˆggq4<™ð ?„7 +uwÛcݽ³\wÒ›x­ˆÍZ|J¯^è¨:í/Éä“ÄA 0I8¤çüˆÉ+0If¯ëPC · H#}1ÆÌ÷̵k\,#}9F*&<˜ŒûE6A8÷6AÌ°ÃûxÔ‹_4=40—-ŽFà–»†f9o}pDS]¬” Œ U³šÙwîÇ›×Õ’¦sè¬Uðéj; Ww‘éÌÀrß Ú£»°¹T™„ååQ¯,Ρ‘EÚèéºÃŽÖ·f†ûU}ÙøÔ:»¥zÌ“lv°¨{ +#a’ÏÌð`)9°™b& Þ¡¯ÐË©„6\‹ÜÌE…^.9"CI, ¢œbÃ}1ïNË‘‹xpͱ½˜<ªªZ7›³xdßaòªbßpÉÖ[ÑfJÕxØ+¿U6?®*«îþõÆ'êÛ‘k$#¤úHÕ0ÏÓéôX¤Oþ0þã1ß|&<÷ç÷3¼êÝun97<¸0.guèå-î– Ru™Ü’8ˆ5 +[n4¬ØÊ&iÜt,ªAþ®yŸ>T¼˜ðI[Åi¿wQ²^?ˆ6@±Wž§ý¾[âɤª"U™¼¢8îº_jhCßoE™$ÕÇ.ÆØ“³=ÇǾʇ¿îA–ͦBŨWäBaÿÝRPÐÕ‰¸zxp>Z<é–ÑÆ ÏËùš"îki“2YÀKQëÛ"™|JÙ¶|9\2|’‘Uτ›§ê´W™´á’±ž<î•ñ‘2i…Ùß¹`oh>æâFR=‰Q·Ä«yˆ9 YÐWÐ +êÌpp*ù`z<&ö9àL±ÌjÂ-}¥dr»0¢•³º\ËCŸ ö‰…‘ðdÂßê&)Åd"€—lØcÝ„kòáã·Ê^^sJë.·ËÍäY©Xý#J ±’lº%¼ð­DXÚ×™c“u}ØmÌfô9$Õ~VÆTU52ªšƒàiµ\+F½P;¸e‡F^äö9’raKXeŽ[¥§”˜ÏhðºbÁO7.¿°KG1Ê‚f¦¢zzñDpö4æcžœ®æAÄ3› +M £ÞZ x2Öë%¾ÆdÂ?3<×]‹ÜÚvKËý èÆr>¶ak3“Xë°rf”Œ%ê…«›G?$áÁ%Ér!šª³Î!/J÷ V™´ÆEÚèé¼ËN˜íÃ\6c+PQµHÕ¹å?õH^ƒ@Â-y”L%`2î/ži " ³ZŸá–êDÜWJfSÁÅÑÈÍ\Ôr— 9Ëù6Ü‘ö3IÌ™á`!ìÉþÚ0(¨þqت2î›nRÊCŒRcÃ%?ê•ï»¥ŠâÀùŠ³³Âìënûʹ“f×øÎض¼äT­^g3Ìi~È‘#þl¤™"ÂÉRJˆ÷‚ÅnÉSŠ[Œz'þ™Tpa$ ·,çcÈ÷Ûˆøb¢.î­W¢uÛxÇR“i½þí5¥!~ßÇ5/‚ªª–M¦Ö-·‚ +“÷ÊÜ(,â ¨8 ‡džkÌñïËÒ{Wºp^UøЛ¬k‹}Ñìæ²eØiÒHª6«†àH§Ó”,“GŒ:óÍgÂ"CkŽg©[š9½än9<·\Ó…^B,M·$±$öY}ÚЭú&l'¦‡ñÓú¬DmP„-î“öŠâXgRÊ6ǰǪÓ0IC#õÊï_•k?rv¾ËwØ‹;ZG·m‹‘FRµs1ÆÄUSG]…XΦ‚³©P1êå.guöåÂê%À÷™ˆûJCséÐâh¸œÕ!õnIÏÆr1ŽvšI biW“̇=1¿ìz¿%çŠ{Â;çWœöM·d½ðûwE{O&Á!ﺤûn & ¥ÄQ{²Ïíì ᤑT‡®à– 'Eý¿ì×[oéð¹é÷ØaðV+UZ©R÷"ß"ù ½i¤6À NœH¹ØJ½®ÔJÃÌp°™Œ`sN>b'–­•ÚƘ•d¯Ýç}0vœÝubüÚðüõ×h˜äÂÌ;Ãó{#Ub¼”×gëV¢’VØ$Š–®Á„íò Ò?¦’ŽÕç닳[9µgKþ2ÁÞ¬RI–Ò°‚G}d%É^aw“XÔg¸üÚŒT„.âyûöÀŽN´G!ßëb',‚*À¨Ò!¾¿÷í㉓‡AéR‘˜± ,eYî_ØÊdŠlî5:‰*¦²º¬Yq&:Þcñ4/–][šJ5[[H6²©¼Bpµ°%þ€Á^Ÿî–2°©¦c£,I]²u©‹IMþ…_ÌB qÜñ‹ Ž6ñR~p'ö ð8ì¤ßM‹/§èâ:ìâ™xEnýôß<ÀH…2’ÛˆÁ\ãÀöŠªR–úW2™ÛéÀÒÖaÔFaìnfÕj†Á’÷ˆ lC®¤•ú|b“ÚR^4]^î•-hÏiî˜Á^}Ý Å^™·W´šû0®$û…ý |M÷½†ý#§ß˜ +óäsò' …w a/Þf²¿8 +ùÞ?š|óÀ×"tABÿ©óäö©eQFÒ#ƒùm¡°<‚ú´hDÜÙ´‘Mm,¥Ê†<0°äKŸ€ŸkK©xÂKJͲ)×­ÄÆÒ\cYÛÉÀK& +kŸ·m°W_wÑa—±ºIBacUÒ#Ùl–¾ÉAÿÕÿžŒh(*Z!ÏÛ‡>î4Â^ DìŸ8Œ‘oúÞMÓ‹‡Ä ÿÿáÏ8½ÔÛA #1˜Ï a¼b˜/™3¶.é,–¶rj}>Q6˜Y6³÷Ñùqxµ ¹fÅ×gaÂn¯è`˽2µ%wç`¯ °Ð»c}qú<è#IºË[[HÚšT˜›qßhN¿%£…yòþ-'(vÂâ°ðƒ½¬ºŒ Ðs0äË)ñEX„“VP<úšoÛï9ÅH"3¤€ŒÄ`.'ÂyoS)-­lkT’5+Q·ÕL¼;È(Þ¸ÓOÚ² FàX6äj&ÞXšk,k`KîàÁ© IXßõ¥¹Š©Ø3ÀýQ¼š®Î'‹†d›“²,_ùÇH§÷ÃØ ŠM:ܽ„=¯ÍþyÀ€|ûІ„‹€§M¼‡û¦õ÷'˪±»hH æ +"Щ$KýÏyíÇ’¡P=Ô–eSžÕ¬¸Í{’þj{¶ŒR2üåµL|}q¶±¬îŒÝRºOîÂ~Vé +îÛXÊF6UMÇŠã$IØÓ­-Ì‹Yθoë=^?£…ª =$^z›OØn‰H—ŽAO',þüؘì™Ùyr{Ôwà#2ƒálîþ™E3R2dwœ­Î'YµCœ6þãõëJcÐÕL ÆñVNÝÉë»L°D[Þ ÂbQI.kµL ¶ c$I¾qSÛìnýå0BïêÞ_¾¥¼›Ñ“œKºKàºñ(äƒEyý@„ë¡ÇvØsLþxf©$‘‘ÌuHÐ/Ëò™k¶)Ûzw|Éf6s¦ÍÊÚþZÏ𲚎7³)Àɳ‚¶¼æÝgÇí}u>QÔÇL’¬°ƒ#¼tìu¼‡˜^˜FŽ›ôÒ% wV[îy;äí„©!áª<úšd¢ås¡“W€½ !#1˜kA „œ¹V(ÌÚæ pšT2¤õŹš•p'] FüÍ™ò., j”Mj¥nÅ×gÁÉ;ù®-¹ +Û/`ÖÅÝÂnÎ3vY…ýZÙTàu+jgwy˜a„±ä¸ö6ƒžWS¢ƒž¼bFèù fHJú½Ò Šÿ ÀZ|õ_2 FE8†¸·Â`nT¨-e©ÿ1«>­ê +S…%̻ՅdÍŠ3ªñÁ*…eÏ–eS®¦c«óÉÍlj'¯ƒ-UÃ]VcØçEscqÖÅÝpZx<Ÿ<%]9y1CMÏ'Àð$ez›ìè0O¾œßO‹mâmÊÈàçÈ?áL“#ß÷×Îcw‘‘ÌÍÏ€*!«ªZ2”¢.ƒ*aöUÒ±FV­f,yâ W“\´¸n±™“ëVbcin{Eظ¼Ü+[PW;»%þâÉîÓ{›ÞÊ¥*¦2¶’t»‘M•49›ûç1bòêB­Ò$àœvÈ °áŽ®+5d€Ö!"0òEXüðhò(äkÅf€ÞðCòõ±rZŒD8¾#¸KƒÁ`F&t®†%Ä6¢E}Æ6d:—RÐ2;ïUÆ´RÃ}[º…ïU³â닳em'¯/ÏØ{)Ý+SI6–aWgIÂhëR ¶fš´’ŽqyÍÇ7„¢å'ò-ȨÃ]_£Ó™ƒ$;añÝ´Ø Ñ;ì2¢C<-†À–‰ÁŒrA ,ƒŸÉRÑlƒD‹¬ZŸO”M¥Äæ# Gî“ú3çû[fâk ÉÍlj{EÛ-˜  „å¥î'<0î ç¾è<Ÿ7]‚Í œ,ê?Ò÷ê£ífˆºziÅWSbüCP•_ÊH$  ùrJ¥·C^‡^„{ë9ðuêþw)ôƒÁŒI„óÞúRô8ãNF8Ö¬DÝJT3ñîļÉZ(jT;5âÚ²’ŽÁWƒéßXVÁ–ÜIv ßÉ«ó ¸Ÿc.IZ- +¨¶õH1WI–å+§Ç=±»ô7íÐï ¯+"ì…ÚdG‡åoúèìþ«ØòO¼ú«8(Æù$yî4Á`0cŽ?Yê^Ï&jºdÑ’FgeÙT6–æjVÜ…ÿÙýeíÙ2Êl ßN®fbk É­œú¬`ì–ÒPæ%k¿g§Ý¿]«>/š qW’ˆIØÕض«hî6»)¥† t 篈MRR‘^'¾#ÿ$uã`ê‰Á`>lîþàGpf1)h2¸ Æåê|r3›*2£#¡—Cƒ(ª¤øš[¹ÔN^ß-˜`˽ò‰-÷Æ–p@’›Ù9Øb $ûL)KZ^Bˆ€s–Wzç€ïՔؕöS ôŽìäEXüù±¯M¼‡Ä ’<ð{ð­³·—´øxc0˜ß˜‰ ÉÁ+0"óꌭSIÚº´½¢ºÜs·Ügú¥t—Њ ¶Ll,Í5–µ¼ÁliA¹»Ž‹$áëoåÔZ&†’<©ZÃIY—x½­˜“æIòûV@tI‰=Ÿ‘Aô…|ÀÈ×|½"¶ˆ§˜8œòº¥T !#1ÌD–g®Uÿ*›` Ê ÛÁZµL¼ÂF*¯p”ùOùKª §‚J¿,|Çš_[HnfS;ypµÏÛxWS÷k‚¨ëV%ùqëV¢¨G¹¼ ˜sÒ%¥çý£É¾°ôV°/HÚy[Dl'šAO;ìiïÉ=:ÞACb0˜al™#ÁþÇK‹–U†ärkma¶š‰sŸïCjÏ–8/›r%ýöë®7ìŒ8_¡—U7Ú¶†3ÞhÕ‹J‘šÏÐ[çcô®j´»e怱£Þõ²½©ºªàðfÌÌðâ7âÆØŽíÄÔRÛlŒÇoY{o¯ésÎƬ³ë¬cÄÏ_ÿŒà ÀÌñó›(@8½¹¨oÓ}m—å ðýð\›‰;3 ý¯0h]æ34Óæ_ Í+뻉9Ï'Ð+•¢|Š|ÈIg¤æ¶5ÎÈ“€r6I`Ħd—* ճ뽳ý‡_wO^žÞw@ŽÁ`0ý w?[H$ŠH#°´`‡ÍÅ×ó©J&R2˜ôíþ†êØÒñ•%xYÍÅVç¦À–õBº^ÊXæ Éê%ù,¼zóç +&\”e²ÎÅbÏ×€®Í&`Í¿Xà_Ƙ¤o#æb\‚CôÞŽJN'T·§ 8RÒ¹j ãq€üï‘â0R¼ªØônï¤E\œ‘.”$ƒ‘ÍÛ³‡ZŒ•ùV.Ûx¢¯Î%×’½ûß +ڶ젫šå¶To.ÀË[~áT·Šég I+’|k×æ§Kp•BL^(wÑ®:ÂA‚º%¤TÏ{ÔózœœM.LÕ´Ur4î¹d¢‘ f`B)í©1pH¸ Ë0Àˆe™ [0®ËÇÀ͵ËB*Š^ÊDWfkóI˜„zÁt´&]Œo—d¶^ʬç§á´Q’oýáÚL0YÉ›ˆÉA Òýh +X%_z7ÍHJCù ôµŸÀ ­ØÔ}HÝ{_|raf8¶…!‘‘ f0#~¸-5og¬j„Ë°ëÌ2X9©æâ˹øR6*Ü%ý°‡€%´d†+˜ØÊÜÔz>µõÔ¼TtõR¿ Ùý‰ŽüQ’ß÷5ÂË3 ¸9²Òœ‘ˆÉAL[J¶æ_·ÒÕwŒݧž“€r ÎÓUvU²çUv鯺g$Oï;ÌÆ`0˜áŠØgvž.š°‡,=ZÒùŽ ²Z›Ÿv`Y2˜t$ô‰"–p´€Ù&[ÊDWf ÓÏŸšõR +¢Û.ç¶Ë-Ým‹‘þôùSc9sNRúD nõx[<@Fx¸^ª£@¬=êáÖ’.Àk·á0Rá¢N'”7“„?¥ÜÌü%ênÒ‹hŒ¸zG0 fC)m²p÷H6ûe‹…u¾A¯Í'Ÿ-L®œÍZ>úR0[§ÎH9©ÍÄŸ-$7zÁÜ*vl™s¼W¿1[¾(˜ÀZË wŸöÒZ°PaŠô¬/檈Úyô@ëÈOªGº¯oH8#OÊ·F#dCÙÿbä’˧.ˆ„™Ç`0˜ ÿYÓ¼ÍæÃîÁZ*ÅwgCHÒm.šµ™ß²e›¡ÿíæ%l¹œ‹´×ó©çO­bz»œíÀò}Þ°^Hç”ÓL|®üyü®ÌM•ŒÇÎæ÷J˜M›R»*y3I¤³ðÇ0RsÛ”#Á‡~®b~!”ÀSä+ª¼¦£]—ë‚ÔWíj"#1Ì-HkîúÅ° õ¨¥‡A˜ œj6VIGZ›¸j›ó¶ÔQe!åØ’ÁlÔfϦ7uaËK`Y/½£$K˜çJ&ê|–ôKŠ.çâ%#Xûë_`Ñ2Æd}ƒ0WÍÿ‘Ù}iî}Ÿ`&]‰W­8ÕŸràŒ´a„rï¨dÇë±?»{~Ô} ‰Á`0·:»÷媶Ҭ¤·ôXNGVf§@SÒ!!±m[‚·C€íJ&ª +n<á¶ü—•éµb lÙ;茷å™Yϧ–²(É«—0ÌyÉ çÅrELGÄMkžÞohäìÑè {Rmy:©œ`dCHò%ôÓÿî'Ý×ÖŒ #1 æ;aáîg ‰¿e´´‚U2QØÙeÓBf:´ÀÛ&«f£«sS09/ +&ð¬¸]ÎA;Œ„‘ºäv™7õå\Ìy+é—3DL‚\0ÿÑDLWè=8ì¨0ã•îÆïR<Þ§`äÙ$œáˆ­Â©ºªç?ôãÞ+s5)2ƒÁ`¾7š·g³¶+Æn~XQo<1Vç“Îoµöú[*ÌŽ-;Âo¯Ì&À–›‹F½ÞnÛÒáåó§¼Úú²O~¸ÊçM¤ÉúZ`®N¯WŸ+6uŸN(¼ÉlÇ´ªÛÖÜÝãy3É­kC5.Éo©»÷:¨‹ú‘ ón¡”öŒÌ,Ó¡³Åo<Ñ«¹˜e +Lê¼·ÜHXR|Š–2ÑÚL|m> ¼\›‚¹r^¾S«¹xÉdVZÜæh^ _Ìõ}ÀHû<)“*÷$òõ89ò“C?á#¼# ï'ögwÏÏ›ºxÁÃ.d$ƒÁ\/⇔۲k¯$“…$2{}9Í@•Ë¹øR6ÊM%ÛƒSKaK fÉd5¥ŸÕUËùÔ¥ƒÕˆ¾p•5_ÒàN +#mq<ô‘Ó  Ùp`©€-$[ô7ÎvL0ƒÁ`07ÆX³ù°ó´–úgAg–Éa ’U®Í'ËéHQ—íA*ÌJòGÔGð$¨RâšÇ¼‡´o@tÇ>y²%FÊ?îÀ§¼™$Çi;/Q÷!½Ó}‡B}®fä·ÈH ƒé[(¥Mî©¥R=jA‡ëy}u.)TÀ,Ù,Ái-ƒUs±’9_u˜áÛŽêãíQ~¼F‚U·Ý–ä¾Ïs:¡@mudW#¶F^©£ÿý“§çÄ¢\“ ƒ‘lš—·+³ñ¿Wô`Qg I ÁÆ£šµy Ÿ(Ø!êÊÜ”e„Z ëâ2à _(ÛÑÄOA}G~òþ©¹mqܧžC?ùzœœ8#sdÏ«|Ey~2·Ž!‘‘ 3@¡”öŒR_,#0XÎÅWf§–²±r:âPm‰}[‹â¸žOÁ"É3ÆbòCHKn¶æìíªîƵ鼃-< †<Ÿª´[Ètïx~øûÏO!â¬ECb0Ì„ºP4¢EýqÉ:†\ÊFÁ–•L”ËA—¯ìvu. ÇBò±ÄeŒyï‰>àkx={ÔÃɧ^ “üäl’c²ÃË}êyùùGMzïüƒÇ\¼ÈH ƒÂPJ›,Ü=RÌƸtfPn†µùiËdb0T”m쀴6“(ñ{ ¬¥‹¹©P.:ðHòëqòNzl8þlyöhô8@lÊÛ #»tÞù§ù‘ óÄåºäÇ|u!^1B–6,7 ‡ Ê6*˜tÕ`%TUsqqsêÿZÅô#‚”;*9™P®$IzÎNpã¡œN(ßL(¶æÞ¡œ— ¯g‹þìÂGÀoEFb0̇ÍÛ3PåŠYf±”>[˜†£e²"§§fQºp°}«®d"âïºtµ`>„Œqæú=Å#?ùFªnpã¡Ÿ¼'pÜ÷y`°¡‘]ŸûÞùŠv‰‘º¨Oò²X æÿì×koÓVÇq¿‘I›( &íÑ&íu ^KŸæ0@lï¤ õbûä^Û¹´uhc;׶´¬ãá4J+lCÓöÔûã$MzÙè5Zùõ'²-Û Ç‘ú EQW5¦ì6òóTéð@èÍR¦]Îv*9lDÊd~VpÝK%þ¸ŸØU˜|óíäŸn“R•lrgúÚ^2‘¹ùÍÈuL“£#)Š¢¨ÿî'‚(¢B÷N¶žÚírv04gÿ¨ƒáèƱ«­l %¶JL§š[[,¬)+nÖ,ÌóûEÝÅëá;ã÷B(/p<ßU1{øéSW3&M¸“Jü~/ñÛ½Äë; r‡]{9}í ûdäL©GÝ!FREQ§é°+Ú…ùÐ6|¶4Ú‰–V9 ÆÄž![þû„ƒ%†eÈŒ Ži¸¼é¦±°Mø°œÅðJkŽ×n5/g1¯ÐXX[*¬/±¡nÅGt*ô¦0|+>¨cðì긿ÂçŠc¶l}ÝËm–Ÿlss,ß1j|Iþšüôåôu)Ééë¯ÙçñÁ^75iN2$EQu~qΣTr°ëÛ³`r‘tK«œg€)1~¹aâ¥Þb%*.Îþj`¹°>ÍRkÕ©æ0X±õåâÆr lW²°b«”‰=9Bt°Ë}l㞎î ȇB¾Eç8FÕD¬»&&°ÌV.×µæäS;Ñ#¦>¶4íÝ÷_ ¨±¯‰‘EQÔ…Æ‹¸9|$È= ì¹@è­‡¶¹¾ -Ä"’ÄrÆͼs³¢1dE3¶b¬D v*¹n5·!‰¸ð̳ž¯Ø?­:›5 €Œ¥Ý»$v¦ÝÛ{ißÁ€¨Ó,=FÝ2Â’î—³+¸¼d6œ™NÕ ¡>nzžw¢+v=”Wq“«¢hJÎÐo꣎i™[ÄHŠ¢(êòÒŽú£ãå7H wI ASÝj¾‡±žÊ.S€òÕ¼õ1N7ê`ÃáM7éTsÝÅüÚbJ„·žŠíºû³_‡îÆ•6õý# +Õ!ŽÃœ.”ˆŒ’óõ…¹Vi®m›‡—ñt«ÝÆð~P"SÅgñ]¨«»CŒ¤(Š¢Æ]*yà€g?'›Ck­ræ™·Ð,eB…«‹%e_áñöéÔ©i¸i@±UÊ´ËY ¬¸&­˜ßX.â£n,/lÖ0ŒíPúPÎ0Ca€…ñŽá+µ†.¯;zàÌûå¬gÍu-ë,‹:€bß„Ñ({gEÇØž¢(Š¢(ê˜TÍðøv&tMß‘Ì“~«d;•8÷Aª#Dô:GÊÐåÍRºUÎbpón5Û•vÛ긜R§apI¨0ÙÓ&|hsßÖ}G÷-ì*"ÚzÃÆùª= J€qÞËÎüâýèÕnðšLõ^An5¬ßñ«ØëÔ¢(Š¢(êŠÄÍýíTÒ·gW….ý&Ç\[,¬/¤ß„áÇbtb1ò>yì@g®-6–‹›5kë©À”ˆi8<ºDú³ÇTŽ ßÁ=%;í ¼€b ­h„Ö\Ã1ë–¹RÊÔ+ó«b¶kYåò“ýÿ JOÅû)=*:REQEQçÖÔ,£¨Yœóm=z ms³&¶< ¯/ê.\2ʔ۱í>mJʱŒ:”èò†£‡Žá;:\ns3ÆÞé>4nÒ»œ›ûVL%cýS´3­ +EQEQuÂÉFòíLXBƒÊŠ¡Ü0ƒã&Ìé;|UnÍìL×2ÎÌù|”T²OÄH*1šRb¤iþÏQEQEQÐ0ÞâüâÝGOv—cÔÇúu)‘¢(Š¢(êªÅ9°ÐCµÛ7y¿(š’“JÎ×úéóREQEQE¬`Ëû endstream endobj 11 0 obj [/ICCBased 19 0 R] endobj 18 0 obj <>/Filter/FlateDecode/Height 947/Intent/RelativeColorimetric/Length 20505/Name/X/Subtype/Image/Type/XObject/Width 880>>stream +H‰ì— pTÕ€ï½/!&„ò›È_aB«A+ˆÊ„b‚J±”±ZDhÅjh¶bÑ"SlɨSF[ •q¨€vB‹P¤ +´Pù)- ü7Bd I€&ûî;=÷î&_²»ïí{{÷|“!;LöíÞsÎwÏ9ŒWàœ=øñ¥û™å÷!óጽPÚ‡„#¯Œ=^vÞï®^áØÓfØêçõV$Ax ê6GëÀ<=\á kóË°nœÉÔàÂ3,–õš-Œ g‡¨†G„X¬óª+º)áöõ¢Gž`±žÕ{[-6t áÂËû8Wë¦Ü{‘1î÷7#Óà‚ 8²Žnz¶œÁ G®‚JÝy¶úH¨ƒ&AîºÝwB tT°äVŽ \D06¡²‘îns'õA¸‚Òíbº©‘ò· G.Ó⬊F‡Iðœž8 ‚ˆÔí§ÐdwÓ ®ê›äA¸ÅZ-hV7%\éš( "~,Özµ2ªYlØßKõA‚ âÁbY«Áqš×M ÷V&u8‚ˆ‹åminêO1Úá"¸`y;A^[7`:58‚ˆÎÙv€ÝÝÔ†wþ^Zá"VP·ÂèQ ÁÑÞ$AÄ.c…'Án©nJ¸m¹4RD, 8>ŽF75R¾ÂI8‚ˆÔæ;£Ó pÑ›©û"AÑ€ºM‹V7ÕàªÆQƒ#ˆ(Ag^PúD‹ ÿéÏ,¿¿=A$¨Û‚XtSÂíéAÂDX¬ÝòØtSïZ›M#%A´‹}æ '&ÝÔÛæ3Æý>A$ ‚u]NŒº©gO¢‰’ Z,;ȘuS+\ÅÝ$A´ÎÙÍïÇ¥›îÃ|Záâš nƒÆ©›nc;Ž ®ê6¼,nÝÔò÷>ÌïÓD ACÆ”awŠ 0CÉKDSàøD¥rÅ á* ‰’ šFéVíFw w¢? GM!ŸUå–n€ÚÙ•„#ˆÆAÝŠÀa2Œ„×,Ž C°ŒÅ®êÀÏã~Œ ‚‡Å:­vW7õ4g58‚h€År×¹­›ZáÎ܉&âj,vÓ&p—uÁ¾ž$A\ ì–‚t_7%܆¶4RÄ8gÿÛ ÝÀ‘°?Áï#†‹”ªìn#N{1L†…9ƒ„#š€ KM?)TxÔ¯œémˆ„Š‘4Q àeS/ÚÞÔ1u„C&”ƒí™n€Ï>v3³ü>'$xÍ iõ}øùÛ RæBÆsNOuSnk GÔÀ­H1ä>´p㬽÷Rf DݦJuS­LO•ˆÍÂEšne9÷<÷ö‰ +]¡ï¥J{³Xú/ÀÃÝ-‚0G¿OKøK;ֺWáÌ·ÊBaפ ¥=Rä2¶˜XœÝÔG8ci¢LaÔ¾¦â½GÎ\},R¶Ô—ñ›)2NZ¬óÊ„è¦Äs$\ŠÂEd\ì1fîšýº¯9Žt]øï×RE·Ü?%H7%ÜÞ$\êQ³¯±¬ÁO>¯KUsj Ó]Sb}³X÷ & q k³R"®D-ÜJS¿2sûOû}ÉUj¸¯9õë¢(%ÆI‹õÙNÂtSsÃÏR"°„‚óðÉó=±òH¸l»a¹áÿ|9æ.XßØÝ@®S0 ~ŸœðœÚ}­û}?X±;¼°8²ñb“°µ³ùc–ýÝG¡‘ëÆ[áʇ›Ú‡ +|¥f|ñÇkö|¢òn£jMVš ϘßÞ0"#Ëñ¨ F‘~$œÁK«“Ö¦ïã¿ÛFëÔ`_«_åC÷ Kþþs‰×M]f[:‘pf‚MeVt¹mâ²—´d¡kP!(ÌðÃ2ý²ºáK g\¡^t4é¥ÕáTÛÍ7¶HAÚ¾ËH¨šL¾%‘}eu]´íÔE•È¨÷µ…°;Ç\߸`ý@7çs…´Â%\X:]í{x~ó'¶Îa,ûZ=l˜cx⼑\†n á’Î×Ndö{pnqY8Ò•2r r(Kóû€m{ôi°]“Ø°© xx;–?¾èGuæGƼ¯Õ#ë³Mío·þ‹' Ž„_qScm5ûk?bÞ¦ã—TÖp„tË5…„™¦¶7Ômb€tS³Lgœ„ (ÂÒ"dw2{ÃéJ•0Û…}­.6œìÇ„ß'õ<ÕÓ20äFÂÿFÐD@pa³Ô=x]ïaO®) 'Ëve_«‡ ë pP·Y+½îàEЦI7÷µºH8žcd¬Õo xº©¯´"ÝÌ.Ù@×´l­ÚüᛇËUrB¶7m­ù×ÌDßËy=ºáD³ yrÁEšú•ÑcàÔU'ªtf<Ù×ê'_Ž21÷‚uÝÞMq!Á~”œp…z‘7ìûË÷G’âqc«Íý¿:˜{Áºlïo«‘Pú%Záü‹Hµ·:kÕ®J•Çñp_kúyæÍ6\°‚½ÁÕME}ßÞrA÷µpÐ3jÏ• ÛNœk ÆÉ˃Œ»iqV(8dÝ”pÅÙ$\B‰ìké9·~{ùÁó6&Á %d„¼ÞngZÞñ8ÃA(Á‘Œ¼S™7WÜÖÂSd·½¼·Zg AûZ=$7¶¬`&ù&X护ÑM…ž5*þ~ƒûZ$š½{ùS:ÆŽãçÂVB£LJ·`Y+T×H$\gR|%²¯1Ñí닶¯†ð¾Õ4´3hž±XÞzÝ4’J ˜åwà @¤é(¶ëùÕ¶•_R¡ `_«‡ó g,Öó]ÆœÞrlØýY.8.lºg´í;jî†È¾²X8wÓÞ¸`·oO:Ý”pëZ“„DƒªEÚÅ-ãç—„#*ƒ5D^AÂ;LI5ê6è(ñV»X‹ 2·"sA—Ñó×VãTª·lø‘1ºqVx”„`¡L2% ƒ‹4²ë®ö“MÿþTÅ÷µàª¦p ¬ÀÕuwVUn2"áü`CòpˆÔÑÊþÜÿÙ¯÷«ª+ àëìs‘AGETdTðQÑXšRP#é¬m5)hÕ–g}Ôˆ $¥!)Øf,QÒÆ*>ZƒE¤B Ö·ÅG0uÄ™jEq@ïÙ{usÇIg0uf€¿s¿ß_7œýøöZëÜY«Êé†ò—“­_ðz_Wü9šçµ.½Or÷?ßKSÀy­ /ô?ÝX?§è'ñ[Ư +Ðqì'+lé­ŒŽ~Ùï_ù$Û˜¤\€özúáF±ŒÜ À=Fö_.ûLö‡ÍkQ¶ú£GýìÖç+Y I1žÓ MÃ¥”÷ï;›o¾]˜ê–òºs”Äyïk.Zæ5þÓÛ×½—îFéÄ–÷™ ‰.?»¼ÙÇ}ËÖQ$^ëk«0p®2¯E¥“~ò‡ßL4Ÿ×Z ^§b—7kò'7¥-X¡x]Ó#]Zõˆ\)›×úžô£ß½¼+k"ËI¡²–Jôµ¡Ðçjß~ùÞ‚U7ÍÞÁ:>˜ˆ"›ØÒý†ÿpñ3{+P°ÂÖ¬¬‚î&¸YåâÅÍî›êµ}4ícI«,Ò~eÝ£ïV_ y­µ {&!¿¢±DóµˆqK;Ê]ßF>šöpqóO¼´îÑ׳U§Q+fÖR‰nê üˆÆrèÍ[¸­Ãm…EeóZvñº7añº·›Òp^kÍ–wpÓR’ÞËÓ{YP^Ÿ:¢˜³y-[WŸ!ãç=þAv€¾˜óZk^w7n±¶¢ÀqÓàu™­¥´¨EÙ+ñƒy«*+õE/lͼn¬=ÐXN|´ÈqËÚ›€Û}µÌkÇOœ·*›×lXóž×Z³u^{žNj7hÁÊkùØ÷° k!³›9nþÚ×>J——TOÔ2A÷œŠ: 8¶A ߆xm8 õ„þWg‹èqüysÞ¾;[Y5Ìkmx]Ó óùŒœŒ~G“¼7ðàK´~ tà"Ø\ZØj†Œµâ­æUþ¡ü\^¯Äyúžª‰[¸s¦ÎœÑì ~Ìló·mþ×Ì}þrÐ~Ìœ~ý=oTš*×ZKô•cë›Í2 µJšÉ +Ÿ÷ì—T{akæu)à\`Õífô+ØQ–gÖ>ãµq,^y‹¥×²j‹›¦½v}5„–ð}þ_´òCCëý¿9ˆ?¨…×5py³¸­ªÂ¸<{{n´¼9é¿ZãFp‚îŠ6¾99å%åD@€¼®í–7‹ÛËšä½qDàuX7éäüMŒA +úæ0‰óŽPGDrøz-ç½oD‘è]]°ê[,SÒg‚ÝÛÉhå­Ûƒ,o„)ÑúZˆ€”ä‚OXÞS¢K±â‰[j_MÈëÇ°òædØû,o„)Ñ =¬dà°oý¥æÙ½]w‚:ÆIß­V•‰ym: ª¼ÙÇNQ¶“„)è#5Py‹¤ôËa²:1M òædâÇÌa +Ú0Dâ¼3Ô‘Ü©IÞÛFÔ)‰ÞÛ ª¼Åröv–7åu2Vysr“–óÞ5¢NñZ_kWG,7³¼¨².…Š›µ¾W1n*èî‹¡ÚI'½ŸcÞT¢/ö´’#’ñÁ^ "DA7Y®y#H^G€åíÌÙN(¯ëJPysRÇn’@ÙͽZòæä„Wmæ$B´ñd»Ã8b™Ín’Pyýó!Xå­ï“,o„*è%`åíb ß“×͵v‡aDÒm9Ë¡*k`µ“çìU–7Â4\ŠUÞä·Œ¡*ëóG`•·ÿ¶˜R¢· •7{~¡¬oÊëûçYÍ€I÷õöFAJôYAj'c¹*ay#Pvsçä¡Žˆ$^e#'$¯;#µ“%¹à#–7Btu ¨´/]ÂéPY¥¸(n6½ }Çj2¤ ÛÛ%†É5ŒÁJôªoNúÖ3o„*(¥¼SÔ“²˜Q¢ëZÑ@‰{’å`%º(nö©~̼*¯Ž“8ïµ_$Ë7‚•èÓ5v‰Q89m›}3¤ º©Œe>ãF°¼¾7ª¼ Øȼ¬  ¼Å2™ÓÁ²vòŠ¼3ÔNz®eÞVÐÇoNÆ”Ó7‚’×?‚ÓNFâîbÜWÐñ6¡ˆäÔ]l' –×€ÚÉH)ëÁJt!N7i_Úo³}2¦ Mµ“±\ÇòF¸ÊútœúIÇXÞV:ª¼}w7ËÁòúîÙâòŽQ{ERº×*2(¯D8íd,#YÞVÐ0 'nö¡ ì… åuÇ œvÒÉqï°¼® ÷8œú&2M™7‚ew÷"œ¸ERó"ÛIÂåuS‰óÎQ{9ùþ'ÌáJt‘ Õ·틉@Ý;§¼Åòõ–7•èã‡#•·%,o,ÑùHåmØ–7Âåµa¤¸¼sÔ^N~ÎòFÀÊú„À´“NŽz‰åpõ×â”·H¾—~2(k'Ô·Hâ5Œ úN;Ɉ&¶“„ËŠÅD ¸Éí,o,è¶þ0ã[$'oÓ$ï-#ê4¯¿Æi'c™§õ`Ùåc׃“£Ök9ï-#ê4¯O ÓN–ä2–7BVÖ¹0qsÒó!NoÌkÃH˜v2–Q{•åp•õá.å¤ö‰$Zb*†æÀ”7'ƒ?`y#`‰¾y +Ny“¹Ê¼0¯ NÞzÿ‹í$ êŒ7k'§{–7æuû‘v!DÒõ ë‰P… ·Â´“±ŒßÅv’€Ysv.Jy3wh9ï#ê<¯/’·X¾ºƒå%:¥›´ïœÍém%¥¼ƒÔ>±œ°5í‰P%ú×î(õ-’+”y#d^o°ºÁÉ¡ë7BæõÓì"Cˆd\¼2k'qºIYiﬠÉT”òæäÌÌ!óº­J}‹¥Žq#d!è’7'ÿaí/¬ :$nVÞ¦³¼4¯õ½AÆ7'ýþÎòFÐüÙ¯ÿX­Ë2Žã×ýý>çðcü:$OkØ +ÁÑa Ä"TZ˜K¡âšX˜3@‘-ÜDLÑ~àsC˜¨ÍBØšJR¸a#jdSaSB‘¿=ˆ‚œç¾ï«ëûP×jÅá¹ïë~>¯?€ÿ¾7ß}ßÏuݼHË:™Ó•Å8PËsÛ%ò!kQý¬“ šå}Õ¬“Í'0ß@5Ës•Œ7Ùy—1zÍïû’šÞšÞÂ: ª•ym184ÈhƨæÙÎR3Þ¶Éö  —å݃•Ì·]ç0Þ@5ÏOŽÞ uû ƨæ¹|ŽÜdéã TsüZÊB§Ôò£°ã tóüS%ëdNŸ=€ñªy¶cÕŒ·yìÑhæø÷ :z˨×Ëo ›åy:¶I9åµ½jŽ÷’‹‘†J上•ym½Žù–Ñå­è T“õìFãM~VÉò  ˜å×/”É¡@N#öb¼nŽ×±MJo·Ëò  ˜ã“StŒ·Œ>Õ‚ñº9ÞÝGÇ|ËhFqÙÐK>àIEou_‡ñºyvëX' ]ê0ß@7Ç[Tôråߦc44ô ÖIÐÍsë(ÊC·Ô=Àó T³¼¦»’ñÖô79-€fŽoÒ1Þrº‰q}Ý,ï*›Zü õÜÈåЯ ଔùIÛ¤Œ·Éã tó|bš’ñ–-Çí ”³¼³AÅ|Ëiä{o œç•¤¡79âÏ‘(ç¸íËr“•·q¯œ@3Ç;z(¹¾ÍeÌ7ÐM>à)Y'»üQîššynAyè˜: §kN`¼rŽŸí¥b$z +ã ´³6™Œ ؿɨñEôÉqüÆWãËMzûôëè ã-ïAYt¹QNÃŽ³ýz:“wEnyè¸þƒ gôI‘ïù/#£ÌMöɯ¡7HŠ÷¼q€|Ùqº½AJó†óãœn$Ê…è "¹­oŠ47º¥eÈ Ò!¹­êen&3Å_ëÐ$Cr[ZáÝÍd•3÷­­è RQäVßtËJÅŸ “yí8no Ç~I—ئ›É‹õ›ð‹Ý§äˆ¹A"<»¹UnƘâ8MãîüsÑ™Gm ù–gSDËäé;[Ÿ¯ß³¥­8Ÿs¨ Òáù½GÆÈž™À¡Ud•ðë'.ÙzŒÑ$H>é#+?G¬”&/jëÞ|_K«œËb„yËüö½Ÿ‘àBg*£­¡yö–÷‹3•]è×pŽ8ù¸ÿñãÁr ´TšÊ6ÛmÜ­Ï8s€tøÎ9Ÿ skæÅw®?"§ðÎc„Ôùb¦¼4¿G1kª[[[iðÜ-û¹rgClPœÜã¶Nï^å­ÒP}óõÏñÅ ­A-)Kt[§ö”yS½Þ2êûDñl‹;Ô/#Ž7\QWÍ{œ¡ßÛ!¡c¸Aíñ2fìSß *'ϸè˜<ÅAí)ŠûàñQB^­àäAÍOÛÊ“j—{Üá•_l¡*ä9u3Z0â 69™4Ǻ°zK¥Éˆï=ŒkÔ¦â»k‘gªXÜØ5Å“CÿתϷ©¿/üDuj+duº#j”“{\ËmT¥ W¹Æ5,ü§\ãBÿÏB°–ÛfT¯·Êuñ¢Õ¶r¨5–íí¦Š½UŠË®Ù&ë,ŠƒZcùĪjnEqDý甇ã5Åò‘©•ï¿ºŒ\ãF>ú>®qPS,½*@nÔþÌÉ[1â †”+¹Uy™<ÍHq=æïav(j‚äöÍP¹.nÈrâ &έ½¸lÒ‹ÌÞ…~ç˜ ž›È‰zÏÝS´2ˇÂçÖ¾T^øp+;Œ8HX™w‹ 7aä—mÂR ³¼kxåKAf¨Ç¬7äP>ôk8*¹å¡;ûˆå‚¥'‹s$ÇòΔ…ŽìãdÄÑøÍÌ#RS.¦[T¹ 9O×ï¿‚â 56Æ܈ŒiðOÞEqinÂÈ5nô:9¢ ý’:‡÷üb¤¹ .Ÿùªl¼qÏ÷6·ö¥rà’£X*! ž75Fœ›0†hì3X*!ž×÷/–¶¨euŸò’Œ8ª9~ç2*…îé“#6Ý}Ù†~agÁóñ«£oqÔ¼¶ ·8ÐL¾Þ›UôF•;æô¿2ŠÅʼXÃ>Y0R\Ó£¡ßÀÿ¯ÌË*“C#¿ £~}Š1á@)ËkêÈ„©ŒÉòöARl¹)þUß8tâœå8âÚéФÀòÜ(îoEiæô¿Žž²`Õïö9¢sH ay±|ìAS#Êó3'èyÉuw­þÓÞÊѼ÷RRƒ„8^Õ5xo….½†}÷Á¯î?Y9ÖGH’ã }C/”Ý>?fÚÏ6ï9^®œÈ£5H–ãW…íÍPßÛNŸÆZ,2χ‡P²7 ®ëUk]RƒÄÉ'þ*íí_ì׬×UÇñ÷ç|>ß{¿÷rïåÇå×ý†ÀØ “›Nsæ7RÄUVTÿ ¿´áJ1šŽŒEm(-'«P6™Κ»#7‰%6FÒO“%¡ÉÀärï÷sλ÷çreÖŒûeç}Î^ÝÝ¿Ïçì<¿ïsŠçcýÔ5'eØZßÛpQIo7û~¿Q"6½êGGPDNz›ç¹¶BQ]»æ€Ü*QÄKzûvÏ礲]ºG–dñŽƒX9þa¦¡·¢8YƸ%oÈ¢rqrü˲ŽÞ„‘!wùâWeYUßûp1Xþs?2¾C;«xÇ ¹g§¬+÷½3µgùH«¢Þμã-܆wÄÈòÉvM½õ¾ãÚæ?_,ÎúÞ€š²Üy“š÷Û;¹VüÜfY^Žâ &Žó9êz#2QËŒO1Wq«„xÈi^ì;®s2rÉ-ßÒñ¶Ì8±pŽW‘Â'ŠwÝúL·,Ò"9ˆƒåJ{“eIrÙ'ž8Šâ UÞ®¶7‘ÊßÕ•ârß;Ðw9﮸7J2ùwÕª²Rë{¯úÊòW’ñ]Õù$ÅêÆ/Ý-Å9Ü*!l–Þ¢»·ÞâÆ~sO±\!sÜ5G{oEq²Ä±¾ÆÅó½eLNï"J}÷ô>ŵÍ™Q„,çïÑõ¬rà‚mŒ[%„«‹HogÞqÃænàž± 9¸÷ê¿U$×òÙM¾w àÂX~¦L‰ïŒþI&ÅMÝâ{ß.@Î;*·BR"¾ÂâJ ÁÉù_ÂÊ-‘·æeþ µAxäÐÎ!Ðm²Xë ¯¼â{ß.€³¼‚z¼³­ü¥?ÊX¶oË›t›”Ú>µ©gÝÁ±¼\qˆÃ WIóñgeÙ9fÈrçB™nI±Î «»äŒÚ Drp—„òx+†pûŠ7å7µA˜,w4…1ÞŒ¬ò’噫¨ •óKc‚È-‘á6âë{åÂúÞ3€ dùøÔr+nÃæîêY1@ äböUJÔ?ÞŠÚÒY¿‘õâá³ü¤œfß9ýÅM2ýôóVjó½_}óï*êo“R[výz[¬ `9¼N}n2}oxê´,7Iše;K{nRÛÕß=θJBèd^<¬ýñ–YøOùeÀlƒÐYÞØ¢}¼‰ÛŽrÕ÷VôUÎ{ÆëÏMÆï¤ÈZ‚f¹sºþÜ$8C“ND‹µ?ÞÎànBp4gù§åÆõ7õ8‚ƒ€å¼³B©ï’Þ§$¡Ù9‚ƒ`Y>ö±`rë¹öΫ"8”<Þæñv{‡¬u.‚ƒ0ÉãmeÈã­‚ƒ`åüBkX¹!8–å}×ôxë…à HŽ«3C›n îâÇ Îñwzop e#8KÎ!Ž7*‚K%ç¿\Þã­‚ƒ°X~ûÖ@§[ÁAHó}”„øxëeÈ 8„süc¢€së nyÏï€vŽ·Žø6ÙÃP¿u ‡ôfJ}ÓW†Z;ŠI  ›œÑñ”ùî¥ÏR„à@?ÇG?þ|ë WJPÎòîÑ¡?ßz`ÂA,oEoEpëås³ü³æ8z“Whå÷œûÞP€óÈyEF‰ïTj#¥Ëw°Å•ôÊù!Š¥·Þà|o)À{Êùn9¦±àþ„à@¯œ?O%ߙԂͻiÍ·ÞàrßÛ +pNŽßUoò1c÷pÕ÷¾œ‹å×ÚãêM¾æÆC˜p ’å?Œ!ã;‘Ú24 ÁJ9o[o” 8Ð)çµur>ã’ 8ЩÊG7Þ$8\)A¥n^F™ï=3æÞíÂuô°|lR¼½úbz=,þp¼½%´Žsß[ p–å}•h{3tÝ~Œ7P$ç¿›h{Ki1rM,oMbíÍÐðqEœãµkoM—/ô½ÅgÉi\ko e+1Þ@éí[±öfhÜaŒ7ÐDŽãÝ‘ö&5×IPEŽãô8s“ñÖ°•­ï xÇö9™1JhâiôªXÎGQê;‹A†ö¸M‚.–÷Wâœo Ü˹ïýx7ËÛÇÙ[J÷2æèbyCs”½%Tz–«¾·à?X^]_41‰ª7C£¶c¼N9¿>Ö$¾©%C3ŠW)€B9¿Òfbšo •žÆx¥ª¼ÝDÕ›¡+N`¾R9¿`LÏ…R¾d£7PÊñê4®Þwâ: JÉ øAIz‹&8CÓN¡7PJz»¿”Mo =Ü@+ÇÕÙ¥ºxz3tåëò&PÉò©Éuu™‰åB™Ñ×0Þ@-Ë'¯-×gi$.¡1Þ@-Ë'F–Ë¥X\JSºŠ7)€J–÷Uú5”²4ŠÞäÁx½oÖÔTWÊ¢è-¥11Þ@/ÇÏ mn*G2àšÉè ôrüäàæ–†úL^p¾k鳄Ê‘è%‡sùà-2à¢èíúNy‘(%½-ÒÚÒÜPÎRã;—¾’Œïã: ŠÉáœ7tHÿæÆr]ü€K¨u'ç¾·à=Io³*ÃZ[šêëLè.¥;º0Þ@19UÚl’—…Þ[B\õ½£çáxèÊÐýëK÷–ÒÄ7ÙúÞP€ó°¼·}DePÿ&é-ðgh1Æèf¹sÚèK† h‘ e)õL_úÀo1Þ@7Çù¢Ñ#ÛdÀ5Ô•²Äw4}`þÍ~ýÅÈY•qÞ?3ïüŸÙù·;3»3»³³Ûn·Ð(Mj¬6J«1¤´zAôŠ5ƒP±\Ô`$1¥i0FBªQ…"½©4 mÑ´¥T¨UDÒ•¦í¼ç<žY¶±û§¦tÎ9ûûÜv/fÞ¾ßyž‡6±”½~žóQoèšZ9—Nš½P:ìÅxÝ >:Ò¨W +5à|ÏÜçÒèkŒñšüÒ†æð@1—JÏØ NýPlgôºüƶÑfµÒŸMÄTo¦8‡¢‡±N‚öÔ÷ÍV«>PÈ'ï™zÁ¹´ñ ôú y»Õ(æÓɘoì€sèä|l]k¤^.dRñ¨gè€s©ý¼úåÐàÓŸl UŠÙt*P½9à<úBw3Ðü•öÄPµÔ—I%Uo&8‡ú`¼BþþD»Y¯ä2édÔÌçÓú³Œñ&üË5c­Æ@1“IÆŒìM}â]o`Á/lo7«¥|&‹ª…Ò¸àb¼™f ÿ‡©¯þðŠöèpµ\È&ãQß°çÐcÜéõ3„K"•^†ÞüôʉÑáZ¥K%‚ˆï™Ô›Gk^Tß "—zo§>8ÑnÔŠùT2ñ}Ç à<ú®7ó,åà$ŸÙ¾|¼YïpɸêÍ çRåÆ›–ppê‹gÅøH} {À%Uo¾9½yôá™/ÆYºÿk‚ŸZ9ÞT½¥“ê€óÝ^g´Xù÷a¼YÿqÝd»Q+—²™™Î5eÀ¹Ô>¹„(ÁH’OnoªÞr™T,ª8CœúYøüR^LÀHê…½kåò‘z¥”Ϧ»½™²P:ù ÖI0MÈ\552\)÷÷¥ÝÎëuI‹ãЦÑheë–àCkWŒ5To¹L2è.”fp=€Ü@3 'ù…¦&šÕr!ŸM)½¹4úœšÍfQEÞ655Û[\-”žœG·°\ÄøЋà{®ZѪW +ý³½™0àŠïãN¯ÀÛ-8$ï_½¼]¯ûóé„)½ytí¿s\Y‹èíOšl«ÞúÓ‰X4bBoêÞ…ë t´Pp’Å “Ë›ƒ¥Â…Þ\íƒs©úŒZ„´#Nýó“Ëš5Õ[6iHom^Ää¸òäÂÁ=võøh­\ÈgSñÀ„Þr÷#7Г\`ñ’|tõÄØP¥Ðß—ŽQß„ÞVMc=-4à$¿¶aykh°ØŸíÍíuP Ú…u4%¥˜÷Ý”|þ–ÉÑÆ`YÍ·Ä›½é=àÊáðJ=>€K¢z›w÷R1î™j5ªª·LÒ„Þ<úøY¬“ ©noó8ÁO®l7ëåB_: ôïèo «noó'øø»Ç›Ã墚oñ âkÞ›K«N`¼®fz›ïý|úÓã£Ã%3zóh;ÆhK.4à$‹cÃÕb.m@o.ŸDo +) NðÃËTo¥\:éÞ›GÔwºrÏàR\è-œû ùWS£Íj!?Ó›§zÓ78‡Ü{q½¶älp¹w0ÁǯkTËùL*1Ó›ÆÎ¥ÆKŒñººÐ[x~Ω ùÌçZ£µ™ÞÍ{#º‰Ñhë­ÞÎÍùš†|w«U+÷gRÉ ªuoEb}ÍöªÞÎÍõ7‚¼¬Y¯äLèmÝëè ôõVogÏÌõ¢ +>ò~Õ[VûÞ\úrýgŸ ;ópÓmU +ÙtRïû͡ƳjûÐÖlorÎë­û7|ÛH½R̦z÷æÑÍÝ  ­7Üü#øÛê@1“JÄ"¾¾½9ù!w®Ìcø¿,w{{j²6PÌjÞ›GkNc¼ÎQ[··S×ÔªÅÜloŽž½©Ou'®70ŸjòµÁb.©î7}{s©~Lý4Nõ¶»Z)æõîÍ¡1ÖI°€äýƒ•B>5Û[¯Ëº(‡ÜÇ‘Ø@ðs£•B.|m{siÙ«X'Á‚_¹¶¤yoDwb+H>÷Ųê-øž¦½9å°× +à2’ï/ú’j¾yžž½¹´ië$Ø!äC¥|.ªÞM{{ã ,òñ÷äó }{siÕ Œ7°„äé-ÝÞ"ÝÞzÝÖÅøt+ÆXCðÎ|>®mo.õÿ½5:üh.›ˆE<ÏÕ±7Ö…jØ!ä'Ó3½éx¾9ä܃ë ìÑáGréxÑu¬½Œñö8Ï{r}ÚöFt#£7°G‡ïíë‹©Þt<ßòŽuì!%ß‘ÉÚööÞiôö,¶eÒATõÖë¸.Â¥=Ý_K¨ÞnÍ$ƒHÄÕ°7‡J‡9ìõ#¸lŸ¼>×´7>2ÆØCðËIÇ£_ÃóÍ!çqîôú \>‚ÿö¾d\ÏóÍ£µÿÄx›„|¬©Þôoj¾íÀõV ùéQu¾ùöæÒÀïÕü°GÈÓ1]{»Ž±N‚U:ü3u¾ùž«]oy"7°K‡¡Î7=ÇÛði¬“`É÷Çb¾¯ßxSómÖI°‹zŸ¿hÙ›CÁïÔu `ÕÛî ð]·×yý—®ë$ØEò¹›‚ˆž½}¹-IÒâ#Bò٭ш§_o.Müë$XFðô¦¨oÚoÝŒñ¶|ê×I—ò0ÞÀ6‚O¯ñ5ìÍ£µ![¼ÇÃÒ$øźçi·NªÏ³ ë$X'ä¿úöæRíïo`Ÿ¹úõF´…ÑXGòßõtËÍ!ç'È ì#yŸ«co«Nâ|ëHɹ®vë¤K_ï~4»¨wú«ª·^÷õ6•¨ËÀ2ª·®£[o>ÝÈ8ßÀ>ê¥Þ¦]oj»ÝË^?€ËNõ¶Q·ÜÈ£Õÿ`ÑëGpÙ©Þ6k×›K·ãzI¯v¼^öß\*þã l$X4ôëm½ì^ÛžÖ¬7‡œï±Do`!ÁÏ”H¯ûÍ¥ÖI¬“`%Á‡‹šõæÐÆ: Vüëœ^½9ää°×Ïà øÁ@½âqiý+X'ÁN‚÷Ætëí>Œ7°”àݤUo.µŸEo`)Á·ëÕ›GŸeÙë§ðμM«ÜJíÃx[ Þ¬FŠ>¼³_÷1[ÕuÇ¿çœ A‚5¼‘lMeH:”Èfô` CÝÈš.ʘ™50›Ó¦¥æJ—Žˆij>d+Ö°”ÊrâÓRqfPŠš@ê’õ&E¸~¿ß·ï¹µ\å}=žë:‡sÞ¯¹¯k÷ÛÏ÷'‡½Á¾¡¬¼Î–ZÞ‘½Í¦öRû™€R +¡X½Å2þqæ etÓ´"Ý“‘§ô†² +º±H½Ù9ù{ÎI”–×5“íˆ+ŠH¤7”–×û÷*Po±|—sååõÞ Åé-’=ÕzÞß Ð+N—ìš¾šŠ!‘yÛ™7”—ÓG…éÍ~ŽŸ2o(1§×Å…é-‘ƒ×Û… ”U]Ï·_ó‚ˆåtûPZ;ô›2"ïÎÞË»dÞPf^O•ZÞ¡½%–#UCÞßÐ3A·W”{2’èZrC™}ãØ¢ôËÞÏqN¢Ì¼nšY”Þ"9s¥æõoÛ°A$ÉêòþB€òºîƒé-–Yƒœ“(5§O´e)‚D1o(7§÷Œ)Fo±LZMo(7§w.Fo‰œ¬!ï¯詺þ¼Ï·HF.aÞPr;ô[–Hä²o(9§?,DovÒ^¤>ïoè)”ó +qOƲ×ãÌJÎ~Ã/(ȾÍUzCÉÝ~RöÍÎÉ_‘ÊÎë–9Åèí€Í<ßPvÖÛ§ŠÐ[,ßáœDéy}vjzÌå,’]ÑzÞ_ÐcN×M*@o‰û*ó†ÒsúÔ„ôÉõÌÊÏéŸ%ÿÞùÀ3vÚ%W×Uè-–V>PvNïÉ¿·XöXμ¡üBÐk‹ÐÛG½†¼¿  ×¬·rïÍþúÅä† +°ßò‹òMÒyØÀ9‰ +ä›íÛWû† +ê¿–ÿ9-gÞPA·™wo±Ì¤7T××gæÝ["W‘*Áëk3rî-’‰¨Ëû‹úÀëàvÐå©&_HïZ ü¼¾4&ßÞ"ÙåZÏû{úÁë+“ì•£DÝʼ¡"‚.È38{;žmÕ•`˲¤–ãEËø¿Ò*#½aT~ÁE2'pN¢:ì—ý*É+8;'—’ªÄö傼‚‹ä}8'Q)^Ã9CSÓ±|KÙ7T‹Ó­ŸÍ%¸HF?d;P)N•¨ÿÁ%rükÌ*§®[fäð„‹äû«ªqúät››þJdÿ'íõTŽw€ÔúÛ[,§ªÉéý]¸XÆÝIo¨¦àõî } .‘C½†¼?7 né¨>‰\®ÞPQö»Ý(»òú$– ÏrN¢ºlkIß‚‹d>ç$ªÌÖæÜ~gçäï˜7TšWÖP +½ˇ6Ъͩߟà¹B=ç$ªÍéà1ý¸(#ÙûÑ´n Òœ¾t˜O¯ÕäóªÌ*Ïéši=.’71o€ª×'êup‰L{y4]¸»'ô|áβ®hðzçÄžËØGé ‚.­Y=Éì:ç$ð&KaÑÈÞ‰ÜLnÀ¿Ù­·0îYp‘LÚÈ9 ü‡ÕpæÐõB,ç+û¼ÍkèUp‘Œ¸W]Þ(§õyõ"¸DŽäœþ‹×?-q‚‹e±Öóþt@Áx<ÂÆ({û¯aÞ€ÿåtõ´^÷erþŸ×ÕÓ³nÌ2zÞÓÇÛ{+[3ÞÐ÷ +(xýÍ@ÖÁ-ÌûS‚þz·Œƒ»5ï•·0É6¸”{xg–FÆÁíý˜ú¼?PPÖÆ9"Q†Á]¬.ï•×ú‚LƒûÄË”Àp¼†ùeÜÈÛµž÷g +ËéÆ£³ .‘3”†åuóÑgÔ[,û<Á žÓ§Ìì Ë-V0€á8]55«…‹åˆ­4àôOíé•…Hj+è h x½ý]Ù,œÝ¥gÙ0ïOXºl\6 Ë”Az±àK& Ɉ›8(†l‘f\"s8(Ƭs3 .–‰3p@c^·‘žƒw¡º¼? PpÜ|‰º.‘<ÏÀM8Ý|DÁE’ÜÆÀÍ8Ý8+ƒ'\"'»ô= ‘º>}`÷ÁE2ð4åtÕÛ§n{“…ÊÀM9}dBÁ}|›ú¼? +PxÁë²qÝKí~ö h.]¶[× '_å Z` ·8¨n$2ùyzZ`\u\$²Ðž‚šòª5ÓÍÀÍÙÁÀ­pºýäî‚‹eü} Ч;¾Ô]p‰|;ÝIÍ9Ý2»«'\,=ÃÀ­qºa–Tç"YJo@‹œ>;µ›àb9q»†¼?°“pºrrÁE²ûj^p@«¼þå½Rë¼7¹\8 UN—³»°C±L{Þ€V¯·Ží8¸XFÿ–ƒh™­ÓõÒEpŸc߀ÖÙ<]w\"“žfà€ÖY.ŠDÉì  UNÝI—ÈœW¹(68Ý1_⎂‹dô}ZÏû;§[’¸£7\"ç(´Ãé?—Ž&.’ýÖó‚Úâuó7ƦkÕ~o²Äþ4€6X2ÕÉÄErŒç Úcɸk¦¶_\,cW2p@›‚E³þ¼ÝÒ‚ÚÛ79[8 ]Á©®˜m µU\"S_§7 }ܶí+RkkàFþ,ýƒÚ”NܺSǶ5q5™Ç舷Ópy[Ge,û¬$8 3VÜ«WïgE-w%ЩºêÚÓwIZímÖfèTzTÞ1Ó‚kiâì_Zž6 + #Áæê•ïíÛâQË™ACÞ?3°ó +ö"{ì”QiL- ÜÀs”@7ÒâþðáV&Îþ…Ù7 ;ÜËW¾Çžq̓;¼Np@wÒgÜškM'.–1䠺孢¥³k\\$§ÑÐ=Ëè…Kì¨lT\"Ó6qPÝ uÕÕóF¦Wcƒ}KnLŸ{º•^Š·ÒpâjòÏÀYVÜ‹—Œoø€Ûsd#XKÈ° Ë÷‡v@¼Õ´@† .–é›8 +6qs-«aJ¹‹²R×_Žþž´òE¯!ï(¯[>)É°¹ÙòíùwȆÓë¬ÛÐAy9ûdÂë 3†½½9p‡9‚²ôæ†ó–ö6öJ ^_žÞ¤7{Ü}Ý®NÝòúiÞÛÔõ е ›jüz{ó¢¼Zëyÿ¨ÀNÏéÅMç-¸¹[8 K^×¾ßjj&’ÝWð‚ºäõ²æ×äÐAyIz{èœÓµSZê-’)9(±_îÁQUw?÷Þ啘ÊÛ +$A¢ŒQÐÀ€#§Á+ X Ø +>x4  ´Ð"2øèh;N¡´AÅ* +% åa)Paª´ HA ) ‚’°çÑó;gƒY²÷îÝÝ{wŸ?²;“Ý»ç÷;ç{¾¿o4HÃz%"¹AÂûú‚DÇo)E$¸á8P"HHùÌ êÍ$í÷£ÞÄ9LìoÙ8©T9‚8‡‰Iº›Ä"ý/ Á!ˆS¨ØÝ9R{ƒK[#¿‚ ˆ#˜xVºVÄXä)ÁÑàÄAñÏÌÈíÈæ|Œ‡ ŽNUlÇÞ@p Poâ&v¤ÉPfKo|&¿† ˆ]¸`£íÉM~ºù.48qÛmÚ®XÍ¡‚ØBªæQ»r“eÖI(Ä6Lli-õc×ßÌ%èob)šÑIJ)70¸q D»PQv£m{½uüJ±ç‡:°7\±Ô*‚ 6 b ¤1ûX¤_5‚؉ ƒL“4X‡ vàb3{#$@žäòû‚D—9”›üZ§}hp9L¬ +8'%&™‹þ† ÃÅù{‰åPnÒàœ•ŠE$"¨˜ç4½)½‘m¨77à8&¤LœÊwnoÀe´pƧxo%?L,pîn\×㨷¨à”†Þ1ŠLn˜¨ê+5ヘóq t§Aù7X]6»äØ%xÇPrÉ‹ £`‘(Á9g»üïw‹re';ŒZv ˆQ.Yáât^Tã$ ”m7 +ÚôO!_†k#«Û5ÿûݯ4³Ëc¿ÙÓèŸH’ÁÅ $J½Iƒ›†z³ £j¯{ï…‚.²…†i&ìÄ-¾yþÇ1Ë%Lë.õ­ÞúVb‚³§p=±š²©ymAlÖžzovº >BQrÉEPÌŒÖÝà·Ñà"E‹íÜáÕã»Ôme^ÕMî?£Ã#KŽ\” â`™4¸¦`z8¼ð—YtЪ2Â:Ê‘n£çïƒ/qŠóºÿ¡âHw7ô&yU Á]T‚©]5)¿l—y=­5HNÛ\÷áo–«'`–ó9rÿžsGn&É=/ð‡Žl+—æ´„nYMjíJc!âY™C{ì’€,—èJ(`b_ñÖ_ƒ4߀þvMdd±ý`ÁÃU«,{7œaZðÒ~äÒëä–1Œr~EnÜ$7Ħ7ʯÀ¥<൦ôå!­µxœ\o¡ou~léQýTl´abo—Ò›|LÖa(¿L(pþݳ2 EFÓ‘-¼ä´æz]\ÕèшŸ`b¼;Ó$œB^4Ñy¦²V}å[…·¶’ý±"lá{ ƒe‹œÑ+Oã1Ëù *þÑÉ-{#$@×ã@‚S¸zjö.Ölº 6…a䬮ãþTΔÉaÃ}ƒÜ«)ÄrçÀQ i¥"˜è¢e¶ÊÍ¿¸?CkÄ­‚4z\·Éï*Ê¡äüÛÛ»go`pSEªo>gz¤>ñöÔþiJ¦«bÓ„zû„’Jõ£˜å|Á1.Ú›šÈíGS:Áq¦í½¢dT.D6Ó4b 6¡lκ­py ü$EÉy&¶ZÄÝI‡,‘OMUXjÿìàßîÔL6ÃrwŠ¼&Ü–Í»Y{tLÝÖû..×]¹IƒòyJ +ŽsN¡îÊ/ß—¡•s±) Kå.×|"žÑTç= K‰Ëz3H«=©§7ÎtÉÿ}wjÿ€jC,"[ø¦ë_Ë)ZzD¯%çE˜ø_/bº¼õ„ÌãL!8Óõè¼Çï€)R&¶xŠ-Ôw­¹Þ/®‚µ0ÌrÞƒ‹ÉnË ÊœÚTÒƒÜ$ê¼2äfˆR¸ÛU­WY.{ÔÊj¸0Ëy *6¦»¯7ƒ4[ž*%gêPŸüû‹¿µ[qŠlá›oä¬.ãÖý‡¡Éy &Î}‡Xîï¹IF¤‚¿q®cÒ¡53òuÝ t¶FZóYE¿?¨W™{áä>,ŠÉ†›ä&»Áq¦ ühî½Õ!7¼!6Mh1·/©Ô‹EÉ%&*z¸?M&yI]^ áTUÜûóoeA½–—´ÂP6gå.«µÒ$¿ÿ¼¼òŠHlΉE¾y:i NF6ø{j×ów¶b[ÂBó¬Â?ž’+fA4¹DÂÄ{±±7©bk}RœLlNíÁõ?î©TæEgkŒa©ÎýéŸa°d ³\¢`¢¾ Frƒ+b"Ù¶¶!²ýká“=U•¦ÇŦ e¹ü©«ªuɶ/¾@6ýU£qžÛù¨ ‰®ÑM8Õåìžý`}ˆ ?ˆMcp±¶ÌŸ°öÔ@Qrñ†3±:-fö:^$’gvá†cV»³øîL¨.à©5`¨,—‘;qó¨(ÈÜÒƒŠ­íˆÃí%ƒêDrì)g ¶`yÙ”ìPZ f·TŒÑY.3mÓqY¢H\ â£[c)7éœ-w'Þ8W&Í?,™ÐMÕeù"²…ÅÔ{ž7cÍ U–qŠª»b*7(¨B¢áT_Ûæ|ïfU“éo±)d”ƒ"ÌþSV…âJ.æ0qæ!ã£c‘œ“~Ö§^ê6ÿh D6Ó2ü¯µt–»!ïé²Z¨‘úñ4LÐ $Öz3H³E‚&ºT‡p +‘­¾¢¬¨Gº¬Åômd ‹aäÒ²ŸÙrJVÊ‚>¾½ŽlíÌ˜Ë n„/Jjàš¸´{ÅS™º¤›Æ°Ôè5£´B¨¹Ò‡›åd[ç$ögÈ$™;|gp\§™º-¿ÙAW‘‘-<¦>÷¯¬nT=â"œŠ8È îyá«dÀtù|Cñ}ÕaL¢ÈÀ³ÐâžñkÏAñ”¢äÜ„3QÚ1.r“?Òï¤Ç)xñåªÒ±½ÚÈÅ[V +h­3 ÿdôš¸ù t"è›=óTìÍ–Î ²Î'¥[íwFeÔùK!±) RÙÓ6V +49÷ ¢üŽø¸ƒ{Yx}ç¸ -°ÆÚm¯?Üú‹£—z˜úΛ¾ú¸PQÎë;瘨Fâvwä¦ÃÞ(9Ó7ù…uÓ·UK6SÍÙ£«7úM^uºÂJ.*˜àc‰G½‘ׄ‡ .$¶SËÐçF¹\ËŒ_k<‹¡l.=ï™íuÐêéëÒãÈÞ“øÙ ”ùu^ÕÂQºp`ñˆN-äR- µ°”äîš½óSYÎ9r ƒÄ-¼&¹aƒJ™Ù`U5{mxºZgŠF¶°:Ë |qkµ“Ã,gÙ³¥¸Ê ¼ôi¯é‡RɉÕÓ Z©5¦td ‹©NJ‹ûgn<íÂ,g)·ÒNq–±Hv¹—ÇU¯•ËÆõi¥F¶°†Ç¥í€i­‡¦a–³û³ˆï-#dž&ºôXîèKJ†u±adkåÚÜù³÷Ï_i Lîow#`pÃë„6‰su=Wí|½ d†b‹# +Ü=gG(Ë%z+ýŸ>D0;$c‹  .žË̯ëgÝP«B±ÙÂTs‘1hö¦3ÐNÌrMACÌD2‹<'jp!­‰òeOäƒØd(A±ÙÆÐA7cÐôM— ›(¹ëÁ/Va*þ˜¤÷‰Ägê§éÁ_Éi)Wc¡Öœc(›kß÷'Û•ä(KÔ®zyýŠ$ ¼ýŸýò­¢Êâø½3C…¶@¡µ´ò£$0‚?ª!°Èvi!‚Áé +“%¬QSEÑ@©EÑXݒŬ?ƒ¿ÀlVC]¬A EØ¥¥ +*hE©`¡/¶Ìý±÷ÜymiiÝ–¾¾¹ï½óùã½Ð7ÌÜ™s?sÎW‰÷¤O•á.¼„ÏX}[2t6§ÈÞBmØEñ™Ë÷À`É6¹NBnìï“n ÜlîÃ@)„Þ '?X>Y‡ e ^–#SŠ?þYB“è\¸Ü‘î›nꃾsƒk‰l_m¾’^F¶PB-½™â¦/+?§÷f¹‹aòP±ý«!E2Œ .ÙduéÜñp}‹R”-Ô¨g +Î ¼¤¢Yï1T®.k'ú¨Q×Îl ›o܅φª§oKËll}µaW%Ýøøèr³œ†É³Óý&‹$¼–Rx²Ø¾b¢¶1²õ1Ô'lO\ù)d9›œÒ­)Ÿøü’·ÉÂ>÷Mp¡‹]óÚÃ7è‹ZØÙ‚¥G':uù΀„(ÛÎq) +u„òµ$dlMŸ +'¸wöƒk ÆéêS”-|¨‡ O;yæª]º +1œåÔ¯ö]7®T5Ú¾ºG¦Oݸ·$kTßF×µ`‚O›V|P—ÄMãÔ]¿t…¿áMc“Y }Óà¼ÈÆêv,»n \ÉñÿfcjÃ{.)ûÙšU—Å rLV$ÛïB@ƒu*Bßà„7F6y÷Á±ú2ØÙ|ÆËrrÖî;+õ\[ιrßptƒr©î¶¡Cx!¡¹r]þï(›P¯ +ƒg=»Éc(Ë1ùõ fè¦ÜèŸB8P +¦ÏÕôñãÓG]dŠ²™¥ õi9++½mØ'AÂ<˜¬ŸjˆnÊ7²9TýM0˜LÙ™f…S;¨šqP”»2»¤º jåÆ@“ã2OŒÙŠ”äˆP'8Ȩ}cÑÕPQ¢ëŠˆ—妕þ猪˜ís¥üQbŽor ·¾©È£I`Ïß +2¼“bd3o®$ñy¥»UݸÑ뜺µU°ËMA‰±´WŽ3]¬sÛWÌL#:$`d3Ÿ`•RòJ>ÕUdQÚæ”n¯ô3%¼ilrÓO—Ýà8ÓªÖo+¼9™À¨‚ªETO–iSW€ò‹hÌr‚Éí‰F馜ó²d—w3:²{ãÏ£¯€¡l‡W³¤ìÕÕ ª”.‹6å˜ül„Yºâ{ex!8t¶_ö¿xWª>‹mΈŒôÝäÈ€œ5{ÏJ=WF‘sLÖÞhPvó $}_œRMפþÃâÜ} +Ë´{Bz€Êrð5xæê.ÔU¿I£&맧$¸µ²û˜{CÇÏ[š¨#›EqŒŒx(Õ¯Ìa9E•P\ƒ%—ççw§E²OwS8îÂqÍ'^ÿÓ˜DøŸÙ¢ª#AJÖS‡šTYÄ+§vê£0½‡ZÒGÝñM0ÙªËæ¦Â] lQ‡—åâ§m>P•vy$+§Ö^D œ& ·HÈß}¶Bpœú¨8o°þ/¶‘w‚ôo®$Éó_¬Òu÷Ê.7ª›ZÕ°§Á Îô÷©7š’Dô°-z VwÔ¼ç«uõY÷¢†a0ùN¢¡ºÁ@YÖeã®þå› Æ'¨cmt-ðÆ—ŒYkCñ#0Ë1¹ë*SuS‘,Ù©pÜ…—[Cõ_ïæÀqÙbåhjîÆÚF Y.ÌÂô&L0W7µ²”O.(Ufƒ?ÕU¬Êסl±E0Ë%ݹù@³å"¥Íqy*Û`Ý@¸Âv¾yªIyì%YqpF¶˜$Xö´‚uŸ{9"Ú—yFë¦Êë¾mNp¦¿¿*»{Bõ£eQ”-f¡^›}Çsµzs˜ŸåÔ>^D ï”l’®·Zýu¾¦4']G6ÃŽ„ª£Äðë7©½ÁÌTN@âŒ]²6´ÑØdA3$6ý(OìY99Qÿ#âaÙð9äöÔÔq¹ßÊ î9Æ\—µý¶žš=Mx$UÉ °Ø/·>’©Ÿ­… ¹o®$Cço¨Òž‹0:'‚‚)»8\Ù£Ý!=zäÐŽ÷Ë‹†¯›²‹”¨5±~áø—ÚQ6¤#Á]1rÞóÕZÆûÔ1O/h_¬ ·Ï~û]eù¿7¬yaÉâÅsòr®¿vlRBœñÃ$@IfÅs3FÃJ1²!]CmhykŽƒ¡Îr-!Œ¹Ø¥?ºnsà·£»«¶®ßðÄýΞrëõãÆ ON±Û¯0BBŸʆüt–£©¹/Õ6Êd¹‹s;üt>ðëuß>º÷Õ-ë–.»ç3oJM:hðÛé°$»ŸcÛ¶¥2 ýkEÈ«ñ™`–Kš»éóæE9Ñ +Ò~&enàä‰cû*wnÝöjIñcwÞ5küø´Î—@,'k;Ò}‚Y.­à…ýZ¤.º\«\Œ)+;=¦ñôéÿVî~ëµMÅ+ž\¸`îäI™©)ñ^’*Ï-O0 ! ABõÚ\Æìu߃7¼%˵ ˆ.ë¢ó}wèð‡[¶<óÄŠ…sædÝrËÕ#Gôo?"Z-Ð6ü¹K1 +ÄÊÈó$d/Á:†0×ý­á\}]Ýþ÷Ë7>ýÌó +²¯¹vTúUCâ:œË‰ðA€eÃç°ûÞ>ÚÅšëë<òåÁOvÿ«¬¬xÑ_ò'Mç8—jd£cÒ3t“Sƒåâ—Ë·•ý}ÍÃ…÷ý17{ĨAL--˜…3"‚\&ÔÒê ì×ñïAÚ’˜‹C(D·9=Ú­zù½&‰b¢]°ÿ 0¸Èõ0 endstream endobj 19 0 obj <>stream +H‰œ–yTSwÇoÉž•°Ãc [€°5la‘QIBHØADED„ª•2ÖmtFOE.®c­Ö}êÒõ0êè8´׎8GNg¦Óïï÷9÷wïïÝß½÷ó '¥ªµÕ0 Ö ÏJŒÅb¤  + 2y­.-;!à’ÆK°ZÜ ü‹ž^i½"LÊÀ0ðÿ‰-×é @8(”µrœ;q®ª7èLöœy¥•&†Qëñq¶4±jž½ç|æ9ÚÄ +V³)gB£0ñiœWו8#©8wÕ©•õ8_Å٥ʨQãüÜ«QÊj@é&»A)/ÇÙgº>'K‚óÈtÕ;\ú” Ó¥$ÕºF½ZUnÀÜå˜(4TŒ%)ë«”ƒ0C&¯”阤Z£“i˜¿óœ8¦Úbx‘ƒE¡ÁÁBÑ;…ú¯›¿P¦ÞÎӓ̹žAü om?çW= +€x¯Íú·¶Ò-Œ¯Àòæ[›Ëû0ñ¾¾øÎ}ø¦y)7ta¾¾õõõ>j¥ÜÇTÐ7úŸ¿@ï¼ÏÇtÜ›ò`qÊ2™±Ê€™ê&¯®ª6ê±ZL®Ä„?â_øóyxg)Ë”z¥ÈçL­UáíÖ*ÔuµSkÿSeØO4?׸¸c¯¯Ø°.òò· åÒR´ ßÞô-•’2ð5ßáÞüÜÏ ú÷Sá>Ó£V­š‹“då`r£¾n~ÏôY &à+`œ;ÂA4ˆÉ 䀰ÈA9Ð=¨- t°lÃ`;»Á~pŒƒÁ ðGp| ®[`Lƒ‡`<¯ "A ˆ YA+äùCb(Š‡R¡,¨*T2B-Ð +¨ꇆ¡Ðnè÷ÐQètº}MA ï —0Óal»Á¾°ŽSàx ¬‚kà&¸^Á£ð>ø0|>_ƒ'á‡ð,ÂG!"F$H:Rˆ”!z¤éF‘Qd?r 9‹\A&‘GÈ ”ˆrQ ¢áhš‹ÊÑ´íE‡Ñ]èaô4zBgÐ×Á–àE#H ‹*B=¡‹0HØIøˆp†p0MxJ$ùD1„˜D, V›‰½Ä­ÄÄãÄKÄ»ÄY‰dEò"EÒI2’ÔEÚBÚGúŒt™4MzN¦‘Èþär!YKî ’÷?%_&ß#¿¢°(®”0J:EAi¤ôQÆ(Ç()Ó”WT6U@ æP+¨íÔ!ê~êêmêæD ¥eÒÔ´å´!ÚïhŸÓ¦h/èº']B/¢éëèÒÓ¿¢?a0nŒhF!ÃÀXÇØÍ8ÅøšñÜŒkæc&5S˜µ™˜6»lö˜Iaº2c˜K™MÌAæ!æEæ#…åÆ’°d¬VÖë(ëk–Íe‹Øél »—½‡}Ž}ŸCâ¸qâ9 +N'çÎ)Î].ÂuæJ¸rî +î÷ wšGä xR^¯‡÷[ÞoÆœchžgÞ`>bþ‰ù$á»ñ¥ü*~ÿ ÿ:ÿ¥…EŒ…ÒbÅ~‹ËÏ,m,£-•–Ý–,¯Y¾´Â¬â­*­6X[ݱF­=­3­ë­·YŸ±~dó ·‘ÛtÛ´¹i ÛzÚfÙ6Û~`{ÁvÖÎÞ.ÑNg·Åî”Ý#{¾}´}…ý€ý§ö¸‘j‡‡ÏþŠ™c1X6„Æfm“Ž;'_9 œr:œ8Ýq¦:‹ËœœO:ϸ8¸¤¹´¸ìu¹éJq»–»nv=ëúÌMà–ï¶ÊmÜí¾ÀR 4 ö +n»3Ü£ÜkÜGݯz=Ä•[=¾ô„=ƒ<Ë=GTB(É/ÙSòƒ,]6*›-•–¾W:#—È7Ë*¢ŠÊe¿ò^YDYÙ}U„j£êAyTù`ù#µD=¬þ¶"©b{ųÊôÊ+¬Ê¯: !kJ4Gµm¥ötµ}uCõ%—®K7YV³©fFŸ¢ßY Õ.©=bàá?SŒîÆ•Æ©ºÈº‘ºçõyõ‡Ø Ú† žkï5%4ý¦m–7Ÿlqlio™Z³lG+ÔZÚz²Í¹­³mzyâò]íÔöÊö?uøuôw|¿"űN»ÎåwW&®ÜÛe֥ﺱ*|ÕöÕèjõê‰5k¶¬yÝ­èþ¢Ç¯g°ç‡^yïkEk‡Öþ¸®lÝD_p߶õÄõÚõ×7DmØÕÏîoê¿»1mãál {àûMśΠnßLÝlÜ<9”úO¤[þ˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬Ð­D­¸®-®¡¯¯‹°°u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾ +¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäüå„æ æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ ÷„óû endstream endobj 5 0 obj <> endobj 20 0 obj [/View/Design] endobj 21 0 obj <>>> endobj 12 0 obj <> endobj 10 0 obj <> endobj 22 0 obj <> endobj 23 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 17.0 %%AI8_CreatorVersion: 19.2.1 %%For: (Zachary Mitton) () %%Title: (metamask_icon) %%CreationDate: 6/15/16 2:23 PM %%Canvassize: 16383 %%BoundingBox: 98 -140 188 -44 %%HiResBoundingBox: 98.7919746568114 -140 188 -44 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 13.0 %AI12_BuildNumber: 147 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %AI3_Cropmarks: 79 -156 207 -28 %AI3_TemplateBox: 180.5 -120.5 180.5 -120.5 %AI3_TileBox: -163 -488 449 304 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 6 %AI9_ColorModel: 1 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:17 1 %AI9_OpenToView: -39.6666666666679 23.666666666667 3 1419 866 18 0 0 -5 38 0 0 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: -39.6666666666679 23.666666666667 3 1419 866 18 0 0 -5 38 0 0 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %%PageOrigin:-220 -420 %AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 24 0 obj <>stream +%%BoundingBox: 98 -140 188 -44 %%HiResBoundingBox: 98.7919746568114 -140 188 -44 %AI7_Thumbnail: 120 128 8 %%BeginData: 22554 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD24FFA776FD75FFA04A4AA1FD73FFA04A754A75A8FD71FF7C4475 %4A6F4A6FA8FD6FFFA04A754B754B754A75FD6EFF764A6F4A754A6F4A754A %76FD6CFF764A754B754A754B754A754AA1FD69FFA8754A6F4A754A6F4A75 %4A6F4A6F4AA1FD44FFA7C9A075A8FD1EFFA8754A754B754B754B754B754B %754B754ACAFD3FFFCFC9C299C1997476FD1EFFA76F4A754A6F4A754A6F4A %754A6F4A754A4B4AFD3BFFA7C99FC198BB98C198754AA8FD1DFFA8754A75 %4A754B754A754B754A754B754A754B6F76FD37FFC9C99FC198C199C199C1 %99754A75FD1DFFA74B4A754A6F4A754A6F4A754A6F4A754A6F4A754A4A76 %FD31FFA8C9A0C1999998C1999F99C199C1746F4A4A76FD1CFFA1754A754B %754B754B754B754B754B754B754B754B754B6F7CFD2CFFCAC9C89FC198C1 %99C199C199C199C1C1C175754B754ACAFD1BFF7D4A4A6F4A754A6F4A754A %6F4A754A6F4A754A6F4A754A6F4A6FA8FD27FFCAC9A1C2989998C199C199 %C199C199C199C199C16E4B4A754A75A8FD1AFF7C6F4A754B754A754B754A %754B754A754B754A754B754A754B754A75FD24FFC9C99FC199C199C199C1 %99C199C199C199C199C1C1994A754B754A6F76FD1AFF764A4A6F4A754A6F %4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A76A8FD1DFFA7C9A0C1 %99BB989998C1999F99C1999F99C1999F99C199C199994A4B4A754A6F4AA8 %FD19FF756F4B754B754B754B754B754B754B754B754B754B754B754B754B %754B754A76FD1AFFCAC299C198C199C199C199C199C199C199C199C199C1 %99C199C199994B754B754B754A7CFD19FF764A4A754A6F4A754A6F4A754A %6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A99FD04C199C1C1C199C1 %C1C199C1C1C199C1C1C199C1C1C199C198C199C199C199C199C199C199C1 %99C199C199C199C199C199754A754A6F4A754A4A7DFD18FF7C6E4B754A75 %4B754A754B754A754B754A754B754A754B754A754B754A754B754A754BFD %05C1BBC1C1C1BBC1C1C1BBC1C1C1BBC1C1C1BBC1C1C199C199C199C199C1 %99C199C199C199C199C199C199C199C199754B754A754B754A754BFD19FF %754A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A %754A6F4A4B74C199C199C199C199C199C199C199C199C199C199C199C199 %9F99C1999F99C1999F99C1999F99C1999F99C1999F99C1994B4A754A6F4A %754A6F4A76FD18FFA14A754B754B754B754B754B754B754B754B754B754B %754B754B754B754B754B754B754B7599C2FD16C199C199C199C199C199C1 %99C199C199C199C199C199C175754B754B754B754B754B75A1FD18FF4A4B %4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A75 %4A6F4A754A6F99C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C199C1 %99C199C199C199C199C199C199C199C199C199C16E4B4A6F4A754A6F4A75 %4A6F4AFD18FFA16F4B754A754B754A754B754A754B754A754B754A754B75 %4A754B754A754B754A754B754A754B75FD16C199C199C199C199C199C199 %C199C199C199C1999F6F754A754B754A754B754A754A7CFD18FF764A754A %6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A %754A6F4A754A9999C199C199C199C199C199C199C199C199C199C199C199 %9F99C1999F99C1999F99C1999F99C199994A6F4A6F4A754A6F4A754A6F4A %4A7DFD17FFCA4A754B754B754B754B754B754B754B754B754B754B754B75 %4B754B754B754B754B754B754B754B7575FD17C199C199C199C199C199C1 %99C199C1C1994B754B754B754B754B754B754B754BFD18FF764A4A754A6F %4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A75 %4A6F4A754A4B74C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C199C1 %99C199C199C199C199C199C199754A6F4A754A6F4A754A6F4A754A6F4A7C %FD18FF754B754A754B754A754B754A754B754A754B754A754B754A754B75 %4A754B754A754B754A754B754A754B7599FD13C1BBC199C199C199C199C1 %99C199C199754A754B754A754B754A754B754A754B75A8FD17FFA04A754A %6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A %754A6F4A754A6F4A754A7599C199C199C199C199C199C199C199C199C199 %C199C1999F99C1999F99C199C174754A6F4A754A6F4A754A6F4A754A6F4A %6F75FD18FF4A754B754B754B754B754B754B754B754B754B754B754B754B %754B754B754B754B754B754B754B754B754B754A9FFD14C199C199C199C1 %99C199C175754B754B754B754B754B754B754B754B754AA7FD17FF7D4A4A %754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A %6F4A754A6F4A754A6F4A754A4B4AC1C1C199C1BBC199C1BBC199C1BBC199 %C1BBC199C199C199C199C199C16F4B4A754A6F4A754A6F4A754A6F4A754A %6F4A75A8FD17FF764A754A754B754A754B754A754B754A754B754A754B75 %4A754B754A754B754A754B754A754B754A754B754A754B7575FD13C199C1 %99C199C1BBC16F754B754A754B754A754B754A754B754A754B6F75FD17FF %A84A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A %754A6F4A754A6F4A754A6F4A754A6F4A754A4B74C199C199C199C199C199 %C199C199C199C199C199C199C199994A4B4A754A6F4A754A6F4A754A6F4A %754A6F4A754AA1FD17FF76754B754B754B754B754B754B754B754B754B75 %4B754B754B754B754B754B754B754B754B754B754B754B754B754B754B75 %9FFD11C199C199C199994B754B754B754B754B754B754B754B754B754B75 %4B75A8FD16FFA86F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A75 %4A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A99C1C1 %99C1BBC199C1BBC199C1BBC199C1BBC199C199994A754A6F4A754A6F4A75 %4A6F4A754A6F4A754A6F4A6F75FD17FFA74A754A754B754A754B754A754B %754A754B754A754B754A754B754A754B754A754B754A754B754A754B754A %754B754A754B754AFD13C199754B754A754B754A754B754A754B754A754B %754A754B754ACAFD16FFCA4A6F4A6F4A754A6F4A754A6F4A754A6F4A754A %6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A %754A4B4AC1BBC199C199C199C199C199C199C199C1996F4A754A6F4A754A %6F4A754A6F4A754A6F4A754A6F4A754A75FD17FF7D6F4B754B754B754B75 %4B754B754B754B754B754B754B754B754B754B754B754B754B754B754B75 %4B754B754B754B754B754B754B7599FD10C19F4A754B754B754B754B754B %754B754B754B754B754B754B6F7CFD17FF764A754A6F4A754A6F4A754A6F %4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A75 %4A6F4A754A6F4A754A7599C1BBC199C1BBC199C1BBC199C1BBC199C1C199 %4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754AA8FD17FF75754A %754B754A754B754A754B754A754B754A754B754A754B754A754B754A754B %754A754B754A754B754A754B754A754B754A7599C199FD12C1994A754B75 %4A754B754A754B754A754B754A754B754A75FD17FFA8754A6F4A754A6F4A %754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A %6F4A754A6F4A754A6F4A754A7599C1999999C199C199C199C199C199C199 %C199C199C199994A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A7CFD %17FF75754B754B754B754B754B754B754B754B754B754B754B754B754B75 %4B754B754B754B754B754B754B754B754B754B754B7599C199C199FD13C1 %99994B754B754B754B754B754B754B754B754B754B754A7CFD15FFA8754A %6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A %754A6F4A754A6F4A754A6F4A754A6F4A7599C199C199C199C1BBC199C1BB %C199C1BBC199C1BBC199C199C199994A6F4A754A6F4A754A6F4A754A6F4A %754A6F4A754A76A8FD13FFA84A754B754A754B754A754B754A754B754A75 %4B754A754B754A754B754A754B754A754B754A754B754A754B754A754B75 %99C199C199C199C199FD0FC1BBC199C199994B754A754B754A754B754A75 %4B754A754B754A754AFD14FFA14A4A754A6F4A754A6F4A754A6F4A754A6F %4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A75 %75C199C1999F99C199C199C199C199C199C199C199C199C199C199C199C1 %99754A6F4A754A6F4A754A6F4A754A6F4A754A4B4AA8FD14FF7C4A754B75 %4B754B754B754B754B754B754B754B754B754B754B754B754B754B754B75 %4B754B754B754B754B754B7599C199C199C199C199C199FD11C199C199C1 %C1754A754B754B754B754B754B754B754B7576FD12FFA8A151754A6F4A75 %4A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F %4A754A6F4A754A6F4A754A4B74C199C199C199C199C199C199C1BBC199C1 %BBC199C1BBC199C1BBC199C199C199C199754A754A6F4A754A6F4A754A6F %4A754A757DFD11FFA14A4A4A754B754A754B754A754B754A754B754A754B %754A754B754A754B754A754B754A754B754A754B754A754B754A7575C199 %C199C199C199C199C199C1BBFD0FC199C199C199C199754A754B754A754B %754A754B754A754A4A75CFFD10FFA8754A4A754A6F4A754A6F4A754A6F4A %754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A %4B6EC1999F99C1999F99C1999F99C199C199C199C199C199C199C199C199 %C199C199C1999F99C199754A754A6F4A754A6F4A754A6F4A754A4A4ACAFD %11FFA8754A754B754B754B754B754B754B754B754B754B754B754B754B75 %4B754B754B754B754B754B754B754B7575C199C199C199C199C199C199C1 %99C199FD11C199C199C199C199754B754B754B754B754B754B754B754ACA %FD13FFA87C4A4B4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A %6F4A754A6F4A754A6F4A754A6F4A756EC199C199C199C199C199C199C199 %C199C199C1BBC199C1BBC199C1BBC199C1BBC199C199C199C199C199754A %6F4A754A6F4A754A6F4A754AA7FD17FF75754A754B754A754B754A754B75 %4A754B754A754B754A754B754A754B754A754B754A754B756FC199C199C1 %99C199C199C199C199C199C199FD11C199C199C199C199C199754B754A75 %4B754A754B754A76FD13FFA8CA7DA176754A6F4A754A6F4A754A6F4A754A %6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A4B6EC199C1999F99 %C1999F99C1999F99C1999F99C199C199C199C199C199C199C199C199C199 %9F99C1999F99C199C198754A6F4A754A6F4A754A4B4AFD12FFA87C4A4A4A %754B754B754B754B754B754B754B754B754B754B754B754B754B754B754B %754B754B754B7575C199C199C199C199C199C199C199C199C199C199FD11 %C199C199C199C199C199C199754B754B754B754B754A75FD14FFA8754A4A %754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A %6F4A754A4B4A9F99C199C199C199C199C199C199C199C199C199C199C199 %C1BBC199C1BBC199C1BBC199C1BBC199C199C199C199C199C1994B4A754A %6F4A754A6F4AFD16FFA8A14B754B754A754B754A754B754A754B754A754B %754A754B754A754B754A754B754A7575C199C199C199C199C199C199C199 %C199C199C199C199C199FD11C199C199C199C199C199C199754A754B754A %754B6FA7FD18FF516F4A6F4A754A6F4A754A6F4A754A6F4A754A6F4A754A %6F4A754A6F4A754A4B4AC1999F99C1999F99C1999F99C1999F99C1999F99 %C1999F99C199C199C199C199C199C199C199C199C1999F99C1999F99C199 %9F99C1754B4A754A6F4A6F4AA8FD17FFA1754B754B754B754B754B754B75 %4B754B754B754B754B754B754B754B754B754BC1C1C199C199C199C199C1 %99C199C199C199C199C199C199C199FD11C199C199C199C199C199C199C1 %75754B754B754AA7FD15FFA8A14B4A4A754A6F4A754A6F4A754A6F4A754A %6F4A754A6F4A754A6F4A754A6F4A756E9999C199C199C199C199C199C199 %C199C199C199C199C199C199C199C199C1BBC199C1BBC199C1BBC199C199 %C199C199C199C199C199C199C174754A6F4AA1FD17FF4B6F4B754A754B75 %4A754B754A754B754A754B754A754B754A754B754A754B754AC1C1C199C1 %99C199C199C199C199C199C199C199C199C199C199C199FD11C199C199C1 %99C199C199C199C199C175754A76FD18FFCA4B4B4A6F4A754A6F4A754A6F %4A754A6F4A754A6F4A754A6F4A754A6F4A6F4A9999C1999F99C1999F99C1 %999F99C1999F99C1999F99C1999F99C1999F99C199C199C199C199C199C1 %99C199C199C1999F99C1999F99C1999F99C199C16E4BA8FD1AFF756F4B75 %4B754B754B754B754B754B754B754B754B754B754B754B756F9F99C199C1 %99C199C199C199C199C199C199C199C199C199C199C199C199C199FD0FC1 %99C199C199C199C199C199C199C199C1A1FD1CFF4B4B4A754A6F4A754A6F %4A754A6F4A754A6F4A754A6F4A754A4B4A9F99C199C199C199C199C199C1 %99C199C199C199C199C199C199C199C199C199C199C199C1BBC199C1BBC1 %99C1BBC199C199C199C199C199C199C199C199C198CAFD1CFFCF4A754A75 %4B754A754B754A754B754A754B754A754B754A754B9999C199C199C199C1 %99C199C199C199C199C199C199C199C199C199C199C199C199FD0FC199C1 %99C199C199C199C199C199C199C1CAFD1DFFA84A6F4A754A6F4A754A6F4A %754A754A754A754A754A6F4A99999F99C1999F99C1999F99C1999F99C199 %9F99C1999F99C1999F99C1999F99C1999F99C199C199C199C199C199C199 %C199C199C1999F99C1999F99C1999F99C199FD1FFFC299C1C1C19FFD0FC1 %99C1C1C199C199C199C199C199C199C199C199C199C199C199C199C199C1 %99C199C199C199FD11C199C199C199C199C199C199C199C2FD1EFFCABBC1 %99C1C1C199C1C1C199C1C1C199C1C1C199C1C1C199C199C199C199C199C1 %99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1 %99C1BBC199C1BBC199C1BBC199C199C199C199C199C199C199C1A0FD1EFF %FD18C199C199C199C199C199C199C199C199C199C199C199C199C199C199 %C199C199C199C199C199FD0FC199C199C199C199C199C199C198C9FD1DFF %C9C199C199C199C199C199C199C199C199C199C199C199C199C199C1999F %99C1999F99C1999F99C1999F99C1999F99C1999F99C1999F99C1999F99C1 %999F99C199C199C199C199C199C199C199C199C1999F99C1999F99C19999 %A1FD1DFFC9BBFD19C199C199C199C199C199C199C199C199C199C199C199 %C199C199C199C199C199C199C199FD0FC199C199C199C199C199C199C198 %C9FD1DFFC1C199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC1 %99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1 %99C199C199C199C1BBC199C1BBC199C1BBC199C1BBC199C199C199C199C1 %99C199BBA7FD1CFFC9FD1BC199C199C199C199C199C199C199C199C199C1 %99C199C199C199C199C199C199C199C199C199FD0FC199C199C199C199C1 %99C199CFFD1CFFC298C199C199C199C199C199C199C199C199C199C199C1 %99C199C199C199C1999F99C1999F99C1999F99C1999F99C1999F99C1999F %99C1999F99C1999F99C1999F99C199C199C199C199C199C199C1999F99C1 %999F99C1999F98C1A8FD1CFFFD1EC199C199C199C199C199C199C199C199 %C199C199C199C199C199C199C199C199C199C199FD0FC199C199C199C199 %C199C199FD1CFFC9C199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199 %C1BBC199C1BBC199C199C199C199C199C199C199C199C199C199C199C199 %C199C1999999C1999999C1999999C1BBC199C1BBC199C1BBC199C1999999 %C19999989999999899A8FD1BFFC2FD1EC1BBC199C199C199C199C199C199 %C1999999C1999999C1999999C199BB99C1999999C1999999FD0DC1999999 %C1999999C1999998C9FD1AFFC998C199C199C199C199C199C199C199C199 %C199C199C199C199C199C199C199C199C199999899999998999999989999 %99989999999899999998BB999998999999989999C199C199C199C199C199 %C199C199C199999899279998999999A0FD1AFFC2FD23C199C199C199C199 %C199C199C199C199C199C199C1999F515299C199C199C199C199FD0DC199 %9999C1992E4BC199C199C2A8FD18FFCAC199C1BBC199C1BBC199C1BBC199 %C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C199C199C19999989999 %99989999999899999998C175510528057598999999989999C199C1BBC199 %C1BBC199C1BBC199C19999989927286FBB99C198C9FD18FFC9BBFD25C199 %C199C199C1999999C1999999C1BB994B2E0628272E279999C1999999C199 %FD0DC1BBC199BB992E282E99C199C1A0FD18FF9FC199C199C199C199C199 %C199C199C199C199C199C199C199C199C199C199C199C199C199C1999F99 %C1999998999999989999BB98752706052827280528279998FD0499C199C1 %99C199C199C199C199C199C1989998990528054B98C198A0A9FD16FFCAFD %29C199C199C199C199C1999F7552282E272E272E272E272875C199C199C1 %99FD0FC199C1752E062E51C1BBC199FD17FFC998C1BBC199C1BBC199C1BB %C199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199 %C199C199C199C199992706052805280528272805280528989999C199C199 %C199C1BBC199C1BBC199C1BBC199999951057699C199C1999FA8FD16FFFD %2AC199C199C199C199C199A07576272E2728052E2728272E277599C199C1 %99C199FD0DC199C1759FFD04C199C199CAFD15FFA7C199C199C199C199C1 %99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1 %99C199C199C1999F99C199C1BBC1C1C1999F7575272827280528057598C1 %999F99C199C199C199C199C199C199C199C198BBC1C199C1999F98BBA7FD %15FFC2FD2EC199C199C199FD0BC17576512E27C19FC199C199FD0FC199FD %05C199C199CFFD14FFCA98C1BBC199C1BBC199C1BBC199C1BBC199C1BBC1 %99C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1999F99C1 %999F99C1BBC199C1BBC199FD05C1999F99C199C199C199C199C1BBC199C1 %BBC199C1BBC1999999C199C1BBC198C1CAFD14FFC2FD31C199C199FD11C1 %99C199C199C199FD0DC199C199FD05C199FD14FFA8C199C199C199C199C1 %99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1 %99C199C199C199C199C1999F99C199C199C199C199C199C199C199C199C1 %99C199C1999F99C199C199C199C199C199C199C199C1999999C199C199C1 %CAFD13FFCFFD32C199C199FD15C199C199C199FD0FC1BBC1C1C199FD14FF %A0C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1 %BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C199C199C1BBC1 %99C1BBC199C1BBC199C1BBC199C1BBC199C199C199C1BBC199C1BBC199C1 %BBC199C1999999C199C1CAFD13FFC1BBFD33C199C199FD15C199C199C199 %FD0DC199C1C1C1C2FD13FFC998C199C199C199C199C199C199C199C199C1 %99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1 %99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1 %99C1999F99C199C199C199C199C199C199C199C198C2FD13FFFD52C199C1 %99FD0DC199C1A1FD12FFA7C1BBC199C1BBC199C1BBC199C1BBC199C1BBC1 %99C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1 %BBC199C1BBC199C199C199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC1 %99C199C199C199C199C1BBC199C1BBC199C1BBC198C9FD12FFC2BBFD35C1 %99C199C199C199FD17C199C199FD0DC1C9FD12FF99C199C199C199C199C1 %99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1 %99C199C199C199C199C199C199999899999998C1999999C199C199C199C1 %99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1 %98C2FD11FFC9FD31C199C199BB99C199BB99C199C199C199C199FD15C199 %C199FD0BC1BAC9FD10FFC2BBC199C1BBC199C1BBC199C1BBC199C1BBC199 %C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C1BBC199C199C1FD0499 %98999999989999C199C199C199C199C199C199C199C1BBC199C1BBC199C1 %BBC199C1BBC199C1999F99C1BBC199C1BBC199C1BBC198C9FD0EFFCFBBFD %2BC199C1999999C1999999C1999999C199C199C199C199C199C199C199C1 %99FD11C199C199FD0BC1BAC9FD0DFFA0C199C199C199C199C199C199C199 %C199C199C199C199C199C199C199C199C199C199C199C199C19999989999 %99989999999899999998FD0499C1999F99C1999F99C1999F99C1999F99C1 %99C199C199C199C199C199C199C199C1999F99C199C199C199C199C199C1 %98C9FD0CFFC299C19FC199C19FC199C19FC199C199C199C199C199C199C1 %99C199C199C199C199C199C199C1999999C199C199C199C199C199C199C1 %99C199C199C199C199C199C199C199C199C199C199C199C19FFD0FC199FD %0CC1CFFD0BFFA79999C199C199C199C199C199C199C199C199C199C199C1 %99C199C199C199C199C199C199C199C19999989999999899999998999999 %989999C199C199C199C199C199C199C199C199C199C199C199C199C199C1 %BBC199C1BBC199C1BBC199C199C199C1BBC199C1BBC199C199CFFD0BFF99 %C199C199C199C199C199C199C199C199C199C199C199C199C199C199C199 %C199C199C199C199C1999999C1999999C1999999C1999999C199C199C199 %C199C199C199C199C199C199C199C199C199C199C199C19FC1BBFD09C199 %FD0CC1CFFD0AFFC2989F99C1999F99C1999F99C1999F99C1999F99C1999F %99C1999F99C1999F99C1999F99C199C1FD0499989999999899999998FD04 %99C1999F99C1999F99C1999F99C1999F99C1999F99C1999F99C1999F99C1 %999F99C199C199C199C199C199C199C199C199C199C199C199CFFD09FFCA %C199C199C199C199C199C199C199C199C199C199C199C199C199C199C199 %C199C199C199C199C199C199C199C199C199C199C199C199C199C199C199 %C199C199C199C199C199C199C199C199C199C199C199C199C199C199C199 %FD07C199FD0CC1FD0AFF99C199C199C199C199C199C199C199C199C199C1 %99C199C199C199C199C199C199C199C199C199C199999899999998999999 %989999C199C199C199C199C199C199C199C199C199C199C199C199C199C1 %99C199C199C199C199C199C199C199C1C1C199C1BBC199C1BBC199FD04C1 %FD09FFC999C199C199C199C199C199C199C199C199C199C199C199C199C1 %99C199C199C199C199C199C199C1999999C1999999C1999999C199C199C1 %99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1 %99C199C199C199C199C1C1C199FD07C19975754B27A8FD07FFA8C1999F99 %C1999F99C1999F99C1999F99C1999F99C1999F99C1999F99C1999F99C199 %9F99C1999F99C199999899999998FD0499C1999F99C1999F99C1999F99C1 %999F99C1999F99C1999F99C1999F99C1999F99C1999F99C1999F99C1999F %99C199C199C199C14A27F827F805F8F8F852A8FD06FF9FC199C199C199C1 %99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1 %99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1 %99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1 %99C1BBC175270027F82727272027F82752FD05FFCA98C199C199C199C199 %C199C199C199C199C199C199C199C199C199C199C199C199C199C199C199 %C1999998999999989999C199C199C199C199C199C199C199C199C199C199 %C199C199C199C199C199C199C199C198BB98C198C199C199C199C2A0A0A0 %C9A127F827F827F827F827F827F8F87DFD05FFC299C199C199C199C199C1 %99C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1 %99C199C1999999C199C199C199C199C199C199C199C199C199C199C199C1 %99C199C199C199C199C299C199C2A0C3A0C9A1CAA7CAA7CAA8CAA8CAA8A8 %2727F8272727F8272727F8274BFD06FFA0BB999F99C1999F99C1999F99C1 %999F99C1999F99C1999F99C1999F99C1999F99C1999F99C1999F99C19999 %98FD0499C1999F99C1999F99C1999F98C1999998C198BB98C1999F99C199 %A09FA1A1A7A1A8A1A8A1A8A8A8A7A8A7A8A1A8A7A8A1A8A7A8A127F827F8 %27F827F827F827F8A8FD06FFCF99C199C199C199C199C199C199C199C199 %C199C199C199C199C199C199C199C199C199C199C199C199C199C199C199 %C199C199C199C199C199C199C29FC199C2A0C9A0C9A0C9A7CAA7CAA7CAA8 %CAA8CAA8CAA8CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA8CA27272027272720 %272727F852FD08FFC299C199C199C199C199C199C199C199C199C199C199 %C199C199C199C199C199C199C199C199C199C199C1989998BB99C199C199 %C2A0A0A0C3A0A7A1A8A7A8A1FD07A8A7A8A7A8A1A8A7A8A1A8A7A8A1A8A7 %A8A1A8A7A8A1A8A7A8A1A8A7A8A127F827F827F827F827F827A8FD08FFA1 %C199C199C199C199C199C199C199C199C199C199C199C199C199C199C199 %C199C199C199C199C199C198C2A1C9A0C9A1CAA7CAA7CAA8CAA8CAA8CAA7 %CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8 %CAA7CAA8CAA7CAA8A8FD0427F8272727F82752FD09FFCF98C1999F99C199 %9F99C1999F99C1999F99C1999F99C1999F99C1999F99C1999F99C1999998 %BB98C1A0C9CAFFAFFFA8A8A1A8A7A8A1A8A7A8A1A8A7A8A1A8A7A8A1A8A7 %A8A1A8A7A8A1A8A7A8A1A8A7A8A1A8A7A8A1A8A7A8A1A8A7A8A1A8A7A8A1 %CAA127F827F827F827F827F8A8FD0AFFC299C199C199C199C199C199C199 %C199C199C199C199C199C199C199C199C199C199C199C2C9CFFD0AFFA8A8 %A7A8A7CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CA %A8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8A8FD0427F827F827F87DFD0BFF %A8C199C199C199C199C199C199C199C199C199C199C199C199C199C199C1 %989999C9A7CFFD10FFA8A87DA7A1A8A7A8A7CAA7A8A1A8A7A8A1A8A7A8A1 %A8A7A8A1A8A7A8A1A8A7A8A1A8A7A8A1A8A7A8A1A8A7A8A1CAA127F82727 %5252767CA1A8FD0CFF9FC199C199C199C199C199C199C199C199C199C199 %C199C199C199C199C2C9CFFD16FFA8A8A1A8A7A8A7CAA8CAA7CAA8CAA7CA %A8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7A8527D %7DA8A7CAA7A8A8FD0DFFC998C1999F99C1999F99C1999F99C1999F99C199 %9F98BB989999C9A7FD1CFFCFA7A87DA17DA8A1A8A1A8A7A8A1A8A7A8A1A8 %A7A8A1A8A7A8A1A8A7A8A1A8A7A8A1A8A7A8A1A8A1A77DA8A1A77DA7A1A1 %A7FD0EFFCAC199C199C199C199C199C199C199C199C199C199C2A0C9CAFD %23FFA8CAA1A8A1A8A7A8A7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CAA7CAA8CA %A7CAA8CAA7CAA7A8A1A8A1A8A1A8A1A8A8FD10FFA0C199C199C199C199C1 %99C199C199BB98C199C9CAFD29FFA8A77DA7A1A77DA8A1A8A1A8A7A8A7CA %A7A8A1A8A7A8A1A8A7A8A1CAA7A87DA8A1A77DA8A1A77DA7A1FD11FFCA98 %C199C199C199C199C199C198C2A0C9CAFD2FFFA8A8A1A7A1A8A1A8A1A8A7 %A8A7CAA8CAA7CAA8CAA7CAA8CAA7A8A1A8A1A8A1A8A1A8A1A8A1FD12FFCA %C198C1999F99C1999998C2A0CAA8FD33FFA8FFA8A87DA77DA77DA77DA77D %A8A1A8A1A8A7A8A1A8A1A77DA7A1A77DA7A1A77DA7A1FD14FFA0C199C199 %C199C1A0FD3DFFA8A8A1A8A1A8A1A8A1A8A1A8A7A8A7A8A1A8A1A8A1A8A1 %A8A1A8A1A8A1FD15FFCA98BB99C2A0CFFD41FFCFA7A8A1A17DA8A1A77DA8 %A1A77DA8A1A77DA8A1A77DA77DA17DCAFD16FFC9A7FD49FFA8A8A1A8A1A7 %A1A8A1A8A1A8A7A8A1FD04A8FFA8FD66FFA8CAA8A8A8FFA8FFA8FFFFFFA8 %FD12FFFF %%EndData endstream endobj 25 0 obj <>stream +%AI12_CompressedDataxœì½ë’$·•&øþ±?d& CŽ;\;¶f‘™õJ-©îÖn[[Y©˜¢²UZ±(­öé÷ûÎüxd&‹,²f› #+3€€Ãq98×ïüìûôóO®¾xó§»OÜq< ?ûÙùíÝówoÞþê Ÿ~óòå7_¿{Ë~þÙ/&G4ºúM~VþëÝÛ¯ïß¼þÕÁLG{4¨¼å·þ?ñ—çoÿqøÝý»wo^ÿâðó_ ê÷ï^Þ¡òÕݻ篞ý×g÷/PWŸŠn®Ÿ¿C}ü¥ ¿4ñ`eÝáÓß±þùë¿=ÿúëûÿµ&ºìðÙéÍ7¯¿¸ýåéÍÿó«Ã”Ÿ?LÆ/Þ£úÞv÷uÓæ˜&3%CÌÆøö×o^|óêîõ»Oß¾yq÷õ×ç7/ß¼ýúW‡ó?ž¿>üîù—¨y~ø¿î^¾|ó÷Ãéåó0áÙíýË;¼ò«çïÆqv®~cì³Ó7÷/¿øço^ýé“a|âÇî™tù/_£/tËßùqzö›Wøäó»wï0R<3üÙ¯OëaàC)?ÿ÷Ïî¾¼—ÁlýÇ/J·oß|õêùÛ¿â»iÂ[LݘŸØ¬õ¸{õÕK̬̂Éã1 ‘å?ë?J[¼Ž´ûóŒ‰Áìx?Üèµ~™¤»¿ÝßýýW‡~óúNgâêí»Ïu…¼Gý¿Ö|öÍË»·ÿòúþFùѤSñ»7_ܽDûùû·/ŸË H1ËÿµÁž¿ýòî–õÍËoÞɦËõ ˜êß>ÿÇ×Kz3éÙ 3õÏyýÃ}vÿçgÓ­úìËw¿2I›MÏ~ÿÕÝë?¼ùWy•OÜtŒËæҺ͇·2Ó!Lj©“á}.Ï6ËÿË(®^¾»{û“_GòÃ<öæõÏÊѼûbýè æƒë|aoþìSlÀß¿½Ç„ýêkѽ·£îÍ_¿½ÿbٚɲþO–åˆùç1“';=õ“I~R4!oŸò‰Î¶Ç;¼H]cûìü»Õ±¿ûï‚W?¿yÅ=ú5©wŽÒË7_jÝü»Ôàëß|¥ó¢ûÛùÓ·÷¯ÙçðÏR“Ÿ}úòTýúí›o¾úÍë?¿~®´ñ_ï^€bÇqøýŸþ€ÊÉQ>üáíóèÏmŽÏï¿úŃÝáåÞÞ´ß”?ë¿ûúîÏ BË×õÓ›×»{ùæ«U·Úîñþ>}ùüõó·ù|îî·÷CÍsLÏÒ!Þ½ûãzÄnû +Ó!}H“¦÷¬ªÐoï_wÈgÏß¾ûû›·¸ºÜŽÏ¿z¤×Ïÿz÷îÅ_Ú~˧ߩçOŸ¿û n”»×_|=w .³Ì™×Ïÿóó—/ï¿|ûü«¿Ü¿8œÞ~óõ_xóæåÜ÷NýüœuTñ›OX[žË·¯ÿZߥfiÐ>$_¿ó‘>kþÎÞsPù¿Ê3ê”Ü|q-yáø=Øæó¿?ÇFÿíýŸž°?!]í½Ï¶j~§òñ·x£äÿxõ§7/ï¿~µt½úäSúû/ï>ÿÇ×ï\¬?ß¿þcúü›ûwwËI|óê+r¨‡Ïÿòü«;鳶ü|î0Èe¾º—>ùä lóéõªþ×oŸq»\÷¯ß¼üâîõá3ÞLÃæ/Üæépúbø÷a,ÅHñ‡Ÿ=;½þÇ0¶?¦)vU\)¾” ÿÕù߀Ö%Í%Ó¦\­Ê å\ÊõªÜŒ·Ãx[Ëf`ë»*nUü¦-ƒü“LDIòo^•iS®Ìi.繜Ì5JýëzÀ7òѵ¹]—õÔÉàê[¿*ÁF–Aÿ±iU²‡Uþµ*'-Ãÿ±·–—VÓmÖÓ¯VuY[”a^^¿Zd]ÕõêfþËUÍ›õV+Œÿe©ëbŸæeÖ¹Ê7ëÕÆÿõgÜ]k;lÚa]ù/W–k¥dYåÔ¬ðU)ÛµÅZòŸ)×Í*Ö‡:YÃeÍXt‘ê’Me±°@CY#®Õ¹”k)7¥Ü²Ô“Å—Y¯¥‘Uòeâ³LèIÉ­Ì•—òz“¼ÊµŒØ”FÙ2 Ïås¬sλè„íÉP®Ý-VÛxç½>ùì'åOþÚßø[L¤ .øC +S¸ +§p7ávÀ€ v)eîsœâU<Ås¼Ž·Ø ÓàSH1å4¥S:§ët‹}b²Í>‡sÊS¾Ê§|oò-ö‹&7ù ýL”NÓyº™n±iÌ•»òWá*^å«éêêê„r¾º¾º‘dñþNé”OªN§óéæt‹Ýe™mwöçpÆÎÓùê|:ŸÏ×ç[l6#«à¯Ãu¼Æà®óõt}º>_ß\ßÞŒXwãoâMºÉ7Ó žus¾¹nnnn¹#n1a·áoz‹±ß^¡à‘·øæm󃵱šóß7«r½*çU9­ÊÕ¦Lµ ø_^•´*qSªøUq«‚ 8ÜÚR¶$l!¾ãzè7ëŸëM9käŸÓª\­Ê´*ySÒªÄU ÃM˜‹ß·*vU̪ŒK©S>”_Ö£_ÿœWå¤ENæf·«·]³ºZÛ%Ú. –bX­Æv ¶¿î2ÍÍÜÊŒÝd–)ÜÌÞvÆ6ó4oËò¬¡™«R&)¹”$%–JñR\)v³W®L%ýóö×÷ªÏª?')W¥LRr)8ÛþK R|)®%½•Ðƒ‚Öµ¼‘õ;ÉzeYŸ ÂeeÚ¯eš¯d«&™G/ófd¦ndbN2ywò®|ÁQ^èZ^àJ†œd„^F„q`¿Ü`2Ï [W _t,‚šyP5 j>ØH7˜å3ˆÞÈ_¾J „ÑáF1¸ao±âטŽÓt²™§@H® ƒûøáÓtµr@x#°Ï¤Øàâ¾Å¹ÆžÒHuN D;€x;pƒ‹þ{ç{Ÿ@èÈ}Ùw þ&Ž¶ñ ÖøŒ‹á +DÆ5CÀ…ápqð·Øn×X‹.• —Kò׌ÇucqéŒØ÷7Øg\DW¸ò€›)º€;Êá®2àUn±C¯±|¼Ey­ò¢ ¸Üx;RÙ™¡-­Ø®¶’v8Pz©“ãÍ? g œxÙ'ÝHõëË—ÉvØ…0Ü®H½’„ ›*`Cl¦½­dË!·ô2r.y 9½õ&*w¯"Ü6`äÙ¼ïæË.b—åëÎÍ×/»+>P¾±,"eX—aûç¬lX~ï‹»PdS £}bÙ›à2<±á“öd÷ïôó½uXïE3Ϩr©•Í¾.E9¬ª”¨JŠ\dáªÄ('}(bs=ÞU-²lÿö4WµžÞõ=é9®"}ZÓ¬ˆ¥„YA°è†Üú€ŸLü6«%õTsë¼VJ­µ’ë´{OÕX ‹2¥=Ÿy£e[´3UC³wD翇îd¶‡°?”–¡SîÔ‡Îos<‡•ò;Ÿá‡Îñì¾÷÷XÔµôÓË?ÊôòOåBFÊÐ7ÂmLEò‹…ß°³ôs»â8Ò†ã°+ è H$ "… ("© tåÊAy–ƒ\‘ƒ( !DÊ¢JòƒˆBFÇ­HÅ×|¾Ÿ! ©,DiȪ4$òÐu‘‡N"e‘‡(‘r™¡E·"áR,RÁˆ¢Qш‘áÈÈQº é,e$JI OeSB%'äЈjæFÄ¥kˆK˜(2Qh¢Ø”|Á‰¢“J5Šøt[ë“–|97ònIø·ÈöŽ?Fø§…Š“§ÕµX¸4å̲P,~˜)uÇu­x¬ªIÕ×xÍ" ?4¬˜  Qíç†sÙÐÈ E6< KCÛvÉÚDÏ1l4ו맕açýE|r.V½çO‰¾oGEq3Îâ§- -U…© +ͪÞL¥TíçTJÑEUZ*mXŽM]JY«ˆ\9ùª¥U­Di¤%Î%•’ç2•r5—ÓÂÏШ=Ò´¨î÷©ÑŠ ˆÐ%ês‰ê¬(ÍIt8—iÍ4fCT +a¤);”ä12Ëy?€Ó‹+[ì ”@í±c±ÈÒ&Ä*›ÁPVËì5m³¸\Ô8ë„¥6 ŸV+-í´7b©U[­#w)öZþÐf{% 0í¶<@j»¥õ–Œ¥Xp1âfrÚbÈ=]ÏæÜì9IÚt=†G9 [>E¿ûîôâ¦XyÇ+3€·ÂÏÓÜKƒo¼JÂéO+ï˜~Q¸ÉQ0:1ÓL†<‰98§IlÂj> -âѾûð8“ÜJl+™­äu!«…¢3)]Hh% Ñ\håB#Ú¸¦ˆ×ÃL×ôo¡{[Z·&qk²¶"fÊŽmIWC¬v8Ÿž­xš}¾å•iØŽu¢’‰'^ðï{Ž‹âú߇qåm¿ÅCÇåÜIJéçÃÏž=¥ééë¾Çc@Ã0²9BŒ»kÛ±¯£‰iòcÊc°£wt½6sMô&;ýXݸCÎÒåäI1à“TÿÀQÉoZ@,ÄËqÊx¤)´G7?ì}¨¼å˜HâHá|5Ã×FP‘H»!H•™Ø5Äø8¹RÄZÀ$ŽnÒ‡°U}’|ÈOìúƒV#pÇDnyíu:q¤/ºñ#ƒ7ðI0c Û (0ˆµôÅ ++á¦àt€³Çµ“lð⟿ZŸ  +R>¶›„qœVÓð#â‡Ùó6³CÇxjiú7~ûäzQfdšŽ µ¸@,¶ÐËézv4­þ¢û.¤¿ûâ/÷_üb¨¿ S;;Žc4`&¬# 4Øœ6%ð0yœèSI¿RмíÊò‹ëí§ m{=´½jŒPÛë¡ëµ]¼¸ÇÕÔ| èâ|ŸsÙ|<:@>Ð lŸñm¶Æçýöÿ/zÝÿ£r.·…_±…S Åž +_rUX‘ëµËBa3|ñ¢!<4¸S<½0—ô< Sy+úDe&£°‘WÂ@ÞAArŒÊ-^‰žøºu‰U÷×jKTˈXÈÅÅuXªï¯øÌî”á’—íÞÏe?êµÙ#užè—ÕçF¼nf¿›VÅœŠÿzàQ2ß7œsP‡€‡‹f¿¢'z­­ú3 mŠÓÉÚídq<9+Ÿ¼r>ñ3_;—Ÿ¢ug{ùYôʪHNEaì‹­ÉÊ]­òÓü¬Ô•d1œ¨«†U¯¸â w]<àªç[ž )¡8¸©cÛ(ìôÍÆÿbåb<;«â]=)Ü,‘I£È¥IdÓ,v„+‘PO¢’ºD ¹QuVÕo˜ë¦«Ê¬‹Ô*rkñ$V_ba¨¸‰_³ˆ¯U€½Þ±[¤X.}õ7I¶Ê²C#ÌrOLÅù,òØÍìˆlE”­îÈkYö,²ì E™¡ˆ²n%ʦ"ÆžDŒ½1V]• Ö¯$XJ¯³ü:ˆvl`{6V„ØY‚=‰+2¬Ò¡â¬Y<çW®bcî¿™ß~Zì-CqÀÇÅŠ}³Ø³ëoëg÷üu8†šrŠs¾™m;nŽÍXþu›}!¿Õ‘?Ìj6U615r#•ÿ«½Iÿ¯nËÿ¯6Ö©ëâä_"7ÄeŒ.+/ÿÅÇßãW,^þ±x1¨l Ç Ú°òì_ŽÜrÔœ¸RµÇLvŒ¸\áô?|Ǭ­K­¥é’]ªØ¹×Æ)3´Ö¦­Þ”Þ[ã}µµ&üþ¯õ¿íïëÏB5Y‚ŠüE¯ŸË>Anó»VøÆØ·6î{;,õ³ïÃÐY uîg„eV—^a±Ým|šO;>Í©¸3/®ÌÕ…¹8/+¥—wü ´áJ.z½ê“¨Á‚ÐW®|½ô·Æô«Ù˜ž„Xƒú \ÀbU¿–Á鵧_½úæËo¾þê(ÞÆr âÊ=¸¾ ×wáÚëxëw¼õ<ž}e|Šm½õ>¾äü€ò°rz|/·G£Ty/Ò õ§ Ô`±™+Ê0{Ø·>ö—ýìWžö¥¬í‡G|í/ïÊ\,O›ý°ò³_{ÙóF½-I}3íÿ4ïYݵ“Üu²w‡²}£\…Ë&vÅ™Ti¹:Ô }S¦ë¼òÑÍ2”žÊ.",‹¢¤W(¸^êQ ÛþF¶¾l~õžÙ3ï¶Á4mÙ·!ÛÖ,Ô…Ûì†Ýl#Aºœ¡ÃiEöÃqÚœ9,§%é#sÖ¡%…ç¸áb„ÎnŒÎ#ç'gØ=<§•r9?ë3´:I½ïq“‰“?:?šÉ'‘¥3{–T|Êž:ð /yEÞ èX0à=­÷Qõn¥çEk¦ ZÏi:¢ÇE¥üãŽB´m9ÆÉŒ \:¨àHÍ•ŸÀ}g02x¤Ë©¨žðy¯õj4Ÿ‹>/ÁÏåå=?èSä=’w ט²iÄ…ÅïY—poÜ8Ö&jo¥ÿEI'OáŒo>¢ÂsQcb âJá"žcþûTÕŽb&™ñ)x›EUÜ”©¢œ&‹‹—Ÿ`ïdgFzv%Å›9rÎóJAKåõqj6Myät a\«¨~ا~+¥Õ7¯^ݽ¥ÞJõhÑg®øëÊö®y×u˜sš]j«/îiR¿©’:éSn¨BL˜%•4Ë#K¤q _ KX¸ÕÃ*ª8Ï^ÔKÀ·z\«ÿõeÉ>ˆl/âÆ°’7T°ŸVrÇ©0 7U¾‡„/Þ…ÅA[úŸl“Hãƒ8$&qOTq¿Šü§Ê…” Z•¥¶%.¢¨Bé5„!¨•% —K™J)¼@(|G˜YžÙó£:ùÍ>ÞÃLâææ²BašKžËÕ\NKâyUo˜­Itífm6Å­ŠÌÝü\¦ô?¹)ÓN¹ÒUWÎÊõe6ëû>%¢Bù¶E6òí÷Qúù%J>Íqò§å”šm¼W–CyZ¢ýy‡"ôobÆä˜Ý®¤øÅuc*qj×+}˜¯çƒZ°¡œ‰³XïÇ9˜>”pú,JÍ«²oDãÅ ìD¹ÊÞ¤¾ë$;ñš;°ºmXÙG‹ËÆ•¸l”õ_f#2—-dÕpeQ©SÃE¶N´[cÑnÑm©‹Æ4;h\;  VyÑm‘©žfí–øf ¸g,ÓJ³u–¨}ª•oŠŸïì›14ÎQ$Å®:i¨\±¸º-.n‹s›¬ÕÐ8iÄ+ÛÔ9²m6Vžk³ÏšÊ|['µÊü¶¾h½Zïïzv¼Îv½ÍÖÒAïu¶”aGþØõ`}‚«ß÷t½äåú`}ˆYÇÔ×húG_ãç—Øù:†m¸ü8GNŠ84hu¤*¿,²Ê¿ _ Cø¾kA|Â×â÷,|¯¥îaGèÞWuw#my{ظ·"÷Vèފݹ(œÓ|Ù…a¾¼Šàv†ÅW‚øíJ¿™Å¯9j¨¾Z~¦¹ä¹,w×r ‡¹ø¥ Ez_dx»’äÍZ¢_ÉõKYË»²žÃJR EüšV 襠õ¥ø½öÆÞÿôq¦—ÂwU†î£›÷)y@Š›RÞ¸§ì×÷˜0fwnŒxµQ4;9ÛLAÛǦâ»6 +¿£™õwÏz·Ñ2üËë×Ï_Ý}qø²|t0¿ö>\¼©v½Â,³¬Ð½Ìe| +…¹¸­(Cq7o]Í·`['sµØ«µþjã[ñd˜˧­1rQ•øNت¯àËðÛ8 úEùñTÔ‘<æ‡å}ž>àSð‚²žíÍ|eÂÍf¸k ñHʾƒ¿–é_Â>Ñ÷Ctu;,0D9é§×¯,Î'ºÉ%CïSÒ9 .ÂN‰ç[œZcŠùïqaOñ Îƒqƒ5þ”Ovií7ÐbE@—Oæm>ûnôzw)6>F×aC³mq$õ8‹ë‹¿”I¨é™?‘Iô³7 ª,ÊBÔ½M¯†Ù»Í +±M¢á¼^A*Vﶦ³*¦œ#¡9Õ“i˜]™¶nLʼniŽŠ¦gŽ³Ö÷ÜL·Ã¬ôQ§&[¤,_Ô?5@'Q­ +o‹DTŠÐ7 ‘Fð\'¨uYÂÌ6@ ë¶ ³,º·[ü…¶eh>ˆO*ér.Vå÷+÷h¼#²öexZ³§—Ÿ:Üi0ó$•ç‹3QNÏ +ß‘6®V<Ï’°ª‚^Xºì®EH›¹92kÌV'jæX\+KdàìP¹8SÎÃìGYã·Ñ€3É¡e¨N”qV1ƒþ e'ž‹±ý¦„†%:СªºU†9J°–ª1ÑŸ«¡P–:¯‹v¦êluÎ{¶¨L[†5*ÙF—ä6Ô®/¡+B ‡•Æª-;–™ eÑ„åaýÇ“J§—Ú–á±߶<µÃ'ÿ Ooú_¦ÃK„ÌM ]"³\©EkF0ŒED©ÐϤE È”ˆ×θϔogŸû°Á|VUuÇ^§v)H¥!Õ {'¦x—ŠT:’ˆUªÄäjCITßÒ’…žØ¢(Z¨J(ZÔ4¬KýYöè–®l¼†Zç¨Ja†ŽÈ\"6öBi(ÎðDô9šËðPå{”iÜ{•Ÿ:ü:ü6‘KOþy¨Ã­O¹ë”0i£5*£aÖÁlðX×!X¢%R¥K努Q>E—¸±(c4”¸”,ç„Z®Û™;ò¢á^ào…;r%º( Ñ />êÁ1ˆÉ]ý3HJ¨­WÃ.=œÛCqÑ ™Q; ¾JªÜliJ‹†B†Î%œá±ÛµÔC^ײҫjL[ExD‚Z䤵 ´–n¶IË´®~Ô»üz§ôMj¿,v8Û'ÿ”2<­Ù9>µ Ooú_¦ÃªD»î ­Oسé&àÐãùºÀFð$±(Ú0SÿNØeb£ +Œ +0j¿h‚£ùMMo€p- ~v*šŸØ×fPóœj¤Ý0<м…4ŸAÍ—¸‚¡Øƪ]¬ÚÄ\ /0³)ìzdpµÂì[Œ_bøŠÝ«½¶¯jîZL]‹¡kmær‹kX›¸6æ­Ö¸Õš¶.Xµ†Æ¬uɨµ1i=dÏ.™³öLYO°^IÜÖSËù)exZ³ š¨2<½é‘ NÒOä' +òùÏçÇßáOä' +òùxÏçÇßáãm7æÓ?¤a>Y£Žƒkp¤iò>Æè§d§Ñ8ïí$á\Á09¶ f‡¶–Bà'ÙzgFx™qÛö¤O/e⎭þcT1ß;ɸC0ÇtmÄojj{ щ(qpþÍ‚C÷@‹í÷z £ÎNiçûm‹ùû)íx¬?þŽNvßéÀÒéÀU§ƒ!ñ¦qç¾nܺ/¹/¯®»rþvE»i]·ùóŧ³Mi|üâT3ûëÙ·¾O'—ûؤªÊ\§ÆL+ºu6Ùu&Ù¦|tÝ,ðJç­tѲ•½ K±]ŸÍÚjƒ=?Œâ‰Q‡æ`%óÖœk¬‚Ë,pHy„Ta¾kƒ5u1'ç@I¦QAÎûlÒÄ P¬8ú­MJ&â¢7nJi´Qø‰<ÕY…ôOúdßß飑F0ÌÚDõ²G3yvÇhC°Ùx/±àe¸±w9‚Ë£/ìh¢-ØUPèhŠ·nñÓu¸&ræS–wþOÑ÷øfõc[åïx•ì^$öÛûßØlx³¯qq}ª«îc¾¶©óµÝsn<œ•ƒc&æzß‹}ÇãÍû õ•ÞÇíöQ—PÜM5VåûŽ‡‘' 5æ¡Þ¿…Kë¶ÿ9ÚfKóÊÙrC$ÛŠî«éööºÛìõâ-h4ð5Œš^­73øV©3Ãð4H ']…’.0ßq†÷¾*1¢ºoÅȨ±îVõ B{*Y“˜O%ý¦8V,ÎYn£N3d¢¢ÓÃxó›[îŠWhsä:¸b r—ÏøM-‚ÓÃÉŠ Å(ŽÇiä´ +^.E/Íy“jðR®ÁKß— öþi{º v³·?úÈö|¨'ÈʾG¬¿ÉK¥6üæ𴜠ÖÊ…¹÷¸F|ý,x5Úï©¿ïvÊóî1ÏðÙa±b,®óT—ãÂËÖërTèÅhvƒÖ/ÜÌžÓãʽhùjý2~ä œÒsñ&pr|OÅÀ•sªO¸!yì‡øÂ"€pÖQÁ-×—ÙÁã*X\ÃZYåÂÜ[zõ¾Ü4ù€]%”÷zCç@醒®Æ×Ö(M»Diês—g„Ý'Ù Áæ§-tuh"BmÙ@ãL^u}DmA˜n$ýÝ$yïÜÉ`©†ž0&g’×nÕ³C7x'ƒ᥎Ü(6–Kf¤t'ì8ì=n€ñW’lŽ›ASïóuOÈûüx8SÉVÒæ*ñÿŸ;§TìœñdŽ­¨>€—ÈÙ– IÐÄ°ØXâ#Ö!ë‡uœÂ DÎm·w2¹<@7[ÊI”¼%~d<²>çWM×euv]aó† vÉ2¾Kº%ѳï¸.ÁÚŸsqÝ\\4û0—Ž[ªÃÚѬÁ¬³ 7AèîºÝ â7Ä_ì,~bN|Ãèv#n`^œ¾èèE¿.'¾[“¸dÑÕŠ>R:²‚ ^G=,æ>(æ$¦&¾Kð‚¼}úidï5²“ÊìVZÚ¨À‘pk¡ à½,Ù´¶ ­0šœ üJJTg´ñôà¦bÞ60rOùdÌ`WIj>®Q)3ìG^<-»g”ßÑ@ðGp¯AYj,§D¨9&# nÂà-Æ„A2 Ñm2vØ'}2(ÚãÄW]æéc•ªá~TQ‘9’oùXÌVͨt?„”{<šì%ß »±r®±vú Ä3nìÀl=Ø«cÌvL ‡!cÓrUº8²+œ}ãùNÂß“íüÆê%@qÄ+Ë%ùÇ­$þ¨—"Ó~Ü(2^Ë +®¯¼ÑMa†\QýÝ™†¢õ¹žµ>æ¬Y+|ÉZ±Î[1§z[gz[¥É¶ù1›Ô˜Û´˜ë’mJÌUrÌ5„íÃY|ŸVn‡o—dññòãw¨Ú`…xßÆNRÓKý®ðø…»¯œýi†îs‚ƒ™lÿ\7ÁPÎ||é›óTø‚GYÕugánK”€EŸ$%V`˜•t +ú6 >+j::ÑT¨É\P—hÇÅeìlà³éŠ»PÂnñCö»%¾oÞÿ«ßS‡º5œÉ +¾YS¸hð +åšÊÓêóš€fW³X1V®Áþ×ÿç¿ëä ã*Â:æI±2ïõóS‡OøBI®4â4ž!ÀeVÉkÝ›?áx“Á·ÂÜ“µ'cO¶žL½jÆ4-ÀšŸo·KìüŠ¡ŸYúëâµuU²“h“% ‘J–”’L¥fd™³-yïçŒ÷›t÷uËϸÃÅ<÷®+q¦ÖeèòYmˇ_Ëï½CUÁÅVÄN`7Ž¡¹´(<ËŒÍòp²¬aN ·ÊÆ]å´‚„«v• + ·6­˜<žr[D¯‹•å\,-§9n¼^$ Dðò³Â8¤aßw¡Øý2\¨0ï[†÷ÿê÷Ô¡z*-–¨µ-ªZ£Lç¿T½—òŒºFßh7@ Kò§`€nQ@ë°†½¹¹¬#ç¶^£MÞnúî›áRD_çyö´rwQûvåÇïp­ØýѹâÑჲÅp¡b?™MŸ•cC¤¢a7µMìðt·˜º¦;Hõ†sM”—‹8Î)”–4y%qÒ—i¨½$!¹wb‰¹-j‹q¸Ío1ì“PòÚm³Þ+?:Wü]:Üü™¢HC'‚tÂJƒ!¿vê\¤ŸY"fàûzw)n¾Þ.Êï(ºö¹RœD +KúÔ «g…Ñ¢_Ìõ \ß¹Àœ¦D! ¦Ë”ª] š b—jÝQ"#ΕÿSm®2§aæû„ã+|ù;rudãȼ]‰¬A>ÌýàQø?uØýlå³R0ÌÔœn¶ø¶‚`uEssŠ¸­¤9 +Q37¢fÚ©¥Qå;NL÷óƒtø°hp) n)ÃnªÁ6WàZœ™¥œnE*Šßõ:]Ëyåu};» šöÓ•d“qþYÐJþ³Z×öã‡,È=ôê¼*©S¦ÙZ¸Å< J—ÍÓH~[ÍŽücsÅߥà ²Ã…R$Ž¡Azae+̬䜽Ô)Ã’)¥”SA$Z¢Ü¬°‰ÆŸè„¢KVóµÍ׬Œqìë:ƒ€±kç)û=As<2‹‹mèS/½LtÀMoœä@ÐìŠ]üÑÔø’ïû þ¿Ûéß û?Å}ü÷ñSÜÇÿâ>â´wÎñiËhžËx9{J‘ä¿gUÜ|ó>i¯?)ÉD=:Kb¼%5Þ© å×ôxyN·$È«iÉk²ñæ.ü ´~s>Ø4ÃP—}h³§/Õ§=švYÑŠ·½«ú@ŽŸM¼Â~ ìÂƽ#°ê¾j¸Â&ÌöbtíÒan"kÛ9Ýh÷ƒj/üË$s.ß!O½E8]O»˜ž”¦Í$opµâ¦L˜øè‹s*öù¨~$n¢ŒeìqËb:©§²å<´7BB.æoNà4‚ï;øßþrÿîî¿N/Ÿ¿ø+ŽàæÏ"·V¯â}ÏìZC¬^Ó2TXõ5¤úõœìw›“¡b©Ÿé!xS`Ôí*ffÏs9 Ì: Ìi‰áù.!JçUf‰QÞ?H©”긷*ÂFÃ÷!³–uV€÷Î[6¨ªáÂN©Õ¡$ŠÖͲàðW¡aÁ⇰0I˜RnJ:ò'äóhpø‹†û!íöÓbÂú¤BﶱY’ +µ`E×;p8OÚ +ï‘nü¾2 ;aN(¶êõFXg ¯Û`•”á¡­ðXb†mZ†bòòw Âk7Åõðþax«-²Ú(Ã…ôS[à£ïã/|ÿ×ážum*][¡WÔmØ!n;2Ñ.Âþ_¿=ß1ê1iÜãö8¼Üc±‚T]#Šwíœ-ÀÕÍÄÕ‡Iø~êÖÝ”€Ã·Q¸Î~§Õë´”^/¥CQäJé Rzý$˜Ò-Hi‰˜¾[Ȥ"k‰™Þ?hR¼«é{‹W5ªqœn ²´ƒUöÓVøi+ü´~Ú +— +¿wh¼pðC=áC©ÊðÁ³~óúÓ·÷¯ßÝ¿þò“OVrûºbøç¯Xã´æÓçïÞݽ} þêå?¾þú9DùòËašŽStž–~£;Xï4²3ðÆa{¬‰GìOlä6ÅO2ò+ùÿÿ®ÜáŸoä×:ü‡üùOøõ?ñáß1'‡ßþý?ÆÃúÍÏðO}tû„Ã+T>:ŽÃo÷ZÕ×øíªÿ½Ïv{{ÿ~yõöÝõý‹w÷o^?ûïD{òËÓ›7/1y¿)ùìæ‹ûwoÞ>;=ñWLö³?Ü¿¼{öÙÝ‹w¿8üw|áÇíÌȯÿíéîZ>ù½ì@Ë¿àõÈ’gEYkpZ­£¯³•¤¿tSÀa‹”cBŠ·M®ž»¿~¥Ëµ)þø\¿Y$gÌq»81ìÄâòÑA`ÑEÀtYˆ5$fLÛ!LdžñzvÄ#üÈ`!1<¦5ãÛÙ‚6$C£kGƒµ9¼`g9A©ê&0Äø’=ÆÀÞ²;z|Å£M?!ñ0­}<Ð&|„ļ;‚ÞØÒÛt¤> C˜0/þàÐ6ÉR[¾3>8b†øïx †Ñ7´éˆ¹3Ú]òGˆg Ö#.“6⃋Ìèʉƒ³úJ¬ Ï*¦à1*‡ÉD Ý¡Òà Øš#{Á6͇+¦#Xu<…*ˆlèn‚ï[T8lÇ€ö`ù!°k_&.ŽGN΄©ÀËbâ‘iëa&P,ˆ–þ.Þç¢û† G_;3GÈxbécãÔY°16TÑCG)½D€[^6°Wc,Äãd:±ë‡É“¼„Gdï1‰ÁIN'L¦H0%@;K'˜Y(G(M‡OÌ—×Ýå#¶6%“Œ]… Ä@PÁbsOØ' ¼d…$×S·ß†ºdÀ-ßáÁJã4Röw«g4udõÔo+q†§Èo5Á!Ã|Ù~lµb>²«÷Y¾ÔÎÎü˜ ÓVgÓ=’· Žë!9P`œ£W»•^’éÇÈö×GV`Ì  jTZYÞØòµB÷Ž•ñØ“ÄÿuZ¾åu”vdôðê1ÍçelÚYSgà°¿º‡˜#n„½¡• +í­}¡ù[íÌϹ0qufÿÛ¿àÿòdfä7_ƒ÷øêîù»»/žá ʃì·ûÝs°‰ç7_ýãÙ›? óë·o¾ùjõL‡ŸÿâðÇ{”Á‘—Ø¢àþÅ!TfEbÀÑ(ØÀxÕL(2Ïf㴸˸$³án +ãâó,L"ˆC"™ñzŽûJÂòЄ¶ \ˆä7TÌôóÂ[¾æ‹Ê¤£d ®+•¸¥ ¶6¿vB‡oeªW]Í!DW1•oHwm%H2kÇÁ¤ƒ±dRq'CâÃÕŽá™XZŒ‘[õ€i;Fªx#îBÞµ] y’—oeèá´Ó¸öN‡l3_œcD9æ¾ÅD/àú*m%®¡Ý +dÞ„Sÿy]¶-•Æ ‰u•€µH¸JÙbcà®xµ[ ¶Ÿw?*ðÇ ŒrYrBàÊŸ:3Ì‘Ù§nŠsS.µ£ØçÁe·ôÝU”ÍdSi°k3GÔ>fT²9i\Èh?ü¹qûÂs÷¦iC;öŽ+xƒì#ÕÑà@EÔÅ:ª®P¯Ÿ€›‹lƒ‡XJÂŽµKun|‘ðÉÆ›Úëyµà$±ÐèÛá 8CžŽ(Aï]ÒZ0O¨ׄm x{\ê ÉF0TOÈE‡È“HfwÏãèÁaaJ@CôrÁ`%@|èR%›R˜Uø#>LØoè;yp "MfP"0Ð=âõXp©ÚÙÌé²nä |œÁ9€Àâ™APrƒ-àÉ +á2Ã3AÞ(LŸOšÅ™\ªŒ'¬"‘D‘Ó‚ÓÇÈ3ÙÏÀ +|=gÁ¿Áó>/Ý¡RÒ‰ƒÅñäÏÁëѨ#ƒŠ3æ'7’¹Ä=Íî.Ì{Ñ&a¦1žØ[f±Ã^íÕqÉ·bÖŸ‰Ï!Ãá…qVxT,î@œm¼ gS¨Ÿ¿¨+ ®“+ ö~ù +gÛZ½ÖÏh+ÊÀ´³¶›6,Qó”Äåõ±Y­ÐÞš×Y¾Õ¼ÿü”ý9Û>s¸úêǹ %Ò‘Æ?l„ âØm¥ m]À㽃)€L„·œŠÁpï¼è½‘Ch±Mç +½Ï ÊS’I£8\®¾…Õ…<%4™À4.Ïi+Êà´»¶2©>=ôÏÐðo?ºR¡Ýµï4«™„ù1û·˜…œŽºº?U58?!YÞ¨Ø&Ø2q¯ÅˆÛLeL¤få9m#¹p\”ð ¡ŒKîdv“eŒ–œ~ÐeÜãØ ŒK¶¦“ûà¹#}0ºU±OÁˆêe¹ý€$ŠÀ|°ªxAÞ*4>:QÅ[ÃÓ#„§žƒ + LæTøUÎþ$ ÖŽå&±ƒ±&ª4yrŒ(óö$bxò(¨5ÒMâ0êòúˆÉˆ“pörû‚³wÝ—#…-F6<_¤‰¢f¦n.ààã(Ôí`wyÚ|¬ånM¤E¸À&Ú‘FèÈ„àÖ/„€Á;b)qù&L˜ç€Û{Áñ3ƒÍ0ªœ¼D>fœº L4ËäZÃá$.ÏH=%7}+ÊÉØ‘—.Xôl Vnp4‘s.º .†N:ØÑ–D²kP©'_„C:Q¯´ÓŪ€¬€ÕNT)/#è*šÐt­°NN."PÝtØ„ûHݼ¡BsïEšúœn>ºnº©lGòØŠÔ TV˜7SÊBÚÀâH`ê¸×díp,À†d kE“Ú´÷qœÆ‘-@ô#v∣…†Ø”f¯AR !ØÔD^K·h׊”›·3Î09ï¡€ŽPd”Ð.‡WjZè“ÜÔÂQJïô¾ñ`È›½±t-vß©kÕNM7”nv[¥y=Anuå àŒ=èUÄ^—±«dü*û§NI¶Õàq<ß4Q)ƒ +¼4Ö£VÔ»Úˉù˜¿s9)ß²zNWQF÷¢ˆm¥;’-:ôϱœ?»3ºR¡OûNó·ÚY¨Ï¹4wJË?¼YŽúÙ1’F 7lÖµŽ,í ÕþFÝç“8ÁªJ\ìoà¾À¢Yë}¼68j @)À€…7àTÛ•TÛE‰±ਟ ° +Þãicã³ c&ª›¨N-pdõ•ÅdÕ?§¹úÑ­Lcó«ÌÛwž»¿0SÿkYÄ~x;(&68`d]@Ÿ‹i“ U}µq·­@3Å­¢õ¯Oʨ4|nÔÞ‚,¹ ¸xÊ€õóÌ1M”÷…ˆO#Ýi°Ú¸Ý&H-nqdq]±$«£äàŒ«ßé¡véÆó…ö¤0Ò§qTÉ£R;{Ìà¢#OR?WŸjJ–ÏÄ'$qÛ+ú›‹ÃM[1MFUá7•$#¶¦ÀÒC tâÈmŒ!ƒÂN¢ûöLa\h¥·{:‡ù˜…l‘d»¸óõneMq™ @ÿœG×¾Ñ÷§QØKr>¼ÀÈ2äÙ¢k…;AMxŠ_}pœuB¤œâ^C?1*!èj¸§T˜ô-táéþC"G×Ó°×-¾8`¯Ç¸;–¶EûNÕ/£i•Ôk0ÔùC?*û ¶RÙFnîîÚú¤vnº~úUhÇòè:}|ÂKç‰C©ŸÓñÖáîp»Þ„TmOÁ»M4{‡Þ­Ý8œÆIx¸à!í@cí‘nY»Ž†`‘LXVÂéö‡ýš@--Œâ4¸%ä×"EÉpªj|EÞ$G‚ÀÄ÷ΈdÉ„x‘%›hük½©QÂËQomÖhß=‘Úm¢CQ»oûÞO‘w¹N $. +4Ã"ÙFjµ0ZÌ­‡eë¹HžÓ‚KÅÖßñaDcœJj{Å ·÷e¤Y³Î[¼Eõßl]©™¤Á­lëBëÝŽ¯8’yÃ@è¸×õA;^|DžÝæÚ‹¤›áêú(ú@\®â–ƒ‡îø@:us‹Ft®ûÎ"ÊhνÜêIßB/>Rz÷H#‚ßwm=ÕYÔÖÓ ©s“¤¸Îˆr® íÌŽ¿¤çêâ\DK墿à8 W&:Ž<öSïAiÈ¡Tˆq#3•Sñ¥s ®ù8TpãTÉe¢ýËâÀ»¾õ®¤}`²Ž×£ÃRØÞÏ’ÛÛrRg§àÖáRÔl4+SÍÆ4Lç¥%y°W¸Ñwï‚ Žâ"6&d=Ðã¸ï‹iÅ©L,ÓL©Õûdʃ¸Z|£ÃmãœIS¹¢Ö9“ƒÈ‰þ +‰²áÔyiÒê/š3ÏDo¸Â:MpÚq…yÇ‹ z¯­7­¥*Ü<7­§%'D•fW¾Ò¹rÒ""”‰èu¹ØÛ:ŸNÚ#=ÍÝØòÕ¹“Ú`o6ÐH½ÒÔ{yvwË#îžl¯´}¤úÅìû}ò2òóî9©Æt 4éãÑ8½»e×b×)t§ŸÆÑsg(]‹æ•vFy9Q” +wœx™7c¡"—§"›ç±§®Åž/éN7ÝìvCyl•.º™‚Dá=yÈ#ȼ¹àoJ“›W+¶£3@ïxŠsvÄôÞµb×ñtùÖÖ‰tçymƒfØ{®¨<ºÖnÐ¥b×%uùV7Kíó›ìŸ$ò‡Ý3œ)ÞŽ‘êI^ú´Âc_S¾ÀroœT´²#ãêx·C²AÞÁºaÔ#4[So+8Õ¸¹±à–Ê{|*&D +ëlÉ0;utÕ†¶ð0ëœÅñ¢Û™\ÜL2Ó(D/ŠqpoTWF\‹‘Ü n6!XîHÝ/ß@]/"#ýRßBÕ¥®xÌâò9஺¦ò„D +Õ1 fE»hÄ5¤ÜéX1æFÃä˜HXª·PÈåI¸X ùX|Íñð5‚^É“ÀÑòIr=«Ït]F3ê¨}¥ª7Úåð¨Qï0YàÁŠu¦oe”•%D™>—Ž9tÁˆÉ†Ð/žGŽže#¾*¹ BßBu“ –ŽÊýÄØÿV æà¹É×Ñ«Çú!ô-šWÑ'µ­0•r½ƒÅǺ~,·•¥Ôñ!é^©ið¢™îËíTvÏtItÇu:+Ê!ä âHì{°ÓåDÝ>GY±Æ•n\£ø/Ê ÙñiÇ©¢'+z&;çvñ‘™äî¥×öÎì¼õʈ!ì5p¥ O´ø®ö­|¡ ß©w{Ç—$Ð$­Û{×b×í½ï§õ[·BP‰›è°ãOéÉè;y,êϾ Y¯ç¬[FK‡faÌ5¦;-Úíðˆg¼¥LÔPø>¥¥]ylí£‰Ü?ÖûÊw"CuQï*výçû¯·>ñýúÍ«ìú֋БGq»ÅE{'{:æ +÷è±›’øÉ—Wi+vÝîw¾ÞÍf7„ÇVåãóÈ'Ë’ûQÜÅvÍ]«j.輪½€gTì’‘hL~×ö^±˜eYÝ„6³½€:oCت(‰”§Ù^@Úúdœ7ö‚Î^_íy½Ú蓘-]Ü-Á­ Tûƒ™?£Q{j¶Ô¿×æúYg OÇcŽ€úÀV­/®É‚·3‚x·o ]:yê_ïï½~º•lͯukŽjÈ£ó¨è^÷Ì}«V%/VQ9¼àà2R«ÖçඈPÅ«Ôî›ÄVË XÔ“;ÖNev†³=Ï»®J×bO“¾ÓªÑÈwCi•úýíú™éûéÖ Êc«´Šðû3ùP.v^…šz:‰•Êä©pÎ}«¤:ßÁ5I —/îÓÔP'™U`fx«”š¨X”;Àâç¾Eu}’Àè ¸öú¡ÀeØÂÓ?£HSß¼N½"7m&µòEªÇ&½”¶£¯<‘–0¸A4£ÝÛ´-ªçÕfRúnºyí†òØú|ŒÁ–WF$C2KÐaRå`¤»¥/v&Ž‹©Â¥Ó‹KD?:\àìÔ +Ïà DñLsL‰^¸:É®Ž~ã"Âñr™¨¯‰|’£ëªws5²mn%n!#\ˆ¢à +¨ì–—yš£ˆ0¡9Ä¡øxJ¯xI&0!±¡¸ÂS½lÅ <ཽˆAz#௑’È(k$2JÜS¨éæ` —L%ìNO;…/Ú< &¾˜*Šãï0Æßyµf0÷ +•ÔXOñŸV:GK‡¡oe’'ñžá“o/^ùêwDFÐÝ掇ÝFãWñf¢”nØ +¼8ݱ ɉé)Z\ɹxãf#~¶–þ£”€2Í`gWýuSq!¼nH¢ Àî¥é"ûÎ7‚±4w`>è¬Ç`±¦Å‘<`íz°*P¥ÌoƒÓ1¢Õ£gu¦Î!?„óç©‹§HÎ#o1)gœéÙ »5Šk7¶8€'*“ÅÆ%ŽôPb­ãNH¤ÌÕ„áŒjÖ2ÔÜpWôƒ°Ìàú×FpJø·O×^6‚…G¥ A„0SX´b»·;‡V“¼F ˆÂ häèÃ=‰YtìÕ˜À܇ÇOb£•·4’Q4d1µøèßÈÏÁ«ýVÅTGK”³N,É"Ï6ÎœF %â3a-ñ¹W3e²^\ Ûzr] «ÄKi§…’ +/ƺ¸7–®EóNú¤®)(ꦑ6©~,VE ìVâ“î½SÓ¢R£fnº~ºùíÆòØ:}tê0%âGQØð¤Û ÀDèÖj[1"F°Œ¼QÞQ‰b3QÉËé ]‹›‡?‡ãh‹+&‰@z‡ñLYB€­ñ +,%Ê¢®MÂw—Ë'I’£¤–‚Èèaì¢$ §Q=ïæ±âuŒù¨Y’åsTåB“ -Ý“Uƒ¢ Üg&Œ˜TQ«ÊL«QL¤ŸgŠy¹iPƒ¬”6ÆŽÜ}]7iR^!FKBᦢ5ˆJ«ád…2ƪ:©ªœ‘¹q§ïuÊ#U +ü„H)Íë4ûv-@™‹B›N if¶­’SeO >àðð¨ùIå"Ntl?ÖUs*«ìOi4ŽK×òõ;“!ql%1-ö‚”«”¾ È"ÆÝÒ%(ÂѥܹLoSŒÞS™á•¢mŽìÔ(ž ¦¾+֌ܪ+sFìFW´odýÀ¥,Q¬bʘd¼´B®(*‚õdøî£t²¹²I–$¤»Áè ‹ ÷ë«ÝF`“3fP Œ"0€ÅÊ }̼a¸íiටk—p®²=Á¯YS‰7-”àbóÃØ™$¦ï'18Ñüä÷†Ò6h^HŸÓ6 +GbgÒy‰šöÃÎ@h <):oö^¨i¡ê&¦ë§Ûn(¬Ð쉢¦îÛ +¡‚"deÙA53cK^í·šŠ3C†œ"«xfÊB+æDˆ ¤¾žÉuÅ…*á„MÌfHýVÛ@ã cXé=dÔ¥£ï—’ b¦”kug(]‹æ•ê“šVIµ`4f !mÇÂè :Ezé8Ó¿RÛ@ÔÎLßM7»ÝP[¥y=±µA +é á¡ØÑÆD ”T æC׊Vc}j²x‘É Ôj˜)™BÜÐ+e <ë*ê%2.AÜ–nb;_÷ÌÌG韬ÁÞºí›è“ºVñÉ•âÎVÏËv,Œ„£¼]ß ü­wjóÚµm?­ícøºDtpÊ4£…Gb@ +(…Ú•ö­<j"°y/R;θ§ð:Q4ÎrS‰ÆÄ%f6Žtw"zSvé[èõNC*ýºÄF¶ÓJ"Í"ç™9 îØõXvZ4ï¤OêZYե洣ԅŽ—®8^Š/\÷NM‹eöš¹éúéæ·Ëãë4¯¨c ݲÀ +X däp> ‰.hÛˆ~Ôõ$°ëtí$k£²UeG¢Ê€<å˜ÎÁK^‹Ô·xQ$d õB‹(Ü^߃먭Ş£ßB×¢}“*M6­Š94‰Oá¡ +X¦”ÌΛ” +uÑ,ï_w³Ú<å±YÿøÌl¹WqHÇ6ÒVµ‹€E6 +rúé¡°È^SÂS‹Ž©…i1±hȤš3èä[ŽIƒŽEå¦8}Râ3f&‹ VN¸ŸˆHÑãeAÌaÐ*iq9™8ïNq†¥Ø6…8‹‹.Æp¢ÌºÚhñ‹3Öh‰íÕÓI¦ÕØi‰0îTfÄ¡»EÔ"§ä¦ ˆZœgüÍy¦/½ë¡µè !ã Ø:¡xÛ>¼Ä-/½Žâߢ§Z† {¨[Ô;ªŠ=æØqUZ¼*‘¤¢œQuºê஺/êÖ[eítÓÀlí ¥mѾQÕZ7­²nv·„†`܆êÏþEÚU ³¾ŸvâëY};Ú é%^æVÌDoÉ»Ø^tÖaØe‡ƒÅcÎD¨ÔX)èƒpÉꮅm3™×­8‚¹ô­mP¹‚ d\×K 6פoѼЋa´Nt¾43¸ÒŒ©G¯S!xzFï½Ð¶^pÝ´´½t3ÛäÑzT9öããÜíBETÀ»"¢C¾ë ":¼]Œˆ ¯Ãˆè@ñ:ŒˆÎ~$¢ƒÉë@":¼¼$¢ÎÛ‰èô:ˆJ¯‰¨˜z»Ø¸^ÑÁìµàûþ.8D‡¢×Ct|8DßÇ8D5ÐÍl‡ÎסDÌ0};à-^_‡ Ñ÷µ ‚ß$¢Cðë@"*’_‡ 1CúíABÌØ~-Dùë *Üß.DÅýë€*`‡÷P¡wa*&`‡îPÁ;P‡‚¸ åÐÁ¶P6°Cpèð×~`áÐ öU-¤à.†CÅìÐ:Á½¡EÜoha;솰Ãpxœè·Á( ´Þ.†ÃN«8¡õëÀZHÀ] ‡P°ï¦Å"ì‡Ò·Ø<ØiÕ'tcéÀÚWÚ…pèff§›nvÛ¡<ºJkVrƒï·‹á°ÓªÁT¨€‚„¡C\C7t˜…Ë·”Ãçt-v`vZmÑú†~Ü+ô†ù%çÆÝ´´ylv÷Œ} ,"D +6…¾í~ä)°ÅÕ/v:RÉ)hÉËMÔ'†èo ÊjX¨ Ý›új–«¬5'“Ýëw5h©î‚3{céZ4ï4·­@ª…oÏ?eµÅ7c)ÂXûOÞ{§¦…>©››¶Ÿ~~Û±<ºN3íüÁÍSMÂ_Qð;/Aà^œ+ M¹Œ# aÛ‹GßÊY×ÊvUã1=:e›N¶9óiˆÖJä.?&ÚÔ·¨æcá‚i[Ǽ×ÑøbÜQy>ÝëtõÍk¼(žM+§‰%¼X8ìag$â ljè’Ù¿QÓBŸT'¤ûz7“Ý[‘eóüð† †'Œ‚bh3PWë$Pf¤OÁ«ýVtE â9JF;Âz‰•Íâ™q@2 ™Õ\!"yÒ†Dp¶-T‡>j¦¼hGµV´Ý,ºÀŠ‡J;#é[4o¤œaÛjRAœèq膂i’Ë·_ݵ-ôš‰é»iç¶Éck4ßñ>Ù’`å”8È6“:~òæŒrÑ´âÎcúuñƒ‰Š{BXXÍÅ,VR±0¢ÎHꆬP³]½Î0£¡éÝO™Î¸NÀ*ÓE >eêat š·©<~×*“6G§ÚÛ‘Ð×"÷o¡k§í Ô¯ìLpó°Ç–àÇ»*L{U8HJtœ§RFm×Kïr¨Ž }#BÐ;ÊÓ¶¥‰øÔ ‰> +ýžÞ|\oˆÌa\=yÆ)tõ3!÷š-m߈7p¢˜ç™Þ@Žy7Ž®Eó:ÕBÞµÒ”Ûݼ€÷Ã×Ïë=×¼{ýR?µú”G¦|Ù?¸V°a$T1Oب*ñEd\5!Ås¢oDÔ †4‹÷@õ€£®.ˆ3bã$n²§J{UsÁ8^}]U¹Ú~9)†¯˜Úç÷-š×¨>M«!:4ñiRê¯# ·e6ÜàâÝ¿iñ¢Xešièúig²Á#ëññÐ[%.hb7Ï =[/Ÿ¾’ab‚rQkGâ0’¥¦^3«úYÙ'î{çëç:­ Ä–: °virËwbñ™Š+®ÒV”¡UcÕ¶÷†$”ê“4…M?¶´Ê¼Ó½P©ì§ <çâÄ-1$¶Ø[&ªÖ•mI1_íVb¹F‰VcF2§†ž“i‰ó¢@Tk¹îÑÍʸLÅ°AÝä¦ù[Œö#£ý4ˆSÓ~^Ʀ5u<4¼O»‡>NÓÎÐJE(Ù¾Ðü­v +ês.MÜÇCoEL“¼I¶«ÎÉ™Ènܶ­¨xˆ‚`;—(½VÃÚñ“ªLG+qv¦^BŠ£dI¸kQ¯dæXä½—Åa¸ï‡k4‰·Y–|²ýXºÍ;Õ;¹i•¾ÎÓ4h|^3–\ĺä&qeèß©iQ¥¸fnº~ºùíÆòØ:ý˜â\³§l(nešGQ•jâÑÃ~‹ÛZߊÆU‰°!<»j¼± Žði£ _0ÕϤ.Ø¢_÷Ž·­›+TñBÇsG±ß­¿5çr…MqçymƒvØÚ׊x¢¬-&Ìo7±÷ò²_Ÿ¨kï^ m¡Oj߿率èn,-ÅG£B"ëKöV#¡Œ9+¥(ük¥-6¦œs +ª"à'ûstÕ'˜ï2–ør16îT¨2Ü!"óë´}ؽ¯“˜‹üHØ¿°7„®EóUíÞ´¢k’¸ã é†º±Äc&¤ C’]¿JS¡èf¢ûzÄîɦþã¡)bM7ñ6P ;T†Ä Ø²MºV´rµrû"„‚dãï ð+L€L$~I¢Xb4ÅO’ÅÀwõ:Õ´• zA0’öëd»áÎãkE3úÚ­VZ½ò0µ>ínû<´ Vª—ûQ· êܾ{ßM7ÝP[‡Q `5uf4¬ þÑ„ƒæËÖ˜+3ó°ÑŠ6F_B´ÅDœbÉïKâ-ÈÉ¢UdVÒ]|gRßB¥9¯AmA“kú8ΔÊÙh\ÜK×¢y•j•Ý¶ÂþÀ+*êµZ3ÒVÞbk%ÁIu3¤¸f¬í€´$ç«Ý‡Ï¢ç£ázµ¨YTúôW$‚™¸’K•n_ ú$\V‹bEøâ Xn¯fìa®Æ}\«±²":”€Éü*K5ÞÔ*Z z¤*[^£Å•b:ç÷Q©˜¡w¯Î3êHß`Pùò=ä)I®Ó`M]óaŠU ¿ƒ+Å3š‚ïá¤ry“DŠgŠæ»ØQèM‰tŒâz8ßEE£ïÁCẠ~‡ +E‡{,¨œÊ6ÜA€2’ð ó™ˆxAÒÝ @ɹkAŸvã–*óò«íà;-• ˜’dCžBÃDnÀù}'ždÑ…t_"”1ýc–Šh£¥²FZžÓ@*̓ÛdZÞ¨©\æ yÌÅ™«L£²b +íÀ--•-´‘8 í€"d/]€T‚ìžÌ´‡¤tä>ÚPª»¸Iµ²Å(ªÏéàÊàvÁ‘Ê µuË 4O¹8oub¤)¹€{4W¶`C¤hr)´8E ¿£hñö`ŽhƒÄÀöKäÑÄï»}L­ØÃZ*h¡ú˜‚E4i…[4¿¶™g¡íëÒôÔùcªj#Þî; DKeƒÿÃõ£›ukÞí#éùiç[ôÞNiç9sÅÏRÙ ù,Ïi@€–Ñí`-ïÔ~kž…ö9—æ®N.mmÁ]š+[T—ɹ@ÚÓtW˜·i§’®ß£Ä·Ï©{@:Kå…g~LAí™Ç´Bö™_ ¶™§¡éëÒôìy©2úÁ2ÝO¢8:š}…¾U‹aÀìFE#b¤ïÀ)€#ÅúNû( + ,0Éö•¸+˜£¢à\±10W¶ósZpƒyt{ˆý˵­ú jŸüøD¿—Êæƒ$}»4E} õõðËÏîžožÃ~ß¼}ö‡û—wÏþíþ‹wÑþÃá—¿yýn§á§oïþv÷wŒëå×_Ú^ß¿âøïï¾~öÞýã±Ö¿½ûó»gxãÛ·o^_ž—:Þ7_µm]iF£÷÷ð«þÏ»û/ÿòî‰ïúÙ›¿—w ãÅnù²ŸÞ½}q÷úÝò¶þR×üçùŸ0Yßß¾y±|§YÚ›ágW¿qÏn^QºÐ¿Ow_Þ¿.ŸüêðóºÿÛÝ/ýG´EQ·¯ð ɺQœü©» €ñ<µf² +ɵ©´,ÿÿãß;}áWCgšÿ„_ÿþ;üîðïÿ1¾Ð>1FFÒ>gŽg|p4‡ßîµêÞê·ËsªÛíýõ“ÏmY·Óó½ý¥n¢Ïî^¼Û¬ÙÙ¿—߉|@c5eÁD!š¾„'”1Õ®â뀑Ž™V+FkyÑ>ØÙ©*Ô ~ »é©y¢Ç#ogªclJ)+ÜÈJ&½H4œÑè† +fé`E£Ï +£ZT:½Ð£RÁSäó9…ˆ@ñ3›%O÷¨,ú#/h¯Š­FÀ1CvâU@uÉyPïk%dKÆûÃ0”^Ó;:#Îx#¤vÑbÎœô%ˆgǤ_YRÕ'$MÊähAÜ–FJÃ’Iß_ýG…5¢Ã@¹T0{7+\•Î¤7Æõ³7¹ÃÜÑËÝÀ10 0Ç@,ëìŠn‹Œ&ƒV 0¹RáìUB‹òÂn£>GRW£ž9´E&ô¥?Y#ÈЊ +¶®­ø–l•äÁ¡JóF•çÒÂñIV’èžEÒ [ªV†ÊW}-‰^pGÈ|L˜8Mo F&ЃÈPä¢Á‹þ—=cë0a`¬£Ž„oM }Ä8&¦\˜&ò)õëx‰,l„ƒ˜É÷'Põ¨ñ ‘X&8gc`´Ò´RIMô’ò$ªh8áÌt8*sȘV<$XzªUšA÷tDTTKã„{„ðK(fÑû@Z`ÿ‘@Ž™NbÕ}KâoiÙ—¼.Fô´|ÐÈ€é‡ûƒGÔˆš4¡Ñ‚ê¦ÒÂk ɳ`ÄKZ˜9M©´¢5X<…õI³ŽCTT\vŽ% +81ÕøªÉd:( iâªñDdÂ;YAÌ'ž1æ›-\¬ØÃP¢ €2mE«Ây…"ö“V$Q•Ò“Ld²QW«ËnÏø9"Í(sË8¶0ê«0Y<'ßÈ)HQ5Y˜Û‘ù¹ÊLKXªL4ÂW¦U@ˆ¸ÄØÅsb¤'9æ  OtÕó"|ÑùfŠ5ÞhBwHôš'l¨"i¾Éá˜až‘Äq’é3å„Y‰†,¦LúAR¿d ¥Ð§¸@¹I˜âËH?~¢ß¤ŽÇWZdÙ ¤fIZÑ „E ¥MTÜ« 3®Oâ³N-2å†À«¡Ã§ß.iA9¶ŘÄL“<­Î´ÌФK_ašxÞdtDä1Š".‰¡ql¢P ºHŽ$44pNò«ZP‡S9žèöáëÐ'Mrò€´˜@r„fÓ‰xäÅ™€Ç˜¦~Ò€Y F+r”ñ±&¢¶C Á<N´w%Í¥®0`èyI›UïTNøã1+—„›'»tF“ˆ8ëáU'FškBuAKòâ%_ŠQq‘Gî=æÐ`l¼|î«JŠÌ>ÑèXI¸3ÁmÅÇ"3'!ÑÇDk:$¶$‹'õ5çA³:Ñ‹;I0Ñ’¨#H„£s¦µ9îè™™Õx 3ç$f +TšÖÙ‰´ÅV’l¯ÔÂç ŠK®™£+ù¡<½b¬TŽã¤™®ÄÛÀSQƒ-B3Å”5Iºp ^l·F*bö‘ù^Ö^‡—+]én%BÞ2Œoé-kÚ5|nh°ªÏQö„!s陣¯KP2î>nKÐvÒ Šßb@LjHE°#‰ +’&Õáé4™240=#õåõ³%s†ÚMÐ9®IúáÐ $Q,™*WNüX¡YI*ÈJú GFO%]¹POH®(ߢëƒTèsÀeѲÏWT<0¡‡‘¾Æ¬FÑîðŠ&v¿â +FB&?îi¸²Ra}4ºJ[1Ez.¦±GLŽLƒÄžóÖ=ܻͻ—Ꭹ£æ¬q“t[Ê C5>N]d`•Q³8nvr-à[Á®2§o5È“o";“ÎíÙfª¬QÔlk=Vãà£î1ãsÔ!‘¢&©im—I*×ØVpÆŠd¤Œ—‘J11G‘AƒŠ[é.T¨£›hegÅ4UÈ”(1qK2‘ ñg ] Dâ`~K+çUÖ‰S‡S—ZÀcIÓš\ܬ„Âu>Bð|‚Š5ø9F$x™˜¿ƒ8¦ÄX3=Â,Â'(åÞSÉOHîƒc\|(6sZ¿™3Ê•­q” †pÇ’:åêU®˜hÄ!v¼%ð•î,Éz8)Js´âÿ [1I´ý9(áz dÅ…v‘ë’ÇÏj>ó‰Ùi"Ÿèe¯Û4þNRc±‚ y¨ “;jûˆ@ü6…WI¢‘F}å)ƒðGb«cŒ„°¤-Iæ * Ìœ!Œ+(+Áoe#†BCë]ö¨Ñ¦ K*Éô`­—R/}Wq 9‹±‘W|.ž¡<(8"‰„œ¡‡—dè­™P„É•LÿƒUÆ+Y/|dê^+À¬[†I…,Ë$ŸÛ’âBù L¦ÁÞ +WÅ Ña£Ò‚e +– +ï/A™¹’xC!A]U­Â8óV¯ØwÔC „ž!oO•sÂá“—¡CÑj%ÜîèÄ\B[.|&Hp©xQ”3Žt+Žd¥üò­`õX‚)dVÔÇ©ä˜ +4+GN»£I‡eÎ¥3I´ bD„ôI ­`Âëœx¡ôµ¡‡V4šHE‚=‰sé·Jeg… ‰%h˜ä>g¥8êÐóH\;¹ânZn¨ýeÂ3ê›Ù™©YL©£Â4‘ótR9%ý–€€³Â\£”Uô’صÀØ¡IÆæ«T|¨˜å–>T–~œ• >T*YIxYq³;Ÿgn¼0+Šá)†[µõ­"|»=8:WˆÛ4n†D·LÏËÈÙ_B½QI›>lÁCÓ$;w¦•¥$‘ t«Ð´§½Œ;Šˆ©#/%²~“Ô¥b¶ÂœóoG_0é„;‡íhAr^ù9ž\¼o'“ +QWƒT „&?šH†Œ8 è5`ÕûR²oFñƒ‰9…åÈüH½…ø§l ´ÅIe…v#õY® ¢³B¼\j'å­AÌDâU¦Ã’“¿CTG|z¬ !—VX£™âV."=ƒXˆ>w µô8ÒôFÀi$“RJ±[JW|_±îŸ‹þÄp¢¡oe-š†Áv°8™GŽúO¹Ž|Á’€ ¼!‡v6*,ÙœWÑð¸`-ü‘e‰°IMu»’_HÁBRg_T]$:߆6ËPø™Ð8æ|!=Á­Ç +IEm©lÌëaË´²Rvg¢ *ÏÖt¸ò-#dçñ¹•D| nþëš1wˆ81g¢°e¹/$RŠ`i¥ ±ýqÐE8è+e^ùÁ®2e·€‘Å[5‚ÿ§ê”×¢‹ê>Ñ)¹~¬‡¹ˆ-äÎĸ~¥(i"^›êYш“Óé*èW#CÚJÚ ¨ƒ¡'˜Ž€~”L¨¯#§Ó?ϸ¯š¾KOó€€Õ€hÀJuÞ3æ˜8™IL/ž‚EQYÉ­@E'†‹ÀR]†ÉÙã3¼¯êÄD"¨¸8Y!.=cVÈ’L7I/nô‹ã±ø[ãàs§ñ Á©.OÜÞñ9—‚ÛÄæò9å“äs‘}²Ü?ÌùB8ÍAMQ×2zÝ‹R–YÖÅa‡Á·jþQ2†›u?š€‹OÏå}$)Ô%M*ó•ãC‡E[”¤Br‰à˜3:[ú¨Ê!Qä—©rd(0-.‘J9*&rcÞDC +R1ÜcÿţߑtÒ0w7òúE%IK¥Mj7¤Ø„¿…”^hqIjõ!HäBT ïß(«M)™‘êj@%Ò$q)¥dFF! ©¸TSF&×Ý7©DaÕSGÛTÅ'S„=¯ kŽ +ê!Ì#.œÀZU•Î÷z᱂Zi)V‘yÔ ~TDÜ„ÂtY±x© ¯wþ¨§ &¿:ŠGX~i+;$2ùˆd‹9&ÏEe'¦iØ!¥¥ VAýY)ÞVQAE¸á¹‘”H“TjÅ­Q…š±ŸaWÚ]¨ ­ÂõÒ2Ĭ Ž ÂHº‹ƒ˜‚à‘ådffñÁñT7G±«2ydVgêÞVZ*ß=†IH‡y¹ëàt‡ î¤ë¢¹r„qŸÙ=*Ø7 ~&\jYÛÔP0úâ“–ÊEÉ +j/ÄËPÿª‘ªÝ‰2‚¨»’L²ü8ù–äzÄt?¨P“ŒsiFOI¤Ùqœ“‰ÊK&W±'ïä5!–4§¼Ä¥²j(YQ(³ +XÕ¾U¾PàœÀd‚ðñlÝVÃ@DóƒËw<è¨%ßœá¤bF=ÕEåóªßQ30ˆ¦YUJµ™YÁ÷¡9A}7› +†jOè*i‡j‚I[‹•¶9pÀ>;¥2U%ÑDcþ¾&ÍÆ´Õ0'N‰ËŽcÐyB *Â¥$ ”à³ä@ȼk„ [ _KÔüÉ@™†¹(wËš©fIP},PǼ»(ägn$:‰PIc€á×㘊O³€ì0þgT@t;)‚-",$U Ò1=È—™·N/mÔ3ô‰‰¢ôx6i€À^”¥dñMf.,ç´ &b ÌHœdI•ÐŠQHû²<ôhæ¾À®De‘(®h ;i!XÈäz<¹‘Tóü$ÅãJ%÷¥¸nÑR Ö’|™% ¡Á4’Já Áâ _œ$'1â’'—“;qß¼Ë +ùê$uRÆ™ºv+žƒôqô‚&En†‘P™>èÄŸ5\j´"Gsø`¼€±cÊÃ~ \çéã|™P«š$=œDz8¶àN•4jsM$¯´¾Pû§<¿™s…pˆÀE‘ +´­2Ñ8z‹ÒiØ ì5—ÂQ3CL*-°ºÒB1e[— c_€aZF³Õq"°‘&+_w<ƒ’H2Æ2U +z$9”¼FF +רû^ `qÒìú$£ÂsA›"'P´'d¥#z3&i”íprêÄ“šw³• nTh”HÌ0I$¦™jNy¹[8ϺÑ8^+QÞ“‚¹m@R}Û(`|®ÚÖˆOEö |Ž id]’RBR˜¨¶Ç+:Q)2PŒL@¢(o$T³p—0‡ž´×Á BqU¸ñÀôK2µvŒÂÔ?çÅÒ0žI[ym%T²Ec8éá¹ËK¶q¶#ZÚSL&^Y‘Y§ùI"ÒÒÖh’öd¸˜Jƒq©^¦ÄGYº׈Ò ›4p”tkÞO +}÷ +»%EEWgø8ÑÕ¹«‹ùÆ©ùžAâ‚]£x¨n£Y‰!gäçÅIYW)Ò¨{ëD*$èq¬ ¿F'øw´c2xL=hä+’´)‹öWêáXQ/Œ¬ G¬f[4%áX…CJ±æåäPaÆË^04éyB +Æ3ÁٙĊL‘$-8ÅháRÖdwÂrzjsÅKÃóÁlŠWMxI©)vž3…³d>ÜçÙJ®š3¹·éâCn†€áY¸vܼ‚Îhôv 9ªØð¤z¤ç|`1m…÷ +`NË_–7y‘:x5±…´uðÖë½ÀQéÇóO¦`Ìš(¡£$C ‚#Q§&fŠÉÒMΆ­°uEX¡RQº¡`ÊúL¡Ô{Y2ÖgIÍ@²¢àaÈ!ÁñcհѧK-£†¨Kêùdƒ¸rÙ0ê–8OO¼Q[p²üÅtNL]6Æ,î“…íJ`âéI#‹Ä•«uÏâ=ADöQL˜£/@Í^®I|ëÅ¿G—c!½qʦÖûL{œ£§„>ggf0.÷­×JëR]¤rÓàðOÔ¸šR‘]Öw â·5Õ{i, ÒX‡]ź¤ ÜðñG +)Áù%äÏk˜\ü‰‰i¤"Œ5™æ(&ö)¨ˆÅT™J' P„å“^‚f­/¹Eá ¹Q™Ô:5Kk5±ƒgPﲑF¬L5Â5[!_D©œhXðW] ă'$^Ï…yt‰!ÑD¦§ž•8Ð +YO…ÉlÈÒOEa)’ÂJ2òój²BÖÑÂÞ˜g€¾†Aèò^(ð$Ùp$¯«ªè½•dpeÕŠÙÅ‚ñ›¦d eäcÎ9dþ¸©ø_ +æPHEw21h¢…Hð#u;žÉ(DM­üv,ôÙ“§°Œ- Á“î ;I´ÜÿÇÞÛìÊÎdgzW {8Cõ@_“ñÏa«l=0`´ö¬ ¨eC€¥äêïÞñ<+‚ÉÌÜŸkR<0pg3"™L2±b­÷gCêh4Ï9Šr0GGˆu¡'ÿÏxãà,µZ0 y2jÝ÷ÉLÕ²=;(fnzÓ¸Wêäl88€‚@-aF`ù‚†ù"Ðð‚Z̵øºIç6‘$py™30Üš±ª8Šo…›DÊX×r8„Ñ2ÕŒ~…Z¦q°&nMD®t<ãTgð#d¸½–þ +Oͪ‘q.óÑHš(Er†m +éð%ŽàáNX=ãÉfÿ”_'s36O4h ÛïþŒê ¢ÊÄè0ng =Üž¾«qÔ)¾ Íl¢ … ™Ë{¦’F†n^ +4ZÃc²[Û÷,Œ†k•lò\b™I+(5îSgw!9~Åq´pT³Å4Å0·öc/Î[ëFýbÿ‰Êža™–RE§7kógÕ~D8ࡉÚÓü1ª`ë—V¤€þ aÍKb·%JÀ*c9™Íü¸dм§éâ“(=ÐLÊ N7‘¡"î¿Lôbu¢—î9%6Wõ`„_Œº ÷Ëú +Æ2A‡»r+PjÇÓ#­ñŽëØ‚„”\¼ÍiäÈÁ&YS~IYû6áe m¤CÒÛ¨¡j¯kçÜ!atZÁŽ=x9…š[üm5®{z`f—yÐv®”¸¨äù>C¡'÷,Ë|šŒ”ûŽÓñduˆ2—M¹Œ J‹äO§jß‘fIñÏß œŸžåá á¹b಴^çýË¥Ç%—0ô¬ù~³¨±£Š˜™V®•• jØAû€`°êŽÎXl_„nZCÙu$çÚ ó(f_ê´Åœr}A‹µõááØ'V ºªe쳄‘m³ògã¹B+ |%Õÿv¯1_–#¾îNj‡JˆÙ…ôå1â0tfW +°'Ã-L#‹áû‘ã´!§Í<ßÒغIMM ôΪïÝn0ôÇŸˆ`…ë cu + n-…îK#ߦ!!Ú?¿F¥T…‡ 4ISÙâÌi´AKª¦·XÃû½Z^­!£TztÀAwJˆ6ƒÎ:7Ôó~Ðåàž¢š:*ÖGëCbÎ!1;òå  8[]>mÁÿS*³ˆ|)ê²@ è.(øÀWÍ <æ:»¥; :íÕ¦†3 +÷h8‹¡¡õqœìí¾ûŸML(=\Œ…ç2Ú)Ëæ»@ì‘ŸËüŒÆï†x–YðÈ«3{!n Ø¿ìè–? +øˆëïmDÞ=ˆÁßž+#›QèZ)äN,…czA-¯\7t•6çløN ÚêB{7qesÚ— ²Pé)|î³ÁïÂMÂCÑcK-8„´>ƒý4 3ì Ú4Lhó‡=åéé^ÀQàœÂ H„‹W,7ˆ)Ó£ÿ3·Íó?P8 +!FRƒ…d¬% Hi¤&òášv ‰ã* rœŠ*Yð6zELS Ë"XG}ûœv ª`Í¿ƒMA°7ÏRÓ-ÔÌ«{†f4ì½¾-ì?BëEüf¿£Ž¬/â¸3~bpGŠÐhÎvìÑc‡PàS±†|ùç´Ø]rߘÙd¡ ò‡õâ2 ’J9ê|J6 +ém!šDrŽ<‚ ÒæK¦»½9o„)ζØ !ß~Há´ã“ƒ6µ¥-ËÒÈß×ë$ËÕж|¶ÐPN †*µ>—qø<<œZ|ç ÙÂ0¦‚K¡–W1´\©ŽtQRŒÅüp»QÁUÏ?é9ç/amKˆ,Ø?hcÌa&þ­ÄÅ¥¦­6hót—¸´ýKÝÜðƒÈwOÍ- ËG +U!ò|j‰ø¾ lòê_×øpˆ$¹7G:j'×RödïÌq ³! U~ú~Ö¾¶ Em‡;np” ¹A‚Ô*&<óý8¾'ãcQiŽ¨ÛT®çró[Lmñç¥G@ƒŽ^¡ÆJÔ)Ô.bfí_yÌX÷z|êê+‘Çža®¼ØVž'%Sf'\†<Ÿµú‡]1•)fËvà=Ž%âLVñÏe%¼w´bÒû$¦T*¦ó§”®ÎëCʉ³ç뱉—î†åø|ÙÊ^µ@r|¸,Þ9à¿FfÓ €gó*¯È;7€÷ê;ÍöÙv-n®9,Vlö(ž÷•Z5½4õ2»ŠË0 2³€(ñ© ²Î½ŒDœÍ—8Q)‘©ˆXèîõE¡‰¬4µé}¥ß<ÿ¹àâÏZ¹ïØèM7JhÀ™Õ]½5yÎ曲7Ž1¨Rºd’dYl=yÙ›E‰pŽ†à•«Þw_®L!Î;!¾œÝÍN?P G…k6¶ÌH¼~ª„š)H$Š(’´Ò¢ö²Ëa~=ÍЋ“¡£Ç™oÙÜârUO _7·t¢Ð~oçð‡¿ù º}•Ù\v¼ÚS€)uÌÍI¯¡MaâSwôþ }Ò†–߇OÀRÞž¡é» @1BÊ°'p <æ¿ìÆC_± ²ÍÆ`fY›%÷I2xn i`Õ¶¦:î?wÞ/¸B­¢oçðó«á;´f…ºB÷ŸÁ=¨e«ÊD¼ò¥çJscv47¸àz­~f+Ñf#•©VØu®s×PFpÔ"ÙVÜÄb¿f=~qxëVr»5I=¸(÷{¯Zq‰Íl#3O[Šù¤P½à¦eÀe8œÒq—dÃØ9ܼ˜x2ûx—É:ˆ1X^äîñ¬®÷íyß}^ç´^42¶…²MçÕψv•Q[˜<ë^jô•H 3ƒ¡,ñD†¨XAg+ó9˜ÈpH/ù|¼ehœ¡qµQr˜Þ¥T +1Í"z»‚{`ƒ3:Ùiæ‰+À|ÿ¸çR Œ”SœC$2Z ®‘Ö¨îyFZ ‡åy·™ÔÎ ¡§Ru×NYU@\äÙÂú©ùda{@b4a°Î$ 4øÎ}2*/I¨˜¤^¹2iN{Ú8ÂW SO…e•Wi¦³2S®°´ÉüWÂÛPL&%fZ“°Ÿp-*áÞY ½Ngº]°JQ4²¬´@”×ç÷D¹+è¿^]¤ Òòö'´@*«rÆÒÅï2Nà7jä¤tÅßHyq‡SÜá†QœmÿV˨•Í¥ƒ{* ˆ”ݨIιEVRáJé'¤+ÌÖŽ «†ahêRqC +€ˆ‹#¸ çMŠÓÜËr/¡çå5.©ižÝâw~ðhtaÃÂCÇÆŒ¹KöSAŸS¸Ï”~»DKŽ˜Vø{ÜÚÝ%@Håƒ"…`7¦Á5K‹æ°K-Ça3ðÒÆé]ƒÊôÆQÉœª³ºJ•qÎÌ8¶Ë`œhŽRÊ!ÛÞqºÓ HZà)‰VÔ™/eê¤õUJ¬ðBCO +ïN– ›‰oU3é«œ (ÛPÛ’Z(šä¡<–²A•Æ[âlæîg¡ ¸¶¡ym <¾ŠF·ÀumàIÁœ ! ~ÕàýîmmÅ.ü—?ŸpÍÁÙ“Ì~ÚÁ4袽H 2ëÅÈ2œwã΀kÆ›D‰àSRꢺPè–ã)„a戀ö~>ò$4B;>—P_þ´™¶µ]å{|ìWGæ(ÌtÏfÏ(Šr>«—RÇœ¸žg›ËŽÚµ°óãko +nSû»Vfœë×NMÔ´è½G<qÒ˜æ<·35纄’æœ\ËÒŽ…]¬ 5Û–Èt†0É°Bç¯;/É1§'“YVóº4¡%A•N¿$EržÊrR:àuæ`˜µè+²³R¤‹³_—†.5lÂuGÊ&ÌáBvá.̯—i·Ush_¤j¬Ó™ª!f?÷“P¨zE2ÞUÆ|\W”FU:  ùìw¾àXºÖ#¢=¤ +ÁµšÏˆ©5vWÁÜ=ú¯J£¥E×ò©àdØ;3]助ï«QÀŒ2z tN+•_ÇÑã`}Ú{÷"}±¨†4°*ÖT*Q¡ÒГ¨¶šB~§_dÜ)ë´³«4FÚ“{‡fº) áùÛý$y„ŸÔäíضi…Û9Ø¿`W@³hMZâ,Ÿ[P¶ ¤¥¡BÛà0Ÿ@‚íZ,¡¸a$í|À3°<ôCíqÇrT J;©ÓvËúKÖ‡°`NÙéŒàØZuJû8ùÏSž„l)í~Ê6?ž±öÊ¡5Ä–Ys—»8áž6nľØÆÈ´@%ò·ÎE ‡ÐŠ +ô8ÙO^AV™ô + M{Æû +1A-wÝ„ƒ)IšXeâªYeô`ÏÄÉä(þaçE[ +‹^Å´Ýr¸!lyæ@jž ©94pÉ >öY4‡™sçÁtª(?›~³N¬!Ì$s”0Ý Íµ +ìku…{aòR9˜'t‘v¬5›íe +äK'ÌãS>!1þ=@tîü™•©Ù¤ŒÁ¢PÕWfl;MuÎ8»ˆZÜ]ª›oTœíXÏó.£?@i dò30ÆéP^™6Éø@(A¦Gê`Seà›‡'.`´+V]¡àË ­Á¦œ^²Bî|溋Ã,r¾:Ò¢cI]…½^_˜T6 tz‡U–{“µ9ØS5L-H± ©ßAFÅ×ce¸5G¡iÆH °Šx7Ì)G~²ð9ç‰Ñ—ò{>&«Ù0°” +?áËÅ:2âË´elX,&6ÌIóåGt€&ÇŽsÔÛ ÐqÄ×øJr6:Z$Q6ñºD0ÖN{+Ó÷Xˆ ûPOÁM°Âß#Šƒ; +Çg ð®Šï+¬·Ì2‹ã§¢Ðƒ^ÄæNωÊ*â0sŠÊ¤>G è®×VrljIçðf¸mP¥%‡ YÆU,ö Áy¢B h”±¨;¼+bPi, ‘h§ŸâvC%¬î5x,=V_KdÖãt5¸¹½ž«ì²·f0À“L6OL:úl˜[Wk"qºÏƼrÙe©ûÌ‹8ô99C!)©Bqpu™Â»!^Òµ ÌHAbB¶?•W«˜…wÜ7èËß ˆ–îlägã¨ÒHÂH¸ˆ Bí‚W3…|¾¤À[®²±(@ð"UªòZK›ù„!é¤mó=›VåâÈÑÌ¥Wx`p“}{]—$B©º~Ej¯›¸ˆ”QfƒÕ9!jBú£t<ÞŠIÎîžž­ú Žú\=)æé²GÁ»W(fáKQŲg.+àsCÔÙë?#D³Ìéu>zÍëòÝÅoh.“ÌÁ0Cœä×ü0iþÊ˔ē&Ë鈀¤š|3àÈn»J Ž÷³`é.©GVkŽµ>‰nX9l +@0‚•*„'«7v” žÐ?ÒübŽÕ˜°á’Z…Ÿa6`P"ÌŽåž”]À­U rà'2ÛãQ· »ŸÎ¨ØWD©H¦¹¢ B%}CÔÌá×–[Üð7cë"))C_Fgl¸çÝ9B s^opÎ"T6ž éX¿®EoI°ÆdtÄ„ N"'ÐLõÐ|‚™[R=Õ8Þ;b‡•Úy¿¿Úþ!MÓ<ßrâtØ ÍÏŽ+drñ3Ü#-k©ÈyyÀÙý +^¤q¿J„Î À’P¡{Öl¥nDæÞX¸ë®'åàìaõ-‹¨ ”oz‘.£à(´ )j[¤»Jll*Œ³˜ÜœãêH-ÂéÍNøhÊ;„$ChfÛ1ƒ~þ»®mžãÕ_-î‡K™æÞ Xyþï~ ¨³ Â<¡Ñ¬^\nÞÈÐât¶!¶1l\ÏÈ5DªLhrhäȃ¥¨t¯y—Uç§haZ–­ “dp,/J'³G«cõp¸ÌødÙ“¬¼jÉ–7ñÐ'Coû}$ ÏEñ0òÀÙ‘‚±KÍœsª¹x|Nº¿©¹ÐJ3rïž±7 +í‹y䲕¥[$,@ Ôé豨5êÙd*ª¢ A9—.i!3Í~ë:Eª¯†»¸guš°¬õקŽ´+…T¬ºB,ªU·¤ïùîAöè‚2;è´qóß½(˜ gó±j’úE>ÇRZÅLš¿œŒùk&€”}9Eé“ÅoÚB1ý„ÿߢwsû44¿&ä©¡4"t}n üU± ù(aÊsžÎ!ŠöSf6Ce—¹áU3<„œ  ’Ú°3‚Þ–,þ8ð¢ùaÐöE¨Àv~@3üÚ‘á‘*€ŠBDzL%gˆù¡ÆŸïS mA©¶Ç9ú2@E ìúâh ŒÓ1çtùÞÒzE-hæ Ó6=ƒØ˜Œ |^ñqÊD*åÁb˜T·`[ïíBDéÿ†¦ŽðŸ²ÔúÉëË‹íM9»ÎW._ Cgz#‰_æi—Yë¡n!ú£Tü˜ê{Z^ =¼x„Ya­hT°ì<”ÔRQ{‚%"ƒ£'M86P§,vKnr-¤X¶°J™TóÏiêõ‹Æ2Åsh2ÁGaɳj͇G³Ìy6N +¤…]lžë«œö%[ˆ²U>Cü —Û8LÞ·„âìŒ8–d”8(ós7QF ­Ô(a6Ķ)öÙÊ2L›«¾¥i…(ÂÑX +üG8x^á+g+)Ï}ǯÐëßxî²€ýe¡àªQ@ø!³¢= + X{Â3Yª=¡aY’²äL·Rµ­IŸâ„Æ€N+v\†‚)3ÈaòÑ +ié, +M¼HÖ^¹ÜƒÔ³€d€¯_wš¬)°s½CÀè~IPŠLÕzfW$ÍdÊm¹°&•*öЛËnë«œ¨TíhN*méÿ…6ðRT´)²R¿ÛŠcá ‘ÞU>´1n¨=‡žªËPö§‚æKšG­{Ÿ®a»ºh̼ ¹r —Æ#m«oaN#Yl粄¾Ë~² 术ÃI_3«ÖgX ¶ˆX‹–uÅs]”|f‹AJËÌ—¼›Õ¾ù +äÐœ8b¦ÙÊ‹–Ò£9àérKÖšˆFñËàÖÙHUŒ’[ŽO]«A•d˜ªÃ xÉÞ€Ú¾?7šLò‰|'¯ 8‚ÐÐe%ÿ1§Óô`ž®KQ˜±‘Ôæ,ÁSúÚ +¦ÛJytwáFÊW˜ër°ÿ-Ô¼gT9ÕÄÇ•Œ77÷ ÕÍàMÌVDF†O%ãªßóaÆ=§WŽV8´Þsœ{9DUpfÀÍãB)ÞR|N€9Eþþ.º6”ÝŠ'5&¿ô ó®²÷%äÜ5*Gù*عJð× æpÍmÀ}jÜæH—…g/!ÀI̼ðÞ¸réqÞ•9ÍTVr(zƒD·õ‘—ð¬+=Òß"²F$÷¥©qG9›mFÞ×ÀÄpÏU¨,¯TžŸÐàâ·ñT3–sŸŽ1ÀéHeÒÇÇò‘—>÷w#ù©,fY\à5Whûߘ ¢Ë†¢ÞåYȽ‡ ¹éÈ^å…(T=z •«sàUäUÅ(K³5ÚŸßëŒ 0FÒú¦9ìêRÕ† Êă蜉p{Æn‘þãÈakâS¥-ÿÚ…V'½qË‚Iµ<·ùY9D92ûlo®E4†ž×’Ÿ ¬j ¨œÇIí7öo€â{äöãl” @AÎ_…ØL•¤b¥ç"©mvI ÿ^––~ƒE¼0‚1£ŒùË‹#Ó™Uí!áSÁ +çŠ::áS.1Y6C-.ncE€0éÚŒ{òÊÍÚÒ`Ž}6\°hpY¡e›ø<¢!ía–WÜ>ɧø] +ó¢¬÷o‹¥™†}uÒ×nì‡õ`×µ\ÁÉÉùÃØàªYZHi½Qסo›éÅstqêŠRjã{6¶aÊΟÅÈ¡1K¯ ™mŸ®±þFðãÌvüÊ«Ž´ÏRÙìÑØBP%D¨-Ά9 xú¥g +¾›­Û &Ùðº¨Êéø\ôÏ[SˆYgœ?Q] »•{I¨>xuú/e|µÚ±OÏBɪ¾éXq*Ñ3ÓoÞ¯-D:E¢T ]ôp?ˆBtuGªú41E,€4þæµïÓ Å»Ú}Ÿd()¿…ŒÆ#œÜÕ£—øKvÑìÆ66Žo¾ +¸OX@(X•8úî…ÂbšZgw‘@C!'õäìAQ{ÃàöÖÊûÜ`wã+¦9qVŠrà6%}LñÒŸú +u IŒ)#ªE‘Ìq&GUÓ’ÆîJC¡°xËzª›C°>s4fYHäxß{Dž‚dÇ’‘Ô± °p°ï\lwæÚMgn¦À0Å.ËPºQÐVÔ<SÊ7ç®Þ2¹Þ=r—±Ëj륯ŠôpçTªÕ­›¹Qd™Çì°†:35k3;®ØÜÇ¥éw±P†gŽRlÇxä _æ´l³BG´Ròâ×¼¶:T‡òÖb¾§ðÞïOqZÙÝnoŠ6A&F?Fyžî£P¼ûı+Ðú¤·YtgÍ3dÂæk5Ä^lôº4xÆûS×µyØ`¨Ã¡Í¤òWÃñbw}5Žm:OX:ôIýçf\i,¨Žo%6HÍ2_¤®üÛö57¥b;sî7ëÃÆZ ~CÇ 8 ‚†Or;U“MÁúg,³¶{2¼rÔfc:âSmÑ?ÅV‹úXYº–0êÃ;ýÌ×ܾOïžX @u2M,—6ª3ªe”3x­Ïc Õ9YÎx•ØÎÁAEÑÂI¿A°`îY’¶ÜZh`a¤ÔìQ´Ÿ+I³?Õeõ×x®BMZ0œõd 8Ùܾš !Iƒ{½ÂD£>2@ÎÀT:sYÒvpØDvF>"'oú©¿zø3Ëι³á0”¢\¢2;¢z˜‘Ûc@øfC°àÌ!!æ.(z€ÅUsñFõ)âWäcÏáåúќߤ¢ŒŽpÎËC‘®ï¯G±–Ý`GRsáך^—…9(¡-ÞJ±\s +¸Ž7\¤·%`7Ľ?#ûO  MMV>ży„Hç|+éD3Sry,èÄÃ퇱ô°¼­$GþÃyÀåЀšË@¨Ù¹@ceÏJð%¸ Š=5t§n„+Š³ñC'„Pó|oÈUa$4{,g0 t _²}8ó§ñPHG P­¦˜„báΛÕS–œ™¾ì$@Ç¢œ*š_A£%$I×)À®rŠmàŠD›1’׎ʶFeß^ˆ;Ó^F‘ôÕã|È«|7¦ßBã<쉀™.-- +âAQò±Íe|þà(U‡Xj no*I˜åö!CuÔ…E–V¯Ad±\dˆÎñ‹î¥[´¡ŠŠþV%$M-˜Š•VÍ;·C Üí<ã36ìûÙ„dÊÜ–¦õiø$s«Ì³8È…®(ߧÁ5€ìô‹y¢-’ Ìd¸n¨»ÜѽW¹þ "^Ãm­„µÎ1Ü$«d,_í²ŠzÅDDø9Ƕ>¬¹«Œ4ë#¥¥ÈèXhÈáDÔÅ;ÔÖõïuŸÜ¦$‹ùÚ×KÓÛs«©’±9MÀG†ï€ú¥µjToã÷‡¿âîRnþ_ãD¿sžó×üû?ýéÿøõ·ÿé?ÿOÿðç?ÿÓ¿ÿëÿóÿùÇÿòOÿöOÿðçú¯œˆ³üÜïü‡þ×?þáOÿöýñOÿÛÿûÿúÏþþýOÿíßÞ¾÷úõ·ÿá×ÿú¿üÍ­0ðßþæ'±ó—Ï·`<១6€`ŽV1g²†‡‘Þ „Úó½Üª§n1‚âøï¸ÅÎ7©ÔÍZ¾­Ãrà7€ìÅ­a±~‹|fû{„ÿŠ»þ½³¬ ñÉ1S=¡íùV!o„ÞsT¢†ÕÇÙ^”!Ø<Ç!·Ù#¸ Á‘+ÒI#*û6(g¤½}È|Àщ|BȺb+[Ã)ò¾>³$;©fqÞZñ·vBIUéøs©‡B0íW0HQL†ƒ¥sÇl¢Tí³ Ràg/½?/­zŽKÔ¾ÜÕ{¸Ú#'A¤ ª=¾íÑøfy_¬Ý§o¯û‚ëë(?[Ü.&ʧ³}!“¾ í‹âö³½09ˆ +a__$èôíZ_ )û›Y=LÙžó·G}øèõokzJWùGzÒî)÷o#z´>·½ü›½Hèœö¯Bdó·Ý|垦öí2oC«?›ËW-OË·§<ß#ñèÃI¾Ê€»~6¯àÄ´òßx¬¹mù‡]<ù4ïñO.ñâ)sû6‡Wlª[ÂËöKíG'xò¹–oøξH‹£ð}'”Wý£Ý»‘èöpº¼+Av¶os÷.»~ötq¬s›º£†6¾Ü=|õŸ ÜÙs»ì~ú¶wèB³Ÿ~í½Xryº´w³íã6g•jÂË“ˆrÎmÅŽÊ"ò0Û‚}þ xf;¯ó'BOÃu>¶é=hKPE¶»:»t¶ž¦ê{ã‘o/uæ1ø#ÛDë.íÝ;šÔqôÛ2]N Âj÷e™nd¦€ªü¿Y¦GØ!,a—q[¦m°ƒ L­Û1}QÅRPÅúõæ˜.C̲Ö|ã>-ÇtyaÄhðÂJ£GŽ8¡4ô02~˜~µÈ'Âw‡o¶Óy| D·Qú¸•§?ú%Ç Ýþè1¹Qü˜SÅùínàduhÞ5 O£ôh¤Z°R¶Q9 ++të®/ks¾G55„„x/žFéQ´¤ÀŸã6J7â¥èÏØÕlòqº((Π4‘œ~8¥“´˜/ÿmŽ°úo¶´ct: .? Ñ/d`‘!_>è+¿³ÝÏ/BØönzÎ1æ‚íuNšåi[œs!Ë°å!Aõ¢f¿Íy創ö[ —éí_~¡¤VÏ۶ܱ[¶Y9ËñnQŽ2ÜÉíL^ùÔÑ—!¹“#¿ùW‰~ý¶GŠ›/Ý®ã5(}O¯ñ%›í0Ž"(ß²ÅùÛoyX3‚į½|ÄC7!ßöáDnùÍ4\ªùm¯ð&¤¬Ýᔿ NžÎàJa¶¾ Á!±X?YºEÅ’ôfÿ]"j·ë7Fp¬Ûì;,ß=¾‹/Íu[{ó7.œOGïû<ËÈ[Ø|¿0ò.ìS™žþÝyÍÑÛ¶›jpaE·nZÒÙO·nS +×mÒZ<÷íÍý'ïÒY­ yF~·äFID½ŸpâFż–vp½°þ<}·)?Æm·-æ)§Ûe›Ï ’ô4×f·Z”jOm¾IÆmŠ]SlÚêScâ´Ž•£nÛeƒ„$ýü°ÉF‹V‘îåŽ +¤ÀmŠ 4uΧ6~µgŽ¨¦q!õ¬?‡ÞÃk,ÙÃ[©©ªpÏËÝš¿ÉÚ=M­Ëˆ¹½¬}?ÏÛÂúþóá\]Tâ8oçê¹/ND‡Û°ºªH‘Þ|ªÁ7¦ÏQ¹§ªA1n{j¶Üõ§+5Á[+·53 ÛŒšfžÂÓƒšKámëip7b·ãt-Pž>ÓZ~Òrfùû /jk8LpŸž¶Ò„™\ív“†YEÊx»IãÀŠÿ4‘å$æÑÙÈWmÏhNsyóŠ Üf™D³a×í _3“óÓJ”.–´±œoh B}‘¾Ïðl2³ú²{Ö´ÖÛ噿AÄ=ÍÛÛÓ9E d;9óÖô‡s‰“¶msF’n·æ,íðݤDK:êöf†Ä²®+@ðmîDÎë͉™2yÊ÷!кn±·ï2xOXßü–ƒ[S·ß2k\<¡µä#c[ÞÝ•Ñ]¨Se6JGy)Á'³PÆd+Œ˜Ãø“›S^~ɇÓÜÓ%™… e¸í’ Œ…â6G.nržžÈx³.ܞȔ²K{Y!_a¢ñæ€ ¨äè·2 +(å¶=NÇZK*#žå69¶ON/scŠuñ­/scÀdõáiŒìS½^VÆû遼ñ>¶‹¯H¬,óa Q{H·lÍp”ÔÈòîîEÊíJ|ÿý0#ÞǶ1R.œõ¶^Ãìé8|)õYn£áIùÛak‘4Ogኾ­…AÃ*&½-…Ùy¼Y óvŠ­ÝÂ'ôÇv>Tâ 7é{ÂAέ.,Ì‚‰ªr¿=‚­*Õúf Œ×*QËxçÀÛ˜Édäw'`Vé@ÖÉ GŽ€ûßÆ¿Ì棞†¿ÜKƒ‘mô{àV.Ód9ý’+`b|:ü†gÌù2ö=–·Ôöó%ã•Ç›/…BÒm¹÷VC.L{™wØÒ>½zYQ0wÛ½Ųšlg^\—kÎo†¼¬ý¶‹>ù›"ÖÛ‡—¿‡Vx¯:?§QÇo¹î‚Ÿ +c„Ø‹1–»·Ç.qÞÉÛZ—{¼ÑÐÆ6C&ìi¤»mÿ\¥#Ðf>oˆ2Ò/r/lÆÊ6ÉkǸ½qiOá•{[ârŒ›¿póܸ҇€ËR}³½b¦™ír»Eôó +ø–Ç1Ùm‹ý³u›Š0Ð~[Ú2³¹‰X¦´•t¸Ñ‡ƒ-»ûëÉTbþíW»ÿ~ÚÔÞÇ–;meqðãè3dÝ-yþ˜æÉŸ?šÒR.TñIb%ݦ´gYÚ+ Dãu}›ÒÚ»–ÞÎö¢=óú´Ò5„øò¢åS$V¶íÉk&zÊ´=]ß=hít–oGX,µ2Ò_Þ³§šO•óω»÷Ÿ½gÁ*ÉØðQY¶ßÄÎã›ôéêJ£±ÔT=oWWŒGŒ¼ÒíêjCUåw.i­¾¹ºÊWb NÁÞeÛ»²f£Â4>ê¶we•‹8—­&]þá󜦴8MHÙ,ŸW?eÌ9?e5iù¼žæ‰Qò쀄˛Ï+ TtžªUú¼~1¡ÂçõÔþ {ø`_ûôy¥1h>”Ïqû¼Ú žË¿m^="—ãµ”7›WbáìËÝ’¼/UCl4Ûæ,U¬ç39×\°ÍUiTë 9\}¶óë©w%Ai:Ž y„ȵÖtÜ­y{·§ók4¬ÌFr‚ÛùÕ¯É*`r0nçW¼,°õžÎ¯lÐe6'=2Ûù5R(°1\ίì<ô‚ÆL#æÍÛø5d.ØîÌ—þÈ·ïëüò¢çaqÀB,•akrÛÓVÖ©Ò 5~;ÀÒà$1’zaáëqUDKZ³‚µQÀ/NË·l[å×ΫÇTúfëUeŸ=FÎQNýò‚ Vë°ìU³aýœ {`Úõ€ý"¨>=`ÝË„bRsúáË£“õA¹|³ÃÞ<`amg„_Ö¯4žE=üCù£/XzÈHgHéÛ ÖhžÒál×Ï^°ö’HG4ÜÚ—¬Wâ|r¶þô‚…œ-köÀ†êg/Xž@ì8YÙxç?½`  ÝB4¨ZxsƒeÌäi+?&œùŽ·ˆ@ÞL`9¯ìœ†”ÒâÍ–Ç)96G?{ÀB§Öd1½@’xÀò.;›}Z¿žV©ûËlÇÖçWe9„¬ð>ë·ó+=ê·×À1}8¿šR¼ë@=£¾9¿žu ®7LvÊίÑãÛïõ/¦™î|<á ùí§ákÈÿ¦Û畈Aº,ël?ê6zw‰‘ ž ÚÃñÕFv¢]õ³t;¾òÕAWͨн¬_i‚kÁŸw¼Y¿ +»ýv|õï pŒÛú5ÄÇ!)šÞ¬_¹(ðcÛñÕ©m®°Ûè•8iÆ‘O£W!)ˆZ€·cÛŽ¯"ƒÎ—e+«ÛˆâþíïʲI¾nÃ¥ i»¹6V$JyWŽ‘Q\î­ü©aT˜¶Bv|¹®®þù·W‹LÍ2î¹»ð'(…§k#_{•Û†Ó’£ÞNª½EMýaºªùèUö!È<`¶Çêþûá­zZžªÃˆtÜz’}:¨öÓ»{‹þ2NÝ?üRïCË&u^;àœíŽ:ÐÛ #Óz ËÙ~{¡Ö™sܨãˆûùô>å3f“—åéX@Öít:TùIo§óÇÛ¾¦ÂB¢:£¯)"®èM<íLuŒ¤Ð³÷á yÝî¥Ô^[yó,åÐu·g)ÚV¥=\AŸ¥ýX œåKJ=– ض#µ>›Ú› i3=oR^á˜dl‡zŠ2üÓ}4Œ=Æm:ÚÈÖÔóöm)às‹Qåt;‹òÝ.—¡(^‚^†¢xšä~Ûˆ‚ã9ú9)–ŒÜ›k¨ÔÜn³P0IâZ—G¨næÈ'6ÈÛ´E²dû€6NÒ›ý§RnÓÏfò¶úlV|Þ->Ufa$.kOe\@ -GÏû/϶ -Û¾³/¼Àq¿ÄaÖ‰ø/`<:™“N…BdŠ,î§#'xrõøvŸ+R$ÛSwÀÛM•‘f†â[˜lŽõ{šlŽX§í­ ;”ŶÔÄyM‡‘æeU3ßþ™¤­€2lÛÌý÷Ã-ó>´L2 @±½1I)¤ô°Ä¼T¿n'L’#ÚØõ’-@n'LP`æ•y8aÒ›cÔùÚN˜B&©pÌãGS‹j+´L˜ô€o¹|`ŠëNŠ¦Î8»§Û ÓOÿðˆ4ãà “%ðˉ d¨:éÔÁÎäe9rŒ˜§ë%I ÄW¶Ù¥Wëæ{¾Þs1¿Í. wTbPÀ4¿¹^éxÇØ°Ÿ·ée9 +GÍ7ä8oÓKBåÄt¼™^®'E€“òmzIƒF&KXeéÌ!I×Iƒ"Mü°½4Ö¥"D¬Ër°m/MeóÕÉê3,ÿËߤþð7ÿ_3À´ +„„=U ‰þ—¶YúD[óí…¡•".s^ZÈ)™æ&ôÖà Ó4r»¤–âSŠ0(Ë50üx—æ¥òå»&·6T0)oé6ÀüJìlLª('FŽ¾šß 0­%×· ïº0mð·cu\·¦ –íæ}Z¦ë¯RU¨çnÌ(àPbï!ˆ ez‚Ò¯ úÃÓ€oãÜÚ‘NÞ˜æ+Eyç (ã¶Â4+ïÜ΀2yxb~EêËÓ2¤Iá÷çÛ3¶.äŽÙº¤þfŠùS£õýs‰.õ3¸ÛSuV„ØgÖgOOLÉŸˆ!cïq¤ÛóÔÕÝeCæì¶Ä\R¸)¤pÃaó¶Ä”¡¡¤ªVMõöÄ oé +$Ϯۓgš€HŠ(êé‰ ?®Î¶ÂDìâ:oLøFÔ@žÎ— §›¢Ã±Ib+dô6¼4M¯Ž¢è¸ /Mé¶Eû+ÏP2 ²RÊAVÒ49æ_\2¸Pý¿Ò6Χàexé÷T7CgÑéåØÚDÉ¥õésiѦ +Š‡¡zÞ>—&j¤k¾Ò·Ï¥Y}µ^ö–ä¦A +lWKŒàl3K)᩼yX¢AA a[Wv€½ÝŽ•]é‘úfTɱŽÔúSª2‰:*ô;¹§-%ü+]ÛŽ²‡Ýv¡ìÑÒ›ùdDZmäÛs²÷½ZN“$€I= &;e2âœe0ÙØ„˪ƒmÕ7ž~’HàSšÚ6’-ª&Ûƒ"Ö›¿"‚w”É·¿âÞsmE˜ÙП¶ŠèŸò=ÛMòDì’+ vÆž&ŠãÕÙÞ‰ÕÅtÜ–‰\GÒJƒ.È”°œNõÆ\ú›-"¿ôZUèLìe°Û9%¼žÞ‡×ÚÌnïCå9j¹=!Q±ZBf¿%œ_×ml!,…Å® oìö1¼zಷ}!ïoÙ®…Gû+jŸlÓÂ]½Ü^…äñKxZ¢²bÆa9êêÐËmHxõ?OBªµJgÌß™ ªÚ®ž-Õ6¯<¼ÍÖ ©{yesl盡–vO`ýã6"<59K6¤3ðî+æ.!¾IÍžO#B/%Ñå4o#B¢™#FŽ„þ€¼fWqú[âë–! ªB÷“0ß„’A)²ó¦Æô4 $$ ú+t ùÜÖˆÏ*H™Ì¨“kØ„ 6ú•/]Âᢠ‘v» E(YUšÏ£îm@ø{Áõθþõü/Á ×·Òý¿Dc•/úé6HugSjŸ&ƒÄ-çª|y ^ºaDÍâÍR²f_N‚œÎíO‚ +ÈÄÖìÍ6ðºSöÓå/R¿cT¯¸Žø Ÿ?Ï0hš¿pˆjû4 üMÍ‚/©“/ë>3áñ’Ïı,Wr[y42ái!:Þ¼Ýecµ£˜©ù½/h%Ø o–€Ab7þœû³\~}YÚ‘2Pgçò-üôô¼N:IåýÛÐGã!U¨ÛÛðëøÓÐ*È@ܯÎUFòg çäŽNÝ9nS@ᨌ!Õ÷n hý?[Œ(ávoK@Rbðâ´v{º±J¢6Vy³4N/G@ªžj,#@ÛŠ@LÃ:ð6ôò}šsý8°ÂZF€r¼±¿ÀT0EŽXµ`é©CÉ‚2´”{8Úèì;ç#ò¶Û ЇP²Ôn'@¯`Õ¢ð\Þœúãg´Æo'@…š I/ÜåHÂh—Ýu½9šòN`‘uôí(*Ö< ´Šr:Û û¸]oF€¦Š|VÐuêmÈ™uûÚ'ÚçÊo6€J‰ž5g/À@ÞQ9yWÇmHér­™úç›  r³UØßñ9ß&€4œÝÞQù‘ðQx3¡ªÔ1&0Ë1Úª ‚†ŠÊËГ) +9¨<‘„t4êà)Ý€ú­¨’}gJ· ŸðA´+¡yóæ–•½ñ6þq2^¶~@ÊE6䜿‰›¸ÂÙJ}éý)"Ú°†§ÐzÞΔ¬çÐøOç?‹æ(ïZ[Îh‰ë05WŒ”EW¯‘R·X÷|§êxsþÓ‡ÂÄv@évþ£áP@;¬|ÿy\S†9(˜“ŸÆ +v3ïÌÆÁ ÙΡä}hw!\y;ÿy:Ræ×ÌpíiüwÊGÀ‚-㜶ñêFQ$>Ai—ÛøO; ¿f¾™å|úþ‰²8¯…²×íûç@iœy +Û6ÿðQdñá÷DZ¸$]ìûí÷wª']´ÂZ…€˜süIß‘{³û£Qã j + ¶ÝŸŸò&×îxÛv~¿ qì(â·ÝØ/jE·Ý£SS€†‰y¼ìQrþlxÚý}7.»?."R¢¸7‚ZÆ}§¬Es©D}äi÷ØI³Ò†ðÖñòÿ@ò`»üÝ?Ìýö±íéwê à7µà¶§ß׋øôô­å93–t{ú©G¼Mº¹žmO?qÊJëÎ=<ýl¼âõ½J<Û˜*9$í :fŽ·§Ÿ0„°u¼YØNâê2²ËËOý+ªõH°u\^~öƦ€ãÊ +=¼ü´  $ …ëmê'<¢”õsaZßLýLZëáå§õ.àˆu¯Çt¢„¹ïòƒ•Ÿó“;60¹¾Yùéôp(é¦âú¶òãx €ÉÜÊ´óöò£!v#Çu=yzùÑúdÀ9ûËËφ¦4–týöò³á ËEϧ©ŸÃ 0KHèíî'JòÊ!×*n=Üý`Õ$ò@²ôùÉÝA,«èÓÔOù@%Ç/0wù6õ“¡Ñ…xiÔ7W?q’—ÁI"׸]ýØÙP ¡LÊŸ®~¼‹Eó#HF9¤Ò?ìýè£=gÃDö‡¿Ÿ=nsi—õiôg ß9X?ýy5EGÄëÖîiô'MÈ +} Œ×›Ñ=¢Ê0·}}ÓÖ?·€)f† ùú¥Ò«äýzsü“®b¦ÿ˜SWOOÇ¿¯¶/Ç?Ã/l(æ¯ocùË¿9þùä$©ùäûB^}YÿÑ+^_„:¯ök[ÿÑVó©Ô•#x³þó£²ȶñëGë?{9~ÑûZ¤ƒ§ó_ØI0í u«då‡óŸ¤—ÞKÔìÆrˆ\ Q†M°¾ÿ%vÑ™[”»Úñ2þS¿1© +1xeŸÆV?à‚4Eÿ6þS9 pM©gËÃÏi·VPz™û­ ™Õ¸}ì*Qùòù»~²÷{5~¸ú]äó®¨>½¹ùýnj㯚E™7ZŸŒ§y_(Û·gYójÛªâf+ï}T $J,c¾¤âÛo„ŒÞ› ß¼ãÈMåpWáâXŠˆË)® Ðoqs‚]¾p|æ +TR”ÍŽ%^ø°«=°ŒÛýM]¿œoÓ·êjŸž¦o U­Ê.Ó7àŒÓeõÆ樟ooTÅ€Yl_·®”p½íܺú6o&n€ß@nﶞB¶r[¶ñÛO§6аs¶CñZéi³¦—žÿðcãçWm6~¾è©U«¢–DÝíéºFÊà6[©Æ=BhZÈä=­Õš^æývTÛÊXÛH­-õ½§šžòœgÙ¦ÝZGË.-«Èu¾¹¤•3€—Û ë,ˆYË­æ¨î=½ÐT™Dh‰tñ7ð·í|V%Îä7Ã3Žåëås¦´dK·½YÕ[à|³7+W€n·«qq +û-«jˆ~0àŸ>f{¾íËÿäÅY®eÜÈ=O³2ŽËUŒ5ãÀ[½É²uðóÍ’l˹n'²¬êXÚdü™øUß1îÆ aíÆ2C/ÔT÷eéò›¹bÊ„0@N±|l+1¤4(ª=Ädj§z‡…œûuû…ÍiýÍ%,µÐÚæ`ü}Žv{‚ñ÷ ߬ÀEñ£¾ÀÐE®eU'Áôæ÷¥]î:†ÍàÍ#ܼBbÞþ4ê›»WE¸ù(·¨ k#ñöò"#M¢ïiáu)•v¾œ»ŠBC/Ã.æ­F/Ÿ®’»·O×¹–ÌeÏÅP(ç›)#ˆpc›qAW¡–½Í¸Xý¹.ÄÏ@è)%C!&ð.,4@ÛXÙß·@ÎÖ—Ñ®ø-†’B¶Zs`¡Éx»iÉïé/-¨c%¿»g‘ãËåešõ›óm•LælïYÔ¯ñ2Æú-€i·Ö\øK½l°r/Ûý*­•y›^©fÅ(zx]Œlýv¸bwUÃ,œ­Ð 8ÎC+œxËícj∊©ÓýŸJÛªö|ÛUQŸe»ýªž" ¼}ª¨}†Ýã2ªâ@xî.ƒª¯8÷¯D3mÂ?ý¨¶õ :{[¾y»Od!ñ0"•b{M¡ôEvh[L)´W®7g)f!5MëÖ¼³³}¤ø»¿»GÕòÀÛ4 +¨uÍí¥h&5Ÿ‡ET­!²¹KTè,›~_Oè\.°Âm5Îã1òÞëAhùÓõ‰cÜÈmötiHœ¶Çþ/Ñz;;QKcÕÛ†N°á•Ú^}@Q€/xÚ7 ævX˵)Ì„Òí»ÔGT‡Ÿ&Md›‰/ö±6‚²-™ößO'¦}l0õµºn+¥®jç»ïìŠÐímT5(Õl—¥ûÒ>¶=•ô“ºÊm¥Ô—ràÓA z‰žË8 Quð5Û8I‘uP]Ïh°†ˆã¶IêÂ5_&H ퟹk28¡t¸½FŽõw[ ro»Hø*„»„1ý;¿œLŒŸo~Gci«n›#S¶£ÝöFdRK{352)_Ëö2ðºÅ®uˆys.ÚbµÛ±hŒ@þ2*ë%üÑŸhˆE õR ÐãyÛñ·ñ‡‘ÇÂTÈߨãá>•š˜ìi:¤Ú@¿n³!í¤ú¹Í†d §7‹!Tr+ng!Æ œ×/C!ïî1~öê&×oû kïj>]ƒÔI¨ãg· åzõåÄõ«8ôá ãYÑŸ,H0Ÿb™½Ï—›¹O ûÌ?ØþŒYv?Âm½Í|öÔñ4÷R‘z»=}ÆâË‹§—¥Gþ“•OKÁÿ³‘Zí%6=Œ{d,ò³_ê“‘~Ùô(K õÓž§/àÓ•§Cǻʷ³$H¾/žÙ’ô?xï4«íÛr§Ë4àÓiçnx켎…¯N[rª_î%Ý,OÈØ|ÙéÃ,¿¾Lt o ù§wNQN 4¬¾,sÊ» /«x퇜¢¼Ñ¯q((ŸÛçé‡SÆ6)ø°Á)#¦´Ýoê‹Þ—é ÅùZo«±ýwn€b@°ÛÆ6îWgDyô¨XÊìp§=/ÿ7ÿš’øûe[S¤á`æÓ­¦‘8û÷c¦!çLjJ +‰ñ§7MAîá'Kš( Û‰æ3ÒûÃ_1Šüÿ hþ_2 ¡ª) Ù:…YÀŒòÜ%,iì¥ÔCî:Oµúq7D¶/G]_NÀì¡b=®@ $k5s§§×›ÂžŽ¢"D"‹„ߌ‘\EÛÂKÁÚ ç/&çÆÖ4Ç6›ºv…'ÖÜ[°Åxf‚ó©c„Úä‘Šcš¾hˆ†­û›sûiä2—ÍJL¬ìI:5™e9ã9´±K)ïê`Ï9°˲S¢¨§ vOj3à÷½×yÐÓ°1îÑCx\å—D‹B¾“×Ï(Ú <÷ÑÞ—¨­Ñë´Ê`z‚µb^°À‹<±‡øÊ„cÀ‡*fZ»Gѹ@ÀýP0!ÔÓšÃ+5¼Ýë+Œ ðv:ðç‚Ó{_P;Ã>whK90%Éáã˜ud¼æ`]Õ©Oâ¤.Ñ©‰a·û—Š—ý"ÛŠåãœçJÛ½ + LHèxNb0–,sÉjn¦WEû«aè¼éVêÖœ9»‚¬)DïtM€Ô(ÂÚëŠÐ6gQÇë{*hµÙKÕ4{Uâ­6·^DI³-1žñJصóME˯s¡¹N +“Õ”ï¹V4Cî}H~žs‘òΠ#ÒW0³hòÂ.s©ZD’ë&?BŒ¤:Ê?UìXóiƒÐZ ìÍümå0‚úÎà–!N–´BŽwÒcP›¸v@ +TÆÉbƒ¨Odý´[3€FÕŠê˜+=DŠR×™+‡u3¡Ïœ[)w”œ±ö¼@Ê3×x8ýJhLƒß-…­ïËhZØ™°GöâÅ(uA)·…—ª ÍÉé Ùx­ã%Žfè ©Æ}ZQKÃ槭îѹaï7 «çÜCjb.˜åuùÓçv­ž´Ä4v¤ô¨[Œ¨¥ XVb—½:‹Rƒ÷ Xç|ßÀ ¬8E€uÜË…W›SÍœ¯ö7ñMmë:™ˆà‘B(:â7çÏRfÌYôYžWŠôÜïÍG:Ãgxîsc”¢YŒ¦@ÍÇv’ýçM©}Õ*0^Fo +û¤# ¨À¨Ü„zMÑŠY„ýÜV!:{a¬‚cž=Ø—5¡}y9€âeS,vû"÷å88÷ç@—flÂfÈ"ŸjQ Ì•óE’D¼Ýá,šæª«ÇéÍCp0ÝßdZÑ’mµM}œ¡Ã KË\Íqså:A"LeY5è×̶s˜ƒ¦‡èÌ8ÿe´yÿ+Â¥¼oqíÅ$œÒlš;ßæÌAòðdöMw¥ä×U~žÛj¤À+ãl.óÑ„euVÈÌÿQ1‚ζ–øŠ*1Ѓëä,À: ¡5Ä$M̼ÝaÏÌyhS¤êZƒA½ÀÿØ)ëçÛÙex$«è@V…’9šÃPGCc˜æóå.h™–ëuzÏèE±‚^À8èÕÀ§P0Lñžä8OÆýröÐ7©AÅ|ʯ¿Êêá͸ (Ø/›æ­—øµêzÎ7=mš+J8Uî þĤ@æ:—|É=°2—Ç0UNÄXD;e)Âù+³S<¢qÔxâ)Q@ΛU¡ !ºˆó|T=£XÎëš´~®s"fík¨¡Ð³Aö:ð§Ÿß—ZÆú–W¸èW¼õ°eyëàp¤NYp×p*>kPg„/ãΡUƒ«õE¼å³¸¿ë‹Nyu¯éy”(údžqÁ§óËI#z 7EÁëfbŠ¡'µ¾©„¢Z©ÊøÒáÍK—N½¦Ù}¿Â”KÜ\jåç*’¥hÌ@­ô>ýÒ7,ÀÐ-ökô +.Eë[áAfx^¥ŠnòÃÛãFVQ<–áC"Ö¼uHí3¡ž„³ë®Ÿëê/œV/'ÃAպ‰ñêk o ëóP+E( ®÷©´xŸx@ä§YþjcIÏ÷qE¡j +sÙ›Û—ƒ^ù$clvN#\ ̃x¸eîeÌ^KGfÙsËVéP·ô1ÄžÏN‚«é—vj„œü"&X: 8=&óó4Tžé!대‰äµWBDš_V +Œ¸û N(ö¸3…\C…ê@àÊËSy.×JµãÒ6æ\Z™à\{Ž «I=DÆ+áã¹Vc¾#7ù`æ 6g—æÆ\–Õˆ*+ô~#—Œà}E&tDÜIÐKÜRµE(Óðú½ã×åÙkœ¢M´帿•Ü”šqÄÉŠ9c<ÉéZ ªàì‘CÚî„ù£Œ­ÃE¯ÎÚ4{ÍÕõ\½ˆìáÂó…šÖøK=¬q‘CùøØ_2'˜=¤ÌâêwøwéŸÎâôfØÔæ’¾äÇÚå¶yÙ)^œê®9‡\*zóh5ô£{v¾:¯UË'`c{EHGšÓ‡mÖlN\‰bÛ©Ã@kèî8ß=ÞÀtÈì„É SòÔ¨n€¬žŸBóomøúB%•eèuZ¦œS e¼-ˆ¤Ä³½1ï< ò‹@ aºK`H±%dD·ó›…$Õ–ev·`]|3â,``ᢘ;ÙÀ˜w+‚(·*sÌ{Ôâ÷Ô- §eœëŇê¡Óp€„„ðVâ Ÿ£*{™Dö`¥£‡KL634`²¹Î­ü}@ñù¹0,¿ei½cÏY½—mmY—.ÎÜ":œÖ —Ü3¬w97ù<­½ ˆL†8°r}2°‡2£¾x¤ƒ9jN5-H±ŠòNgvŠÌ o†ÝçÜè´©£ÌVó‡È{°# `ý%û@Ǽ^V{ 9Iµ+ÖA|uËšBG šNXô/«Qôó¼iM}Lz ²sЀ"9µ{bˆ ÇMô`­¥‡zÏíîX‚ò36€1—šöÚ9#O/TÆ£ÑiCÁ:Ç7©ÑB}ÊQÀe c:ßXúèA^­ï¥z¾Ö6Iü´5Ñ÷B¾º’ìu8Îp?¸ÜÙ–Éç7•%‘‹µsþ¤QŽØûjŽY/”'ûwH7 k {ù@?¯üp*óÌeH€Êè—åîQ¯ ´ÔÂÒ§ž%C1ˆC‡sË)jýèαa”+gÃ¥³Í׸²6¡O@²ÒÀáC ø×W¤žÎèäëa=ÌŸÔÔ{ÏúLÈ_÷¨^—ÁÚaxÏNɇۖà9w‘{œÃ CZã‹Žø¢k+Ûè¼Å¨Å0‚÷i¹¬«»“0sW÷›"ó1†Þ¨8•Èt°ë£G£šËÝUŒhö@Tu=%68‡ ᥖÕ0iç“™Ó^ði"Íut÷j*#±ßPN¯å§#Äæ¤]¨lìÔ2¼Ì×G‘*R¯qÝ*¦LÜÝ8Íg»(Å“«P&{N G’­–C?–™·oI  +B&Îæ{á‹ ²‰o"ü9zèÉ’» }Õ!òH1¯óoq1…OˆcØF]¶ D_˜†K¢}6\$RgCÖC¹-a*>IŠáë–hö86|ÆŸc†y˜êϲR›Ô6ëÂiÀcTPqtaijÞI¾’ÙíÂ#‰¤®zËðÒkØVR¬úsØa=?¬C”Èʤ%À°‡æ8³L\{47T”ž6‡Š^q‡jöŠ}âhŠÎÂ÷«¯"JM¡·¥`V˜î%®qmšåëNõ=£$@ñF!†D‚FK%hÄT?ô¤éÌà$Ëx¯¡±ò!ÕPÁÐ1µ¸“W^š™¤SƒÙy/Ž¹tÌ b¥ +BZBäá6 3¶™6tB(Äqj_J’œºÏ‘GŸ/ßB÷À'eª‘²ª~5~ç+æÕ¥¿Îø°ÅïáèL%N§Ög¬™lˆˆÌfHtng¡¢¬[äÌ™Ý6h>™ù8×”)3»±aâ'Ñ‘0£¸#zÈÙ!'îLušÌîìÑ·ŸÈ)À”';ØØ°f[ã4µì ¥ uTʪL +&óEäùø"õ1@ó´ØY´s'8˹âBä®´ûjk_]É%W_6J¢¬ðÐ I¡°RZŒ,u —B&9 óVÿà5Wp9Kã[[©[©öZ­F¬Vs ÞÛ©]MÙÜîÊ¿{ÂmP¸?œ‡4|yÏI“ê"ùølCó´NÃ~º¨æ°|±ÚJoÍ}ÓQ|Sð}æh¼b¡(¡»?íçy,1h]aÆÅ‹ Mè–!÷wH:PJýq¤ƒ'!ÐHº”e„ä1çãvîó¤umeˆl“~M±‘O!=¾Å!èÕå?ΑqžKçœG€ÅK +3— zàOì”PBÂ<ªkš2]öˆÝ˜ÞöÉŒº\ È 3f¸"»ÀÓÝ°y>äpc'Oùj¹Å%ê`ôE6éí–!hÄ2&Q§&Ùužäfv"“ëbÀ;· ¯ç¤×—]•*”øä\»H㪋åÍh ÑEi6ªŽv¤‡¯Ùü;zÌ=™[Õz-›9ð´#vø-¦œ"¥˜³® +%ûMGZÄØ`³vÙÈÍé;ë)䥺T <k½Ïß"ÀAZTÖ)†}øR5%ÝgD (÷T!!™ƒ=²Æc_=fdp°³´¹ïÐW¯±ŠŸBâFD-Ý…»æÈ4R0‹;JÂýáÿÑ3âJƒ``­\å×IV3¨kmñ{õÕe?õƒ±ÎÿÙXuüå6»Ž„‹–W‰Ä„i TùLëQ-?ÌSH_ËË¢ÞDmE‹“W2Ó&,–°Þ‚A.µ©¬clÂàºÓŒ„Ó¹—]p=‹Ñ°1BzÔ&A“ãΑÁŠ¤Ã ]‚Û!²2±yÝgÍ]¦;\ÝHíy>¶ ªs«/ ø%46©hbÃj¾2.Þ¾9çlø•¦5-tZ°þÐ7g:(¸q*m:ÃøVBY w} Ž.øC,'3D îÀuÕ6ÒkS—aî¾T‡›<(YÖ~2ä¡RÄCÎ&ZI!„˜­s*Ï 3Ýó¬G»%V®Øé²Àiô dçÔ”C_5=©†z?ù€aš£‡íçp‰*:‡ú=ÚbÔ_ PHë&Ê Ñ Ÿc:‚NmŠɽÌTŸ`$†Ç–‚¾ *š3mÏÉa×ÂWBÑ° ³ž&f)W̯FÒÝå nûyhü8$Ô±!îšk)la iF·™M÷k—ØGãí#þ$·HÖ4Víp¤‰´TÉLÿ¡×{×¼ÜRRlÐPA« ˜€ÓŽeü¥®8„¨Ú­;½Ø¼Äš—'»€5chÍ5ÑõW×L†^…‘{Ì¢3á|XDŸ:ã ·“X ×{¦‚Ëb£Y¦†-[|ܱm™9.3£øÍè ÝÎè}ÓÌ…·¹³ÙcF‡ãþÔ‚è5ôØ$[Òbí»Où8òJÇÿõ°Í ©2‡ì±¾ 6¡³Ç±ãÍäµsrí•QFN¯aÏ¢)KfeNÞÜó˜>SLŸLVèû6^9Q4ŠÍ"ùé9‹—òÕKfãÚ$‘Ô-ÂÎÜ‘ký¦xaãµÄÉWŒk,uîºv ÄËe‰—%Ѳm¹#ö9ôsY229dd< ÕôÒ5va͹Ñ#“—ßd@Å;×–ÿõf‚eƒ¸4½¨š{é ‹u“º‡ÙWÈIÛk®_!©‡…˜’}øE)oVº3¶º!ORÃfÖ•äüFœx€• \ùî°Sú)› ÜùS/"¼y™ëOÚÊRR×cßôÝj©Y;0*ûåùîŽÑÚfD™B (&6åê:%!ÉG~/Û¹“¢ Ñ×2Èég²~%¦LIóÛ¿Ø äòë,‚1 ÄY¤^š.ÔËYˆÕÄ:A+{/$Hv§X>ƕ烻Ì9Ü^ARÝôñ²,­(ÙY½Î²¡! =5ÏË*Àþ݈®vrÉ« úà‡ÖØÎø5i1nÀm¸eц¨‡ùôËÜÄúé¹ýíúÝàÌCn’ãsã é ÏõÉâž¿ƒ|»Ï¯ŠVZ`2~<¿FM³GÏëåÅU³z<ñÅ3v&C°Ká\-%Ë Nî/åâ¹¹×4šuK i‡d¹³Ÿá‰¥Î‰”Z'˜aqÿ1­é~:bÕD +¤bF¾y~ç™ í{p:­И7tÆC¥•#Õ¿Ä+˜¿ä,Û<hò2³W! ÷é5–*,÷0K›=Ð1±qQFÌ$ «õK°ãŸÇ> o^²ëLjÇQló¤"¶ çå Z¶+ôP‚€GÁ;6{F{ýà‹ü¬ˆ†«ðÔÓß”y=‹¥¶n,ß”ÎßsÄ(·Æ_æ,u¬ÕÙƒ,%À‚ 2¦asã+P5¡ô4æ$ä1OÌ÷›—®dÝÍk™cà¬#™©i¡²·ò‘IÏwnt®¥L¾Ù‰¦ÌßTsnCé²r!+ê>-û…Ž™¡²,]´rèÊóÄŒÀ@!)‹€\ +ù^C†1¹9Œ+†lIoy +4FèÉùDê‘b ¹Ãe ÖÖ÷=;~[¥pôp®è5¢WaëBqrÌdņÂË â(ç0Ž]e/~Ê1vmÚ^Äì …@º'×ô‘èU‡Ž GÔ8f¹°†æÃóûSÎÝpuöêŸdë< ¹Þt’C- åxm…~lí\E_ð#œ@ ç8tÎàSF˜aDª/¬‹3v™qaú‰–­È¸œB¡®p%Ÿ36íéÔ Jä(m‘瘘qÌ°G¿6%|o6ª—€0¡ÐRªÒÉk±FJX´,ÎwªfÚ¢Ç /„œx N™#;Ù—ˆ>”qzäá<=Jœ­ þ˜û‹KÝ’ºæÎ9ßoiëAÜ8™ÎCàM€çuW.±^ü˜î{Qù/YMýs…Þ…l~Y/ûË’#ž $JitŽ¸Œ¥65S¦¡Ö‡‘á ±MÜ»(F:È-–ªý¬€1³zò‘æ9Žíî š “EüQ’(cH& ¨4Cl~\; +bP~ìÁlöhÒ‘ ŽZ#;[ø ÍŠèpm/,:%¤–f'4hí5HÀÍ‹G,NC:‚l”؇(5Û™Æø€FôhäÈ +¬Bj  À¥“hP¾È3ÁN +³d‘M#/Pé\³p7ÃD„HËq ‡F +4£| ”ÖgôJyk«™»È52ËÝ=‹©cÊ +ð”{ûn»–=ÀqXFÿ$ê¨ã¦_Š©ÁÞq[V¯(©Æ¦ÄÒ@»¨e}ÚCUz ¦=Pi´tSAfÉ´†ï—ñ ]MzõßT4ŽÀ=Û»¸vøMM|)i`ùÄÐÀòXŽXIc9£!rŠ;IÜÙ±¦Óêè\§§©RfW˜Ô­ýt*¹_žQ°#-¾ùîµ`õm` 6ÑŠ]W?.áHNF:š=Í'ô·úK,M”¹»«{Â=¡ð1áb|Í®F¶—iLzhRSئåx¸¤ÿm`u¢yŠ‡Î¦†‡~´Î#dË8»Öæêyè­h¾“i)â©ãüZ2ò(.¢kTËî/IÙc±®Í½X¹Uð]¸pz:íuiÁš¯àPÈ/™\¡Øb8Wç–†»erP“\bçösŽ:L!úç;ïju?Ö’Qbì2~¬),h|êÌK:-‘IÐoX6¾VÁuˆÙ È@)Y‹Éhjå½XôX,Ø e8ú±±Þ…×â‹Ë §8;N–bØߊÉj"^ÎpC„ Hö4‡ÆÏ\°æ¡ˆºž±,Z­¥Ç%‚:/äd¦Xu¯ëªC.:´G2J„/ëšB¿l† Q G§húœ–XÀæbAE±­÷±›@óÎ OD©\?îŽ`Fs—ÈK_À` Í€<"v—´ƒ=pzQKâìá•—×/…©B’I4ßðVúòtôœ6æøqLé™5¢®ž–ì?P¹`[ö—S¡wÒ”ÀÒÄÎÜ~PÍ°¦•-]%xÆæLQ.äÅ-˜]‰UBÒ˜¬æq*SE½ IŸ&ˆÝì +q IqÔzCPt´·ž+eBŽ÷¶¢ÒSABþÆúƒOz³!y<×ëBÐ.ª@qv†#ô§ìuvZQ¶b¯Ë1~À^ã¸Þ#4ªÊÂë’œh*«áºƒ|ŒGö¡ù +"p †Sh±ó[º9 @l45þ/¥d 1i7¬öâBõùj ”x(±ž±X©i^ÈÏQ7ëJ¶@=PGw+Ôƒù•²S?{¸EÉ' Bæ‘ÿÐ ˆ–¶¾ä ã¡•Í‰sœ‹c¡{G-h¶E2;9ôÍ´L‘@į䊖FÁ°Î€”;Uô;[ Ê!'F.@Ls%­RζÀm&3y¡oÍxä&ÙâT5-V/‡p#òµ±ñl—çôyÁë(€‹Q Ñ1ñÜ.†A fÜÏÔì@¤KÀ&üEµš†ìã‚O Š¬ÏÀ`Ï1+1æ³Gä rìÑ˶Ÿz)ë3÷.iR—L•T\Ÿ0p" ¡lóدNÊ4¢ö¡%âwóV±¡&*¦ÑV?‡c–e…'ò£÷ˆQ—Kùýñæ ²!r¼%ŒµfÈ$ ö³‡@D™áŒÙ×°þè…:èå ?P˜›RÿØÌy#ÎâùG  æò¦?¯^P•.¤ã÷ùG,Šì;„Òë²02w‘qš& }΢2FX~Nq磊ÕË/V×amA½ºØLåûkš¤žÙGâ3à7·ó 36@8= ŠÐ£ùÌƈɵÂ:ëê‘¢ÇM e12I쉃ÓBþK;ÖÑ]²³GÈšû°·S<,ìTta>I/D"¸]R‰µ¨Ï)pËÒõQÔµû;ô¸£Yž àAFRW  µá@•mHGcŽc5ùýRHšˆ|hv }‘è™ÎË9KI¯N0žnA—Ôê-ÌدÅÓ§V‚H › ©³ø¦ñ˜KˆüÝ ³ßö},ªx8¬y)¬Û\Ê&§ÁI]Ô3\Á.g& ¤w¦ªD³D`;ÌaŒµšiL»î; +m¼±æR€ú¸!g¤otéFÃã†:Uª ¡¼ DZؼ:;æõ¥þ¬˾î#²[ôŒ_sðg¯bâƒó@.æ›L?DCbŽÁâK4äø‚3o°´/Ù]jüêU”&Ó’H¾zëÐﲂ>÷?=¾Y+­Ù#µød°KðÄË/†ãˆrx+ ,°€^kÚ=Õ_˜Ý,JP4±g%h¦ñªá¥ÕÃÙÍêS_¢%ñH–MxU à´—géäfI«PIœò¶ÐƒŒJø8\xªÌ€¥ÒÆúí?ämqú?̺۫†x[ul¼äôä7£:þ2߯è§TÙ +B n/Ú\°qgXSÄàp“Ò ÎåàÜ„è[Õçý‡ ¤4{ÌÉ|?øM0"íq…™^‡çF± 抌¯8¢ë„ÆõñÅÞç{ýèàƒ^Ï…%´f'¸ß}QÂiXoƒm =0’£ç¼Š×±ð,o=b¡%zƒÞrÌ€äúé½ܶÙC-ºµSà ¾¿"=ܨ5ÿÁyáhaJ/Ò•˜Ebdº>–A5{´tÅùC.„ñr–uŽdp 뛨¥“ú¼„:¬QÜÏÅç.­¡Æä]Ûíaåî»kû“]êÀݤßU¸^Wh/Iy`”^#(8y±r-ÄXòÅó0Ö6ñŽ–¾æªƒ³¼õ[Ï`Y«K"ÙÈLWýž*X7k/-„%”AÆð(Ø`° +„ô•3 @¡˜à pa‘ Üù3Šaé.@$ÓÜì{í.0N Ò{W6ßQ‚:4{œBµ8GyéèdÊû&.­´—ÑZè!hž‹ œE‹¢«dÁEª…øâ±÷‹ "<-5)ë¸è—Då%‡jALö/ÜèrUé ^b¦¨9‹á" •Øßb`T)o,/rž¤:u¨¯DƽvÝp`0´„-‰½9 „û †e‘l›O‰%´–Ï=Qƒ )@æDQ9o€]2ƒ²…Ÿywƒz)Ž1Žq'9IÖ`èC²æìËX#‹C45JFŠ…klm]¼òN$:´”ë'^WïþÌÊ ]šG”#&p6zJŒl*Ÿ#ê?ÿé„?¬¼ƒJwßÂp!þ þµwHAè ¹ÓsZÀ'B8x‚}=HÃýöúk‡ùré¿DáÔ‹ÛÂpÇoå) '6'Q*žJ@'rš2X + -g{B³–ÒHkKËi&-Ez\ %@æO9âÊGäÓ¤°}ß5•Ð>ì°>}²C¡=q¦uóå0„úË_ƒwÃwr6×Eq™TžjâæD¬‚Ÿ;ƒ=:7þnmai_u¤–VµiÎÄ9Icª|Çœ½HêÍ0QF~T&BqWî丹KCCÈ÷¸—¬1»Ñµ6<Š%;>Ú6ñSb÷øã#B‰û pf¯ ˜«µ˜–:ÖIÎœpë¦}A÷ç„Ö⇸Ê"#€–íX=î·9/Á•9‚Rt D1Å9M=Q\+Ì,Íwö(‘ý‘M@m–ùr՜דøÈ™±ÕíRSç¬$ê\庡;I-zkÅpÓT¨qàiÉVZ?Èý†Ç|÷+¼ž{­´ô¿„œ‚ú ñÚ±vþþÊØ"Ú@`ËZž²ñP¸Ûߤ£"[†€yAt8#H™’¤˜óHÆóU<æ±ÖcÊN°c‘0í{…»‚úënuaw…çüA¥JŽà¨ºJ…ˆ‹&]É ¢‚Rˆ +£{àIñ›ÙPoXC_¥©`¡Î†í²¼µ\k©+5-¥­²Pœ„ZgñªKËæ4·\ÌÁ&Ë¡7%æXùÝWÈθ¢ê"éšÚj€Ü­Î]‡ÉÖ ×ol”z¿Åš½¬+»š¦mnÌÙ‡¸¾^fy¯˜Ðú±Âì0røÈA¿:tì@-z%¿¨„Ëä*Y¸À™³<7¢m^J9â:UÚj8Åê±Ò©óV/™t¸™¨%A!x§ÅåˆJbKtDÕ(°„“Òr‰3ÇC ïT ¿Ã§ÚJY?9ï;v ™É¯\´{}à¿G\—ÉRî&aÑa³VŒºY‰R‹–ÈB¸äúíNN_«þИj¾£¤Ð¾”5ŠKÇKUoÍØ?°ÜËk) …3aì;Ö©¡ý6{˜"•¨‡Í½ZëÕ¥o9X×âÓÕ÷}N+)…$žÈgì¼Ïº:(>ÃǽW›J oçdQìDeÆ-!ʽ‚(ãg&ÈÓ8ƒmW”ëï@¦2zI¤Ç¸ÃékQeúìmªG*«¡ {ü€Ý=Eº8k\a9ŠLâ úJÀ ƒ4î³ÄJûܘªZ¡Cºf¡ª_Ãä×xøxHÇb¦§¨×¤ãpQlÀ8KqeÓôÈùò@Â}e»ƒO˜&l´„¯c‹¦=Õ +Óµfsii®Øà1v)\üã‚ Ë'ÿŽ^KSD'g‘,øòp½D%äCP¬ AìÄÚ:"DR´o`g{Q‚u½ÎJzj*¦9]05«ùÄÔƒË i® ›¾.Ä2³ ýô"é|\ 6+és=<sT3¤Ûc¦Mæ4rHc‹î+Ňþ³ön»ºäØ•ÞÔ;¬jµdð—RZnËÎn B»[‚a$ʪTwÊJ¡T²Ðoo~cÌÉåZ;«|Q‚åfpÅ99ç8èé+ýC²rÀuŠ¿‚/—FÊã|"½P 4l‰ÔtÁ+ †5¦Ab|M»j7’RéRhgµËÉ!£/7ž¸|Å]›©dÞr\A˜QíSjÛo<• ?‰ë¯òmÚÞšXºGd÷ƒU™šdé~úN~]rpQb?¬M5ž¿€æÓu¢ÝcÔÄIw¨)7f^1<àG‰óKM)HvJ€.†w¯}!È]­^Fjd~>ygζa\o‹íŸq“ –{˜Ñ´i{±c _"‚ÉÎÃ×[›€¸§Kw=ÌúÑPCì6*¿¸Â +Éx®=¼1FÃ_âÂûCƒvóùäcš€Rhd-gT„ô'íÝjðm$Ó+9§/ˆSH_ÜW9ŸŽ«ToÄ‚™VBëü +2𙼠¹/`î0¥ô@xæ¿TJx÷gžT¾H/Ï ˆLãÝÕC4Ò}V¶éô0 $$¼øÓkX0\û,Œ§ZXW™ÂkÈì½ Ñ%I!@ö²ïLÕíºwE²ÈHP\η>˜õLŸËÁ×KïÙ«uvÅó5„àx|ö°ÞÞBæ´0û¶’5æNÞ[†Ž4`BDILù9^Ëù0ÄÚt +?ddõ4²ºËd…|¿Àâîn:–DtNß±q-óG–ßZN)H¶Tk«)ø ÷Wò¸0ô4‰âÌ÷J¢U*Õ fùZ ½ï«»ööMÖ±8ýsÉVu5O–5ôœÁØ-—“—Dzᣌ”¨”(v¸P‚©9‹)ëüÀþT…6¾T³x.'°÷/-/w$`oÆkÕPv0(0¨È^Ã!°uÇöÆ‚iòÅ +z†»Wi+°&Š‘öö#Š# m†ËQ2”ó ¨³  ÏæðS8=ÁˆØbˆ’‚Ï8 ùmØ…à3@rÈ^è—Å»×ñŸú]ì=ÎÉä’£Ôè$õ:½Q×¾¼÷@^×0ßá14ê~ˆ±]ÔƒD¤i l]›%Ù'U`0ÈIú­,#­;uG=„r%Ÿ¥†w|ˆŸÔ0[‘²§¬t@Œö»'ÈGï*w6°3±OŽuZÚp¦ÊhQCœÊW © +>ßûŽ ½ ™Ô¡ã‰3Ë­„l7Iõ|Ùm +•©ŒJT´ )ö )Fê^dÒèEIÂRUÙó=b»9_‰EJ#©C1#òÖÇEÆzŠóÓ©¯‡…òq¸B¼(Hû‘s9Ô¢MΔ(%7Žnz F+°qbr ™6b–Ø‚M´Î»0ýþ ù!ÌÜŠ§ßžõîÖ@–ÉÔT:ô/M +rèa5qQ½9ÜÛôó!Jç¨)±7Ô«Hˆ‚ŒwµŽSe{à\ÅéÆg* gIïá ºúKõ™`¹ßˆ¥üŽfˆ·(¦ŠMHÁ–ƒ± ~ ·KTþ½*“ e~šÃ Œæôı ãØÖFîÓ”@ ô!ÑÛB×gå†^ôæ‰ÝÂ&¨ +àux5x EZ‚ ‚x˜YÍ#ôŒš4ŒÓËçñ!A²,ð#ÌË —|ø"ýuˆêžùª5nàš#7 JA°U}Ä¿‹‡r)ض^[xbU=1í3eÓÄ +ûÞO½Jð°Ñ¹C²D¦ûA ù‘è«àB»Gò8õöZ„ˆÜ¯;0±J(þòN5ä–•9böø-õ'n;õJjé׫‡ê# ‚^Fw"¦Ê¾^%S›s§¨ X)HW=lTS[Dì9Pt2 D2ãC¬a"јiK&Fg`])qLKVÉú¤aÁ!%˜æuÖ ¦ól ){$Æ9Íôñ.`‰1¤êbö” sߥPx!(‰º=ˆšÙ—#*`×–ej‘Ç1ê¤èý¡ô&0Õ‡Ö"PA:ɘOç¹jâgÀTÌØϱ%¿BØìSºŒóEÛ’Šû¹×°c#ÜPÎŒªúÔþS¶dlb­‡³|û£ÉÐ?eV±&¹ÉŠÂÂúNÙÊÆ£ûC̽SŠ#(ÙÚÁF7ÚYüØyðQà3«b‰Èe±=¸Œ{í°çç(·Îñ0JmQ9Þ+‰ªîª_\‚µ,UökÙÐZ¥»ptûwÛý•2‡l¬#N¨NçXPcÕ„ú7ê¤Ê2ÞÕ.NöÔw;[;)?²å+aQK‡š´ÇH€A×WOâØ=.Ûf¸J÷¢è¹Ñ¼ ðúXïîc¨y]2)/®eíÍô !µ$ª2ÚÖÖ¯$«‰gX4P/28÷ ´+£\âô´©Óš{Uä0Ø]‰¼ŽºõþÛn8’ÔS†ØßÝ •Á*IîT¬£'žbõS,éC#ǘšß¢–³ ü“=Šl§m5¢t=RO¿ š5Ùå [áˆ=€8½ôxKˆ¸ nÿ\FÆ[ZÈé÷`Çë(o%oê+Œ=»|åq,Ó€‡¾7~î1Žn:Y° 3ÂÐÂڵȠ;ª@(òÝ‹À~ÛU–0Fc.6Ú@æ1UîX£Ïféa9a(Ú@>Üp Ûõ’w^o ÀäD¯&b¼p£2åÉ‹.âÔqc&û´Ë¢¬öÈÁkZ)ùINŸô‡áVÌ°#ÀMí¿uú¯U7Á(XÃ…Ø#ÙÐËËNÖÜÑ‚H~•D{Rùrß2Ö ¨gÁhj“Õ¯dÁ¥(qíþP Ä1Í@¨N1:´m6Š¹¤Uí[2=ë‹¿³–ô¾ŒcÃ)s!È™í(rèwŠë +4ÏyeÑ«ÜæMr¾j5ñ@ŒÇé¡ÂýîqËhïcP¸Ð/ÉPÁj(§¨!C.SIñæ*\’±d ³4oÊØe.©PسŽ»W,É݆’ɘüÂÎ%´±§V¾=õ£ôeÙp‘©Žn£ŒW¤×Äg"þÙ2+¼p 9jÛë\†öõ©eÅD!ÑiÑ5¹Óžñ²V˜ðP#z JÜT ªå-¯Á5ÃvE4L¿ft{Vªæ¼êÊ,cnŒwÜÕE´Å*© ®6 l9#åÿSSÃh9§ž$±V“X¶ÐC¾\¡ã—b)Ó –ÛªáªÌ`ÖY[ûŠ/Yu À9ÇðÿYAò\ïšân’Äbù'ðj÷I —h/¼iŸ/6D—@iJC@%Z€ß=ÌÄVĉæ±õëK?ß{±­CWCÚ`ˆ úW\=×õ“‚(ÁG%ŒB[J¢Ió;¹À—Ÿ9ŠUúzÙ°HÒˆû[bòõInh«`¹M»w©;ÊȬ‡y¢øUõÔKÍ“ç㸠ïÛ¸p^ýõ-£.Ò+D|ÃJøI‚¾ÍçNw àÂ!жSÊu‰Z™öÀ\¢ì1@yc!öMñ‚2 +Âx’ÕØ·Ò¶h^wÚC‹›ež [=’ Œ +ÉW)”Y±›MDŸRÕyD$Ujs–ôn²$y–.fß±Y©š/fˆ&`xöq-ÌdàêÅÓ«ËÁý¥®óÈ|s÷èM `\ õu û+¨P¼{´'š'ßÑ"@ö›l'ÛôòÞÁ÷D Éó m +ÈLèí†þ"çÑœ ìmا‰Em‘=âNFÜI +wÀ(!ÕMjÓì±™õ´}ÖÇœ•c-¦ž™~“S·XÕÄ@ܯârƒN÷9fƒ;öЃP£F/ù­íë[v÷Hlzmj܉`vû°<´B•ð'Tdz s‡{Šb/ÕKÓ~'Õq¹¦•ç’w¸„sT!ª]ÒOðˆ·L¨ÓÍ~2Ýà#ÌýeÈ“ ÎËv"ÙÓK¬òbÍ^¹LO¹F(w•ËF H-TÔ‹<$½FØ‚üĽĴþ®—ÃÕé\Pn·)Ñeã}‘S jX¾ò‰éß2í|Šÿ¸ø(×)è«FóŒ'œÑøŠå¿`‹2…Bì{ /›&O¦¡*k\6cü’Í»-æRØp£a“°+6‚“KÐ*lŽIQî\Ã"™àÄ2‰BÂÞÐïSV›^ÂbŠ¯iÓ»(ŠÈaϳ%Ø +M\Vâ)!dãˆ!‹çŒB'h¡à|žÛÅÔøÓç(B +,ÀM¼QÖ´À*R4ç–æ!M,ŠÈ«K ³Þâüx !Ÿ‰ÛrH<$@· H¨º¤ ÈLËiò£"S4zÇc9Å)ç;…ì{Ú“˜ª¨]\®0?É]ì—)É%{¨ƒ}ZIça÷„½Á¾Ò9w@îéõ„j‚ö 잤Ú"«”vÛ*åÎ Xól…[ƒB}ò©!Ö¦^ ÐèuG¯ËT7ë7hÂœÞÞ™ƒ%Çœá2“n æÐîQW7¯í)¯7âÈŽ,¤ä°¯´£5¥©mpa\žþ•ÛÓÓ~EOxÞz¶²OM1gäfFL–]ŠÕb$ÙŒ•dúÉ`¦ÀØ«åNÓ[Ž|µ[³œýØ3LA³5£œ£PÒækßcdhò›Á„ÙóŒ† ºâSàDÏÊ‚«÷6L]PÓæGp‰ì æÀrZuý"9@¯ì^M ½ ý²ûAð±¦!€ªðò¹ÊíWu…u‡––1¡EÍóâPIùŸµ7"Ê H½¹ÊÃêû<¨¾ÙI¯½ýñLéŸ4/kU!Dyк³æp>¥c»`Tv“Ó2ºX6&ªÌcäÕå͸²Ä—-ôÀÆ5Gf{ż%SÖ=AU‰ðôrŽ¦KÒ°í£÷ž5õXä¸ù¨Ç-vÝl¶ºërRuëÃë*zHûˆÚý +„eá€_žøiôZ“‰«0×{ +–;kÂAé Øj÷ÐeÉâ_²Ü)¾ùò Ô'E\3ì—ÕPñË3Æq7ªB€ãzJŽo4K[k)hkîÀ«‰3$':oíçŠI¬Q•˜(‹§!²Ÿ÷ëßær\æŽ!:!¹µìüL¿[àîõ1¾Ê^”섺x\1@ çÑç +ìM!Ãü"‹(cÙT¾|Ô˱´––áóHÿúé {#€ŠKË=ìÞÀ?ÑCòÕÈz~I›%Yï°Éy„f÷’§ˆ+K°<líóyÔC< õ‚¹Zª’ìŽM+oLÂj€FSWU~!+]Àý.TäÅr¨ZåÚÀˆžÅa±¡½¡¶žÕ‡ÞJ¯Øú7ˆ9ã+çA-RryÊf4“?!R)ÖîûSÐ:Çõœ˜äc'°•ì"fllxýmB±©Õ›b¹!ÕÆبÜÿÔÉ›e4("rRúütá.D1r‡G} $?´_¦¿ÃuïYgùØKïH±:sSˆõIÁpßf¿Bˆôó¶V±•æÒ„ô5è[ˆe!dÝ^L1`6ˆ^JÖÌ›,n-ªÛ>€·.¤=§Xî=e10&RgŒ’•>bôº-Ï-Š·`|Ú;¨Þ`>©4Ð0V–IA(K½½ÛHïÝ£+1ò±‡iÚ¥µãWWã°y +þ+I“bË© ¸ç½;B—Õ»³}Jh;O¡/½ç„ý‘ i~®e…RBd‚¤rþÀ–¶ƒå”R8cHA»¦=ÜXØ$ü·–á4èY\L€>¼åÐ×É(Í"ªD²½œíÒþò7y+.mT •>,HÞ‚<$#ÙjˆÄu{•ˆ"eÉ·p`ìa›Á%׌ƜèÓáËAOÜØåîÛD´7=Xñ&´Þ¹£¶®àÛ‘nÄè$ÉO.qb{؃¤¾‰D¦«½ ×iR£oR…l6”¹CÕ¯ ®ï@YUÀñˆ.`Qd6úØ`ð¬{‘eî¶""×R¨>îAŽƒ¶ÆÊiñW…ª‡”ÿsXœ°…Am2^DŽì!9jr•œ´Z˜@&¤QHéÒÆx|`È7Ž%Ô_îµûJæãŽxìö¡ÀþÈ(Þzó)ö~®„,³È­>‡vwûý²¾5ØÌ{Vv|sÖ8 ›`ªÓÉöžQ4h[lõ°ØÚO[A( d†O_÷ijF–ˆA‡^΃+Ôå¹ó2Ý‹Mu5]<¬I>¥ÛÌD endstream endobj 26 0 obj <>stream +hFŸðuÐx(c“ð¯Å»,½ÜýóëˆÒÑ‹äÿÎqy«h +.™ŽG§QæößSCôê +Ñ«å‚!Îd«ÈP…¦ÇñþPfD¥²Õä2Ó…WUЈšw[âH8Kì{hîÑ…zH¿Æ#0„³Ò'V%Ôõ÷s_² Dà–Œnݯ«¾Q¸ªÙ|པÏé?¡Ñ$D Êé*#éU€Ÿ.¡ð.yr²(”³mžÈºÜÖ¼²Êqmvû¸ŠÅUæ~WÂÕMfd)~õuÀ[ê%•·ggKe$pKN!p¼1W­ï²©À¶uÙõÔ͎º>?±úÅ£Ú®â¿Dƒ^®T_±íÀñߟߨó™>_™¾# MÓn1–Ø£š´ßÛ#ܤ#0¶ªÈsJ\Š +âöTðÒct9û¢‚¾å\\ä"º$Ýî×ØœúH‘ÁÛ"ƒ=½l¢RWÄ|ƒ¢Ô 9 iŃS¥ªÄ]„‚„ lÆÝÓÊõêBâ*.=RÖ|>‹U=h \¡¤¨<îÀéÛë¹pᤗLÜäxt!\°à>G°F$Ð H/“Ë$b5Ûõ¤1ùh 3–¾OÁvú~?`¡ûC¬oÙ9K7-,K"¥¬š¶Éj5wÑ]ê)ÖrÜ#[ICº‡ ~»ïDSª[Eí·õ‘ÓÍs¨xÝ#UÈ1¢t¯uEg¬:°ÊÔsE¢ìzÅv`ä +d±è] »øÀn*T_Æ:JÕÃÄe)C£Ið„[…ÐuÅ…Œe´ÀZ5„¹ÎÄKZ­"ãÝß@R]ªZV»Áw©º{NÎé‚hÂAäï½:ütW—?(ïré9î$Ó‚7y„^M’Ó–µKb§oM•Ãh– +Þv„9ˆôË•½Ù›+Ë?M¦Å) ¶díÅDÊ_uÕO¹„ç‘’‹”À90{¨qª®‡8v_¿Õm¿Œ¡#Dd„˜Ó¤f„"„âqdTüPà‘v\Íüuådö» ‚¾¶4ïþ•Ñ÷|*bôþ/KöŠú=‡„O7ˆÔ69X7+ô–Òõ¢!m)¿¾M0„¾Ì%â)¾$Ô¬±ðîÒ~ýÓxuÙ®P“ÛO‹°ôz”Ö ÞñÐ~âcÞ"ú8h”;˜’² ½ ®‘Y%l&¾¡¾ï¦f;GïÑ6lI{~¤hb½ÔÜ ð€iy„¿Cu“ðKð¶Û–"`‹øÜ{u íc»Þ:6’|‘¶Ÿ*PK!€¤—»tʧá !ñùÝÊ2ùOõ&tÐU¶‡þ¿waÚõ7C„€Ã ß£ ¨n &Q¼‡ÌU¯ñõaÃÀ˜ÙÇ*3w$W߯XªÎël—ÏöâmA +Íi«;ßÊ=&ÜÜÇGaÏḦ¡ÞRµ%žÜŠ½%áéÞƒfŸŽGjǯË5§} åÞXaÿ@vœÝuS ƒ+á°úÙ1PWy½®-ð_ÝC}7t‰`úTdÒ˜¡nï¦6#-ùŒ#*2é^Zé=qlœÈ¿±õ×èi÷ñ3‘‚¤›„ÄÙç ºLß!©OfA +®ûÀÍðM-8Å­’KÆè¥)‰âI…;J«ÂΑÌ€Ò}þÞ\ŸË.=]Õ¿•«EÌ~+4§Pú”KUÕWmpq KA‚Jƒ¢ÎD¦ø¢ì'C‡u8„6· ‹^JÔ'Vq}bïH0RVXÎGJûËÉyþ‰¯ +{L-,Ö;ÞB±„‰ŠŽœ/;@¦=W3É^R«MK’èÁy1MØãËòüצ*‚ Œ’ÛgGªo·Tß/9ölÞFžNñ”RÄ Ïî»™òE’«ß]„RºàéßWÎÝW¥Ð¯ˆË-òšSê³êÑí±@}ÐÌøû(¾;èˆb!g)YéԜ)°ýøt–&5¥?¥o7ﳸ§¾¢Ì˜æjL%­þIÅü-,³Å±îwò,ýí>ÖÊ—F+@±ÜsÃ-I3iîÐLÅŽ¨†ý¥Ü‚X‡¬m¿Ü¾ÁŠ”pÄ…«ßo£<Ÿ(Žry>v‘¼ìÕ>gâqwÉvãÙ2P:z,Ž)×v\ƒ²ÀC¦nØÀÐ%n¯û&’ÜAõ„ø@RíÆaþòï‘;6ëÓÞqSu Bo6 _Âʤ€™¿§p‡¼õ5œ}€ÒNžnpÍG¢aY®¦IþÒnvA@†À¬·Î¦¹¯9±_Òh¼h7!Hm zÐì(÷à÷$*P„þP|˜) óÆ MÃÞHûòuµa¶]o/NS@ Bmd±ëv±KÙÓ/ªE)ÊÕ +yáu»^඗£è¦™ëô .‘pû0ir›0ì…d•¯ÀUzQŽµÍ`º(lÿÕíÂ÷ìY; ®í1x¥#p63Y–¥î¸ì4£ÙÃ÷Þ]0ʤ£nºÌId̃+2Ï3ÒŸÈêÃ)³ëê…µ*¥e~jײï¹Çç¿Ñ6ß꯳k€¯)?ìs è3×I²­k2åih{«5~¹'ºZÉíöú;FŠÜý#û…Äš:‰ºµç†/¬–É­ò¦„õ¡2ЇókðAÉŸ!g†'ëwÁG[Çå/dÿ[^­°øÎ 23ÑÑ[-ï%}š È—·HK»ŠÝ°—–·_ +~)¦>ãCt<8­É jªŠÎ°²åì(œH*Ö¶vŒÁ—âÍŽåv×P©Ž$‘ôGÌÛÐ.d~UWåKøÆc´ +÷|?á¡Ðð +oHDiºQ`)Y_awxÊÚñupKT‹ffŽ»´¸­>"Òø>B5 ¹8ŽÔœ.©Ý—öFñc’ãŠQ>`EjR; ö«Bêg1Ö|Rm‚CŸÈe!VÞoó¤¥dÕz=š$.ÁÉaú‹œÎƒ)‡lçm#å(†òR’ÿRÓAíÇð¡Ø7s^vÛ„ÙÆi/9X·³ +)Ã׋ýÉÉͬ`MA5·}8=¹î ªÜ [/4´`‡íCÞ*² )„–_ÐK)ч±÷4æ^a@7ôWv½“ܱg©á\J°䙺@aäéŠ=[¨m£Š§ï 6Z—|ÛpEë°0®XÓØ,ŽÛþk2Y„÷Ôžõ&‡“åGi£\éÙ?Ä.Íä÷;|vX[‚xÞÁ=¢È +¦EøÌ1š_ Ÿ:âPÊv¤:k;Wç/§$MÊ;½¥î~ZF§Ñ"üE ÛK嶄˜Œ5„ƒ;ìvaôÁÅCTnÄ5W˜ÊXèA⌅ä] Ím²$™åÁh…©Óv½È³úÝ ‡95B‰@ñ \"’pÈm¤Œ{›lŠÉdEAà{§0-%C6÷áG…w¬èŒÄžÕ•ØÇå:\-‰Qï! Pð¨Éí~`x½6Ë<íQRaàçD…ð—6AÚηŸÝïgZ€Å$x©˜0Ym]ßÞ>på :ÔàX2X˜+y5*U’ÃÕ¼b¨9Ic¬Â›R ÂBŠ&Ì'šQtbòTj{PQi¡Å0 CšH]I²+¨’Psé=Íù Ë«!VY‡ÔÁb¡¬›×yË“{Ä\¡í¸Í7ÕCe )!9–þP˜Ùí?¥˜ç¶ÚŸáÅÜó• &¬™²…¹Ü¾¬âv4&i¿†º.&'aY5ã*,Ño‘»Ñ2»ñcæüB«šC²,Þ›_”ŸˆÄÒ“<Ã’k¤Ÿ\÷àüàÑ…Ô€Ù‘V H6+LœŒòÊÏb†{‚’†*©Sô„}Gº·-I‰ô"SjÑzª·t×SM2y«R=XaÄ?ÍcÛbèóúg¤ªÅ#/‰Ž„l$šow\Ìcr‡b!IÑì‚5Þ½%ÔxLæ¡^ÄóºÃe(ÊDùBJsUGoF2ë‘IæLä§n]è­’6¯%£'¶Ó݃\å”}¦q­$«UCÏ…ò™(RêÕYd®KMU"!s‡ |âPîÕúfBCòµ+U™Q¢ó‹Ji#_œ7ÈÈTËÈ '—ÐŽÛËÿ¥I«ÛV ý¿Û:›Rm^£\£œu›¤jiŸKCÒÇVŽþÈ+|—q$Ée„œ4àËaýaAY•¸ñþ#ö®á;piî±ÀpRû=ðHh­¢ï3z-÷’Œ;=ÄYøZ+I YK(÷uÚŠ“áHád¼١ƒûo"&aQ ¡Ú‘k‘à!@ÚûÒŸßòMCT "Ýîq“ pgªG.¬7‰GùÀ‚‹³Ÿ2¶™Zz`Íoü ‹;OµK9”ùAµpj„?î19î-iP={ «º¡0âû+|ÎHÛêðÁQáÁw‚P·›è9o¢3«Šê“Šy”‚`ÒŽ w‡z‰Ð Ã*xWS;]w(òñúË r.zÚ¦ä÷ƒ ú^+ç½£&°§} ŸœïˆOò¾éÜËP‹%¥ÿý¾q9@IP¶E‰,“NרéwŠŒ4硦I1S@æv`BbùRn%ZÀÖ@0'Ñ‚÷‹âïHC¡šaf `¾‰±XªÆ¢_„D”*?ÄÊx{(j~§27 12ºÚ1X$3Ú OÀ*zÃåéQB·û HûrØPžL(Óm µûýÉp |Z•áoŠ2ë©iÞÍî(-q°‘¨ägŒd`=ªº¦rÙâ$‘&E,ÕÉɉ‡QSÖÚ{‘–%ÈP[(#N7l° F°ž!Õ£ ‹îbbJì!ÖÃäF‘æºZÁWÛ¬* ÀVÅ’Ø#“úˆk‘ò8Ê0\­ÅÉÖH!Q´é¹%¹8L4ນ\ ½Èàé47K+¥°í—“‹:P%´_ÀZ˜ùPLg)Y“V¯¦‰ˆÝ¸}oò#Y¾N@á„O5Uã"w(9=¢RAöîdOçã‰5züÀF1åèn>I-ê´ÏÒ,T†!ÆÂ3 €B76”ÈícÁpëå<Ú@É!‹5Y{ç/§˜‚ôÚH‚¨¦4ø/ÅÚzž}¡IÝ&b™é¹¯jIÛ-¬§Q2*ôH—¿÷8¹ÆK¢J}úB8ÃÔ=±ý k• Ï, Yl"°…Z°¼C¹ÍaÉ2Lw‰[ër~¾§"„ü¥!2èönfjº)¿š-5æ³óH»ÐcJg]–m{u&æ¹È;Q,fÚ¹ƒ`-¤ë˨Å~gÊb+/þ€©C&”L]ÉrŠ~Û‘ʕ¤Pé ßMüÜ„eSU=•Î‰C¯kù¾Cæ{ÙoTï\Jéþ%U·(õ¡d!õ²aIn;W/9û(†‰»°W—{˜K‡ä¼<£CnÑÒI¤ßîªÕ®lÏ1"—ÂSªÚ¥î±ï©1ΰ/+g銒 AvÚ¼dyUÃVRòŽ’§¾"ŸeºˆwÝ“y5Ò‘h¥@H–AtH*a rÕ“74C×±R ð: #•^AÓaF¨Q RyëzX Ã»‡´bÉ +ŸÃ<¼‰Rú8¿$ùz EL¹ÛBÇF„Rq’ìÔžrBÆ|ÍÅB牔¨¢¤Xï€l²Wã‘,¦ªƒf1A+V¹Ó¦u?¸[<>¢Šh;Šx®°þ‰¸’!“# “#õ\W(C0Kþ#£µsYÖS„p@ˆhcˆ½"ð/P®¥Ûª8Ã.;†¥¥)ª&W\ÉC†œE‹(l¸%‘9¾º«† +ù*äsEKúV¬«‡3”Q¯).I/i—° +ô²|Ä¥d­lºVFõf‚6å\“nÚ=|GÏÖy'Î4—°Ü5é%t«‡X;wnÒ·b$»Ð¦å(….&:n€¤Û *r‡1•îùˆáU"K%¤‡!µ¨üH.^Ù*ݳ¬ac?]¿¥æ1N¡#29NҼ‰®"Ò/!ds4ÂæÈuÈnâó¸ÖõxÓrçÔ æA¤« ½žîT:@×êmäAÙv¸"{õ.t÷¸kuM©UP¦(ú2„²~úºŽoqØ‚ Â5J:jé¥÷¤Vg‡ê¸H4Ëxò‘Dl¬SÄžíQÛ¸UÁسãt>¶%(–¨€SÚIJƒë¼Ã6»¶šÙOÜ\(&„¿B×Zýa¿E @Ó3º½›˜’èRzÄ®Œ"Æ–°)CbJS6ÔݸÓ?`*j÷åÝJJšƒâã–Ã#䀷 +—Ì»t}¸½7›¾ªÇÝᑯ-Œxɺ•sUŠlwà ”÷× HXÉ a?ˆ=7ïûÍz-ë#jnFCêÎÅ,0 +š“øŠ8A`žb0ð–G`K›/R1ä)†w™Àù“\æÄSây>ÄK• +ÖbwdÅ÷~kàÓ [‚‚È„ ¯PÃq¸ VyÏAÒÕtëÊ1Œ$D®ìÒìHÕåÙö×R}Pcnýâ’Ÿÿj´@[ò3ÃæÅw,“Ü)S3ÈÞŸ-۪̘ʑÈñÙ!…¼Í¸»´?§õ´Ï«q·NhÑ@ ‘‡=zP©Ì¶ |¼ÌOgòVö KÊa/GÚ-³»D¯^ 9~8 ÷Ú?ôé¯Ø•O x*÷¸£L‰¶žÀ¢¤+(þ&q°‰÷5…ð­X»ù…õ†õ”'ÒØówò‘U_—©R:(¡ÉG( 5‚ÂN’J9µYt@ï¿?À~ØiÜçl?ááô€ïîºǵ­j`†êI2XZ¨>YLoaKè P­ìpoÁ´ç&EÕKØ{\ç$›Ù鶷Q;<4!¾¨µ»^¸OEòFŠ?_»)²ÜÑ0Õ’ŽêK"øX™U® ~Hs Egã¢Ùnpv! Gq n·úlWµK`€ÕnþÈ´“ Ü ”|Yg÷[J±†+0JkP¸ ê˜5Ð{lºžDM_Û÷%]Ïî7<ص™ÅÅÊ¡8R߃b»è© #+ºh\SŠbc }ΕN7§ØŒÆ“Y%±nŸ®¤‹ø(Æ{s¬.Bƒ£Ý·2Lý@}À°Ù êè†ÌÒv°ï0Ø `³ðJ%å$¶1f‰AºC•fP1õ¼˜ó Qêo¦$ôofk9¶KÂR  ƒ¸íÌ Œab'Üž¡Ûi>ÖeiqÝÄ>¼l¹04k7ŠGõÈŽ~«ôpwh/_.îÛ,{sŽÂÊ›4»Yß é°½Ã~vAœq~î9Ý'`w•ný%U£™ Eí%$#mwæçíú–²­è!Ñq¿>V<½F I¤œyO*ÈG•«|> Ù€ вOõ8WL…€E“¹ý º°È(°Ûâ\˜,¿?!K‘›dÆ/°¢ž¼ƒY…Å+ÉA O”žZžÍ¨~([—† +X°Í£‹JFè²ø „Õ“èªÚeó®«Ð±¯PÁ·l·I“HC‡()¨”êÅã‡þPVž>¯âä}‡ciußT +²ʉ.1Öð’&ût Ž'L°§É´Ì-üEtÖy/$õY@»`k?šR=ù´»T~Ù( ,àµû•‰TmѪ±ÕʯôÂF‚•{Ô¬Æk&ºâ5—T~­Áø+±—*$uÚpqX+|GŒ-¸CÆÀãY‰ñ"G3wþ»ªž/¥_Éd±!”Ìýí/Pßð—É„r÷ØØ9ô®Ëm'¾2G€ò +‹†™B†ö»®) 1ãaj–ƒ^($ »Û!@˜*Î%(OùG·WßÄFL’Ÿì[ðŠžRŒ¯àM-;‘=÷Já T‚…D2zh,|yý +/P´ç¨+Hx!v`ó^cAЀ%PÓ[#Ä¢ý‡g 36:‰S9Fpa†ó„¸‹ñŠ7ØXoÀ „' 0aýÜãko%«ámø<¶èÅè¼Â\˜Cè=;þÉƃ„ìþ6ökrÆƬ ºñŠ¬ªÛ0 ÷îC²30¾ìÏò1åNà¡Ä<¶¥-—Ð}|<(RR+~«ô!Ȇ£çë °"³ão˜×:Á5K<ïú$K:Ù0FË’EBÇA´A}—„Ž^¿¤ž†x³ÃóW‚¹Îñ|@L‹`3R¤Ó¶B¶G¥õ8_v->¯ ¯€Â^—ö H4=Þ3ˆË(S$¶ÜD롪f”èHI6óNľÝ_^O¥ßOùñWDvAÆ2Ü‘lÑ…ø 9!Á“A“'æ*UGq¬F¢^ÖúÄÆ{œÉêC¯!b{®««¤Ï©òÊûò‘¶nûRlÓCIˆ9Ûì$Ö€fy‹ü¡3Bl祵Ô!ÛE)M¸;@iöiD$Â`SºäÕÆ»Ç0vrä¶-I@æ´ek2läBÖÛs4^¯%xÐÒý®”UÂÓBR£dŠº¾,¥VÁØj»P·\$Nû.ÎKà¢-2¤ÆOe‹›-VB¯ (X·H³BH9_³agÒ8ô_[ß5’MÜÕž®È¤Ô€P“®¨6¹€ªŒÜžeÙÓ-!x†¸jI ßm÷õÈØ^uMØNÔ5û2Q΋%ÒæNB9$à>…㼬¹¡+*÷jªÐCN/Kì^·IW g(±Öæë´Ä÷Ž +‹— l´OÍŒ(e Ü\äl<}¶K™–å¼.•&eùµ¶µ'œ‡ wqþx{`uJh|Û5ǶTK?6/0]­KÅüMrv$1` ¹¾7‹id·xñÙ +Ri§/öœæ}¢Rƒ Þ ¨ïfA噀.ËsD„ÂX0²á(û&uØðÒ‘wö¾Mh„bà,ãõFÌ»¤ë„y»£F s±¦â—4A®:É¥Ý 1¦GJCÝ6{ ƒú2ÈÊœ!’EzòýÐ6ãK–ê‘:v -Íšd­÷*šÐ©fk/p½#0Ìm’ Àù*GŽdjFå *%({ïQ4 ¯ Ý8ƵÅíÒ[ké,v* œtÙ¦Åâöȩ̀o¹ˆîÀlÜÁ^ä€` CBöTc|Ô÷ú¶W‚Äñ:ÙÛ`‚ŽöÄÔ‰^©s¢0fÄÏæÒ¿ß—Fj±(’0j!–ˆÐ´D‘4Û†2«0•õPR§&àY¢îxžÀOC”°ôè@j®I€zø€4û@" àiÎ;IÏÕ¤gÀÂ-7ñ’R(H­ËræI逮 ƒN÷à Q•O¶Sô’ëœÝUƒ‚±L”lj‡<Ì%Þ!t_Íá—@ŒN$@¨»­('7•d’½Ç_ð;’š=äf‰&Têœ<£fcJ‘Íp(‚Ýž2à>*„š%’àC¬a±%Eæ%üSXE匨LˆSvnàÅÍ_Imåk§C¹?.m. Õ~X?`Zð\“ÁôþœO +‹ô^Ât|v%uÔí¹²gK*kß8Éä«#s t•t]Ý +R¤l¬ä°Šíà Ó_ÒCV8¹Cᤴ¼:Ïh%qÎu?÷Á__0CQZ$MâwVˆ?³‚‡љւE¸«{Ñ—ÜÀüŠn@—Þ¥y«b݈Ø.rD®Pc3ÜmÇwÜ¢f´T>A€¡)ùÚdk0ž/™G{29WÐÑÜ·&íÙn= +ëì¹ZÈÂh„T"ÛL‡ˆáOsâzãÒÕqe_Y¨/  *ÖóÉ°-™GPQÂwݾ;9‡©HĪ7Í ºŽ€ÛX9—Dj†ëð‹ÁՔ훹¹2Ì“¤îõ¨I\³ë«âsl<.YæŠ,É‘˜w"{ÁΗS½ï +¹™Ø¿\ÖÑ/®rÊ] šŸÕX‡RÌOj³údŒ:Ò4ÁÂÜ*Ápxu¢õ}TQÎÏ¢@×á\ª-G­›^ b™‘C×äXBô8˜L‹Úà) Æ;»(ƒ,€\5вw!ì`‘ ”‘Àºäoå^ÒÎi’Á‘,u(¡ÆeŠBÇ å+ ZŒÔ‚’'öù"ºÝÔ˜Žd¤¦žàŸÚå nà ºg$Ì‚”ÃÈ„DšP;ã1¹²ó7-˜RJY¸zéó$1º¬ÇD,ýô~µ%Fi•â‘­AŒˆŸÏåý°Ö]Ü3¯Ü¡±?Í7ÌðT/_1$"98*ìâ®´¬_r{_WK88þÁD@‘ÿJ—ÖË`+‘‹Ÿx?ÿàƒÝÂgWs\߯ý°YP™¤‡šb¯¢CYvá~l'êøÉmË¢Ú$øDµª]®ØJC Rå\RœNÎåõ +xm“sG" IC%¸„‚ºÚéâ¬v7-EÜê¸ö¹dÅþဧd$§ æþÊŸ”Oš|e—Hù‘%(’üÊgŒë°9"’;¸A}¿$®‘àf÷ÙÃ;dogDo¸"{”±ß$ +T àLq?DŠåG६׶(æ#ÈÖî%}¦î°“¤‚_ä¡UF=øŒ¯joð‰ƒàœ?ÿK#ÔkELl L‹@>TðÙ@Ó#ú +1¿{àÅ°{IÓÃ|Ò«É1͆U†ÐÒ£ J0jáΣÔþF!¬ÝýT©k|ê‘Þ(ßÄÈŠ¸­$RL•g͈7ô¦ ™»z‹S=˜Ù*$èá°Òu‰*Óí@ ‘‹¸%åÕ§iÏuä¡]ÖíÚ‹ I6(¾SY«ï)º½b“;…»çw¤Ñ<ÇË|‘¨ ‡3pÆÓÈHœW¬û cæöŽU£0—ÌæƒÑØ&9ß~H2¬FèL–êðTL½Fìà›Ýç÷ùTZ)³c­'ÓM{HHm=+¤Ž®— ™—ôŽ‡u¹¬Ý!ûÏî?× †$JÒ$"°fÈ&GùÖ 6>[w?µ† ¬µ§¼!QÑ\ç‘ýîQE'£)êTÚX^€™7÷pðÛHó¼°Õz¢;´š—@¼úwÃ[$4Jîr{˜Å·ÚÇ6wrÏMkò…-­ËHE'-¹Ç ô)õZþ+)nRf^ÞZjï5ÅÉ Ã%bð”F ·ƒr–«ù:¿Lá È:ëifÁŠ=-ÿXòÞ›¼$ÞNQ³`±Š?uuë’™Ï?¿j”ÖŽ ‡$Z—,4ïÇ×óª˜2…Ÿüt`M×@ùzzšÐ}îU]BÚÊeüõ¾Nœ´ôŽ¬íG1ávmVU²=Ë£oü¹‡I™ù,¥4?§F"uÁÔW¼?Û5ß@ã ]™,Þ='Ú8ˆz­ cbžN'}}YM¦!æu™²]ò²ü8SÉéVqò³Fñ\þÙè­ÀZ21›‰DQê¯ a^ÅIµ‘Pö­; W¾¥fÙ†ÃX9SõàÊ‹Iã1çÅŒ`óyðg¡ÇÂ=U|{x;gx9铧•- +)AÒøñ&Uv4Ã; +µIë2Œ \aûÉ9¦Šã±N|‹ä²q‘©»Š¢ÍÕ ÈI@¾de]óš®y]VnWI§ ˆ½'ë®È ž^Žì¾‰ïíÆægtª¾fDZž¢áã)VÄ‹!L¸•·Øwz»ln +[þ»ë¤ëäîgѹæ˜ÚT ¶’èQàAfÓ@ñîÛI(·E¸_ï×÷²+,9=q»°3ùK¶Î€87ãz„U_ C1×ù%9çi² ÷ÊËXõýˆ†è+†û/À2ë¼” 'àc†•à›O²]üðÛêèxŘ¡Žá­ÊM½ä²Ú÷ø,Ú*Á)tÆqVŽò%&0iÖj‰ ›¾2qd4¹›¦?3Ôµ ÛkÔPâÞ¯¶´L}å~ÑÅà±Ê3êŽí˜Àÿˆ4+Sš¸°`ùvñ +–ÈýYRl¦4w»4×%û¶¥æ ÁÑy§SG%¸“©¹uzˆâ+ßÒ†W'1 q>n¦\Q£ëÖaر”ö¶õ'Eú8â—™•¤±“ç,“G2=xýÉï·5ƒÄì—CÚ"Š–®íÃ`ˆ_ò§³ÏqeD~IKö²š"°Ýfm)áÁ'«ã —ö©5›}›n¼'™5kl#e^Àt”ä˽J0òe³bŧG< æü¿.F²8ÀŒ(]í!3ƒ¨¡u©Ý<¯¼§³ÉÞÙyµªF Uå¡gø.ÄFN܆«é]¸16RV¿Á +Î@¢V„빃«.Ã+ôH({ ÊT•;­Ëfê$[P¸ÂÜi/ÀŠ·ùº]€&Í$U¬ê¶×®eUò©÷ˆ-#ïcÈÀ „óé ÒõÅJ'v—@T¥”×2• XPviQ4z £Ó&=óB}€¡ Ê‹ç Qï·ŸM-þI³˜Œl?™$“ÀÄêAÞ¹ .«Cê{T>ð85^™F›¦/ªè/°¨…V›¥vl&ÄTgs&©E6ƒòô +!°Ò]Ô€Ê!Kñn1%âÇÉ>?é^”—.ãOô²·—œ¼†4ChcÆ™tOaYÚɦ¥ü×Î6eüñt ú€À,S.¥çâö÷ã%B¥d剅ôaôpÌ~$ÿ,Ý»défº"a¢GIPëêÔ"‹w§›‚-< +øVéŠú“Ú´­ Žk/ÅMKBËãN@"s:T}éÜ•ÄLÊS®©-ÏfaG~¡IG l€8€Ð´Ó$yi~Ý~°r +æËÝ“VžN6cª{ìom~‘þاûz¨XÚÆfäÌø¾?äÝd¦ÌT&¸/RÿõÍ.Œæb_…±â´·ˆ%~5EZ“`FSUóúbì“p;'q(uš‹É²,œ~‡À”TTo´»2ÞÕMAÇÛ-$ý­D·rX{Åì,Žš²\Òœ8-9Ü}%l‚Cf“Ú™Ìý¤¾ýÅ%}´¢zÉ8:OboG$2]ìÎdé¼'AË>È„jرp`Ïa·ÁëT±8°b[„6¢|`òÙŽáMA;ÀØ> +ôËãET^üW?à©äÌÄéÑŽs]Ôgÿ»¿„'P~ó†0qÙo§øa¡¼Gꦀ‡l‘’RAƒì3`„IV|öF¹pˆî†ž,äNž<ÈJ¾‰!HshN÷DjÍ°˜R±Ëà×õøøWjö°:cJEêyH†Ùtä¡$ì¶ãÔŠº"?ïMeš ~ûûÀÐ3Õ×L¢b¢Ù ®±PM{Ø +ŽEÓÒ]<5´—Rˆüì幈Z‚SÆÆQ˜Õ–wJÏÉXsæß«˜Ð˜e|·[À¹cI(¬X Ýtí†J5’'CÒçAÜÀ¾fPP Ž[l, ÷3¢Øý‚º„”a,ÊCûâ QÚ|¶ ‹ˆA9'ˆ¤¶ ‘ŠÑ%’‰±6-ÙC0ˆïç €–è ðlMÕ!óYºQí†}ïQÕM7v¿U׳x³c¼X}u¾Ô9IbKƒñNtÕ¸öÒçTW+A}áAä2T§A* ,»—ðPb’f`ºíwà€Úú’/rÖª†Ì’Æêò¥\ú·/¥B—”+ªÆÖêâ+´ã±ÅꥃÒÚ$,[rÝR#xlIµÈü…k)½Ägm³æÓž |6 œ›þO#žÓ~ ¾8C™…G‘ç„f•Ž¤&X*i¶ -Hb—ì4»{fÇLM3ØH£Œ½|î®zìÚù°®Ä³3Ù‘·À1CaTç‹Ç-'£DnÇ›|c"šÁ]Ü[›+þ‡»ü?‘è2÷»ä€×N‰`HOt¯©þ ×¥ÈúÌ3ùï¥ÑœØʆ€k°4®%‚MB*”7Ö›¿} ÑJÏpy'Üjyân$sfã®*JQ a!šj¥º¦z1n© rÐùø@ 3 Ë&þÊHš š¢q@$þ@ªý3žULî§i±üýSª¤3Ú—Ÿ¿/郊¨ßÉþu‡À†€m†µ_K-°ÝŸƒXi{„ +Ë]+nÈahžª›ñ±2æA8t$[ÒenÒ2¾ Ò BK%.kg¨(ºPIÓÖnŸ…ˆ»€*Ó̶_ŒàxóEÒ±Ö öÕíWð” ¸)ÄÞó?uɶëßCZ°d›¥JŽ’u|^(8 fQÒþwGOæϪ’%bR™ 2Qïíe'©4˜‡)‰Chv©,ˆÄ›¶/”C„( ¢CÃË mbØp ú —@Ê"©ß~J%¨EM¡Hc±çt»ÉKˆÀTxó‚ÍhxâNæœ`dú’ÀC¯ +½HpÙ½‚ Q¸WŠŠ`Kع~¥ƾjÜ!=â°fÃZ‡DK·OðéL«Yð88nëªÉö Üt§®qZý’9Ömé-kÜnËßj^%L_ývH) ÄRŸðvñ¢$~_Ê— ×€Þ–¾ôˆTíé©ù@¦æîØÎÿKL_ho¢/ßá¥<È%’XE”>–æœ „f‡åŸ­À§”[¿M)bŸ]LnC‘@ ¸º¢7áÅ"ÑAÍúdžôbqXøjv|[µ€°ÆË'6¤»Ùðiß1"Îq‘vûŠQ¥ÑK‚À+2˦󡜡 +BV‘ +4»0[¾ ŽJ# Äò0— š¾.t²:Ü«ŸËü)s ¬ÆJt„1†&ˆ¨}ZuIf¨D¤©*ÐK›²)M¨E4›¯àý>bÞ&‘/íêÊ*¹ì'Á☣ÂlöØX‡ìÔ
êØsÆ.×û5Ûépuƒ›ý³;Y®¥ß1Šµ…R[ïy\{dù©ŠV“³Œð\Ô0£ˆ›÷-Üï 1:MPma~èÑÜ{¸¾MÜo óY_`Vþ­¹«$¬Ümëɇãp +À+€f]Òuײ”c ˜,Å"tP¢YMž“]ÅYʬ‚n@y_:pÇhç¿Û{]ž1àJÎû`cC!ÓÖ½þŠŽ+J…Ê5ã¥ÛÊ’¦ð{ž½™6»´2‡@ë+½½`Fñ;Ìÿx@Û™+6"¦!Uõ˜@š¯e¯Ô²ô¬dw’ +.;m^áÜKü:ÄõV€JeçvÌú®ß|8 {½˜ôžÏ“iAÆ=è_ÿ¼Ì£jxêDö,jô)ÄÙ[•KeI…·G67L-L—3ž°n˜Þ‘îBÎÃör`ñÀ”& ÙÃSRW>`èÀbnb'ŠThZ¸q:c©‹‹J])(Ñ-š¤PìŽÊïtIqÌn_âOt:ð–D´âŒXªò²¹)päML—FÍ83ŠiÀùòVø“Þjˆ(ßoj¿}‹"¦ïqBŠL¨Ž¢‘"î6(+Ô)Vš.aDÕW(ûõh¥^ÍTþ©I®B ¯ù·J¢Ú‰Où~•ôbàÀcn¾Þg‘#Ü”rhT–µ~–]²öj…Õï›|¾…Aíµ(–‰ê“™{±ÍÚ­ì ‹ #™øNbª*öçÅÄ.½w2E¬áÄú·ÅTͨy<ɳn‘NÐÁbÄŠN‘m€ìOVjú¯ü=wìÖžðèä9æK“Uèu+è‚h¹­ðjÊ…`ö²JÏ⬆À˜……yžŸÀUŽ®Ržë@E$©Vè<|¤nôV/•Ϋ\¤XõÄäúÚuÐ2­×þŸý[O¤•8°Ÿ=Êá@î›uiɆî}Vj°p'èRCRÂóª’éàFXkï° „"ºmÚ%IQåä•-WÖ(®"Qôa½ +´¸=®Gº}ä:…bEWaŽ÷¿"Ì÷n#2©+áÊí²ÉŒ5x!Kx½Ãfûs?—r“9#: Çň˜Ã*ãBªÊ´~0ËYš»¶ó¼ÑwlØazýx ¦d»¬<fœ¤Õ[½k9YV›!ÜÂÆåFÇ â8Ðn˜Ñq¤:ÿ–@BŒ·„oÄgªwT/oªv©£sAK° òÊ£ÙÏ*mHØ& æTà>¹‡ë/¤F¹Rî|ò0bHÌ{:Wøºßé°ßµ˜ry †î9×ËS"sÔ%¸Ç/œô¤:()¾ýuµK‰½*d¹–¦tÊgìðÆ-‡W&‹=ßWŽ`Ú}Ì­òrÁ ñ†Ü¦Ò¥ê|÷ µ “8J»¨( Ì¢$R +$u,u‡£–^ï]yB¤}j‰B(Ã÷¿bÒ!¯Tn[} û§€x’²ËB˜z5€zX€.ϸ*à +C—N²Å‘udY~"’AÜŽ[]Ýi‚Gد·s³âå:DwØ£ &[eƒÍ¶@÷¡·|=¡¨>ìàÚhœ<;8^ËÖWÚ‰‘0]Ûቼ9Åh(º²Q‹m()9 ‚¡BE‰u•t&†OC€rž’DpÓ_¡k«F&L/Iø6×±SÌû÷4ÃÖeDzÆÛ-+”ÂænKåì;Šoþ„»é[ü)Nô3ç)oþ—?þøOoöý7¿úýï¿ÿÝo¿ûëùî?üê7¿ýî›ÿù¿÷ã?~÷W¿þÍïÿýï~ü×þÉùž·?ûwo÷_þÀ™¥ ö¡ï=ÿùß~ÿ«Ÿü'þñwßý§ßüÓ÷ßý—ßüú÷ÿÍ?Ðßþü¯ûû¯tü›ß}ÿÿþæûÛöOÿâ®_¹úèû?ýænà7ßÿËwÿÛ÷ÿýõþöûüýwû–ÿçßýøÛßÿ±ÎÿéÇþØ÷ƒ°Ò¼Óÿåûßü×ÿöûÿŸ·ú·?þ[Üj¿~ö´Üëß|ÿ»øþ·¿Ýlû¹Sóÿ~õï ÑûýöÇxý͇WûW¿øþâ¯ïïþê·¿ŽSðïο¿û?þöoö˜ûýv¿ü¥›ÿòûÿºŸÊ»¿øÿÌ‘å#ù»ý—ÿ–çù³ÿã·¿ýÕßÿúmþ»_\o±ÿïïþíRqù××ÿ+/u•ëíÝÿñÿì¦{koÿáíÿü¿®·_óWû‹_6IÝbqÙ"õ~ØÍ{!€yßüí‡æYb ü퇓üLó9Éo_×ø¿ÿ‚ê$ºpw… rIX£ÆZ—ìÀEYØÁúu£‡¿¥%£d;D!KŒG Zį Œ¼§Qû{^û»_}¸!¶ ;È=··‡šÉS¿E#*¾Íèj|ëÔ–Ñ…òÜ7q|êÜÜظ||~ñsßþâu`ºÜHsßÞXq„¥º™‚ï›Ñ*ŠŸdyr#ñƒëÎë˜dñâ ~ +ÑÈÅwGœêÆÑJ?õ”çuBqëÊ›~pRò“³qNtôÎsx`Ç3«wôD¸9~¿F©ÊèWêëÏ—|‡õX€ŠÅ%ÍÓH‚ î)8,*eZ¢¹ß=/¿û'`ð ^÷ÿá |ãWC…„‘ˆ+öC4£ÜÍÃï—Æ™ï 5§·8Aþõ8-?=eþÖú‚h“ þ¿µÎpvé‹Æú£{žõj¼J4x~“'˜óôžØÏçD<ü«¿Ÿ†¢¬_/bŸû9þÍÙˆäN4¡›ûÓˆÆË«[ ò›üst:Ü<âá<®¹¸qǃo_ýý?úv:ä|5K¨.ß –Ñ»x-F³„÷Ö|EIð>¹ž&ò¡3>ÊÎŽ+Ïä G¡ŸôèÙZ< +º2ìÝÊ–?Oº²+€‘h\ùI¿ûÒiΩ…|D¶å4Öq€úê ÄÉz³ä éE³Šªn.¥´ F¼»§øË¢q¬8…Ô£X7y_ý¹˜ Q<¿s°<ÐɈæråÐK÷‰ý¢ J¿»'Ÿ$Êsp£m}/ìeÜX=AÙG8GÄ% F4Çë~ÛÙ7?‚‡×ñÕ[xT#| +«9xº‘nÝ‹]¬snO¾~ÕlܘòÇÓæ+]dŸã:ÀÅ£  77O4’’ˆ×tg[¯ñŽæSb:ùIóB *ÿ¾¶h쯓þô|er>x©Ý^xÝÜbÄ+U•9´+=#¾-˜uij^¾ +NPOß5ÏÕw'xyi¯°žbYqiTæ®U‡NSW÷ ø[6^ñ> k|n¼c…ýÊÏÅwÀ^ãA=;í~ÈfÑ<õðÕ8ËWkÏÆ'†1›{`j®û¢qæé›ùêĸ‚¦¶rN %éK“Øgžh»1C[‹¶ _Ýãê —Ÿâ‹@öÓUæó¼>0Ù«zvdUÌ/ì55öødê‰a°LÈÆ373‰æÔZk;sû•s;ÔÞìúäI?üúë}¸á¾ÒìIôCcïoŸÏ|Ž>åÌÃb Þ9µë<ß+×9 æ¡{ QÆÏÅU+ÊÙLáËÏøöÛDËâi1¦úô³ÎÖ•ë8´üo~‘Íõξ1()¤ôŒóÞw^AËÏ`±–õòÞ¨E^óÝÏýÍ×k±ºõÔÀá\"´ˆÆ™OAº´ßÄ „Iˆæ:²o=!'1Ñ 5ïrNðáÂ< +HÙ¯ˆUOüÍå*±ÙP\÷ô¼A©1&øŒ12Õ\3ÂH=ú¶X€8i³õ•+xæÏ)¸Î‰F»ÀÝE[ï#¶Ÿ™*¢ùÎM&ºì‘ '8sÍÏÅ3ï¸ÁhÉÆ ( _½ƒ×7 `Ó+ã3Ûù‰L7³û6šsÝçÓ>s\™?Ð)¾zÞXqaâõ ~W]˜Â^Ÿ}êbóøm6_m¾{%qŠ8·ÄCÇÛWÏ›w(Àæç;¬_¤wëà!¶T4žÀúkâF¹Ø¹ñz7ÐtsíyiÆ Î÷U¯|ýº¨ß|ýÂ^_‚â1cù8¾µ€|eÐÿýîû“óþçýƒÊÑüÿªð„7é©9â—¢y¯L%›×zs#ö'qSž4Ä"óÉï2væà(Ä_ +¼ÅÔõ<•'Ú®ºâ—°Ì;F8ž”"•xþHÇD#Øñhlñ¨ÕÜ2c±®Ñ²oÉhÄDcÏoò¹bËfSäü¨õçÙkîщÆz•Œ­Ä³Ÿ'´#‡P_½~ý-å j)ùY{ŽUcô¬¯_Ï?.×»9ð5³]Ïã9pz/§aM4fј–¿>½l'õ™YºZNÌWl n9¼Tp«Ç· &kåµjmŒŒ—Bú§ÆÞë9mnb¦cl7ÞãŽ;UääFœâ¤ýü9°»|ø±°PhÉuA#)Ï™ƒJ©‹×ï?gs=ƹ­v¾ÅDñ¨Ö}¦ú'%©üê™ç­WnVÊÔ$¤[h9.×7KÝ73iO®+4¿—WÜò+—ÌrNÐGN¯âºøýÌþHŧ%‚z\Ö½âѨ–ü\Øgæ ö>ç¬Ï}DßJ!ÙoaÆBܾÈe¥Eh^Ï ®ûÎyŸ)Ù϶±íÊŸóœKãìÙ÷¾cÈ dg}î|å%Ï”ÑZ‹ž£æ(4‰ê§ç휠?D†d„’ç¥PN^°Äs¼–™;>2NâŒö’$Ë’¼´Û[è»íÉ"ª² +pó=òkˆèï¸}Ã+÷êö†É¸|\œ@z²yÃÈظ±ÞågÅïAö™”)9”aæõ;›)Û»±žÉ:Å2×=“zyçDLá]2’œå,À¬vÙÜOØ(Rø‰;¿Ž¶šAó:CÉ·6«ÓX4^¹ŽH_ë›øû2ÏË|1;JÅ jÏó>ŽâˆÏyªpc.ÛoïË$lÖONPäy邲3c¿rõx¹ò3{äÊOcÍê lªèy/WS (@d°ÚŸ™/R&ÌùÆV¼ÐÆížá˜÷ì5VFÐöDÏU+bIúgX=ˆïÜx_9èZÎjüýÙäb~LŠNPWòï_•$lãåä‰ñ¼Fd¨¬ó‘ú¢®/Ò Œ¹+¿°Ëµ¸õžÂwã<Ó²’´ÑxvÖûó¨ç}åÈÐË­¬óÙœà#úîëÈ´yVmÄ…êÈ ¸ºPóÀ´¸"nȈ¦¦¼üÁ#Íô{yEˆLÏ5»ŽÓõqÚ~…žy¬ÞY¼âïÇk¬Þù[Wl¼«'ÏZÖ‰FÍLJñA®Ô’nrc;‘³  LJæ}ƒÛ/¯ o :^îÕF¦MÔgcÁN4ö³Q™± ¹Å¤¹¼Íu çõéZÜ8âYr®y›LóEþžÆWRŸ„6"’쨈ÚO‘{§uÕüû“Ìè£Æv¦«{Žs‚W¨´zYñcÊjGXep4–‘SFŸ;Ð\ž³îÜNôÂl™× (žl|³V;µ±ö.ÿ•kÆn,¨RÄ\h¸×Ü#þ$ô(û|HgW·î}G'oáy„Z×Éÿ)gú:ÁkÛW{[ƒá›FãI)Ú_‚"ÌÃN îî’Ÿ¯³î]ý9ñ¼ ‰×uÕó-f±‹³«ç|¿éÏò6.ÑÚï,…Ë#â#¤kqâó×èª.¼¸9/–¨,CæS̬ÆéÇô×¼öSçÕ`Øž}Û0jM¶ÐAK)›Ol<§ïÉ)­à³¾¢Í  )O Ùý}`F㨙.¼ï(Ǫýù´ îóYù#½fßùéÁÀ>1`?_Ø…—ÎIäÈ–ƒò‹Ú¯ð^Y¹©õ9аç•ñŽïc¼OïßQߥñlí_!+O¦ÐÅ سc|2íTÑÇc\]40Ý<ßsY#û+’½"‰§¾wnê”aû6š_!­²ù•YªýÕ÷9¨ÊîGÆÏÕ²ic=ï8½b¦±ÎvBNãü˜u®’}GÆo½+ ¸y¾oþܸ'‡ÿ}3ŽNÜxGbjÿظ³±Ìšß9̇ü±Rœvöü±zbÿ;dô<ÙÁƒ˜ÃØù¤cœÉ¸Äü¹ÎŸ—l¼OÎàä'Ô<å 5ž'¦¿!]Šlk VÁ8ò䯮Ì)Ñœ‰™™z5ÎSl(ÙôŒœ'Çy`\N®­Ô¼ƒ Û†î™àÉùÚl«ùÌI¥Äm±¯>YÄîåjô÷%˜'wØíì³;6~4`AP':•–ÂÔè¿nÄÌãZ7'¸sö•®“Çù4ú oF{—Àk kEÆ.×@Qy‹s^9ózÐÓöo£y®hfSÌÛoQ«Å¬ûì¯}çYKɾbFEã™æÛˆ»ªïÂÒúåÀ)N’ÆÚrSvÚO¦´”3ÖØhgnH0á¬íä/Ï|x9ƒåÆ@¥try9ÞgÆè/„á4ùÚíÌœj‘û PUå8HÀ3 +"¡wÉ*ç¡Ñýiöi½»Vþk.0ÇÅÀ¬…»x‚^iéyŠÈ­<±J€!=)|J6uÌySWɇ"c^7>-?+<ÎIW ‡ Ö¿ü Üude™Æw“ó]êëq[/йúæý—«fc;1o}‚v6¿%¿>¬6óÍ9ÁýdN(î<ºÂïVõè{'n¾7£ö{?Ûg”Üs—Ô…ÊGƒEË·Ñ<ïœÊ°$æŒãfG³g‘˜3¹Ÿç}ÕÅ´gμ@ú×9ë·¼Ãàöw¥ªËåq¯s2 û¥0¸«%‚{w Þ¬ZÃb0Àùë9Ðc¦ÃV¬Ÿž-ûï. (?öÜtVgòhœgKTŸöÂ!ãl“Ÿ}äëi¾ëâõ©§ùõ9`Pœ­¹xRïõ,ßwèý*¦Ù;:+#y föFßñª+y#ðXÉ NN‘Ôåsͧp¿+†ÜϹ¸Ö9ËÅ÷|ûZ<ÏÏ\§$ìUN4ÃAŒûà +E“!jYESóÌ©2˜ý}Íó |ÔéÎFv¡ôõLÔã4ž²Å=Ûë¯bŠ– Ñ:©„Hrõ‹Ân®©õ<Äë]½ÜÞ+u¬ »©ÔÍ/…ÕZ±¬ª¾S•âë0YF‚½ä îÁÌZó÷Ù÷DQ™$i’À8ëMM¼jq_ïQ°Ï}âQO×3Sõõ‚¶­÷ ˆO ß³ØÔì›Qœ¨B†³¯×üÝ30ž\Rª• önî(2ëð3 ‹W9ˆ\³!œ¨Ù•-Í‘'•'FÜéz]€üª}ýý°9^Õ¿»ÅSA¤6'©ö"#Á‹Îóèþ|·2EĉMèÉ êOj'g´çE*S†/A‚ÎÚûK‡$ö s-ëu]¥gÚA3O\ìI‘§ch¯Hz–ó÷W¤c¨@·X,, ×u?_µ1\jL­ ¯á’+“À„IŠ¸ë™ª{}q%Ú•t¦u˜2™å d}ŒØ•ó¡Š29ºûÛ™ûüý E=\{Õ¢Üñûm¼Ãmf‰ŠÊX=´ŒšACó_ájÄGÛòúûë^W ~rÒ'€À/F=MO÷—Ly³b¡»1¡È¬–+Çs˜kM*–C¥aOê姜ìðp9Ç}º„(gÃÌ5׿‰¿WÝRÍš+ò´Y6Ç5în¯æq"¸Q»Q ßx61ý‹¯ŸŒ™Õˆ|JN“=ù*奆UÄâ¬3Ñô{]í¯™~ä K&ŽÖ¥lÌ­¹Tªò•×c¦ž¢Ø04#«yŸÛ½²1+ÿ*× f>šr­\¯¯Ã—8‘Õœœ”ºÉõ¶F¤>¾ÔRòÇžC^¹{ËÔ¨Ow{ya™”RÈ‘÷•Œ?@Ÿª9hZjåvqžW¯'t[ÉwÔ#ʬÃÕª'rC7.~kÞ;fˆ6œg:Aí §Î“ÉÝBVoDû=Áò“d±:½°ˆÉ6sFë98"ó%D.˜p?êD\‚ËÄõ¯ è×+Üÿ†]Ɖ#eÚ[´3å.¹·ºÎC|Õõ´¿I:ŽðßÆ®+‹ï˜{*hæ³ÂƽQ8tÐhžåŒñž;´×´6óE®Ÿ|þ÷ëåPYäÂON¬½Í佸¾Ú•þCž äŽáÄ~¬Ïy‚Ù+ŸZÏYß]ÁáŠÙôm4ßWΗ‚Öæyϼv­÷™ÚzwÞûìkÆ”ë•Æ‰hŒÒÈ€IÔÏ 2žxGh\'i9²œÍU©ý•½áïÛùûÈvãèùrO új^4—Ü]Á‹z×w8ÙãÆuÎZÖy¹¯ÄëHÄ}ŸÙó•hHž™aù÷µÍ÷_©sÁˆ¬U6žaŸ°üqù'šë+‘\¤'x¤?^léÒ_'˜ONWl”ɵÔ5ó#­ÙXïrõ•ÃBþ9‹iîðh~’hœ;NqÍó1¹œHcÉž¯P†ŸãËý•^Ÿû¼þîÕ+¯d®v6Ìñ£’úûðÜ$m}n¥gDÍÉ~W†"Ól/ý0'O÷šâcøŽzÊ…±|û¼ˆå$5?ðÛ4–•+µ®!ï :Ë)‹Iœè,†Òøâº#"óÉ,ÍÞõ®s‚ë‰=ìn\+añW,žê™ËÜ«¶Hßñšäc ÜgO‘¶eZ´>ù±=PíD<ÖKÉl"ˆú=ískm¥„ãòˆwpí5WÅø†HÍžåñÑ Ny},yÞµ’^7^5Ž~ãÝ1â/•²~ÍÐw/™óˆƒÅ2ÎÃøÿ\dìÈy$¯fŽüþy‘/P€Ü¨ß=Ȭ\ã £˜J)a$q°¯w…~X‰ ²DÏYÓ }j,WIò¬Fpžà髺‚çìInB‘¦eèÛì\äæ„¢‹dòzϡˬñz?]×ë ‘íWBc9ƒ9Hx?¯‘¥—~¶‘’½ì‡Kز±F>¥¿5jî)Ü OàÔº®Ñ³÷×µ‡~„=TCKz¡ +}yÞÜ·öÃ8A Þ+ PÜ‹¥E‰ž’™Î o=Ú_ש-@ +ªîÙ¶àøgÏóÆÎË™× ©û©ISâ,9U‰çëž÷‘;(OÐÇkùYNÍ<ÍkNLÝa>)Ä2¯w,lA9ܘ;¶îå1NPj\«â–s‚'ßÊÄù‚fAc¿s̼äèHÔîuðÛhÎM:³Ç9oïõL)A=.Ì_§g}·­áò¼¹síIÄÜm3öKÝ$€lL®ÂÿSBŸùÀ’®“ži<Æ2=Ÿ|â¯ú&¥ù~>|6õTËÇI_˾9U3æÌD3ÿçxÎÓw¥ÊBë÷AŒ¤8·ƒT!c ¬8„Hƒõ³ÂrYgx‰½'È’Cw‡hl9¯fâökJnž+?²¬‚š8Tè!®dtó ÑGœ'xmÙLJß„æuÆn¬çÓ5+Ñ$IÖè.!Å JN÷|sŸØ¥;—š'×™<" ¦ñ,dÁ¼ú*§<úÆVƒc˜ŒÀŸ~üPÕsS‘5¢ÙÞmÂÑû´í,oì_óÏ[þy,£0åknN ä_g¦>ö?nÌÜw·î¡ו‡dWòø²æ”ø䥮š‘@IY=SW¤*Àª×~½ÐV3ŸU*ÛìVõ ^•~™î¯2ïÓ“ò”E. '*]ã#V+N0×û„F6gVÿ&ég ´È°–óŽdÏí¶Ì]\‘t£±æN%#2ΚñëûJ~ÿI¥¤•¯¦ +ì°À/b›HÔ렽ƻhH Òo£¹ßç» ˜ì'íÈ“‹ô¢Hè}ä}MۜąåF`¾‚ r›ØRùdJ4¾bÊCWTó8Ñ ¦Çn|Žä•¶Ÿ—ž×YpvE/¹ÔÈp,Ï ž³‘GC»åuÍš[¸ùY¨ÎÞÑü9UÜצâ¦yŸ]OÍQû¸Pߣ‹ëà,_29I±9=iïN°òk˜ÅÛ NpbÂe ïr"œ„Ÿ^'ÛõÒçZ/Žvئüò QÈàÍ, +\âûgŠ¶¬ž'H(Êðt“'Èy’©oìç +öÕþý/¾zŠ_ +A{õLÒÖXšQ'xr£ÚÎó^å¡{²¼E¾?…6fÂ}¿*nq¿ËZJ^Øí°®xa –œàÐ Õ|r'YòVߣžµî3GË}#>gBIh›ú*‚ýÿ}Û©š(ùøKƒùKæ!U5qãÿGØW€Å‘4o¸{.Frq–EÎâFÛŸ‚»»»»»Ä].~÷„ân§¯ü…¯«wg–“÷ÿÝ=û@šÙž™îêªß¯ªºÚÈ@ ÉRšš¨–¶ZjU,Å|ŒÅUB¾™Lå^:ÐxõU[Ûq¢¯ÝH__xcÑ9id"dM›B†§èF”ªÏÕ)ûF}=–¦¦âÖ™*Aè@Ø?(Sc„- ¦"®–©¹«©ÆÃ*Sí}U5šj”½¨À©QI25Ä*ô&f"kR®©˜èn,l¿Ó‡âöbôÊ6©©ú…P0¶fj‹ÕöÅ`>@Ý(5 ©*Š +ÕËÅ~šòW¦f*O´z@f¦ß§’œ +OÁ ‚‹IªÖøH Á¹‚ƒ¸«Ô_7ƒpâ°úZ¡p„Z¥¨…h) ‹¸…G_åJW7«üNЫfdÕ~:8;ÃX˜;¸ÖL4d2Í+˜ +L½ÁKõ^„›‰ _±V¦PÑL³;ÕXU$FÕ¨)£ˆ›ª±ØbÕ½ Å4MÑ=8÷D|™©XþK*v fPµžáÜ(¡¸ J&Ò0cUQdkZD¥‘»êÛÆb™™*Ïf“ºÙÐPPGÅÆøG |Æjð¥QT²ši5U²L¬ç#`HÜh¨BBx*„2‹x_‰ø}‘›Ê„ïË ®#U×Ä23÷Ûoè Ñ/„w"/f&Ò%ŒsÕ‚YCxS5ƒ8‘F(Xg*KU6‘úÁ ÀÉ(l¦ÃµTTW ûæ .© ±Ân6|“@M‹Í2ávBÔßÌTLˆ‡Q4zv +ÈTÊWÕÀ9a&ÕÞbØh(Ð +3•„&S©´/„¯ã­Ž¢ÚÛó7©›5$Df ÞVi FJeBÐ …蘚èú5³jdš-ƪJnª›©œÍ¸Q´‹FFRM†¢§E]Z +e¢x U9ô Ä™J +hÖ'Ž˜«ÞÌPåõUÉLÜÅj,rtu5HØkh FŒ 5ûh5þD¡è‹¾TÜ%-SÕ3SïÎ5kê‹û`5›ve*m±IÝlªö¥‰R›†ñ9IêwÓv3hоf ºqî/Õ—©®…]µÂƒÉTõ®`W¹‘èyÄëMÕ¦p¯L—P_k*bµGïa]8±AèÀZ6i›z¼&¶¬â¸Q”©¾o&îÌ” Å%UÍFPGI Q¦o ʽp/!À/S•§ú5ÕL¯ÔT(‘ ß' e‚* 2ÂT—æ2ìSÕ§¶à~¡Ðƒè$Tc\B¦i +EhJ˜ ! +Ü,ª[œ+¨z.©*k[õRuÍؾ-Ì­ªø>òÐT:aé¡+…äYŸýçp¤HÅ dê + F}K-«·?¼=¢šq]µjËR`5)¬t®…F33CÍ”©nƒ ‘œÊ£ê(X¤Qjl,\+ÜSFêò_Æš1|ÅШ©+îoÒ'e ®ve`"ÖR‘©ò‡T˜ôÉs¨¶•˜Š•veªzªFaߪšÛ¨:0ícôp‘ÈMêf+ÍÔL]“E>*ÔÏØŽu‹«¶ˆå[õeªÚbÐ(rY±F†©ò¶!,E3Ñ]¤Î´ÄŒ‹Ój¨/–’‘‰¡Q|#áëF¢d⪌šj8b)^UV¢êˆt1þ&“ +ÏjjbÒ—oá~¡øŽ‰è0R…\¡ÑH“c¦.M|^ŒÏhªüè‹ÕNdªêªF8¢\}3õHÖb¸Y$‚j𠦚€…ºP4ŠZC3²†bŠ²è¬QÀ·¡±º<›Aß 353ÂÍ¢‹ÑL__¼ÖÔHY#¡~’¾¨0":ÐÔ¥ÄF]Õhh"VçTåágÕ×`TSÍhšÕ ÷*ð…LµÓ_)Â4C±&¾V ù˜l«ŸÖLt3ªÇÀ6}@S_,gg(nö•©¶cªD ©V¸”ð¤Bh4¢tx_è&u³Æ&ÈŒ …d¢–ôjÊ—23û5‘‰ø×D¸VPz2uÉ/Ã>1M57Ã>AmJE$†K²ªš4ePñþUÕ×ÁK#¬-×S5 +)Óê@ß;Дǀfqqjîe :”T[Ì Q8}@]P[ø¾¡MÄkÿÖÆMRoi´ n€ XŒP*ÆÿØÔÁN¡¡„DŸk ûw¡"Œ¡a,kjØG*ÌÄp¹Pƒz}}B.<+B,RS+ ÆXLÏjNJÅdª¼h‘‰;±í¾­1Dê¤(—ÖÇ—d*K»‰' ÈŒ 4ÅÝLÄq1*äõõ:©ÃÁÐh"ç ¦Ðáªwâ6C#áZ31ÑL_(R(ë›3!V÷†4þGa­ÀƒkÄM,›g¢™XtÃùÔ†¢7Im  FŸ™ ]»ÕüŒÅ4áë&}’õMT¦Žá ‹úoÎçZ¨*dh,V—Ñ.—"ÐJ™©PLTÌä¬o…TÔØfâFMÑáŒe‚7 çª5§3ˆœAŠOŠVµ6¤*ˆ‘Êq¦‚Ò¾ìBÌØ€f 2Uëh43KUs5šj’eB'hÖD.„Dt|œ±‘àh”Â:šMd‚gUÐzP‚^ #ÊÔµŠ¤XªEo­€¡Y˜ZàHÕKM?Tˆðqb´±J¼¥ÆâÎkuÚ¨ªSœO#@su)]h4ÆŒ¤B¯Hç Þ8!.…›ÅWxUeÌG´‘v¤&}†×PªžØc!†j UÖ_j"îW”©œ×«Ô˜™ôá˪kMÅ]KÆbyO¨ªo(È¡°-×à7Ԝڢbtøh>Áý(T!’šöIù–ˆ³þOJÅbªj;)5]"ìáWÅöðó‹å¼L… 5S¡®†àÃ#Å"p@?…f±X .;®\¡°™º„ô ©Œ¦bæRØý"Öá4˜“ÔDŒEjÊMJMÄólúô… cÂ.13cñäØ?(ÔrÂiü›ÔÍ&⻙諪‡IÁy$l‡ÊH•šBžBâºJò„ +êÌܦ¦ºN-y©Ù{+–5y÷¨bÛ¯n4ëE«É®¢šŠ‚‰–«rPTO`¬/^+Ös0• ½JÅ=Vb°š5 Õ‰:°xMÅZ‰¢“‰‰™ ââ—‰›Åñ®Fµö7ïÊÔÿc1ÄrP–•©¢áª×ÕW—[6êS: ïoX¥Ö_fj¥`*l+‡Æ>•0ÕÌÕ¥ÂLUUDui,Vù3P¯R©j7³êi… XD# ¢Æ7„rúÂ,ÈÔWš‰>| RaŸ¬©Èµ¥š,T‹I´Š…dL„F#S±¥‰‘¦#qíbw£ªQ³Û_R3d*–§Á¹ª D·»‰:|¿o¢)D¯C0cB…'QKÀ)Ëšbmj‰3è[%V¦‚xRƒ>e8ñS h6GšŠHÅš3&j+5*1UÆ:Ðìö“‰OÛ§v•‘PÜT¬Áb,œÍšR6¸Ò­úZ¡æŸºè®$n,VÑ“‰KY}”–©Xoú¯åÉéaÎà ôV«á«F+¥ôú›f‘õm45ü›F3 /ÑlÛV'^ü±².>µmñø“º´ƒÐøz}®Õì¾íÓëŸ^A]3FAòð¦=/u³‰¸iÙH]DÖÐ@ÌË1QÝCÕˆCƒš+5\Z_Øî«VŒøZ¡È‹¡¡Ø«±¦Q,m îR4Qí€R?–¸UVjd"tð§WÞMªlæñ&aÞÌÌÏ«:‚EozÃ.nv¸²úª¿t .`7Ó ÌXdY¸æ›‘H‡5„JHˆSoÃFu<ʸQ@ƾzu†½™˜æ+3yêŸÆgb˜¾Z¶ÿB9½„f1¹×Tep£è­U¥+àF£?dMs\ŠÚeo&d™ ô)Ÿ¡ˆÑÔ!马‰Èÿk54Ö4›Š7)“‘æþL»…Sáþ´/ãÿ>³O*„à…Ý ú·SŠ;5þvSÆ_7WhªµYlêøüÍögµNÓJ/±ù¯UŒ ûœò†á妿ïc“xÎÛŸŠNç¼ÁqÉêfuòÞŠNàJíêF±º´OÍ á¨E¸ÔÈDü¾XùE½uãïª^'¿ý©`‚pò›L„R±'jÖ”ïêYA£¸¡]*”0ø›B ª‚ƒGÜù,Ü,û’ +<¤";UØ.Ž ©ü'Uç–ãï‹Eú6ŠU úvðÇçÚ¤9éµÜ„ó„ÆÐ,Z5xZLÑ„°šXPØÄØXµ¡RGÅ j§*¡U,U©o&$ßþ¥šœjÍý¥N”—ºÙD|CaCš±‰¸ãÃD•¶«n÷ò Ñ\øº‰PÈPal"f5˜¨ROþöþ}Ž³Q¯2SUV­æH'¡:¢ÚÛðÇkÕ‡büu…à‡©˜Ò Æ}®\ü÷ÇÞüícmÕÔ]5„ +%Â! úâ‘j»Š·˜ˆ%ˆ…mªÿi ÍŒ…ÂLjŽûá§Pä¯÷Ž<ÂPL,Kg œ­†u‘PêM¨¢®j¤Tï-Æ‚`Ë„z &}ªcˆçüÍí4‡åþézñ9Ä꼘܉Ï!VB0Rü„F&©÷SüÝs7ÔÔËƵªÿ?74I³x„“‰X¬J¾a:U<‘…ëCóÇq®¡ç€þJïäá¼?ºPÖh&0c$é=„ñKN:…÷·!ûÉ e?ë EmõÐa‚Ž~º”‹_Æ-híäß_¡tÔ²VÐ…½§6íŸ?Š HI¸õ'\üuIç@]-í5ˆóM.·uÖ²‘Ûõ³a¶ö£ƒûSèý}ÂsQy¸Ìóù¸¦é”{Ø@+έé¤Ëz% ÅïžÖ:›(™È¸¢~Ð8°0žþ£Ø ÌQ|LÝT6±uSý”:œ +ÌCí…cè°Â±¤KÜ@+Þ[ÛÚÞG›öJG”Žg¢+&q±¥_0aYcØ”QxLb +'2q_PY#)Ç þœ_ÊÖ7n(Ìaë¡MÐvZ–¬³–%ï¢eA9!Yä$VÎý,­íûm´ä$ cƒæ]A{jY*œnb%›Í9ÉÆõr‰%íªeÃziËÑûhLÑ¿7YÒ’5«7I,m¶öS¸Å $ÝR+ÜÒË·†êZ3žZrç~ö¹Ò]ÛZé¡e¾ÅFbùkQy£¬ü´Í73’•ë,$›­Ñ8Ú‡õg¼sGÐù£(¯ä¡rÊGËŠõÔ²Rjo@×mXe!±TØ!9ŒìÏ¡`Ü´llƒuHÞW‡tíÏ¹Ç á½b‡²A©#mc +A榳‘…ãiï„¡rô¾è´ØЂ±\tíd>¾Q‹)ŸÌ‡äŒEò<žªœÌ‡eŽù¡=Cn!ý¹ˆê/ÐøNf="ñ1S¸Òsflá #>&w\C#Ù¡½CÑžÁ9¿´Êĺ|Jã—ÊäÚpoyÛð¢IJ¿¨a¼è>4k,™=îÃ$ W8øèöº +G_]…ÒU›°uÓ&¼u/$뱃)ÿ$3”ÑåSø¨âIL`âpÖ9­ƒÔá\\Ùd>¶~š;–ñŒLºô§Ý#2é#Aö oÊÉO—÷IΆ"ÙNŇNà3÷,ds.áCÊÆ3^1C(ŸèÁ ç\Bí4.®n›Þ2›KmŸÃ…•ŒgRG2žICA6¹¸ÆélJë—tÙS¦êæ7Töî¹tLéD6(g4é—8Ô†GsärFÏ€ä9¾a›Ò<“«œÊ'¤½£S^aƒØðäÑ||Ýt:(m$í2 ÉÃ"ù…y#íXÇšñÕ–3h.uèc͸kmÞÂH¶l¤$Vrû~r¥·6å1ˆp +AkÞ¡Ÿ¥B)±fá»nZò­þ:”cÌ…C˜.é•:”ôH ýX*ûY‘.ý¬§~ðŒ{ô :¸x í’0Ȇ÷׆{ ý§…t@Ö#~ã=Ï{Ì ï£ ²o!ßÚOÎùhSaY÷ä!rÎWÛ†CzÔÖG‡uOÂ…Œãý³Gs^QC8°A|hî8exîxÚ!¤?áÞŸöŒLGåg2÷Ìe3¶ÏQ"yCó3˜ó‰óÀú§ŒàC³Çr™£)·À¤{ð6¸dž§¨Ò‰Lî÷K¹Ü|bå4>,{†Æ5ÉRLålh^?L`òt(< ÈCxñx&8k4¼¬%.yÛL6ûà"&gÿºøœ”,ù^ŸMjB}M<¿s±µS¡o*ïèb&¡n*å?dˆEr—Ö6 ËbzË,:ÿøR>µ}6U?U™Ð4Ýk¬%Ò%¤?ã›2œÍà6‚HŽmzXéX+¤7{ŸˆÁ”gÔ ¬S‘®¥}†*ì}Ñü¹j+l½°®ÃÏ ó¾Ã8 €ñ ]ÃØPÊ~Ö¤}?Ê Ù÷˜Á’QÒ6P‡ÞŽÖ{ø@Æ-l ô¢‚sÓü‚äæ›õà8€ò@÷GŒu”H~}S‡²¯1Ñ¥©ÌQ4êW°€Â)T—ôNÊÆo›Ng˜Ë¦œÇ†#ui¤Ka½Àš´\‡ÆËoPÅxɇ5‡ú¦œ´;‚ž¤ìüt ÞIÖ¼ Øe.½y6èKÎ3ã@Î+v’9FõÞÅã1Šly „q•S°<#™€¿Ã܃Ä׆”Ž,DûÆÅ:*¼bš?ì7`;˜C>²x"p\Xáx.,c ”<’ Î6dt¶¿þHf.Ã:ÖPtÙ$°¥0lXÚh>±a—X¯Ç úÖ+¬K&$k4‡žÖ —ŒtUJÓ .¡f<'Œ-Q6äß>“IÛ3‡¯œÏ²ãˆlÄ<:sß<:ûЪðû¥TÖÁytTõ$:ªaâªÉðt&\Ǧï˜MÇ7MerF.Yã§ÓH¶É’3†\Ú®9l$Òåh,|ÝO¹#ýãŸ4ŒŽ*™@§îø’IkŸÅD”MlzñMƧÂ2àd68g4èMܘ8Lá=t@ºáeÀ¡LZcHƒnà"òdz>IÃHÀ¢Hÿ‘`làºé(¥7²Ⱦ²hí3¡ƒðØÁ3äž\Š×â ñzC]؆Éþ~ YyÝŒ*8µ”,¿$£rŽ.`ÃòDz>éÃéˆê‰tÆñTõƒoé«F´Wîp kÐÓÚlxÑx6ïÀb¦ðÈR6ïÈéȢq Z\rû—´oæpЩ¤;²¯è »LŒmñô&â ·4Ò-n¶Ü9Dt%Ø +­,Ÿ©Û¾´¢œûY#[nÁ¡Ÿˆ«ÀïV´—–5â_r}lÆÜꯋí)Øô£ ¨â+2²æúWLúyt@ú2ÖyÑX:ácü{þ&m÷l*÷øB:©}]9‘Š.›@E£ÂŠÇR±µ_À‡ˆ®ŸDød“;†èZR®zjîɃéÂ1”_Ú0…kXk¥`Rü!'S"ýí10;š ,ƒåÙ +°âX_¥Œd½c‡0ycµ·¿¢ê{V`þí>ÛD4¿ŠÚ{_)j{¾& +N,bã맂|bܨ:p5Ë!€­'˜ºÙ­ Ÿ€ñü£÷Gxv`~À |LÕÍ•«²³È¾0Ⱦ€ƘÉ2<]48,ƒp ¶CC€ýg<oðˆŒ±²´ºa¤{]DëdôžCø¬XS Ÿ™”Æl’]ô7ül©-35÷Íäõ÷¿&r÷ÍûM9õ‡õ÷µÃ„Že’·Ï ¬a;g¨C:éÂ:ƒq{’þ)h®g¶õÔÎH!{G 9"÷WéÐêIÀe¶~˜ëÁÚ‚õ ãdž¥}J#K»!ÎléÖSXÙcÊá=$Ÿt@ÎHÒÍ'g6(k´¥q®ø’³‘¶ÀÛ=µ¬iÄCÜ‘MG\ÌÝü€Ï`ž‘ΛŒ°ð 6óàX_`›éP$§þYhS‡î|HÚ{è(œ}uäŽ~:ØdŽP¸…õ—;êZrh- ^nÃú!l¤¾ Ò;ia¤c |õÖ¶ µ€Ÿ‚q“ÛújÓ®hm¢{O§Ý¢2ÎaÀïƒpÝ6qÜ$4G€ÓRwÎ&k﫨{ô ^_ Çbò'*:¾¡ÚÞ™ËwþcMÝ33*¥ ]_ñ–Áð’qr'+šëG¡w!K4¢ ÎÒA¹£ŽþºàÃa|¢‡À`üb†‚ÞÄ|8¦|(ˆKW nQ6U‚0oÔPÎ't0àO."} ð&8iå;Öæ +ˆk#ŒÔŸDØ”ñ‰ʇ lž3éE„1ÐïÁˆ÷„g#œ^<ëZd³}‹±È=ÒÙÈEkn]pt)ƒ¸5¬AÖ=裢sFTËËõôÎ'VÄöÇ«˜ÌýóßÔ€¯)7„!‡Q!y£ñØ#ٹܺì5á1¸鉮] ~!¿ôá„kÄŒC¦ý³Gb\]‡°x‹`&03ÒÑpÂÕt Æ$“¨À”¤wü`Xk ›XÇ¢µÀ߇ŸÈ.lX»Qó.· ÓþŒ¸–jý£{!¼·UKN;kÑqƒAoÓH§€ÿCκjäô[=™IlžÎ„•Gkié=€t¨@¼Ú +qK[‰ãÐOÁ#NÚA÷Q®Hv"û#yÓ¾nÍ#Ùcýµ,Z› ÎáýaÊítðC:ü– ;ßÓÁöÛùäa\`öhðFÞlõ4ÀhXW%ÖO£KÎÉè’³2Àø˜3"ŽK–Ÿ‘’»žl¦ö¿·Qìý}Q|ˈŽ)žëxœ… ø"\´èøš)ŠÆ{ß‘ùÇQi#ÀŽèÞ?aÜ +òߨǃÙ[ð=)ãj¦ýM»b¾>€óCx yÆýH¦@‚-Ç:ÙXÐe,æë©£¹¸ÚilæÞùlæ®y˜ÿÆÖLåk§ŽŸ!‘7žGü­ .ºpÆËéÍ_õ·¿%ª¯™Ò!Y£ÀŸ ²Ì§VÍ`3[ç’¥—eĶ'«ˆ–ç+åÛ_® ª®šÒç ‘ÎœÉx¤[K¸E P¸E `ÃË'^%+®šÐ…Œè¨Ê‰€I·Èlâv=²ò†ÑØõàY&¡yS?™Š®Sa„Œc ¨ò›ftíƒåL}ç*¦öö +4öF °]‰¯ž¼”*=)EØj>¶K±Õ_0IÛô0>F6ëÈB:ïäªìŠ±ù¹| ›7ÊU|ɬ)àåâýðwðOÞ`s"þÄþ‚µ‰äü<àO }Ó‡3ˆ·`½ÂîUlEúÓ!¢?p:&a»°²ñtP1ÆÖŒoÎHÐË€wÀ',ߤ2I¹'fürG¢õ¡mC9hÑn1ƒÿŒ‘¬cÌ@MÂÖKp(‚}u|TÉàÛÅþΨ¢‰\æ¾lÆžyð@/„á‚“FÖccª'³‰#8ßè¡LrÝ4EÍÅîOæľ[ä­ï–“Q…ã@þ,9-ðËΑÇÁXÁØãuŽôÆç‘ÀK§`Ÿ>ø2vÍÇþ$ìÿ)û‚L ~Ê-°?¾¾ 𥠼ø:0 |ã|²©€#ÊAF‡³¾¿"=‰9âëLú^Ä›1çž‚ùºOìéF>iû—tÁá%ðžljÓLýNÔßú†ÎÞ7Š(K‡!þ’1 +ü«THÊHÚ ÒKtÖÁùtRãtÌŸÐwéücK¨Ä6=&¢ñ À‚0_`'èì£ É†çË©²»¦TbË4°‹LdÍ$ªä¸¾¢ñá2yõc:uÛ *8o4áŽl^Â9)Íz°Øê;+ÈÚÎoˆúÎoéÒ‹&ð>€“€s±±™ÂýK¨Â£K˜Ü ™„¦i€íi$·˜ÃåžZã-/¿a$oìþx5ë3˜Üê£ |¾vá&ðáw‚u±TXÑ8¼ÐÜÖ°0å—5‚¨RñõàÌ‘ØLjt.Ø *¸áÑýsÉ‚SK˜Ì# ˜òñ”sèø;Q1Ö”2¢ +|z`l¸àŠñ º—|«øX/$ïHß‚LŽ8<¬Ö%bÄ„øômj¾5ü5ØWˆtÚö%öws ÀÆÙdÀ‡81[2‘(=©Oî~¶‰=üHI´½YGÇ×Nµ"wŽ@;Ç$íqÐNÇä»ÅG!‘?ø9Ħ8$‡\pÆh>ºä à+|bã Ùy> {4öÀx%ÔN®Œýå~‰ÃÙpÄëþ} ¾A5_ ž | hL¦2éí³wžys š?øâÍØÇœtMöžÀ陜#‹@'UWL¨‚–R9€ýA¦“Fˆ?P®áÀ÷ >À'´KðÛÄú™DÅ%cEÍM3*óà\Ò7w8Ø4ð]³Þˆ{'ìœÁÄíÔ;¹$²é\Zë,²ú¢)™x%²Ù”'øŸýM ÖEºt:W}w%[÷`›vh>` Ð#r´æ‘ÞŒ×5²kT1²]•?SeçÁï…ñmDÕ˜3¢ü¢LÑül™|û§•Ö-Ͼø:`%Sàëà3b=К÷Š ø‡Aú–)<¦Ï&Õëq Óþ’I(Ÿ ”öŽŒý5Im_’%ç¤Tî÷‹Èâ ©Ü£ 1oC\‰Žß>Î;½„¬{ðâë2Ú'öï³>"_§ -a³.ÿàtX«€T|ÖK,âëÉ£p| Í#ȉmü¶™\\ÅÌ×í_Gö82ö;§¶ÍÂ|Ú£‡3Y;æ1iÛ¿Ä~&ðo ¹gï¬aÛï[2ûºTëË òºËfdöž9´sG„ÅÎa}µ Î_ðæþH‡ÁÚ„gà|0_LülÈ0’ƒù:ö'!y`r/f³vÏçʧ°˜¯ça¾Î¤ï˜ψù:øOÏŠô0Uxl)Y~Έ,8±|ëà§Ä\ áRÌÕc+'CLŒI¨žBeïź¨»ýÝÔ½†hèY†0ÉbÐ{Àó`bŸ­gÜ…ÒI x 1ÆøÊ)ŠšË&6;>­¢ã¶O³R ®l¡ö~:ß{¦cƒŽ,˜€Ö8z߈!°v ~ÄÄ5OLLØ^ Öåc§³5+˜úîUð~”gâ°¡”3ºPöhÄÙ¦3y^¥;VÕˆcçÆ>WàglÆÎ9ŠºŽomïVËwü´F^uÛ˜Lc–¼{Ž2±N÷M² ؆-8¢O•_6¡êo/£ª¯~ :¿'²©tÉq)âD‹Ù”z=ÐLÃýÕ\ÛC+²ü#,Ÿ™{æBŒ†Î؇>»çP¹gÓñíz„OÊP+ˆ*Ü´@¿r Íz0`“À¯AºG ¤<†(ìÃu!¶@;!îƒæÇ»sàgÿC ÂáHwqH·ƒ^ÿ<È]tÂû‚rF¥ó-¢›zÖÊ.™ÒéõzlRõ46ñˆ¬ó”H÷bÎöôKd æL`ÙXqQÀæV[”õ¶BÜ“óFvÉÖ“Á¹cpœ¸½{^O؇W5…NÝ=‹Î>¼@¥¿ÐýÑ8bÌ™;ž I ñÌ¡7L€‚NAöÖ,Ö¥ ;ÁþF@¼\‰° øàoÀÏñõ8–X3•*=aHçYŠý^±CσäüÒG*=ÑpõÖż-4u4“Z2•j¸ ÛÐÚñ›¬x‰¥%'Á2ñô”Wä À)¬gè °C€y•) ³àÝ”cIÄç¨ce Nñɻ粻Ðáà#Eœ|žIm3!VÅæì\@V^7%ko|M]ÊFU}×r±‡f[ ¨ì0!ªo›‘yÇRÉõSÁ_…c €»^‡˜è(>­o¤3Á7 úÞÙ;s#~gZm šž¯ ·¼ xˆ‡Ò)´«—.äJ€Ÿ8?å“1 ûàwćåN¡º6ÎýÌ×àóÔ"üS†n‘¬9Oœ`ƒÖ.‰Ö‘œ!=¶Šm¾·Œ¬œ¾”-rÇ~re 6–ðCFæŽ|ÏÅ€9àâŠ&Û%ÔÌ°‹Î›ºŒó‰J!GØyë€Ü(Ãr‰H9ù÷Çþ…ø†éÀÁ· ëüïÿ&ï™…åÎ's8è¦à¤¢ñÕr²ñÅ +²èìïJAl¹Ö)? âO°~9¬‡Š'€=ÛJy„àÔk@ú¸…)Ñ|o9“Ù>ü p!ÂUËÂÒB²e“¥ñþ~Às >|¸á—=ô¢릵~)YýÕFÉÊo×K6n¦$àkµqC<,¼r<•…ômhîˆaA?€aþ1E6ü…6Œ«ð7ì ^ŽxW=l&`r°ÀyÙxÄßѸPE'ô-WÉ÷¾Û€Ö”Œà¼´×³Jb±ÁBBR¶ýàcCÒÂ3âÿ,Â|»ÝdNJ6m$$´kÔ@ehÑxÐ×Ø?é:æÇ5¼uñOg_]+ÖÙ¤Ÿ¨!„K0ÖC[/c«~øëEÀœàëD™.>iH•Ÿ3œIGöDvé²ü{Cì³ÎŸˆã¨I5zG=L5 [š+½ 1eÒåé³Øæ;ëùÖG6ÜögdË‹µŠš»¦dRÛtX'tæî9Šêóû1"«n˜Q5÷¿þ ù·ØJ¶°>ZT\ËTªàôRðCñ;æñ)53œ kH™PŽøhÎÀµÊèÜIÀm}“FP.h.œƒú“vnÚë®…ñ.Ä„‘'«n~MW\1£îÄ>ƒ¬Ýó@`ÎQ6KÙ7—j|¶šÞþÚœhú°üÒlâ®/™èÚÉdÛ‹µDÓ£å˜ó"›| òÃÐâ–H_ŒÄyáE〗ƒÿ¸:ð_ºè¨>à?ð¡qΡyŸt„óÃCì“IÙ>“,¹.£c¶OQx¥!CŠF#A>­97­uk,$+V­“lXg%± Ýq<p'ÙpoQ‡xhhé8ðaÙÈÖ¸øõÇ|"ï˜!ä|Œ’®AýiÄ¥áݹƛë¨â 2Ù6ì{Ï‹ãËW1x¥¢¡ã[zÛ³ dÛËuTÁ‘E 3 +f«ãè«Ëy… æ\|ðîùèš©\ÁÞ%LÑ÷†\`ú(ð­Ù õD@î š|tådr¡7º„_›µ‚—P[=u¸‚qäK@ÎErË,ÐU ¯X¡uÃVœ5cŠÏ›(ãõ`>ÁÿÎBÎÒ)\jýL„CË+OèS»{,˜íÝa~){/¬k«o.ãÛo[3 wVÓågA7PíÌéìÝsÁw‰óAÂrÇB ðàß³£’[õ¨´½³¨’3†DýýWælÛ ¢ýý:Åö®åtZÛ,ˆñ®1ä®aýîIƒÈô#s ¾!kº¾á/=Åg4Íæòö.á §`ûŽlS°gStʈËÚ·ã`ÀÈvàܤïa®ÈÚ+ß0uwVÑ7W‘·–Ãü‚ï™,¾`±6¦~ +›²wŽ¢öá×DÑE}*íÈ2ïÔ"¬£²ͧ +ÏPY»æ¦ÃØâ€÷‘ @® +]yóºöîràð@Α2¹rŸÖ<›Ï9²r:T˜¦a*ö½ƒ(8}ö±G—|û0‚2G¡5=ÇxÂÒGƒ|+|uǶòÚ·*ÎŽìwäwì_À§n› >{Æ/jˆ*=|txê(:oç|jWçfæL‡£òÄM:óðüë6I,­9 Îekº±šoéÜÂl¿g®¨?o +:…jí^G–^1fZ¦3‘è}ÀçU: 0øÿq<Í)âTã!.ª¨DÜápn÷#B±ýé +yã¯ÈüÝó¨äæéªøĶ©D@þH2´t,•yz“öý´ÖÇ`•Ó:|^\RÍt°™S€¶ü¸1U~Áløóø Äõ€ Oe +Àß醻+è¦Î5˜Ÿ4v¯€˜ UxZŸJß?‡(>ºˆ¨î4£2O, c§€þVT\1¢š_®¼Ÿ-Ö¤l¥*Ï n: y pÿ¼#KتÛËÙ¦®udáErGœb©ÀÑÁ—öq$vo'aâþx‡£õÎ7+`-ùg—Paõ¨€¤aÀ5/á8p@îH¬‹ãê¦*jÏ›’MW¼›#›Òö%ècó(ž>:Ê'yŽÁfïžGT]2!º–ˆ¿â¸PrâÓG–ŸWß0avè^IƒžiCŒL¡RöÏfr.B'Õ"®R1 ü¬l>Zã`' ¯`ßb²âŒ l6ŸÒ>°Ÿà_Åœ6³uU{}Www-[w5¹í>Ž_t¨¢ñÙrfg·¹ýÅZ¸?ø"a­P V°ûº(ÈÃÄk üGHn[Ääîš¼rw!ï.:i@å\@§ìþr˜àü1tTé,ÿ¹§–0Ñ “A.@7£ZzÖÑÙ»æ2±uS¨äÝ3©´.ÃÊÆÑÅãÀ×¹0dDÙ8§ ]ˆ™1È–Žb·umdVß“‚qÑ‚|XÀ} Ÿ4²s„½7âD¾ºàϤ=ö<Èd*W ûÀ#K&ÒùÇc?ÒLÊÞÙLL±*çx +`vÄ3pŽ.ä2æYLçì›óƒ Þq”­!º§‚øĆÀG¹ +\RƒÎ+G<çÜfî…qš>%Ò+pΑAöx è ¬C€3Â'ºz2ð+øjù„Ò©\Ö®ßK•2˜du[‡9³¯‹·<[†s¼“†BŽ!ä¨`¿cͯÀgÂ$·èaÝœÖWÚî¹8çô>ðY$S˜{@îJ\å¼VæŸ8Upt1›Ø¤z§„m3¨¢ƒKÍß)jn˜{f“áeã '‚)K§¡W^2ÅñŸ„šiÃÉ%n›ûFºdb@Då9™¢ü¬ö›¤µÏ‚|ð#ƒœ0Ù‡Q5¾æ3w/À9}¹‹°vÒ÷Í&¶½^Í´¾Ṳ̂ž‹ókÐã²ôöÙˆ3°)zp¬ƒ¯@kQø¯ ˆ£§ÞY1>8§¿áÀºH?1±µ“!î 1?Ê%Û}˜cÒ3t Îmi˜1Zà>D`ò0õKfmç­ <ÉÚÖEKᎰt|›“ÍpÝ<ÛfŸÄa8Ï{jcæ9„Cöô•*_" û{ñ}€·‚/5}ï\Ì7r,„¼'XÏ û 6ó(ß {òÁå5`³,†¹…˜5Äê©H´†À ñKðBŽ/øù“Zgb¿ÄL‘îű|ðaÁ÷ΠCÓFa=ŠžbÍ £Çô‘Mœ‹ýéçJnB2^>ëëÂFlÑaàq*bõt¢¹s%ÕþÜ\ÑܽŒN;0‡ ÎMùÄ gF8æ[¦¥k6-¸p,~WxÄ @vA¿€o›@úTÑxwøUð;Å¡gËÞ7ÎGòS|Æ®¡ó/Bmó³A~Yñ£1Ùòxµ¢íñ*ð…RÉÛ§ÓIÛô Ï +|=ŠÚ[fLî9ì—Fkòõ€ocœ›³gÄŠ w¿&j¯šnÙ†ý/‚úXĤïÁù²_€8/ø4 ‡,»hD¶¿Þ ¯ë4csGn8W|Š»†õΤïŸÇFÕMf³Gs%ÁW„ÖÀlŠ.ÂûFpì?´bS€ s™;æcÛùGÍüw¤!´{ +þàu·øÁ‹~4¹­»*§ÞÁG|K6¶>Úà3VxÇ V¸„÷W@.OÂP:¾q*UxÞ¬¸ekAa¤ƒx½– Ò±€‹!7pŽ—Eå§cª&A^ +]pÖ@5e“À¦âg†¤œ“KÈÒÛ&Dõìæn¹†Æ´ÈfCÎ'“µ>¶ý­/ÖË[º–Qi­3àZðÊë{¾˜YpÑø‹¢¦ÃŒi}¼…l}½ž¨{ô –ûücKÈŠËÆDÝí¯‘Í2= qTÄÀçͦì˜úl—yh!]tl)ö6=YEïzdIÔÞþŠÌh yw!ܽu±½C›h~¹’hz½œ*º!ƒqý9¬TÑe)Z6–Š¬›H§îú’lzº’méÞLÔu|ý°¯ 8Ä<ƒ¿ q»Ä)פÁx¯Jüî™\ì¶éCqwdÛ—àœdÐÁyGŽ8¥1Gân=:iÏL*çÈ|E9º/`ÖðªñŠ ¢QDtýD2açtEéM©b×çõäžw[lvý²F~äß[ˆ~µ%ÎÚJ}O“;>oT´}^M´~XCï{eÃìváxàÇýØåMÁQ-¯×Ñ•W¿¶M«Ÿ­ôŠ~ œ»ŠÆŒÌÞd}òNéÓ]«”;öí·Ù­Í·öM7­Ùª+Ë@ù ü±Ê˜Z<ÆÀ+‰º{߀†Í?#…¼ ¢þÞ7H–M0çDØžn{¾‰j³‘j~·†jxºâ&ð!koƒõ\sÏ2²åÅyS÷wŠÊ›Ø/Mç¿ô'Ñúl 誾g9â«Ù¶[@θ̽ °/狘z ~Ò©»g“E'—’å×-ÏWÍÝ+ÉÖîõl{·ÓúhÙÔ³RÑðð[xFðßÀ³+jï~rrM4=[¹#äŽ7æÔÞkæð#†:ø\aÓüö;yÍ“¯í¿­¥N½¶e¯< /½ðâNõ¸P‡ŸPÌ^ôA×ò:méýÝrv7úÞ{¤ËŽ>ü’" +o…Wõ•L­ÛZF}Ió§:=ø£÷Ëð;;dë› ò¶'+€+±€Ù§SåW̸Ú;«™ÃOzÿk9Uu÷+œ“Ö6‡jx¼R^zYŸð˼›lèYf{讣í{NdË/kÉ‚KúlÊ‘ylÖé%€·©ÚËpL+ãûE`±¿Ó)¼?ðAºèŠ1ØPŒCÊo˜²™'Cþ‹²ù%Ûüzø ¨´CsšHÆ·M%wLW¤iYýÀÀòPïù©ˉs¿òŠKÿ´'/üê,¿þß[mn÷:O~Žb^?O§Ž!ï¼ñ£/¾ó„±SÞ¾™ÈÝéŒaμu&O|`ÉSï9îÌCOåÉû^¶ï9([:­ùšŽ5|ýƒõTc÷j¤{¾†y% +N.¢êŸ,ç¶÷XÙm@°õOײÙ'—W´K¬ÉGçO² Hm›Ô:›)†ØñY`3$oßAœì#µû™µç½}ä)MyÌЧžmeO>paÎ>ufw=#ˆ¶k‰º‡_Ë[^.§w?³¦>¥(4‡Šƒ,~ÙBíùdEø`ExF’_ÙÐdz졎?ÚéhwöZ{쮵íÙZyãýoÛ^­@Ÿå sTÁú — cäö—k™–'æ¯eÚŸlnQîè$”{î0TKçZ¢©{9è>ºé¿úîe³P4?_¦h}³ÒfçÇÕäŽwÈ=¯6+öØDìý´™ØÿÉ‚úþ½’>õé×4qæOÿðÆ•=úr+»½ã§sô¡’;Ö³•>ö˜#¾´³Íá_6Ëü²Eqâ'’>ÿÉE~éìg~a˜›O‚¸›w£ì~¸lwòª7à®’Úѳ™j{³ž.>o¶Û„ˆ³ŸxæÈkžnz¿–Fº`ë®kvtýÓUÖ[½´­‚t¾9Ã!j{áR˜òôm_öàk[æÈ[%·÷Ë·?!øI¦¹Çœm{½…n}mNg}¿Š(OgœK–^3ÿº§ 𠛎Öyá5»í™9Ûü|Ùôz•MûÏ+ä5ïͬ·ýú­uû¿—Y^êUXw÷zÈßüW(÷þ~.óþe†¢óg¢çç0êݧ$òݯ üÇkùŽo•º?ÝSÉ}xǾ~ž­|ñ0ßîå­RקgkùwSÐ8rä¿leοvç®=ŒPž{äÏxÌ+÷wÚÙ½åµõÜù0ûã×ü¸C÷”Š¶Ÿ×Èëž|Åìzi£<ÚéJï}« ªî™ÿ|ÆLÛã-HY*·ß“Ûï»ëd»çžø&Ùül ²Ðòb¹ÿ±5w¤ÛŽ={ß?ûÈK~à_›Ç–“'ß+™KOý˜ó¯Ü©So•äñw4sú™}á©;uþ³yé½ uãµuý­/uù'7ââ¿œˆµ•Ÿû™!.~¶§n½òåŸÞÌàŸ]ÏdïÞŠ¢N?·'¼‘“í7(ž~«hù¼ÖuèI{ÆqG»íéChªýÉFEë‹ULÛ åñ;. ßÊ“·<˜ý)rß++r׋ÍÌþ§$w¸Ëž9õÔžØó‹¹âÀ§ÍôÞ§ +âÈ3ÅñWqö’<ÿ‹}õµ/}ëEuý•uçy u÷…?qæG}Em"μe‰CÏåŠãïäÌ¡†¼ÐíH=|ļìNµ}½˜ûø(OÞÓëkÝÙëL<ú)˜zø"‚úñ­±óó²ÙÐÈŠ‰ÀË ¦‰u9Â¥`À_e]to±õ®ÿYÅyÁó—n‡86„¯¹¿–Ê?¾Èfïoëû~Ý(?÷¥8ñ´iÿÇ +yå[c›º_¿b>nP¶=VØìpW^ºn{óJÂÖë—’ìÎ߈äÎtzòûºY¶ý™Æ*Ûß®žF";Go{¿aBc.jûTyu§‰üèï–Šk¿:oŠã>_Ïå>ÞÈe>?Ï¢•É|~”Eÿò.úð.™ûp3ßýI{©OOsyêíÜêâ[i•®/ö–þϽëÎwy~¸ÊîõõRîÍã\þYw6yÿEO_êÇÎô¹Nò¶ßV*š?,çÏvùÚ]¼«üþ±;óÃòðG‚:ùŠã®w…Ù=¾–ÇÝì‰b~ìñb¯= à¯Ü çotÄØu\Hc¯÷ñçîû²—ïûrç»üés/œÉ_nåÎ>DòxÇ‹¿pûx×é<[«–W_Ùdžm]Õih½ÿ×XŸìµ"®¼saŸ>LU¾ºU |×QÀ¾êÊ`Þõdp¯»rÈ'Ï#mnü·½Íÿ²SÜøÝY~çg7òù§(æã£LþsG¡ó«c•Üçî<òÎsòÜk%µû­…¢è²>YðÃR¢ì¾1±ëÓFhcO?r¶=w;Xyö–¯òÈ'þÀ#[åáÛöÔñ§}â¹RqêMŸ{ìÌ^xäÃ}àÍxâÆ~ÿÌAqà·ÍŠc¬)désOœ¹;w¢Øû÷â•Ýw3ì_])q~ ÎëÉ®:×—‡«Þ«d?ÜËäßIeov†‘?¼³£¯?ñ£{îÅÛ½¾\âøöl…ÇÓ½µ¾=ÍÕA몃ïW—ûw5Ty_Fîø`Nooº l—<þôtËÆOÆÔÅ®vÏ.8<=_jÿb¶Ó‹SŽ/~¨`:º#åW~³ßr¸w…MÊé™ÖŽ‘ý7›ÛJHÒY‹Ý3ƒ;òÀÁáÅå^O÷ÕumÛæöøXíÃk™`×è}=»£ËŠ=‚ÆéÇëÁvÎg)¸@ïê¶ä÷=fAÏÐϺ=Ÿ¶W"™«¬½žRžu#»dÐéõÁ2ÛŠøÏ— +Þ+zPŠe²ýF|ÙÁqeÛ®'•ûö4VðHn^)s{º·’7Ÿ{ß“ãøò\9õèC¸õÑÞMDûoëäu¯¾¦’OÌ!·ÿ¼Þîdg â…›¢õ¿V+ò¯/±.éX"?ý+¥|Ò‘åüâtµë³5¶o;Š™Ç¹—3¶¾¾ZÆ¿ìÈ¡®½ð’_ülkóý¿,å§^ÔÕ'žÔ'AòÎ_]©WâaN_ž(gïÝŒ²:òu-÷¤–m̶ú÷²-ç{7ZwÿËÝëqkUÓíÄÊÚ;IÕ9µIùu=uίWò?ß)â~z’Ç|~šÃþú$Çñõ±²€®Æ÷';Ëíß}_lsïß®–ûÿµŠÚý³wä ²óÖ1™ÇÒW¤€]©ö×±Í=ô˜gv#ü·ë±Â¶õœoxjN×ÞùŽ¨¸jLìø´Ž;÷ÄËöÎÍDþæXæÄ{yÛ?VÊK®-Uä_Zl]z}©âäGÿf’ëóSµ.¯N×(_ÜÌeŸw¦Ú~¼YÜUW—r?·>ù~n]CGBUêýÜ&þñµtòÁÓ@û÷WK6¦?̨(~”XÑÚWÚÞS¼çNl zß²ôÛYå9׳Êrîd”‡>¬¬ØúæX ýæM2yã½uúƒ=ê‘'î‘/é^wê‘}°‡¤w÷X±Ÿº²l>ö†Ó¿¼L÷êÙYãß³½Á·gG½WÏÞþŽ,òÚOÖ7þ›—wþÛMq÷Ü-.÷Zn>Û»Ö¢ù•Ìrû§¯Ø«O‚·¾¹Vîøúl9õøMuí¥7uã™ÂÏn\K·%µóù&öp§’¹zÛßîÑYnO÷W;>;Qæþôp]Pwó¶È®ÒªÔ{ÙeÑóKò´ÞŽ/Ý?ºäüý°Â›]!ùW:"Š.Þ‰,ºÑVp÷^XÁMôïÛwËn܈*>z3¦¤õfBYÞÍÌ*ßGÍ•¶ï(`?tf;¼:Qªxð_~6'z­‰ÃÿkCíÿÕ†:ö–e¿ØÊìødI5þ²†Ûñ’¤ýJ27_óo»ó˜—Sé—Ï“ù÷÷ ¹Ï· Éo™Ÿže)ßß(²{{·”zü2Úæô?m§ž+Ø žÊîëéüûŽ»÷—K;órf4ö´mw|yºœ{%ÓéõéJ×Wª]^í­\RYp/¹ü`Gté•ûáE…þÐVx ý<ÿ ¼ðüýðÂSQ%Gкkº›P¾íVByÃíÄòÔ»9•ÊÏò-nö2–E7æÛìè]ÁúÀrGßoå½rà.õøÛݸ–d÷èJ®ý³k%ìå.?yû‡UŠ–w«¸ön9wü©©+˜»ˆlò¹ŸøÎû)9w²›âî•6Ù?¹RÊœâ¡ØýOs›º‡&ò?¯¥N¼e™î®Ä ®†FÏ'{ëíÞ^Aºð|…Ý»k%Ü/ _)è.¯«½_Uy?©Î÷q[ÿþzýâA‚Û‹5IݹµÉ³«ªïÇ—îéˆ.†Ï»Ñ%ߣy:w+ªô쵸ªS×bË܈-­º™\æþlgûéqó¬;Uy¯#¹ðÔ‹»q?Œ½þ(Œ»}/ +ÖFéµ4$×ÙåY·³*’nVÅwVÕ_K®Ì¹]G¾|oõc¯uW¯»+ÒOy·2kª®¤Vl»’\ý  ÉW}}áŒzwôlćq›/÷n¶ø±w³¼ç7?èÛ«kSAGîÎÜ{y;}Ÿìmq~y¤‚~t;‚¹}+0é~a+Ì|ÎÝ,Ùs/¦dÛíø’ƒQ%W…5=Š©py} ’øýu‚å›^7«wÿëeý[oˆâ·ÏqvïOäÇt”TåÜͨ¬¹‘TÖz%¹,ênY…ßÆ2ÿ‡î=í¥Ê7—ò^Ÿ*åßtðÏ»rùž'YÌñ߉=ÿ³‘9ý»“C÷Í2ÿî¶&ŸžöZ—ç*·¾=SæøæTóéY†âÍ?©·¯Ù_;ò\^ì+wxw¼ÔêY¯‡UÏGòù½H—‡ª–ì°}p>Íâ‡Þ[Ú~•mÉ>1}Kxýh‹˜ú±[º ¬nÿ‹%Þ¾Œñx¹£ª°+©ªú^b¹ó«½¥Vÿè Üü²×vÓ›^nãû^~ã»^Æü}/µùc¯ƒÕ/½þVÿî ¢íH¡ëHQüüsìæǽܦ²î¹–‡{×—ÿíÈ]뉰»×‘éþø`]̽²Æ²Ûéu­·«"ºªšø×ws˜‡]ñôƒg‘샻 üÛGùþZêã:Jê"îVÕT~ür\IØÃj¤³OW)ßß.vx}±ÂùÕ‘Êàžú¦ìYMñÅužOÛ*©¾J#_¼ˆa^w!Ýy»ØùõÑJ¯§íÕÁ=UU•«Rd×2Ÿ{²ˆW?E/~´¾ßë°åJï–‡>šm*¬š¸1ç” ×zWX¿üÍ›ýýn^úìÊæk‰¥Èî•î¹’Xšz3§Ä«»¥ÄùÅîêý‡dúá›ê‡ÏNÈŽ»Ð]/bÝž¨I¾—WwðR|é¹ëÑ%G.%”ï¿œ€¾›Pzòr\鶫ÉN/‘}w¥ìkÖ쪓WcK/\‹.jG:ëÆÝð‚Ý!yŸÐç +Òuɲ+åÿú·áq¯µÕo½A./÷–o[y¥;´ðÄ£ÈÒ#"Ëò»SØßn岿ÝÍ{hÿñR©Íûo<Ý»|Ktþˆu®¾Ú«íµ¾µá$¦+Í%F_}'16[)14^!Ñ7úV²Øx¹DßØB²LÓoMÔ‰QkÚþ{þÚ½k‰ŸŸÅÅÞ,*Ùv.½|ÏÉeųʫÎg–7_L.-¼S‘†°ƒOW[óöM¦í«;Å®OT!\TSx3³¶érjÕ¶ë‰å;n¨¸R8ϦëÉGk¨Fñïw‰æz-Öïü}Éú˜Ý£ÍÃ[FnŽ=8~cîU=ó?ëo8ò?2óc½_™W>˜³ÜÚM2Ko©dæÄ/%zãg¡w'&"*$Œ>#п&HÆJô´ÇIfÑ“,5±’|gW¤½<ôôÐ5§®íî]gùs¯·õï½á¶ïÏ°o_e3]“ØîשÜëg9nÏ÷V¦uäV×\N-k¾\ºëRR)Ò‹e­SÊ¿¿[úãõèâí×Ë>.=})®ôÇ‹qůÇ7ÝJ,/»“ZÝÓœÛûÊ·ðç§áõ¿¿ Èñ|ÑX¼åŸ½«/õÊV%ÿ8æ[.¼ŸÁW«$sçèI-ž'Yc淋!eÇxó¤Ö±kÜ"´gOדŒ” — ” èJtðÿºè½´Ñÿý$Zêë –¡è­£«ú£i㶡èÿiÃæKô YÉ×D¶Öêý½ ™wW’JÏæ”VÎ.+½YZq!³¬âjZYÕÅôòmSʶ_H.;x>±ìÌ…øÒ£âK¾ÿ!¡äZ›û¯Å—¾WvùfTqÆÝœú—™ÌO3¿Ny\QùC²ÁOB ++ºã*Ö¿êÝò­­»dÞ¤yHG£ç‡g€žJ ¿ÌÍô'í'ÑüÿóZømàJa’ýF¡ŸÃ%ýµ†£“LµH²Dæ(YÚ1Þú²{c‘ŽrâÞõäx<ÞUÕ~>¹ìâ…¸âÖËIeíWËŽ)>{%¦(ùN^•ý›…)·ò«A6_Š-9p5®´êZJ™ÇÓ¶2æ÷Ç9ô?»²b»ò«;žå÷Ä•Xü³×kuùS¤ßn’è ‡Þa ~þþè á÷aèÆ"‰~ƒßûýåmþü_?üv}ß»úæn0êoZ‹ ¿ó”,Ïz2nÍžÞ[>ôºÒ/Þ¤*ŸÝÍsx|ºÄíñÎòÐΪª°ÿÇÞ{†E•mûÞ“¨D%"¢( Q9CUµb2ˆDI’3JT$É&0Û†V»ÍYQÌÙn[ÛÔy‡î}κsLº÷ésïyÏÝçyîûÍåS«¨µæ˜#Ì5Çÿ÷ ©åÜ9œËb›„1l½¼± Æñè¹â¦³—òȸ/=q1¿ññõÜæW·²ëß]¯Ä¯é÷JàÄï„Xé/B†÷ ÁÃ1 áú}À9ªÿ~Eà­ß¯™Ùˆ©hòä4Ç# ­,¸;ÊýµàE+sýÍÎÍÛÎV4<_Ü|êb~ÓÉ …-'¯æµ¹–×|æbAóå³…Íç.4n¹VÞP0TÛ²y°¼¹æöƦC¸îºÓ°o0¯¾s°¸Iò“°Þ㜰ؽô€©säõ¹s£±ê£ˆ êwñŸmN\ b§ðñ?‡aKÔÆ?AæÞð¯¸ZP_s½¢)öùÎF¨‡÷4A^u%νËñÇ ÷›£_4À÷nä×ßÆ9û£ûé[‡sÝôÚŽ­aïŽ6àüBáœV;ÂÊbìÿçµ×Ä?Ÿë߃óÕøýgÃç­M®Œ.¾Bºøß(2{‡=ê°Òøý\uÈü3½Í\ƒ×ÐòØ'ØÉÞéÏ?«MºÓ×Üpe±Ã„Ç=÷/n»q)¿ù!ÃGWó·=½\ØõôFÞ¶û·ršÏ]ÉoÆöÙtòRAÓ¶«¥M¾åüUJ4ÆÀ„Ì­ÿÊ/üO?Îó¿:àœt~Smüo$9ÿQøŽ‰ÆöhÒtšá”Š*:ÔVì¬ü"#ïßØyº¼éÀ™’æ3ç [¯\,Øvëba÷àõ¼Î//´»”ßØ}©¤!çv}#< +‡jq|oh¾SÔþúÀŸAÁwÖôÿãóö†ä=küiLÕ~ÿ™.þ©þg¤6Ñ°B£ÔÌð8™`Ÿd‰cüDd¢5Òœ‚ 5l‘Îl4ÖÌ Í\•WŸ×r¾(ÌåÞ^ÌÅyKŽóo×6+¾¬ +úp¦&öéöìcOa_ÙÃøÈÉw`ßzézvó§iõûpÍ™þ¬¾Éÿ!£÷ëiË|”h¬†áÿelÐÿá+áë?âÌSì•àœÌGNEc ¢q¦ŽÈÂd 2ã€ÌŒ!SƒyÈtÄ\d¬7Ãçºó‘™>þ=3g4eA8rÚ­á6 ØŠ^ Ñ‘OTÇÝÝQ ¹ÙáÓ%Ûpì{q¹¨ïÙÅ’í_]+èy{­xÇ·· +¶¿¿“ß÷ö~n÷³;ÙÛs; îr¹-,¥ñÿÆ?þááü Oñ2ײFFšæø«Qx!òãø©n‰}ÉD4FÓ™Œ˜Ltì©þ4v¼šd‹s?<´€ëR[Ä÷¨/«zcäÿ£Æ¿9ŸÛz¶¢ñ³/ÊÚ®](h½u)¿õöå‚m·oæ¶^»”×zùr~ëákù±?={-· ¾ßt£¤Áõ¥àöÃsP—d#£Ðõ±ÈB×YÍE–cW¢©vJ4}I<šl‰1Èr¦YN¦ÑØi;Q„Ƙ»£qã¼ÈÏæJšÑòÜî_ ž°'‡Ëo÷Toû¢²ñæ—ÅmÎm»~±pŽñ­ç¯æ4|}3·åÃPvËûû™­dwÜ¿™» rRŸ_¥Í¢ÀÿјÁûEr´Q¿gÃ1æÞðÏ ðO™¶²Ô›Š,ôg"sã9Ø7Ï@fFvxþ-EÆË‘¹Érdj²’œÛxÛ`4ÞF&ÏC3|Ê‘}øa¥›_9l]® ‹¾¢¢ö—Cúå™âÖ{ Záqº7˜Ýør0·æÜWrz_ÞÍí~ù(«ëÊ`.®%Ê·º>VLåý?¶ÍásEdü ž«[ c \!áye‚眩ÆDü½‰Èá(ü0aƒÆèÏÆ継Y,ÆöéŒm2[Œ¬'¢I.9hj@%šÁµ£t'švJ}ù–¿ŽY5(ÌgÞ^OK½Ôµ¥ør]]Ååêú8÷º‹Ïíøܦ8Æ ^Ïiz9˜ÓòúvNëË¡ìÖ —óš“ïµ×»_–YŒ÷/Ûó ü=D*S sd®= ŸÓ8l¦øû8bÿL}<2×±ÅþÞ\ì7í‘¥ÙJ4q2…lÆ i+ÓÑ4Õ5M\•¬Ü7  î™ÈVRæmW_Zþb”ÓIa†è½°š}9wÝõ®ê¢ õ[¿8¾©ãî—%]Ï—ô]¸ß5Ãæ[å­ëŸ´·^Âu£[YdRþÝÙ2§ƒÂT ‹¹ÿr,×$¹äˆ8ziâX¦g}¿ 2לŒýüDl‘cˆmšà¦êføü&¡±z6ÈDoöø1z&23ÅþßÆYÛ… ë9‘hÒüX4eEšP&ùT!»Èê¥ôV&»>œp§üêtI½Þ͵窜.n:WÐôŸÛÍ yu§nf×}7£öû™íïŸevݺ—ÝÑy³¨>ð×7)vòôÿë˜ çÀÿñõ¾d8ÖÁ£¥‡çš)C ò0Õ˜€ÌGÍ%cenåŠmÐÃv8aM˜ÇbŸ€,§ø óqÎÈ|’2ŸŒ&:â9XÄÒX´å±c¿`±jHXà<$8ˆú-6òIÿ¦ò«•uíËš°ïl9‡sil£ÍÏîælûæ~vçÛ‡Ù]?<Ìê|s'¯ûÕP¬%5x?D6ÖKþ¥qÓø“ö†ø\pö¡?YOpF“¬½ñy8!‹‰®ØW¬Bfc±ÿë€}&žgx®·XŽ,Ç­DVæNhüd²šÎ É ¢‘­{š#ëFsWS_PxkäüÚgºŽ'„ Ë{çrIXàùZÉ~x–ôòxiÉùººÍgjn_(é»z)¯ùäùÂ&éà/¡¢/ŸÀ#¸¾¸ôK(÷Õ‹ÂÀWBœÇMa¥ÓÆ«&æ“ÿÛóŽm:$;/©K²,ˆÐã'³Q³‘%ŽÇSçG¢™éhªCš:C‚&O\¬°¿´4¶Ãˆy ÑøqKpN)B“f3hÒ<9šæœ„æT£9L+²_ý…Æ‚ÚWúK>Æ9¿V¹~-¸|"Eo…îÛw%QÏöo{¸«9ü›#õqOv·öœÛØÚy~SküÓþm!ß^oÌPßsëÖ†-ï†2jÛ¯7z½èù~kÿÛsÓ&çc@bóhdNü‡ÉùõÈGÈAÀ_šjYád<žæÈX ÖÈÔÐYLòE6«p~¼ö´æŠÚwcVì&®úB°…|rÕ aúò®X86¼5Y²åµÑÒü[úKÓNŒ\QqÛÈù˜0Ãíàø½$þ^Hà¼ZòîóÍIOÚ žƒšrÍP»^ÊoúòZNýàͬº§7²? åuÞ¿‘ÛFýø4Û5ï† øðïÿŠmêüËÁ>!36a‰ÆÍA“gù";ϵȖÎ@Ó#·¢ÙÙÇ4íʯh/¨¸¡³°øÊȹi'5çæœÑZTzKwQå3ýEåôå\¹8ýÂÇâ!—‚Ëaùª}‚SÍ33×aºçÁÓ÷‘ ó{)Èýž +¼ô£–z¯¥r8¯Ý8wλ³µEĈ‘·¿ = åÞ§<}ôG™¨øÀ¸U|ªšÍôÿ]ª“1¿>ÆçÃcÙDwdn+FÓ]Ö¢9T)šM•¡¹òZ´0f†CÍ}Ãåý‚Õª3x|î‹\îKÁÿ-«zh´8z—Æ\y%²W5ª-Û£µ"Ðpeùsç–ŸÆ»àüÄË÷/B°ä×)ÜW‹|ß¼WÕM+¿Æ§¶â-Wméÿ‰ù›o’å_þ¼š>ð[€¬ïÎÜÀ¿ÊÿÂú!„?úV©:q/Zqñyìw +¸*:)ª4L5þû¸ë!0ÓŒGN¹þ4ÁZ‚&Í +F6±hšG²“” Ù^ëÑœÑh–=¦ÏvG¶¶höb-¦ªÔ–$Ÿ±tÃU]—Þ›ìqWpõy(ú¿B¨ÉüjßVù×ʤ?ÿœ.ûá×Lßççµë¯³}º^ÏöÝ+Øû +bÑM‘ !²Ç¸'²¹¯ï„¿ý¢9ìõÙ&ùw_U1>¤KnJÙ_×pß¼(.º»¥chpÖ⡚f×Γ&[/þìRª6œ{ày†ÏÓDo +²´\Œ¦. D <ãUŒ–ÒÙhYl‡æÒºkF«. 3=~$báã:ù÷§ò©¿eþûOëd¿—!ùíizÀß…5¿"ωï/‚Òï'!œýþu±ÿk!Ø«úâx߸zÏÈm¿K‚ô–0ðÛqÞž±ÒãB óê}~Ì˽mQ¯¶&?éíŠùê`G€Ø±á1ZìÖÓóhöÔ[…¸÷ûEë;ô¦ÌXFê´ÿê0Äã6ÁÜM³“âƾà@Ü(¿‚¿ø‘&û d~#ÄŠn \ÀiÁKÜðÒN\|ÈJÔóÆ^:ô÷æÝ·ùÒï„tÉK!Æoà·Åâò£Ö’mÑý?x1Ÿä¤-7çSµ§gSg3‡ïÊ]S(o]Í +yt±Š?ùM×ùÑ­r`«/Ïe=eCžž­R¾¹U-ØùËèÿò¼t±_¥1i…Œ 'á:zš4ÓÍõÏ@±û56ÞÖ_¾ÿß&¸Þ–áù$ò:+¬ð*9mî×£ë—ÄÜïœàÁ>½óõÞvÕÇ‹›ÙOŠdïÞn¸$ˆD梄՚¢uëµEy%†~MÇlü® +>üë'%Ü“çÙâ²C¼%rš®)Þó•Ôž_½e‰5†²ÐL-¶îáþð7rŹ§qÜ™—aÜÕg±Šƒ©»?¬”íùÙÚõÊ•Þñ;òëPú¡¾§'·u»õ&M_Iêì?Æ8fÌž+CK¹ +5çœ3£ÜîN¾ß ªÀ„$¿÷Bö× +1Ž»ô?Ò?,òþÁ{C¿Ñ'O´xé|˜¬xä­—üɵ¼µÏwõ¤?mí +{¬‰þîChHà}v~7Ç·ü¼•ÿç‚“èœÐój¸îÔ4ñç¿zÑ_|ÅRŸ½ ”ü›7•Úb" JÒð ”!J«At’@?¿ÛŠi¼ŒÝós€êü“TÕ¥û©ÒîËd õÓÛŒý’õ—û'¡Iö$FkõtµßíR ÖÀqmìB4ÝA†–¨ªÔœšÞŒs>-Ìv}$¬ôù« ’ýúuýÛË"îo*B>œ©‡{ÜûçÅ̃w©ô•Ÿ#¨sS°W?Æ+<)R>ËãŽ}PP:Í|}‘·ãRÄJYûß%íƒöâ“ÿî)n¿6W’Va}в– ¨Ýï=˜Ã爐–{‹d¹mc¹’® ŠŠÞi\ëàò ]Õå›ÁƒWKT§ÄóG¿Rð/$Ô®oܨ֛‹¤•û&û&7êÃý6SM²vðçÆÒlô 4a¦+ší›ˆ–'îáö™0Ëû[ÁõåjX£óù p~¯^|_ö?ðG¿ˆ-o¿`äå*E’`ÄQÁê¡1™úaÝÓøæ›+¸ªãv~ä0irœb‰–ÃcÆ8äáâ€¨Ö öòs×0§^qÒæ‹óéäÊQdÿùÀ;?²':&G‡ K×-Y¾ë•;ßýÚƒÝzfÓóÚU±ï)ÇÞ}½^~õiµóonÔÖsvÒÃ?ùЗ>F0Þ¦ˆ¾Â=†çU›n/êÓX²z·æòÕ»µœcFx¤å^pÒÄk÷OvÌÇ…°'ïÞÖmÔÛŸ²ü«Ä-¯ç‰û~\":"¸öÿº20µÍhùr'4×zZ`i‰d^ž(4~­n䆜1áÙeã O,ððîÌ•—ÑŠ¡¡léç‘HÿÅGºï¯î²ª#ÓdÙ•ÆTíÎiôÁ'"²Góô·as—VžFoè+ ËÑ–†¥hÉ¢“´HßËî×¢à“·×]x˜JþÀJšnÌ“T˜*êý¸8 ãÝ<Ÿücf.Š<õyN*4 Çæq³V¡ÉÎ!È>t«šóæûæ‡;ÏóÂJÏ øqûýžo§yí7ñLnÔ (Øa¸¥R`U•¸þÀQï{Qÿ·ŽÒš33¨Ìž±tJ‹ —Ñ9–ÉÙcÅdîÏÄWx¹z#÷å+‘ÄÇ+‰)”!ê2Uˆ:SØf)m¹4_ÚzqtÛE{ºåó…²mçQ;ߺ²G^rô—_ñd_å¦öIlA—ÝÿÁSyêÞš Á¡‚°Ûç«‚n^ÏS^¸·^ºç£;ôUPYõ¦¢”z>E»Æxl:c±2¬Tcö2 +1°F&#q=€ëPÛy"äœwi´ûSÁÍç[¥ü®~ÿ×<Éy Ü+8‹sÛLWãk™Rb Ûzj&]Üm…ý€&_¢š‚þNîÈc‘ +XåŽx6†ô +í¸ÂÝ6Áéucy‘yáŸb¿Áµ§ZQ5Çl™ŠCÓÙ‡§Ëûžù„íº«äš¹¬Íc ƒ©Ú?î}å´ß_Nמš#Ûù«rà+Fñí½*ÕÓ[•ûþÍYVØm)m\HúÈ=½^üáJ÷Ëã +é¯B†ä¯B +ŽgñÞ¯Êû¨°Ä;m`´“(y*V«ù·?žÍ>y³¿õ*•9ù3'Kn6r[åÄ’Dz4Ê¿°¥*OÚúH•hÉÔYhåÌ…(ÀÅ+Â4ÂSr#“sMB×æVeÖŒ¥;//ƒ}¾ü‰GÁÔ±¯$ÔÀž’ݯWÊÊz­¨Êfÿ+ì«•íýÙCÒòr¡¬í;zï¿ùIš‡æÓ:Í©ø,&³~Œ´çñ2fï?jàƒ‡¤sh‘dëù¢Þ7‹ÅÇñaÁ-`à×¥~{ÿm±ßÁÞã¢àèù^ðù‹ ðü(øû<üü® ¾gßÀë':#øúm>eퟧ–¨š áã퉖Μˆ\(Ñá©ÚlRž>hhGø"’ÐdMðlv%…¯-]¾}Ñ)ï¦Ì©4g +õÙôæ1²î˨®ç+˜ÒÖL^›“ßd!þPyævlèÍÓ¥ôéo²²ƒ“¥™[Œé’#S'Ÿ‡+ïÜ.„}ªk×2™ƒï¥ÒîgK™Ò½“™õuƲª/mÅ— õñÇÈ‹¼O Ë=²O¹'îÖõL=:Ê#y·¾÷a‘ä;! öòIîaù»Ì¼|ƒ»“?>'wäºtrYº É3uØ=/øÇbºï©“lmž®XªBГ.¡y¤JÈ6€^4vÇCï }פ·¨Ç40dÛŸ®‚9GUí™J'o2¤2635GgBÿ‰²çqôpODÊ/nEÉ=Q*> åv¾÷aÚ_®u~µœíýè{>å×$KüÍCÒûÒ‘Úrr¦¬îóYÒ£?û^úò¿ƒsª¯„ЀWB7ïÂBÿͦø…j­Z%Bžb% +P¦iHRG»ûÊÑ +Wäë¥DžNÞÈi¶=ò\á6Ì¢áÔ=<órä퀤"ÉUa!I™†Á…=SBŠûg@o²pëxèqäú_ú…º³Z~øk…´ÿWYN³]¼c‚¬ï;'YÃõùTj³‰4¡J_¶ã7'å…gÉì¡· éuÙ°Íú™©M{'S…ÛÆÑÝãeå‡lÄÝíŇ~u ÜóÓªÀ¶Áy¢íôÿ´4à(Îe¯ +¢À¡(¯þƒõ;ò÷e¢’¢¼&ñöŸ—ÒÇÞÓ­/Š³ZLd¶‘¥Ö‰ù5§ÅK‘ÃT[´bÞbä‡ç;zÙ@KO™ZnZìTÝé¹ôÀkoùg÷åü‘#ˆ¾ÜšÞÍöÏ=fî|˜µêi£ +žÒêSÓkÕ%a™Z²à4M1½FÝÙÑÏ¿¹hÎG蔊Ѳ]ß8ü à‚Ô@3t‹ÙÐDMUJ•©¢æ‹…|ïÝ3è$ë½»’ÝþÜ 4 Tî*¥o\é²ÝÖLnóX¶¸o"ôzA<·i» èó„]>ÿ¸¿}í“¡×/Êw¾ `«¾œÍl:=ƒÚñÁ™9ñŠ—ö¼X.Û÷ƒ'uè?]}h:]kJ嵎•dwŽ—œ(Úzmº(}§‰·*M݃ŠWóUdjˆèu?q¸š,¥ÉX²®ÖÐyUš<ÂÁuÓ\ã Èu™ru\Žü}ED‡X$ V£”1„‹³vãhyD¬Ïø/ªøRCÐÝR&òk³õ¡g˜ÛuÏOyl(Lqð¹ŠÚz~Ž,³ÓŒj¸2_²ë½]r`2°ºÄŠXu +ÛªüØËPÅ¡çJzÇ÷îp©º s™Â^+:c‹ »q` +hRÇߊŽýÅ=ðÐOî‡q øq¥´òÀdIñ>+iVûYB©Œ‹/ðÇÄr½ùØÖÍèòcÓ¨õ•†`÷TéÁÉÐW*]½AÛça>"%’ÉS5˜üÞñtÛ#G¶ý™èfƒžÑ:ô”–í}ï½]LûÐ2jÇgj×3W觱Oaò;dzi[Lè´#zCƒ©¬ÇùÝœ¤÷–îyï$;ò^L{­b¾|­¤Ï¾ æ.|E{/•øÕƒ>õ^.ÙûW*®DÏŸ Q¯Õ€þ-z÷ÞÊS×ݾR º1˜Ãœy«ýwéçB€¨úÊOišm>Í2˜ˆ?ŽG~,’DoЖ®Ù ¶V“ŠHÓ–ªÖk:¹¸£•Ø®\ìHxlTr¥!“˜§' ‰T‡XÁ'¤ê*RÊŒ 3*:C‡ KÐäãRu@+ï,V|¬`}H•¶§Ó«¥}™¯=A×I«2â³·˜3}]•'¯E†]=U}÷³ºàÓƒÉÌŽ÷žÐƒÆ˜Ì4Üw`ªÌ`Ëz¬é­gç15gà8AS"ã«ŠÑ$Z„ÀÂH.-/¬³ä/dº¯¬”u-ù´Œ¿´íŽ½ôÐÞÜÁoiéŽç+€£À$UŒî½õÔjÛÃeTçÃeìö·^d®×´e6nŸD5.b÷¿d>{!ƒ±eν +a/¾ˆ O¼fpLt¤Šv[Ic‹tDtŒº§ƒ<œDH:÷Ñù#é¤-£éì¾q EGæŽ1ÑØwÄ«Óëꌰ-L`Šð£æâè[aú?ø²å‡¦S±¹:TR±>“߃ãùAœ6™1 Ã>²æè,ªóÖ2¦û™ ³÷•/»ïk½û;ÑÛ>ð:€ùìú4dÝO—ËêOÛIÞ;AÔ²°ç›ùò½Jºýã +Iý;IïOËàýÓé%£d Ù:Låáé²]œ©]@7“ª:8*ÿlª¬áÚ ëªJ­3SD¥ ŠÊБsáêʨtUAïd¶mph=6ÓbN—ïžLõ>^Étßwbw?÷>W®j-è Ò½Oœå{ïK™ƒO%ÒÝo%û~p¡O¼cä—žÄËO?]Íî}-’î~ìÄnÜeÃæÕ¥jÏ”íÿèMz—O¼QÈý†ëŽû ¤©uFTj½1Õó~¥¬ïÝ*ºñš½¬âðT:·ÃBZvd²,­ÅÄÙ99̱G+üp<õ%•â8öHUêDó£d'ÑèdbSG€f*±Kì7ÙºCvÌ®¯<©ÞÁ|jñh.1S/n±¢ëOÍe·œœC7à¿×ÿ»tç7«¸üVKfC­)Wr` +°6èÌ­¦lf“9ÄI6¯Å‚hêlÀõ`ÎÅ‹vLds[,ˆ–dFý:!S‡N(Ò#z;ŸÛ’)[Œ¨¨¬ 5Ï>|Ш’®ÎÔ†>iÐÛã*ŽÍ૾˜C'éRájÒ öLÅêq¹–0_¤ß¹J÷¿÷¤v¾q¡v}p—u?[Ám<0 ´ÝA§€é{é +k =D· kXSý¯<¹]/üÙCÏeì‰Jæóçœtç{gfóç³@w↬åòBêà;jÿ÷Þ²Æë ¨œ XW“¥7™ÐUØgö<[9Õ~o)ôƒž?hGJx®…ÆiP¶˜ÀÚ€¬÷å +ºáêB*ªh¤'ë äçË#.¹b4·±o2hSrE}ñµ4ãÒêMáKc³GJƒÖkJÂâ5€ÙA·9«4äUý3¹Ú/€¶è}ëüÞ‰ =J´´q¬¶]Z(í}²ÏGG¦éÄ|¶õâºcp¿ýž²ÿ”ë»åÉl¿ãÎìþÖ‹>ðMwò« þî½LÕó땪WŠ¡ÿ>ä™tîØc9ø\&§i,ž»öÌÞ·~ЋKïûÕWšÓoáîI£•«,®RŸéþÆ…Ýõ7è‹Qù=ãdåG§ÈRš!õpfk}¢Yº{á1Fdà×V&¬‡ f )\%àáA¬S»Åï¿/]&4 +¿t4h¢Ó{ÞùHw¾um3ªå¡Œ/hѳ€‰ÅuåÚ2C&¿Ë’)Äq×,öLVƒ—±Ù”Éj4£òq}”²ÙˆIÙb̬¯5âã õéµ%4ŽÁÀÅná€*âÕÙô­¦ÐßJõ½w¦ú^:ŽWØ5°ŠjpÓzÍøbÀÇ./°™@cˆM).̾¯üøãOŠÃ”ܾR¨@3ÖNˆ†På^[¶¬Ë´žè†s @{Ø 4®“èÞÔÀGOiÏóe0g@ÃŒþLRž>WØny µã[²ß¸»¸–š @lùÎÉ`£ ¡AÅçèH”àÔAó]¶&U[“;’.˜€ç¶·ñðôqr_é‰üyD…¥hñEÛ&€Ž8è1ñùzÀÀ}B&±Ì@™¢åéË!6Z _ +ÐMW:$I´dX¢Ÿ½Ó†h©ÀÇýÓøò¾©|ÕÁYD+¥âàtªñÌ|ÂÙþÊS±÷öÙÅèÈ㧓C߈àú{= +<ÖÜ‘§ŒâÒ£DåË›C^^¨…^9Ð*Q¸ÇB_>ðd _Ì‘áD¶í†ƒ´÷Û²ª/§KÖ”Œtu£å³– o\€¦‰›k‹õý€G¬LP‡&kúŠÂ°ß ClXº6hO…·ž÷ j»àF´ÓbŠô@+ +¸% ¡Ï¦×šÒkRF@ÜV~v[zäF ·õÄ<Ð¥M%ªõÜBæÐ søG©xÇŽLÉ!аgªpNY÷Å<6¥Ö$P¡¹[ºÏâ,ÔÕÒÐxMÐö§Öm4@j}Íhi|.ö™…zlöu©Æ<èMf´Ž•E¥jùûã(ãè$ƶ'àXÁÚ#ZB8 3NÛÆÇ€K-Åo(7]F8/à ‚7_¾w:èÕáæ<¬‘µc2hÝ·ˆhF¥T›‚Ž!h}Èz­¾aÁOµþìBÈ»¸ÃÏÉ8ÐIú²àh *8v˜ÛË8Vʶ -aS›MEò8õ@ûF&BÌ1„Íiµ SÊG‰ƒâCZG®0σרÂ+ˆ£ˆyD‡®Õ~®SÌø¼­ÀÄ‚xV:.KÖÉÄ|Œ:ÎÔdá™ÚÌúj#&*s„”‹!:EhåçÔ™så;¦àº}è&²Ûx1Ý·¸ºãó‰æÝæÏì€Ù ì>Åžû²Ð/ϯ8ýEzо!ц¬?·樬õ¼=ÄrþËg¡üÕç Ч5<è¸2Á!Ø—­Ñ`Rëp|ìÏ$U‚µ*:³Å j?Y˜šÓr?´túä¾ÊIÂÓ´¤ÊD o\»ºz‰q.sHy4áo‹e!j É úÓ _ +ÚÿtX²–”ŽR§C×iñé5¦LåþéàA·‰n¼¾H¹ï¯ÜóŒá«?›M´ ‹Û'Ò{^ùò'^ѧþÂ<èG¦’¸|²ÌÖ±Ôêd-?±wúê'‰ÊÔöô– ð‹„S†ó6«Çô\]`sÒ±š ‹Ix•Ø¾@J$å£É'aK)Í&á¹”Ûf <Ð.’o>dGt™q͆&j½ªš£sÕì@— ˜Ult‚6èÔ±­W–òÕûf¾á0ß0W_‘´q4ðº¯Aw\wd{ï¸Bnš¡„›×l :˜òƒåª“w×Èö¯°bh qÝw]A‹™ø¦¤l}Yç-G¢ÿsúmsâ{9ÕþÒ˜cLb¥!ž꾸öò¤Ø Ý÷ÜUVvøIOOòò!à]‘1H­1îá8“Y¢zÇ”IùPuÐò&Ñ Yú\bš²^‹hÊcȵ_Z®ì8çÂoù|.Ø5™¬ú`lóÕ¥lçõU ûÅåÔ˜‘\«åÒºûÆrà0(ó·Z*Š»&@Yyh6hÒm—–*vߓл¾ñdÖ•ÊBc5 ç¼tÛdùæþYÀdw½õaúßú’Xß÷Ô™h1•î™ÂF—ê²1¹ºž< +ÍUŸ´£Û/ç·:€VpÔ`Ì`- ´‰Ø_{æ)ö7lvÇ86·Û’äë5_Îá¶=wâ»_z*»Ÿú)»ú1]·W Qž^mÊõL-CÐуý  oÌä÷Y‘œ£âØL¶ñúb¾ók7¾÷¥²÷ž(¸ïŽD¾ý®/è'â¹SzdSs×T‡lÙŠÃ3¨”'#ÃNŸNQž\-ÙûÑ•®==‡Ù|i.»¡ƒøX`ÎÁ}:¶ Ó +Öõ€úwÀî`{_¸÷ÄÛÝyºc¿*áp¬öoN™XhÈD&hA\$ܬµUFÀJõwÂ0ˆÎÒy§HÎÅWã8« ËMØYØõÜõ”÷ß—€»ëkY7Îc€µºHW–¢ lY«!ccÔA[™Pl¨ŒÎ×Æ Ñ” MÕ戦m¾>ÑTÞ´k +úÜÀ€H- ną̀ºøc…°K ·°hç” ”ª1Áñ¹†ÀT‘oêò‡·¼|ç4ªÿ…§êĵ¨àëçr¸#/°71æ4µŒ.Ñâ®Ø?ð°ÁlæÉ<íx$åz¾vgqŒ&ì,³ g(«u°³dÊpÂÎRü‰%øÎêC¸¿àG‘\i˜UBX„m“œkl +†'º´}@ÿlïv–¢ý‘ßõÌØ1žã6N]†m Xóð°6ÔŒ|Z^Ø=Þ•«ÃEd¾¼²í¾ßý¸tó'ì¬|mÿ`gU; çw‰ùŠ‚æñ «ÌÄqïwv[¢'Áy°¿› Ñ\¸:«Ä+(Tƒ ‹Ó­eV…ms Øk•1áãá8FÖD’KGQÑk4ÏšÞD÷ºéÌ"¢Å œ-§á”P6xuAYµã›úmùú K8Ðâ®èŸü+ÅÎ{"È‘á^“…s¦øb=>zX‹›ð‡Ú†‰Î,0ŸAçÞwÍA;Ь…ýh„ß·Agx8ƒ0>T1yúÀŽR$dé ³³ê¬ØÝ}a}Kv– +‰EÀ3Iœ.¸ï¼0ˆCŠ¸4ÝßÙYcEôJÿ`gEdTewMמ¶WLSàxFtø×ènWfÛ8ÂP̬0Ž¥2¿Á +´ô•YØâq•Géû®=³žãá¨áçç??»Ç +4«Á¾Ùl«ieFÊM}Ó‚:}B¶Ý uSïÝêÎÓèÎïy*ù?uç¹€î¼êì½x!‡˜ MEö¶ñòü¾‰²¨4mX“­Ù0‚[_c 1¸YT¨šˆV“G­h ¿õÖÈsùÌîqÿ€íG‡oЖ2Áj‰a;Ñ$ÖuÅ£‹=µÄH‘×b¥L­æµÁœßtx&ÓûÄ ¸D°¾(Åy°e€s.ò•!?w/ÂÎ’r +5óOvÖ$X#‚˜( +P¡w Ž/‘꟔#•Q™:ÊètyÄú|dÆHðÑÀâ&|êÜúqŠü+ðŸlB†Ä{»À×–k>댢O¿¾ÂòVÎõ±˜©h8é ß|ÀN^¹&a¶•´MdvÜõ€½7°V +ZÜ\J1ƒ_øf\Ç]gÈIa P§«ˆÍÕƒ}#„UÜ; Ö[û7·×ŠY¿i– IXN8f’ù;«ë® ß{Ï ÖRþ`gA¼•¯ßböÌgV™¯ ØYÀK†Úì?ØY…Ãì,®÷ƒc5!¾¨RjÆðá)Ú0wAÃ_±®Úr ð¹Ê– „g¶¡ÁB•½ÅûÀ±;ø°Œ„½…Ÿ”ºÙ žzë~>ÔñŠ’®É ¹M˜}k4œ_ªì<ïT¶g¦<«Ú tŸ÷LX°Lcv¼óàw}+Y`Ç<ÇNX`Z¿°—oÚ1m˜»ž¤ ¬DàÀz Üóò§x$â#Ôý¥r$æ"Õ v„õì©›Ã>ƒ­½0rI>¡Ì P‚üýä AŒ*JC™Yi¦*Þ6 8èP—¶)IJý¶°v@X°eû¦‚†=ì)€š•Úû­7Wwv!ðæ{%¹ u`gÉ1ÀÎÂ6þ‰°³¼ñßÃ`¿+×Wš(R +GŦëG£‘OÔfôäñ8~» ûd¾¼o +0¡FÖÎkÖ>´’k¿¾ø®ò´z3U^50*øî[îçÃ}È©@››ð 7uLfº‡œ!¶FBÎ;ò·çÒð9—£÷6η]T9 ã•1yzÁéõAY¸®¯Øe«Üu[¦Ús_.ßù\LƒvrÛÂÎ"üö=Ó¨¶‹„ŶÞt$쬜V`giøÂ\T$¨sy;¬@«›°©7í&ì,%ð“U8ÌÎRþ™•ð;+e­A±¸¶Tà¼r^`Ççm³}oào@N,0ejžŸõ–ÀV ÏÇu…Ÿ¼Fƒ¢ÃÕ€K9áþÀó«ŽÎ"`jà¼dXçxç¾–ò¸<=Â'‹^?˜ßò¬ ºñâBv൯¬ëÉ2àRÁQ°¿œÆ¨ÕH·~$¦áç-G×äÙ#àwÄ’ªBÕù Õ¦°Žñê7x]XÃî4ŽóŸìf ®ú³™À«6·¯‡ ùzËäÛlt*öÇ[-»måKòJ·yð'±Ïŵ Ÿ^K˜°ßŠÚþÔ™ßñÌ°³@#=6]GúOvVÚïì¬õ:*ÂÎÚ7G^{Ê^‘\6Z* Qƒ÷¼m¸WªÌ¬«¨Ù3;¨¸{JPr!á[“z<³q,Ñco»êHx8—†hÙ¯€°ÉëÇò¶àÜk` +ÄA¶íÚr¾kÈ鸶’n=·ðd- öçZ¦Ë΋«ûbhÉþGEù‘ÙÀ%Uì¸À7|±((µÄ„ ‹ÕT­ÉÔÅõÚx®åúrÈÁ8\Ëó%‡ÙY agÝ_Éoå+ï{¡> ,ŒÄ|}:2g„$*M‹Š.ù; Ö—€9@øJ»§*ª÷Û) +¶X’ø^ÐfÍmÙ;K^÷¥½²üÐl`WÊsôa¯ÌqX7QæwZ³Ç ó9¾´'ܘÒvkø]ˆràqU§Ütp¦"w‹øb9ð':Èp¯buöHðù\R™!ÄBJ™ !–†ª‰aÏŽ=KASætL 1Ç5ÂÙ…5O\·Áþ4X/æ—ì²a¶œm}¨¹˜úó€C ÌhKø`¹mVw‚JÛˆPT™+ǵ*0p`}s˜)\m<Ì¡Â1òÔ­'íýya¢ƒçà ׄ}'Àû‚ `ÃõFä!lÃÑy|㥥+Â}`Ç8?ìÖãs‰m[&‹Ä¢i|û-'°O®÷µܯSôÞ÷ Ùu‡ç°ÿ.Èø‰‘ê„]Ü5‘_W6 +îéØ0 Ùºp_Š©ûr>Ýr}1°³”ÙöNÀÎb7ï›=\ÉîÉ\nÏxвfÈšó鄬XϪÄöYÖ‹Ï Ÿ/°³Š†ÙY|ãç‹ØÖóK FõVó•¹­V$×Ä~˜-3ͧìùZ|ÞeÝ“ø’žI„5_²kª¢þä"®ùܵ…{.É¥Fª\\ï¼ß–ëtæ»ï¸Ó݃+èmøµjŽÎžp>€÷¤¨8>G™ÑbÁDÆiñ5ûfÁš†bï=ò"²¶Ñ÷Ô‰j¿¸˜ðpEjŠ#³ù¶k+ù¦KŽ'‰$!ˆV¥hr!iÚ°æ£X[`TELº®2µÂ”ëºéÔs[LX2jÍ  q=(Æõº Û6£DÀ0‚ucàÑÀºÉÁç4KW™Ó:Ø]PóñyVÀÜàKvN†²ÎTØo½ÂúeBŽ.¿6Oò0€Á¶$¯:0 îgÆ{|žFò}ÈÁ䥇¦³Í×aMD^Ò;˜ß¿Yìã€-×êQ⠛dzšô¹l½´ˆð‚2ªU™^9†0˜ñØ@ÊoÅq×hïŽ äE%ÝÖ,¾ö¤6n>Ol§¿3Ý ¸Í‡gÚ†âÐ#…òЊí¹ãÂÅkÊ$<‚ûW„Q“W7Ž0¾€óyX\‘>YOø;‹­?³Ôm­ãùÚãó!—uÜ] +õ»,2C[†s|6­Í Xiò²ßYœ¸îÃóx"÷;«¸s°8˜S-§ c]Q´Ãføu{&€=Z8ÔU»§sµ‡íØÖ³ØÆ–rõgHÎBÖ¬ªúgÀk6\)¶{ü÷  ¾ ¸SxŽ²Õ¸–ï¹»J¾ÿ.MïÿÚ—êt„=vpÏ]Qy|Ù7™ž7ŠßOrüêšÈc'Ã\‰Tí +dún»àzÈÞ3ø"EN‡K|øÚoì +{ݸ¨Ü‘òÒýÓHÍÜzÖQžQg&U­QgpNMÖ}ÖÀÝb±ý€ËØhu™,ç†R$•¨™1òc8/¦ùò"X—Àõä)¥T#,Oü·ä{m€oû—“¨êäºéÆ"`ŽSŽô9àZ֢بX-`mÁõ”×|>—­þl¬åCŒf£st(åZMà(Ã=tyéé„Bîõ“ª}"pÖ`mzÉøÚ3öpÏŠ0a ì¢ìøLEñž©À¡VæwYÃþ®áìpnIæÑ®iÊÊÏìÀîÉXÃzð¸ +Û&ÀÚ5ß{ßûï9\R¾©Ã†&iÉS·Ž}=ìÞ—ÊäòDlëÐ2Âì5Â>:í¸±‚k¿±R±q÷tÂ4æ-ÎùHÎZu`ì/ Ïo¶Ûxj!½ã©+ÕzeÜß…ûͤ×1¶XĤÊ}3ÁÏC.%O/6"yJvã8eQ‡5¹'„ý;ÝzvÕxb.\à¬C=/•Ç©¿‚0Up\!>¯´ö°L'Ü 8oœ?’ç=[½Ï–Åù9®[B>!á°Ây(•5Þ7ì=cw>ó ëÖÛn/gÎ-„¹ñ‹­è³a»»À^OžG »õ¼=ñÕY[Ì g…×%>%ì½Þì qÖ® îï¸ê >•Ü›‰Ð€ºb,¼>‘ {2`-8Elð:-©$h˜‰˜Ù4˜*pNpoŒ‰\£éïãsZ9â×a»€{Ìi›M†yæŸÏ‘Wîk¨prFyR¡!abá 9¼7eiÿtyýéÅ°>#/Åö‡ßŸ¢ìð .½n ì‰`ãrtåéÀ±Ä¯þ+»}ÄI9°ì²õ`ý’¯ûr0?X[À†Ël u6¹œƒÇdÀË«=hùáV³½d» ®QŸîƒ/',žŽëŽÀ.‚çzjUl·‚î|º’Þvwøªã +Éø²]S¨°t-™rÔÀ­‚œ˜plægÌyœò°ßª|÷TEAƒ%¹WÖpl>Ûy}%×pÎîÓ3aÙÚ"nµDzâíÖTÛx}r¿&ÛC^‡%Ì1®¤ÏšÞ²Ï–ê¼æHµ^ZL5_°‡^T66Kø˜l\ºŽ|ãö©„{H +vOæ×àW §Ho2V¡XÚ8媶cºØ$®¹ôáÞøàMÉ3ôØue†òÔ*¾°û¨Žñd×L¤ÞÀσk|i‘¯J)y4Ô&PïÂu‡< î·rØf¹ø bÛÀ˜Æ×L^Ø9öòðñYº +ˆçõ'A¾<-¨aÏ–¢¤ÏönÀ¼‚÷÷‹åiÍfP;ƒÿ†<’pÓ×W“=GÀ‚OÛlŠã˜)‰óÀ{Å>…˨7¦3á Ã~Åœ6ÂìV@îœ[X£ÝPnBXMÄ>Ÿp^aÍç¡0ǹ-LJý°O±#œ+`ÅÂ:;žcòT|í +±áúò"°A\-dê¿œã9!Óöåb¾¿>OÂ~(ð‡aÖÉÓʌȽRœŸM¾ý¡?ôÑ1i8߆½´¥øºm˜,:Â+ƒût™¦P'»æ6¹à6™EöWìû]› BØ/ó‹äøÚ‚¿RæuL q©êa‚ãsæ6uM&vZ¾Ó†Þ|r]u|›Vo +ù97Ø÷Ò~ÃæalE%j'\ÒÿÕJÙg_pý_ûs»žûÒ5û¦3Q©ÚÐù»©ÀéÁq`™ÀL(3$ï›Ìëcs…OǧãÓñéøt|:>ŸŽOǧãÓñéøt|:>ŸŽOǧãÓñéøt|:>ŸŽOǧãÓñéøt|:>ŸŽOǧãÓñéøt|:>ŸŽÿŸ©SÝãÃÝB’C X/ƒ©ÎÞ‹‚ð×’uÉISƒæ:'%»E‡%G'ć$¥[;·X?ÊÛÍÚÑÚÖ/$=")h^}Ð ëeÖ¶ÎÞóçá'àŸÎ°žuÞœöÖs%!±Ö¶Ã/jl-JŠŽŠŽÇß”†…ÄF ÿê2ü0 à-,·à’´~ÝjqH2~Jüð7]"ðsþÓ·m©øø¸ˆpkò]kümëE3 æY;ã› +ŸD¬Çæ[Ï#ÿØtü…þd þVªõüyÖþÖrå<ëpø}‰Ý’yóç[/™ç0ß:ÎÀÎa©Ã¼9‹— í÷篒~ÿüýÿýkòûñÿñçñ‡µÃ—Ö#:6ÂqøSr6¿_gÛøý°žsÝ"R¢Ã"\ý9_k6À@nmG®yóðÉŸÞâ%sÎsp°VZÏÇ_/^g·ú_|üô÷gýþa‰µ=~ó—+eoM^À`êTòÁ6­íç/^ì`Àzëzy3ÈÝÕyû3È_®&f¢Ôááχª‹¨µ€À05Q¤š—/<Ü$ÈÇWŽ$²ÕjÒˆ\mè›”EfkË"³´%á)ZbÅZuwgZµÜ y{p(€ŽQ P­UŨ{ø°ÈÍ9yyˆhª‰•«Õ%ë´C5¨¸]Ùš]QD†–¯$ù‹BèHIÃ’5eE#$Áiš¾Aäoû*ñkH‘û*oüQ‚¹(u裀=ï~~Áäw¹h5:2]´Q”Uc@I•×6zó¡w–èþÆæëA5é•YWiýªÐo {™¡¿SYÔ:zW ¿’]«)‡~kÐP‰ÍÔ­YÒ³YsxôyBO—­K4-ðGùš y"hžl5}*¢u¿=M«ÓFò‘ë´UñņÊ$ü÷×WƒÆ “˜­G´"2´¥Ð£L«Ô(y˜:èV¾V z¡™‹HÒím Å!*$VƒKÚlý9tôzm:*‰hÒ€¦“¥ý— É*•«IùP5úûcðù'dè*²jÌå3”y=¡·9P­Æ„­×­rîe;§*¡ow5~è3…뙴Ɉh"åtXÉ wNârÚÆ1ëK ÙäüýZ.½Ö”‰Ê¨Œ×X.1WŸhpd7[}åD§Äˆ\èEÈk½Q°Ÿìíüwè  š V½E±2Jt¹A×Y©&–„¨ùŠ4œ¤ÐëÀÅ}H?9ò>‚— A?ªT§!ÃçC‡ákŠ¿mMw7?ýª ËD—èRÑeº²Ð4-Ъ(ÉTk4@KÓ'@Š ›]Wc¶VÃÇŸG.ž"äý²!éÚ||õ(.y³W¬/cÔù¨JÖðÆ¿çí +Z¿Áj }ï4Ž¤A)šŒ2Q“‰LÓV¬ÉÓSÆåêË×—ŽÊ©››(Ϭ5ƒýë2|¾ø=¨ËÓ¶˜*²·Y*ó»­AA™Ze +zD+½Ü쇋MÕ¡£SµÚÆáëk)‹œæñŠ†³Kåµ'í•9Õð;¶.>MzˆÖIaé»Ö8h›6”±ÕBµ6Ë@™”¦§L«0 ¢ñ°®À4(˜uZ gº2tP´¯Et&cruÙ¤}èÏTe7‡¾a>¹ÐP™­C4‡ò-¡‡K‘VmÊÇfë2«×iƒÎéíÁ¶OGÅk²kµ@CBž†m#¥Ôzð•åûfÉ«ÏQ¦6šñq9zlB¶.Ø9ô‚¾ô–¾¿ôz3Ò7[¤¶©ÈëžHt´/.á[—C_$—3¬=Á¬-Ô—*ñX`{ ½ÌÉØž¡Ÿ·¤w2h3>\|–.é]É(6VæwLäÖ—æÖ¤Ž$½)ÐG‹Çô÷EÆjqY]–\\¡ž˜P÷pòÁ>ÒI<ß”)š>QCÆÇà±LÖ¤ðC¯Q÷àQ€/;ÌÄQÅk šˆT<çÃÔÄ” +~+¼?ÐeÃsF@?Wªš~ð:b*\-‰R#ºÌø šK©3ᢠ+t¤Ê$ ø s=Íò˜|=Й ã³zÿ†{µA¿øIlLúHùšb=™"QCªÀ~4(AS¾¦@O‘¶eŒ2©ÒX—¥§ˆI×ÞVUFµ½ÚÐ7Ëem&½g Á½÷x|t kÑûI«4U$—C/#ÑæK©CÆ)«a,_}b.ôNBo7ô¶ÊÓñuM ì{¡ÿDYºÇV¹ùøå¦=3Dbû4eôØçéˆýçp0öÉØgBï ØésÅcÅÆdŒ„>v°ej‘ôÂ’~fèU)Ü>z…H¿ëúR#boØ/+S*MÉeFò¤<ðsðZDg Æ<³šô¢’¾ñM;¦*‹û§Â\S”lŸšYÃý‚»lH¿YqÏDEnûxÐîQì´! tÖæêóymã¡wôO—öN–C ô™äÔ[ðjÇ=aÐÍÑ%¢]Ün½o|v­¹|}Á(˜ß  ~´Äà½Ò*<–`Ðÿƒ}Ø'è]°QqZÐ;:`W>"äã'A  %c±-zÑÈßO…d<~>öItX’–L©þ‡èD¥ûß, Y£AGÄiB/µ¯H†Ùpu&bƒ6«:¹ð·A¯lŒNÓ‚Þa˜[ÐsEú¤ +ñ{®ÅÂù%ëËSªL@¿tz@CCž\m :ÞnžˆRĪˡ'*_— +^« zDWÇ^¢+}!øEL†.h.È“ŠFoíRvM–ô8*ʺl ü؃í'é£Êm±èÏå¢2G=²Ô-¤gPU²sé½Æã¦Èl²Î :'*Jû¦àüÀ +4Šû¦**Íߤظ×|‘2u£1hk±‘‰Z¤ ÏÈ-øèu# ×U±¡bŒ|]…Ÿ^;tEˆ®h#@<Ìj€>¶iÐ ©,Ķ}¶Ð§ˆçÑ’#ºmø½€=dÔ™FœÌ%ès•WžMzxëÎ.„þ.èGƒ¾)ÈgˆöNî6+xmÐ#‡Vv-ôæéËs±ÝAÿØâÆíS@ëYYº{ª2«Ó +ú÷ñß2‡¹=S|b‰!èÑ“zÐò]WbHbzzƒ9Ì&_û„ ºÐûG|*öµ A…$âñ[Mt†Áב÷ ãŸ}çp=@O]ʪԀÙÀF㸰&Gôj™ dM.4Ctš@cÆ~‘RD«Cþ½ ³ºN a z +𠹎 +Ûob©>ÑÈn˦–A/5…s*"M‹‰/Ó-+nÓ¡éòÒöDG.,Y‹Ã¾”ôšâ9yh:‚ý®o6ƒ~x 誱êD«ûI6x­­ŒÖùÆçqú‰@lÉq¹z¤ï”œwÉÁG¦áXžƒs¼–ñÄžAkÿÆü ùÝÔ3È…@£„ø¨Œf ÒSˆã7äv0†D“%çqéµfDãi}ñhEJ¹ ÑS¶>ŠÄß$l3Ðg>æPv£éé=«ô2cea×$Ea§5ô“¾H<_a^‚n%ô¼=9чhŸï“è€Þ5¶CÐÏ#½ù-¤ïlãŸ=¯ålA‡4­ØŠÃ¶ ³ Z"Ð×Ág’MèmÌﱂ¾UÒ‰m ´(@‹4\†5Ò°/Ç×Û— ø~Дe“þkoWÕ¶®OÁîs‹ÝÝ ˆ€4¬µf­D100PééŽE7 +bØ¢ŠHw#ö÷9gþÇ;pŸ{¾{ïÿ~çþ~üæÖbËœs¼ã}Ÿçc>ûì±áumhºÀó•€- ï -]'ÀóŠ8΢˜½0k0ÂkçÝ&ÇFÓf(÷.<£ïŠæÊÇøÙ}Ð ;í>4õ(”ÿh‹s£àÞÀ¹ÝÓ)ÒS¨^ ú*]=‹Kc†ž)Eçøtž[ˆ@nÄó ½¹°ÐÿñZ:æý&äÙ:¬U»?yÚ{"k7“õy´’‰«ÛƾÛÌž œhÀƒ"Xcá¯çZ½sW‚Ö/~^ÖûîrðA9ülôE„ñ÷ÁÓ„—o,a­ lÆ!f&ø„¯ c>qJ˜ å4 ¼•@'¼ +øˆ‡¯hÀ3g.Ožô´`R|Pˆ“IQþ6·´{DçC¦á8@µê£ñ œ/Að”Ó8¡mÐt¬ ‘Ô¬Šù÷1›1¸&¢ñ%ªw‚6?òd5èÆC|âà‘¢9p5hǶBœàÈ5¨nM‚øœˆÇü-PÍ̸ô`Äh@“×YT_„¨¾@ƘÅ2ö +{¹™Éè<Àf·QWZ°Î(ÖŠ±ôšøëÒžs›žøޣ؃¸Ü¹ê5x]· O ß‡\ }¡3Þ©£¶£0L`6ü"0.pHœ‡µ«Æ휣á÷®¯¬ïzÞs}Êe,Ì5ˆMœcÑ\߇¯¨.hiè0îëÀŸÁ§vhþ\¾ Q-`ÍåX ç±·Y”S ÿ‚3¢ü!]Ð¥°–) ¹4 +´þ裣IÄ«§1äFB³aX§½¹9Šb÷°ÝHТ¾Úñ¤è¬`dà¨Vÿ ç*жˆx¹ë&fpFÄqAÓ¾ÞªÇÜéç“·~Õ¥ÂË6ƒOÌcàq|)öEБ£ƒ­fÎ_žµˆ:„þ6h®n…xtIQ/+1ª·Ð{’:ÇÏ, +ù´‡_%>ƒðè·îÍj”¡–ã +Z1 ©‹ùº×TоÅÞ¾×—cþë?Oì–0p,ô ŶA +›°!F‡ÐY/{§-¢’Ê÷`/¥‹~S Ÿ‰õ$¼bˆ|¯.£#ßn¡Ò[Õ¨Œû°_dì»ílÈË ‘(´ðµf7tÌ阒TJã^¬Ñ +ž]ŽIs‡Ä!Œàóp%#+ÝÁ&Ô©“jÔ„ 媠2¤ˆêŠKÜ\à¥X 40¡.§Š{ºÆÇèùå¬bƒž®e¢Š¶jë èe@\èé†ø:Š+˜SØ×ñ~¬IüâhÀ"àœˆ?–ž›(î¡ÏýÖÒ{¢ñÐ9‡¾à^ò ÊŸf¶#ÓFh±Vá[ -&C^¼=aЇ˜]xá™ÀÉà¥ÎgÌäØcŽc„g}&‹9Ž†Ø½HÀ¡’sž¸WÚÏÐÛÅýNû°™bßÛCú ÀO" wÁ}2`=¬…rÞmÖöHü…Œ/ÚFÞø¨MÝÔ\íS¡íCg@üŠ-ä / ߀ãà^aMx˜ç(O`|ºS.‘sqOzH>×Wà~îÿDÍQèË€v³z}VÐKAxñuÐ5‚Þ¸Ä +ÕTÀ¶²™CúE¿¢<‰9”7èÞZþ=€÷±fðõÓNãD é~eÖ;ÃG© AÿôØA™± ™ÎZ#þrÑg +ôW™‹ž“AWûåøÝ[þȘ?~uðõàá'´M™ XÆ ê럻ŠNþ ÂDUngÜ2~º(´‹ŸÅDö©@ç&µÒäE÷F|!Z´qÁóæ”<è Q¾…™qx˜/¢#¶c`MHâþ“¯Ûƒ~ î¢\Æze.Â=BànG¬F¶7Ħúx?=&¨È§ëéíº¢ R*³G4tÿò˜`ÍFÓ¦ƒ˜œNx.x*Ô-‰}4èÜ(?‡µ)1ŠC¬‰:Í?ÝR€¦+Öö„^Ü/׬×ùSËo¢Èñ:„? ßb]¬!¾>8œÖ„t‰›'ôÎZ‚¸ó +Ì›Ñø iZMÃ=à|küo®N/ ÈY 9‘Š-ÚÆ„¼ZÇö‡˜vŸL!þÀµ…u =Ò>a\eì–´Š~³|jß{ËhËÀ‰PÓ w-:…¸·kö¡s¶ÔiÌ%QM]4ðO£ƒ¯D5´Øâ3òà9¾Tâ¸Ê}¢Ä:5ðŒyü@+ÏkTטpT»b^oe¢ò±v Æ·¶±Š0fà+Þ–‚+÷ñ2ÚwÿÅ×óHÑ=¾Ž½*,Ðœ?i;ër¢|+ }¸^䞤$vMžxð"Ðj +úî¸_>G/71WƒÏ"øDcÞ†¸h‚·X·ñõ-ìéàI¸¿/:ýO¾Î†Ü_ žIÐœs0Ð_‡ùâ4ôîñúGˆc—ô…bç蹘¯›"¾>hlqßÙ+s1æËðÚy‡‰B¿k˱^ô™°ÇDÖaJ…º(«ÖPx»‰d®vj ßîÀÇÐ=?„°¸9Â9"KyJ|V~HKq”Ã`nÂ9€gðuÀTÀ¡`Í%п‚~ô“P<­ùÝX!v•Ía¾„ù:hÈÂ9b¾=DàÀó ‡¢< ¾Š´ìåfðCƒÞ:ô)1WC¸suÐèƒ^ƒkÜ\<”P.¤Ëw‚W•Ü¬Œ0ÉÇÂd0OqÏö„ó8Rz{LˆþÅc<ÖYç+¿‘ˆ+mzæ§Ç„בÊÃv!Šà1!²´sû—8§ý˜˜2¼6ä1!Š¯Q&5©Áõæ8ÔPÆý}+ÿ© cšZWÁ¯„ŠC;ðî¹bM:Ÿì¥dbÕn2³o?øþ‚Ï´0Ü3K¥n‰JK÷‰›€m°æ¡ìí6&©\™‰{· ëZÂu‚.fÄ£M,ö—LRÂڠɵûÅ™õFpohÙ«Í8>}o.ƒ5Öçö2¬Ýøb ë’¥Döoë£ä19ȯb×4%G¨IÐ× ÛZÒÔf¬- ù~„*àõîÀGð endstream endobj 27 0 obj <>stream +¹Aÿá<Âá(w‰Qn‡¼ˆµÜPüaEè~Š)ðm[ì1á¤ôO ?ð˜Òû‡úùÅ.ó?ð˜`ln¤/Åê ÌG¨ âž · +±†óä…Àix¸ýq[<ŸpÝ9v.ëuc1ëÿ`åPþB´ù3Ú*€V¬`¸`üëÞ]sçRÈPÿ# ^.EØký£÷€ŸãßÇk‰ñó@ƒ• z±÷#N:<}ÎxO–ž@sà詘·a‰ˆyLV½.®—ÀcBBŠ S°žcZâvc§€ÓO‰Yà1×&ýËcÂÜ~ôNæóÍËD»°6Ð#Eœzžî™ ±¿K@öJð6£Jv1a¹ëÀ~ô”Y¿‡+ɘªmàC5¤Ÿ4úUxp7Âë°f9Jâ‰æ7ʙЛÅÚvà«lj×ÜÀSD˜Ñ E¥~Pe·Åz´(äðØ€½Ð'ÎÏœö™€ûð=âÂ×Fð͇i«ÓÐó”mê˜Ý(ð™€}|4wi4çÁ úI°gpxB‚ßp"è1 ×G‚V0p ¼ÆýK„©˜¸ŠÝ"ÿ'k±Ÿºgt|É.2£Y•Œ/ÛÁOkÚ8 z—†oëkja âê|êŸJ`íJß@BéŠp|ÂßÂ^QЗ4¿€{3°v±‰y5èk½0 +zX"à÷(ß@´÷€‡€ž­Ä'kè°âµò“C½.É匥XÿúRÈŒ!Ýâ £1@s <‡ ÿ):âÅ¥ä´×DÜ?ƒÚt{«à¾ýÙ¡½,ä)ðGAµúÎØGýRÀTòåpØ‚=(ιý‡ÇDJ•š(­Z‹¶‹QüËcB =/cúv3߃ÇŒØù_=&܇<&PÃ(n¤Öˆ±Í>;÷\’çwÄ>hAÿã_›‹qÜöy¼WÉ”.:¥C•{µ÷û­¼&QW:÷Ã|¸uÆ"äEð#= Iûwêûö À“z­ücà £>ÀÐ7ƒ5,øwc­Z௨fB¿|ð°§ô—ƒ(x< š ˜êp^п„û‚uB3ZÔ·ú´ÐœÚÛà1a úâÆÃààÓ,žŽÀÿAÓ{LhÓ„®E°GíGKÁËåkÜŸA¯–Žx¿…u¼2—<é5tá©ó!“!>yâcršê„ªš&¡¥iD°Çñz(àN:¹ZôkAzX| +üŒÎŒÄ|"èáFØó1JµÉ". ×.N)Õd ¶ˆQmýw›Àéxýör8ƒlš™\µ‡Mo×Â!9«!fÈzLXÿô˜8?Z‚=&n­~ñyï)Ð[ã£ùDÁÞ„5%1s$° +pã‘K£ ×Æ#%sðÄpñÅXÛö\xd,†\ñŠóè©Fçí†ço“º¤(ÁxBÿ¼( §ˆ½’‚F² æÉzæF³ðJ“Œ/xUá\Wª,É*ç “+ö³²¼­˜¬:mÐt†Þ%Þú¨~Ù+€ÿ†5»¿<&ì1Q»W˜Ñ¥-Êl5 ²ú5É+*ìåÌÅ°ÆCu%8j=’<î>æ/ :¾q·ñ2ÈSðƒºµVâ:×wTË„!7W ÞmûÝ^…q0àT;ðÞ”ïa¬è„¢ÝÂÄ +56¥TN)Sñ…Þ3^°ÖnDà—íyk)™P¿‹ ++\Ï\ÎYJ=[s”ÿýàaÉø]_ +˜csX‡¼þ îW³1¥»Ù„Jà<´­Lx¬×ïÁó°<ìÛC1!”½Ø.J®9ÀdµéHîU›Jn6 éÀ§«h›EÚ*t*yÖ"¬AðÍ,‡1&ÃŒPœa@óe!ä5!šßЋ‚õ"mŠ€ßÃ>-J|¬•z^Y‚ñÌ9¿)°_|)D‰ejÂüMx?¬Ùoéϵ^ðêÿU2¦` ñxxLˆm¢qz°çHê³@r9m‰$ gìéÂ4Éópïú@¼§à»ƒl6ðqÜÃÍÝóž“ðµ÷TèƒCoEW¥.Š)Þ3ÄÙQý¶…ýwVJ¼Ò—@ÏûUâuhÿ©ÐOH6({s½FOø¢êôI©xBêhêà)Œ÷²¥–ì—dÔè ¯Tk“IùÛ±'$xpGm­}оÆëàW…0ôÿ‡|1g³ U€uQ2qS„ÃÅ7(òJ›*xL€¯9ã‘6h}"}u.x2x¯3¾ÏWb ›Ài˜G\]=/±{ü|ì1á1ä1!’=Ú +>Xƒa‰â®)JØÏ ñT¬QŒÞg“+UÙÔuÌORšTaÍ|€À' +ÿ?|òæþÓ'/­Söýèóè!-r¼Ï q¾ö5Àß­õØrQj£&Z¸îÄ^¯XKŽ½4¨‡ˆ#‰nÕP¦O^–<ª:ÄËîQ…¹@ç­e¬“AK¸&ð%¼|.p2ÎÅΉó@›NmQƒx×FxP{¿.ö+å‰P}Gu^|Êaœêx’ZX‚ü.9€÷‹ÜÃçb}eX;‚½e°çÕE!h3ûå®’¸d,€5!À¿Ø× Ö(a}%샜øüøÄgÜ'á^ÿQÇ1"«Ä£¯/…<Ùù{7€Ç¹x!þƒµŸ!vY?ÜW‡¾‰4¡þøÝ æ'^ì÷1¾¢hrÆe’ØÎ_kêÿô„„±%3›öK–6)xcÃÜkÀ:•ž¶€€Ú„ùôvÀ2ðþJð¹¥ÓÚÔÁ·“NnPf# +¶Š|î®yf.½°æo®=:æ´Ç¼û/â¯x]È#q>ø¡ŸÄ•lŸ:ê¤ûXòÄåq(Fæ2žw–€¿4öªwO@\%úá_P'`?^Èí5tô‹-P³%žYKûýÕ_ÅœÖ÷êR&á½²8±RC”T¹ŸN¯ý§Oý—O^v“ÑõÉ«SŸ<؇‰çôP,b½ùÀë+°—ªÿ°ï<°ï’çE°GüYûHEÿÏÖ +’ç@\@>nÆd4k²þ×—aOH Áš²ŽšN9„Ï€^ ì…¡m£fð[€53!ªå€£Dé:B„¡÷D +ÈÁ~XÀ}ØÕ9ðG¯dèg²{@?bÒjh¯hðÃ5¸Oòx¬ +Çö|OÌŽxÞ£ {rÖ€‡Þë °ŽrðâX§‚õ=X‚ìU»'+á}åàkpà=æ‹pÔ¥ iôÉó£ðT×`ÝsÈ!Àápˆ›^rЫ•¸FÎû]_ û{ð„Ì ±š^¥ ~ª‚Œve¼Gá”ûxØc{Tpß1¾b'ôL@ÓçvàÄ0¿.ßX†÷üAÞ>^ˆ{ÀÞ瘹x®‚OehîZð]¹¥]“kú&ìÞZ2­j/_²ö¹¹„¶‰š{"†üÐÏØÿ)o3ö"rU-~üoƒ?ôgüî® b^n!eypß<©NûL„>2ö­ô°üÅ%¾7Vâ=}°ö.ÂÜñ¾½„JïÞ/¼Ú§'ô|° ï¯?.ÀeÞYKgؾ0Xr0âh.nü‚笣§Þm­ÞÓ†ð `]ðÔqJ˜ëž°æDZÅuƘ>qi4ÞÛê˜<ÖhûPçÁKY¦@Ÿ¹<¼À'g)yai—L%apñfÀB‡´¹¸6Ÿv›€×ã%'ä1;e7NŒê!Ö—Çû%Üq¿ÿà­ÐKõ¾µ óÀœUØ Åö£ñ÷½V¨Î¿oâ Ü "ÿœ50¶°f kõØ‹ú˜°~ ýBØã }~÷« q_ÖLQîÅkùÐÂÿá öÒå)8‚ç¬5CŒ†<\ý Ÿë\©‹°ßäëÐ'›Ea6ê'ÆÍ_y&ëƒ6™Ö¤ žÂ AS™ÓŽãàœŽÙ>²B¨iB§ãk…ëAÜbò ô¶)”OÉ”Jeè«àkrFç~òÁ(~Â_lƾÚAV£×VgƒýaàwCg´ì'3[Ô Êx\™Ïº§+Á>+èõ e;„/7à¾4š°_ø6ƹ7—ÃZ1ö{Ox·rÄ6<ïûEп±Zè}ï—…õXç…žìÇ¡£ +7ÓYÝZ‚ÄšÂóS(³cx¯$ôaíæ»ÐûÎr‘}âìõb1zEh,Áë@aø¹¼ö)l:ö†FùMì{m®ý˜ÄÏÅï[¸c{âïQ?æ2ö¢@M`||hO½ÙéáÐ[⟖‡ž1yÊq,yÄf$ø’ƒï ë’2 ÍßHG—mƒ¹~fˆ×ËñQŽ\ {s±§¬—Ù+€WìKaCò6 ݃¨YPSñ9䀧kéÈòmàE‹ù<Ê­×°OÔØ=y楀ÿÁGqb‘Oî*XSê\Y [b¿Ü5lDáVŒY‡Ù„+âï“{° +ã è £z‰ó‚KÒ//lhÞ&ðöÂýK÷è¾.¿Qðéð,£#žlÄk(p¿Ò—àž ¬ Áº#ôŒ=Sæcü„ê•R¶—Žy±¯[öšÞi°Î/ +¾·úiLXÞ&ðhÅ÷±…[±`DÎzÈËTÊÓ¸Ö¡蓉jöÓ‚oøùÝYkÿÕŽ‚ŒFeæòÕð»Ð?$5ï†5):¤pð2¾j‡ðj‹>}µû•Ø°Ç}ðCðÛJ%–ïB5k+äaXGEüx3ô¼Ež×Cþš#ö½¿Š {¸÷@Á·úzƒ!•P¾“ö¹º{G@¯êø©¸Þ'LZç>*µ[… +Ù÷ò#ìaeÂÞn¢/EMgìg²^×Ñ©mûDMzà·Žûð\pXó< ý·+J°Èu‹ŸUq¹±Pì”>öa/!ðü€=ɃƒrŽx¶c·J¬ûÍ…L@Î +R†þ.`V›XÒ*l +å4“vÍžOF–n"¯:@ßìÓç_ÿª.Èù¡O½úfLåh²wºLlåÎ!ßÒÌ¥LrË>AäÛõÔŸ À»éäfeãû•‡ŒïV¦3¾jÐ!oÖƒ¯®ÈïùZìé–P§Œ×´|¯†zŒû‡mFdʶB Å8DV²]äûd 쑦ՊҺµ Å\¾¿ñ§™´Kæ<ÚíÚ|Ò3w¡a\ÝÃûœºàÙõò›„|ó»)]ðÍ\ðþoùåœÝúÅ^ØýÁ›iùäHWôœa ûNÀ½“–—º‰+j…/zÍé'"úY¿Xü¢þ„ôiíIã{ÕfÒŒž$¾J]’Tw€IiÚrÏ.W*äéj&©UE|¥ÙÈäJ%JjÓù?] \ÑÄ-a¡Ä!x–É9¯©ÆîW—Ãaí8û?/(¬ÓA}dn´07ûØœ6–Íi²ÏÚŠžÖæµ™‹®·ST怕X¿KÑ©ÂÞhç±÷Ú!yoÀ€¼ûUŸ¹ùшº;`ÄÞm§é{]|öQ‹Ht¿Y,É­9d’W|Nô°Ò„IoפÔî&Ó»TÑ¡1Ç„¼^q 1F_éÔf´jÃz­0«bS_z­†’Þ¬25Tj“ +ä>6 忤&eX³ Ó>(“W{öñ³÷Ó×ú´è›]zä]êÖG=êÎGæq¿”}Ö‹ò@7K½ø(a_õåvÝF×x·æÖKÅ›²[Äô½Nô˜ù¾ê r¾ê“O>ÓlþÇ#‚77!_| +K[­Ä¥•ö&¯Þ]0yúî”än¥”¹Ö¬ÇdöhÁ¹±áù›¡ຂð•÷Q"Ìé–°©ý,ʯ›°Imj¼ƒ'å̬†ƒ§%¬…¼±–>/·Ýë6æôJÅ·ÚE’¬VJr­ž¦5k‹2»õÙ«ÝÚ¬ßãUà‘ÅúÜ[FGož¤áù[¿ˆ¼Ñ<-Þ"Jo×¥}ТS»ÕøY_Tñý;xéßöð²~(¾áH^g!èù󒸿6PØßéCÖ|9M5±fú>ºÓ}ß\%ƒÅÁ‡zîGo»#¨ uð—vÔ›t–EmËKÔUz¢û(¦_=(Ìï>..®·•¾l8+ºÛ"‘Þ©11Í-;yðe¾µé£â3âûÕR2ó‹º ±u§ðz'_š[s”½ÕKR±Õ; ÿ=caf‹>ÊC†Ò+ÕÓÛ•‡oVKoÒiíê,ÄBF‡&}§…'Îi2åÕ—ä5œÜýC—|ôE@?í— +ß´æwgžõJéG}¬ðy»[ÐvœÉÿt˜~Ó„)é>üïµdÞ~>Fþq˜zýÍXðò‹*üdÊ”uYJÚJ}$íï}E•eöÌó¦ôÝ5¨E&·í!3>í‡ùÀÜï Ù‡íbqn“){¿e²ZuÈ«jÂÌV飊#ßÒ§eÂ;- }»Ëˆ¾Þ¡'¼ÓF‹4š +Ÿµ™R7¿j“w?ê±·ÚH*§O>ꢨ¼>)ÿõ0û®Û’-ë8Ǽï:ÍT|8ÏTvœ¥^ ˆ™Ü.jõ¢WDÝÿ õ „÷›…tAÓ!¦¾ÅJØÙäeÜÿ>\<Ø$hæ,y5œ9ÕðùSßa˼î=LeÒ¢ÃP µ‹ž ¼ Ö4q.G¸êô«xaÕkx×ÿ®&ÌéHÞ”_4œwQ_«Á?ZÍ¿õ]“¼ýMGðò3C> ùY¿© +bz·ò¿í%jI3[HÓ{UÇ¥oŠlŒK‹\¾ãn’_b'~QsBr»I$Êj7ÂXåJ¯&ð4Õ96½_ a­bû+óq5Û¹¿’ÅßÌèÞÏÎâOïŃ%ÂOüØ_»|…Ÿüد}ÞÌ@Ÿ‡x 4øxkVäéæ4™Wy`\xÙ嘣·dÔÀï.⾦à#Äšt¿÷´JÚ›üéÚŽ‹è~Z2¯ÍÙ—ƒ‡™ß÷‘i*’¼FK“Â2'éã–ãÂW=Gèƒó´K,~ßhmÒR$.m¶¾n>)*n=')ª´‘”T9šT\½o¶’¼¬µ½­µç7že_v˜Ó¯;ŠóêQˆ;Ü÷2F4Pí+n©ð•ÖXÓ¯úLØ÷­gØæj“î·‡zó¢-Ún%X6§ÅYÕ'Æ]¨“mLŽµhÍ’ä‡0ƒ=‚š_Oðþ¡ýñ¹Ði"ç«ó©”ÊôµmöJ¿6ä6¨]—çó S>ne +š´¿ 1kË4­-ô?Üñ,úPÇ«haU“ è»©þN•ïù|!ïÝH=mc‚¦ÍåDN7ˆsêÌÌ:^ÉN¶ÝN²jLO?Öò0Ѹ¾Øê{»™]k4å ûôúý“º|?é«Šsìõ&CÉí䶽ÑíD[V Š¹˜„÷ž2¿ÿhˆÁÃÝ÷¢Œ Â$ŸÞ„˜õ<Œ´¯‹Ä1™Uâu¯Ä9*ý½»Ì²9%Z‚âöpWNÔ±¶[1’þÊ`qsÀ¡Î—2¦aÀ†—ËéRYß5‰]»'Ké+_˜<­9/yÒqŒ¼úç~2øýZ^DÕZÁóoŒ´µÊϼãyÜÑö'ñƽUá–7qg½ÏÁîwQ’Ϊ¦¸ã¤ ð“1ÿñ†‚gÝó®õSÑj%¨ùv”éªs19ÔùD&ª.µ7ÊùMÓ £z“aæÀýû?”õó9^ÓÇO¶\M-w‹I¨p ¨ñIp¯ N<ßœ’hÞõ Fò¥"Lü¹5Hø©-@ô­5àP÷ès)ñÇ[³e¦}ÃùÕ?ŽÞùC¹ñÅ@œÓŠêü€¦Ð÷á*6¤h`W&«[×Üû-á „ÿ®·ÆWë’ä6m6¡b/ýn+uí£¦øeëIãŠR7Ii…“ðI© ó·}‚ˆâudð›5¼È÷ëȧƒ¤¤¶Ôýè‡g GºžÇK;JEj¼ŒK#.4&&zÖ&yÔ&&W¹ÆzÕ¦JZŠ½éº¶ó¦ýï"]BS¼ë}¢ÃÜ¢¯V9GfÕ8†ß¬pŠ@×å]î' xïPá#»T}°çaÛÓãA—ôŸfž˜Jž5œ¼l°”¼©¾(~ÖpŒ½×L³7šDýøƒœ ûµÓûdsvüÙæ+É–Í×’N6ßJ–tTûÑÅŸ-x%“j~#+ÿ~Üà-g¨—Çi¤um1¼òq§è]ë…ƒ=ŲCÝy2¦¥Çž)î<Å”´ŸAøù˜8£ÉÉþ +zP#¾+?kÒðÚïXÛ¸CíO¢Ž·=H´jJK·kŒŒõªör¨ŽªôŠ¸Zîy§Ö!"¿Ö:´´ñbpQ•mXa…]XIuHeµuH)ú¹¼Ò&¬¤Ä><·Ô1âj©kTP©o¬eCZŒqÿ«Ñ@¿YדH²îÏ3ü'zð>sçŸyØ+=ê8(¼öÑIùª.¾ÖI3÷¿ÑÂÒŽ ’Þ¦ ag‹ÛùÁCÒ_*þTJô¸ ?·ûIûKÂLz+#™–Nþóßù䳤¨ æ„´é½·¤¿*Ĥÿm¤[Mpr@½OêùæÌ+‡:ŸË$½E¾‡»ŸÇíºw¤ëV´MKDLHµ‡ì^•CdQ­MXaƒuè«FëÐ7èk~Mh~­Mè³*ûˆ4ïR+]eée®²är7™We@ŒôSA°A)'4 +YÁ¿Æ© +ïˆÄ¹ý%÷»ÌÄošÏš”»›4š¶GˆÞ6žd ¨‘}jâ¬&øQÛaÉ›Æ âBT“_~1“ÔÔzTø§:WG¦š¶E +ó[-È¿kóë· ®}Ñ`žôŠ„MnVÉ)'Zo%™ô¡\˜mÒW!þZr¨;GfÛ$KL¨u‰©uO´lÉL–ô¿a;ê\uÜwo +Lð¨÷«u‰¼YåÇÝJ‡ˆÇhœ^–ÙGæ;Ç>+v’Ý-qŠŒ-õˆ:Þž%úØ loò’VW]´—ÔZ‹Þ7X‹Ë«íanD_Fqí/ó+÷‹v/u© +M*öˆ (÷O¤;{\Œ^s|^#wü(ÊOAe¾ñ±E^ÑéE2‡º(_II¡>IÇѹQƒÎzo9=ƒ×œž ùûø·O6ÞI © +̬ʶl½•aÞ™Í6”Û +ËËλ׆^…q‚ãe¥]ÄÍjLjôr—ˆ{5öE Öa© ŽÑGºïÆP¿v»öpÇŒúþq’÷»H~ÿälÒÿ$ر*"6 Ò'&¾Ä=êj‘G”}eTô™ú䨳õ)ÑÇ›³"¥=o‚ͺŸEJzC$%Í­~ÂG¿¢nþ]Gøü×ÃfM¥Qg›2SO7g%ùp7æ`C=Ï¢…Û}Èžßl˜Þn7Ñ·ª #·ef}"Ú9 £æÁ#ô‡j»#÷c]ë#®×å_6xÅéèg~Û¢ïÿd¾¾MÒTǤéúÉMŒÊÿQ½Ž×bCÝcãªÝdæ]·"~ãÎëurƺ=œX§Ÿ“èôqBí~ŽÑäÌŒ¾rg~pVì·*Oö{•'ùå‹“^ 'ÖjZfø€Ó¤Þþ8$.n¶5©®ò=Þr/ѱ:*%ªÜ;ñj™[¬mclª¤»2@XßèÂÖµÛ‰ê*]%½ Ág2’œ«"m+cnºË½uŽ°®C9ûy¬´¿<ܬ»0Ú¼+'æBsRª_ªKMx≶Ìæ÷®ËtG‡£°»åÎòpóîܘ“mYqšcccêÝb½êü„Ÿšý¨®ÏöTÇ7;^-g¦_ÄéëÜÜ¡;S'8{®V1§Êëü~Jôkew…LZ±[$ª{‘7‹Ü"½J"N6eD˜w܈`ú<Øú[æէèŽa;œŽµß÷¨J¼÷Æ%òå{‡ˆœ7®²;o]Ñÿëùô­sdú;èèÆö…C}õ«ð}úÎ)² Ø!, 嬒J›Á¦‹AÑQ„rGŒàÎZ-Ïè;gu¤ó–ìJƒSLQÓ¥Ð' v‘9 vQÁM^É¢ïe¢ï•PMßDòû» óœSÑwž¤yÔR~¿Éy¹=|1±}Ÿ6±yç^bëŽ}ÄÆ­ªÄúÍ{ˆ5[Uˆõ[ eÒq˜ºý“)ê™[¡QÇiP_ÚJÃ"Ò_zËn¾öˆ +/ô“ÅæûÊÒ +="C ¢/#ìpº13VØÛãkÜU~´ín,ÂEñ¡¥¾ ©o½bÓ߻ɲnˆ.÷ŒœÇoü»…ñÇü°ô +ÙK”ßž5Z‡Ýiµ½ÓnÎþhðÑËþ´ÅÀ:r²šŽˆX5W‰X8\˜O(s‰iÄlt(¡ïWŽžM¬›½„Ø·ODh‰íå4¥nò;wÓÄÒ)s‰9Ä,ô[³ˆ ò +Äd¹ÙÄÌáJÄÜÑK ¥ik‰…s7+V([ -‰}>3¼àvéUqBAçŸVÔ[îðígK“Žw‘Yo=b +ß:†¿-v /(µ {úÎ1"©Ü-:ºÔ+Ö»2 Ñ­2$!é­WÌm<¦n‘qï.Ç„¿÷Ž>Øû4’ìøõÝ×ëjßSÓt)¤¾åb0šCñä>7íÎà@ö¯k8Þ˜ªm“1YÏéž‚Nà;%íì/ëµrþ¾Eû!·S;¦n© +ï±Xi±pæ"BIa1º†Äb1žCŒEÇ$ô“"1P’ŸA,ž¦D¬ÛfDì5 “W¹ô|¼jüà<&NÓð wŠ÷+gcÜÿ"DÔÛå/lt5u{‰»ÛŽ}¸s¹*0.þ­WTZGäõ7î‘(/F]-ô”=.vŠ|ýÞ!üJ±[ÊÇ‘Ïß8G¾.t/|ïžZæ&‹ªðŠkn¾ÈuY†~i³Iúµï\À‰Ž”pýß9‹ýo¸-j¯§íÛ Û°SX¶T‰X½f9¡nzFNË󚂶ûÕéêÇlå—ÌW"&‰ÑÄ(b1Ž@×%>‡r?Ž^®z,ú­‘è'yüÚxôùË„Äú"bå/·ÿ·JØWä™ûÜ?*²À72ºÀ7*úÝå¨ØBoYz¡gÔ•¨{ùnQ/ +\"s \"¿r¸‹ææb—ÈEÎQoKíÃ}*âÙ¯¾ÂÏõ¾ä¯Ÿ\/¶DǼjF5¸õbht“sô.Nñqbù¬å(§¢ó‡s…ÎJ_ŒÍ8tÀ™#þãÞÿÏrøjà7áL F ›‚¾N$FÊMD?Í fNYM¬ÝrˆØïU¥À@ucsB9ê°¸¯9À¢åzlV¾GTasøÕ·îQYïÜ¢PŽ Ï+r ó¨Š5íyêY±ùèSÄÝwΑ±ÅžQm™QÂ_[Øßýœƒãª>X‡7;GüÎÜ/{=wÓ]Biü t £ñùDgßO@×4EÜTô|?ì¿\Íþ†¯î_¯{ú„±‹þ½h.®Ú{‚Pñk¡~“[©?Àe;z¼¤í•Af-Ï#ŽµdË.ÕÄÆZ×Êb^½BXÅ$ŒaìoŒcÎ+ÙËBg'áÙ;”Q‡rüÏkƒçŸÂäÄÊÄÎã·GhÜäÖº9ëÃ-÷CÏV¦GG¾õÁqxº!5ª&ß-á}¡KtÃú"—„¦7nÉMïjÊ£_½u‰Fñ){Rè*K(ò’é r’ ÊbÆ„ixnýwyáûñ×uþwpMc~ŽéHô9_ÿ$ô‰jâÔÍÄ‚eb…ÊEb“8qØž«Ü<½Ïœùá†[ÞI/|e·ó<£ó^»Å¾-pM(+pK)-vNz^è›[è•RèéX‡[EPªï‘ѕºn‡h—r:«–mü__ÇP6”Çç,ÿ/c:ìç{cÑ»ãÐç”a3‰òóˆIÃÐ8MC9iªñó‰i#–“†/&&Ê/"¦ŒYMÌT8@¬Tv!v}=Bµ€[Çö8!܉êÔ„(—òÐhñÇÒã¼ M‘(ÇD=E¹2•È5€É¯ ÜZXìÙÜt)â&âœÖÍ2½ïÜa´KwiKˆ™òÿ/cCü—\ ?ÿU/`žN@Y ®IqôbæÄMÄìé;‰YÓ¶Š3¶ +S·Ó'¬'¦ZGL·–˜ +ßÝ@(ŒG¿§ J,ÞxˆØfœ%¿?›[nÐÁ3o¼x²êJ(`³{/<£Pík}ãžÞ\à™ÑþÎ5µ÷Ç•ž2׌þJ—ôÞ§”æJ‡„ÒR§Dà]ûʹ­“äÿßäÇ¿ò \à/ÅJÄ”áŠè§Ih¡ò£ú)7å’ùÄŒáˉi£VÓƬ!¦ßHÌœ»ŸX°a? gb#›}ùÎI¯ËÞ{Fªµqª+שþ¯¯å¯¼ 9b,Îì£~~?ç‘1?¿ŸŒÆQqÄBb6§9Ó6s6³æî%æ,Q'æ-2$f-ⳊsÔ‰ ´ˆ¹ËbN(±Ë±e‚Ê[nøà §ðAQ·¼ñ‰z\艰™,¦Ø#áÌhàw +~AXìý{ǨÚ7ÎQoŠœ¢Ð5Fê~ãî°–[´i'ª­“ÿíë‚<9g†áøû¡84Çb42‰˜!7“˜5v91kÊ:bÎ̽Ē5bÙöSÄÂÍæè° æ¬sRÄÌ¥$1s¾1CQ˜=û~o/šØíT;Aý§©ßÇ6k¼wÙ²<50á™TÉs¸ú×î Ån ¨ÆǾ.rŒüPâ3PáÓ_c;PëXS┘Tû'Y´Åè5fpþ“0F›ô=Õ<˜{CïM@ïN!FÎ"æŒ[BÌ¿’Pœºåæ„”5hþí fMÝM(NÛMLŸ¶_ÛÜå&ÄÜEbbáº“Ä +m_bó¡{ò;‚»¦¨äpË÷s[õ?rGŽÔ]ó ú<Ï#¶ºÀ5¦Su©CT[©S<̹öZÇ´¶*§”¶zûä·¥NˆKø†©Õr{–¬Òú_Çæеxü žM•›EL•G Í«ihÎM—Ÿ^›OLDc8 ÓF-"fŒ_®m#¡0k+ŠOU“úÄì&ļ­–Ä‚}ŽÄ}bO¬ ’ˆ fOåv‡ü6C¹”Û@÷_ºX˜âñ&<ÜïM`Ä{„½ªÐµ=|ï${Œj\i±£¬­Ô1¦«Ü1¶­Â!6ÿsôùêøõ·Ü®Y“fÿÛãö×|ƒ|•jº¼"¡8rº¦Ù(§£×' Š=qè=¹¹„â˜å(¢±·åÍÍÄ…½Äü…$±h“±t¯5±XÕX¢æBÌW¶!æ©Û¿¨ÛËyÄzã ¹¾­“Tžp+ ú¹£Â®7N犓Ýó#ž=ôI¬zî™\÷Ú3=?ßEœ!¸Ì7Öª1>¶ñ„ú2{܇}|yYå·dÖ¬uÿv-Ž±`DT½†£Z6N åþE„âð…(ÏÏG9Çæ4ô9]N]ßbæ¸EÄ´q PnDÇä•„Ât”ÿiJkL ¥µæÄ‚ 'ˆÅ{œ‰ÅúÄíbùm¹m^µãöÞæª5p*Ÿ”´¿ð<]ú*0êö ÈŠW®²ztm%ùÎáOK">TÙ„~ªµ‹ïo¶K.«vHL*q0úÑ}aÈúÿ:fCø?~þ+— aá1h´Æ¡¹6á,|L—ÿ…Pœ´•â<5ƒ:Äl‡¿l”¿¬gPNÑ'æ,Ö&g«Š 4Åõ&ÄühÎ-îÊo i˜°ó7K¹‚Û¨ZÁm3üúç óÆk>¾Eþáñ—e(wƼBXÅhts•cBgCRoCòç:û¤îJ甎 +Gè%Ejµp‹”¶ÿ[ã&ÿ/ùq(LDׂÐÇø„Ò/ªÄ%-t*Ĭùj(W( +3Qþ˜¹ åL4ÏÐ\›;k71gö^bž¢ +1w¡1oM,ÜxŒX®îJ¬¤ëŽæÊmt+½!´yìÎÇÜ/»Ó~ÌÞWÈmÔìâ Ÿ›íŒÛzy¾Î Š,Ï÷L/*tŽ~òÚMÆ/ý~Ðà9§môñ‹ÂïÙöV7£î¤F ·WÅ»hšâ„…ÿãu Õ¶1B–‹QTèÙÄ4N +“VsP=^²ÁœX©aM,ÙfF,YÁ#ÎßCÌCùrÎÔ5耚·‰˜;{;”Ä‚Õ4±`½ˆXªz–X«H¬¥c‰ÍGŸÉo í¿ý7[µŸSVûÀíÓäÌ z9 ¶§ÏóHó­°“u™Ñ‡:DœlÌŠM}å›ôÚ'öTÓµÓžâ(—ÚˆÔ²2Û¾ +›Ðøb¨}µA÷Ìÿxm#ñõLÀµy2¡ˆóÇ8ŒùÇᯀA _N1a¹h>*SGÀ¡DLŸ¸†˜µ@‡X¤Œðñ™Ã÷„öÍØs›¯üŒ[xRù1·lwòßfíŒì¶=¤kÊ—²ñ;.=½Ç¯|Šj.·b-§jô‰;kø‰;-üRäeÚ÷(ølc|$ð9àä€5w-t‘=çQZbÞôÞ!j Â9©æ½Sù¥ÉAÍùý4ÈßÿØó³–C|2V5‡˜;e-±p•±Fó ±œ²!–™‡«r‡¯ñ};r£ßû1›<ÞŽ^wéÉðuŽy#¶x•Ýâß<~‹oýø-ŽïFoµÎµÓ£b¾ÇÜš}µÜnå›Ü"• fµln™f-§©SÏ tÛ8‘n'är—.VÇDfëÊBØÙ¹2,Æ€6$´ôö §!¹Ñ$¤r¾ 9 ó+gÂû1xýRä®ÓÍ ”ÌÓjZnR´œº÷§¡°¤û¼èù·£Ôí?õéSe³ÿa$zøÝ”}úÙT˜Ó+‘>®>&.h9 ûô‹8#q€ütùÿ¹îA?fÚÔÑ ÖßHü¢Ä#¬2!m;A,Õ°!Öð<‰Õ¬ˆµ{Ž«6SIJÕêÄòåÄê­Bb+0lûùÇ£vØÝ—ö÷…Uœšvg¤×Ë™’_¾;™·ß }~w™ÿ훵àó;Ž=ùÛjíä®Õ:7¸Íz¥œ¡A Gó*8SAÃÀi¶±ÖýPíz¨÷Y´Y×K™èc{];`Í{ÏI•?Ž³­îU!‰¥¶!AÑjIƒ *mý7âRXÂhž¡ëœ6n11gÎVbÉ&#b£æIbéAì ˆ]'‡ï7Eù ·RãÇ3äω>=u!«°3úÇ×s‚?ªmx6YëÿÁ×øÎh~æx:ß9‰îWîó©ËC¯‹39X0WçdÄM󠑺…œ6¿Œ;¤ŸýçvCçë3ù9#º£ßÅ¢íFÜ‘Ž;±çÓ’-Úï$êêÌ!‹LØ‹ âìzŠyÚ+6Lû´EÃ*qÜâ»0Oûï>&¢qûEq±t á\obÛÉW#¶ûµOÜ™Â)¢ØÛ~à3GéþÆÒýÁÖþΉ÷5q;U˸MêÝœºÞÜQ›ÚˆÈì2çˆØ +·H—ê ÑàK7è¡h£ØÓxÉmÓ|Èm>PÆi4q¦¼.îŒ`àO{ñ·ê öËo½‡œŠ¾±…œê¦í„¶†:ÏQÂ>F2­Q…µAd—1W|*lŠÐ9wõ‡Ž0wÀ˜Êü¬I»ßZÀ·ËTÔ1µz£!1gÂâÿÒ úØ”G8 a¬IˉÅ[„Äfã$¹ÝAmÓ ÿíÿŒçËAÃïÜIÃ_9KýOÜa” j9R¿Œ#ußsz†õœ™`€³3êäN”q¬þ î€adÛC»ó R»7ó+þ8L÷õ¸ð?rÖ¼6ÎB7ûÏ­†¾9J¼„Ú-ÔµÏèGƒ,?¦dúb5™˜·•¾Wc$Ê}'–”Ù›ÖŸtš²Iƒû™ðŠmLà›uLncÚô2@Ò]hPÊ1vQÿíuEyq’ü\bòèyÄÔ‰ ÞB,X©C¬Ó³!¶¸5|›wùøÝ·þþ‹Z%· Í'ƒ/¹=<_(8™:V×å¢î+Nƒi*·³øp#^:XÌ 4º úzmõ 9¿(EƒÓG‡œ³iàì9QW–»H·ˆÓv5z²-†—ïþ¢Åú­‡^ÿÛ^òú-eÐDÁA»LxÝvá½N‘øUÓI6¯ÍŒ-j>!~_zÑ(k`¯àú7u2³CºòQ]øäÃA*ÿËAœÊþsYã,Û‹yö¿~LE5cõ:±ƒõ¦ê˜7i%§¢ó‘“}æÎêösÆ(_‹ QÝ¥¾|s£¾ ºë¢Ü e{mÊvMbëŽ „¾åùFzˆß9ŸiÉLµnŠM>Ô›+£>¸TpBí«×êø¾ž§÷ˆS1xÅéë§vl4 ºÔðÑÔ³v†¼ßg$¸ó»y1fßø¬¼Ž‘€ ¥'ä±Nèﻤ̣ãv1׿éK_7^”Ö\ä§ îœögd7U÷lÔøÝzg‰³6ã-ûéÃ~Æåb²<ªk37˶ ˆíÒ€a*²îÙª/¸ÕjõÜ^íß8©àÇ{êÏ6wö÷z?Ó¼Xûcû[<èÚ¾‹ÔÛo‡ÉW¿‹™¢ÁSâÚFwIi³3›; &m“tTu­;†Ï°ÿ_ºÙðÉ?4 ãß­ã]ò›ÏA bò7’Yýô½>¾ ¦z‹À)n&ë™ü‹Ø/m)[ºÛ8³Ž–¾)±1)-ò”¾¨=%Ìi ³[ydfç~2¶d ßÿæBóQãa½múð ¸wð¯0– +“W¿¬T#VëX»-oÚŸ[¥ÕÃш_…öÇêvqBÃÎDïößvêv¡¥kBPãF<‚%MäZØ7sMY*Œ.ÙÃ<\£¯Ë#¶-˜Mì\<‡Ø NJلƾm›¿Yôªî8ý´ƒåGl ÎûOÂûϳûtñžh Ç1´™õHÐ’&w¨ Sº4˜°¼tj—šøfËTuY‰ŠšÎ’WßO†½Zÿ÷U›*%SwI—ß~4køî£Y#T-²Gi\z8IÝõÉ´Y_×Ѓn°ǹ:,ìýj¯÷€S6ŒéZo˜þe»ÁNÝèÚ½Fã¦ìÞ­B¬SšMlœ3‡Ð$ž:3ÖÜÖqÆ!‡Ë³á91£{_Ôé·mÇÄüG¿òø÷~ÕæßüM]ð`©ÀÁ*zu)u§ÑïÑ|ÑcftçOu¾ÿË¥”múL™ãH¾Ù…‚cgGàç^²º Lž”Ÿ1ί»H¾`x²÷ëy—¤ nÕOì[¯í’«°Oì,·^EJ,Eµyö*eb¡ª)±ù`Ø0ÕàE»ÜÍ×Ü^Í|t<@y?µg©†û­išç£Æê»^Q0 +¹¶À( užaÄíÅiµ› ®õìäå­ íRgRb¦±6I3iÇëóh»séSþ¨iê»÷:¾f7út­àêG5Iv;-î©6•ùÝü»ªÀ-e?¾tùt1n*ö5xÉ~oðãÿàlx¿qP=;¥ÕÁ‘Z9Üv­KÙ“U šâ£ÃôâV3ݶ²Ž‹ô“o¬à|ô”ýÊZ„!Ï”ÀÏhø>[Nú?Y®Í—Û—¬"ö®ÜDèïS%LÄfò‡.8M5?ï4íàçÉR» ™TÒ›]°ÏWø¸Þ„Ìmç‘ÙŸ5yY]{—Óæ‘þÙ‹è[°¯Vpã›/¦m“ îã6êÆßuyÑ(Û$Eò”ýÚ.b?µa}c@—ÌÐà%Ulá…½^aÖ½Õ0—Ó0¼Çí×Ïþ±C÷Æß·ê^ç6kp;5û9}í_9±æ §§]Ïéê¾ãtô_r:FÅkÇéè?UÒ;íˆù×>« £(+¿Ò?ª"‹7£§ñOŒ\ùSE’ß|ž¹ÛKãg]láyfÒçÆBÒ-a6åš2Wà{w‘aJÝfû?ÔŒ®U6Š+]o1°UÿÚ×ú9ËqF“ýÑ}ðÇ.Ï+³ œeÓ 3¾í rû)£ØÖM†ö1Ó¶ 3C§ +SÙºƒØ¶d9±gýVBÍ;ê˜Óhx– ´ô$}§;þb•Ý¥%º_#>¨²w›iá­F>Õ§E†?\C»ÄÏamÂg°Ž)shûx”oãg‘Þéóaò®÷«‘&¢75§É‡Ÿy¼ëßÔø™•ù×¾ì£öÐlQëa~ë þõïûçý&ÒVžI—Œ¹¼Äúmô‹©¤¹êò±Î‡ lg«ag ÿŒS×—õ­ÖsÊUܧŒÐ¦ÏÈé_Jšl”ÃiòŸ.ÕŸ‘ã™Ù˜\nH—SÝ©Šæß:Báê‚ßdAf§*Ì}Öxhf€n1sÐr¸ôBÀtqгM´ŠTj©Š ­j/“Ñr4 ¤·«$üìn5êr–í=“ñHŸÏzÁóñÿ{oUÖîûV’!¸ww'xˆTÕòU•„q!înĈ»á4Ðö¶ÒhÓhÛÛúêÞûœ±ïwßùªéýžqÆã~¹ß¨1Ò¡“TRµÖ3›óùÿ¤#}³ Ïãÿ§Û‘ÏN´Æ<è8øÙyÊÀ/bÅ»‹…#·pý¿¹׿—uݯ7ëÏü}/wáÇ|å…y|F­—ÝÁ|¿W€™>ᘣöp­ƒË6ÍÌac4cYÝ´Ìqšfç¦]š7k¸{’±§Þ׌3„Y'¦d”nų÷ +þ‹1²Èº[†Ø\9&cf†¥ÁÇû Wø«ç_¹º÷—êÓ:Æq¯Ðþº/<7¬./5Üœc¶ª\ýæ zá•ïÿÛn\G®þƒeB^ÏT>¥fŒXrr6´¹k¿z{^ýÝÞþ¹Ûûâ¿ïò>ù­ºòs3µg¦êÒ[Ç꣊ìp_ÜÁóR4˜Íg¶>Ž/½:—‹/w€ÝsEçgb®Tw(ÕÚåanž^I´rz¦ð-_o[_n‡n6ôŒHOè ^ú×=˜íZlâúŸ»pƒ/wb^œg>EÈé˜"&ՌᓪFó©Nú£,Îý¶]×ñx½÷©_·ë/ÿêŽ÷g£ðîŸ üÝŸ}¥¾ æ®þªÓžûÏ=üÍ_íéÿ±ƒ‹(´; ù™yùÆX`~‹ú»«áæÓPŸûç?¿—)ÜùÙàuåÿÙ£{ç¿<<+?ž½W¬Y<~¶f‘ýtöyŠfÏ~Q£ IµÖ…¦Z{ûÇXrIÖ:c¼åö»5[™ÿܺv#ñظ¸r!:ÛNëdŽX!G%Úª ÅŽÄŒ +I±‘ü£,åˆDh%È'žy©çŸ©Â…¼¹¢–)|r¥£®÷éF¡ÿÏ{¡k($UŒ–3jÆ ½Own|äÿÉÍÜG—ê}oß‹úÝ‹4)ïÜL¡ñÉ:¡òò±¸Û™¯»»\¨:¿€å ´'þ±]{ì³eÞiGµ¹“¼*îÌÒÅ5Þ¹›Õ «7i6¯Ý©qÙ¸Os@`†9Kmx‘Íê¹K4³l4³íÇhš¢ÙÂòäW>93”š‹Ë0“g8rm‰Ôüp‹OÑɲo”¥V/kDc˜%i‚…W8JÉ«Ÿ,½¶Jèúx«¾ëÁ&–K/Áý×µ<\­»ðwWéüO¼®ÿÕp„ز‘à.ðu7—rmO7qO7‰}?^u~¾PÒ7ƒ;~oxöµ·péµ÷Vxï{?ñÃ×üõ? ,&näò‡¦êÂóm<ù0ó½{ÍžížOè܇ä çckFñ½“ Åe óB˜ïˆ4ç×f¶0MÈgU.ÅÜŠpâ7w±ôÂ<.<ˆ‹-!ät³x~žåƒÇÆ )&Yue×ñå&¡ëåáô÷îâ™ï<ù¡w“Þö¹?{—~ÔaNCßõb³¾áöíÉ_·cµ,Î| ïþjÔõýe‹¶áã%ÚžnÂëç“ Gê£2l„ò‹óôƒ¿¹pýÙÝL®âü\®ôÒ}ã§Ëµ=?nô:ýïÛt‰ÍŽ{=ü4«æ-×,qš©Y7{™fÓò•š]»vi\÷{hvíc±åÇnÞ’ÆÍCÐìÛã©Ùçæ¥ñò²Ð'×;B{þ3ÚÐZ„ÖŸÈû›sZæ{¸@sâÇ­ÔýbßóÒšÝ\tŽP>4[<õÂÃpöÛKgIÙÍ“ ‰%ŸþJ¯\}j¯¼R…³?yrƒÝÍ ýc/fÂø–Çp åÜÚ‰|yÿ,]Û§«…s?{Ë7¿ ÐýŸ{µ•wçë+ï-öêþyw÷/uE§§{dXyÉ1ænú3¯ƒI–\tƒ64ÝzÊušeÓæj6­Ù¡Ù»m?ó›: ‘ІWKNÍ7t|ºGiúr+¸kСƒ^¡VoÔx{ +âaf×OĬ?t_ä²¾¹˜#eq`šÙ8^ÈoŸªïx±‰?ówîä_÷ðµ·–ˆ©-ãö½x1±Â‘fò2›'Q~Óð§¤+X~ewôör¾þæR¡èä ¾ôÜl]ÿ÷[¹ ?y~ôâúþ±“+¹8 zZc¬…§pÈ\ë›bÉ…•ÚyƒÛ 3ÿoM=oŠtö ÿÈÊ.fvNK¯Ì玵öÍ_–WLb+Fò1¥|D¶-ž>Ú‘bÁÙYú¶gh¹ö%úÎ/6`¶’Å?ÃÕ‡ò•gãQòûOñ~òÖ7}¾Jd±__ýÎÌ&b~Mxÿ[íɺè2;ÆëâêGéóz§èÿm»îį;ï0ÛÜ¡úÇhéƒc­ÐÓðTÌI§¥ùÞ*m×Wëø¬žI޾ɖ;6»k6/Þ Ùµi³K­ÆCÇktª¿¹>Ֆѹ#øè4[mp¬%”¤ñhÅ'78Iå7CÓº®ÆÄúqjpòpŸàE +07'Ûs{fŠ-÷6Aë Ú|fÓx¾th&×ól«Ðõd»8ôÊ s®RÅ©ùÐä{ž»(§Ÿè„ó/´º¡Ÿ]´gþ¾ƒ¿þ‹ |ôQW|y¦>©iŒ‹‹‡fÝÒÕš=[ökÀñëK§cŸYìÑÍIó£p€4:…ðÄaÐL%»d~S¬¿°Düv/×so‹œX0JŠN³“ š¦ò 7—‰57–òìïøënÝÀÛ¤œæÉBj­“Txn6X|Z“˜vl<⤘Ý4‘4uRY=˜ÄrñüþébVÓDÒ’LiËG¥ÙðQùv¤·SöÎ|úœP3š N­y<søШÒJ³Æœ4ôö¤²« äŠ[KùèüÞ\€™‡ÎG{æ"ó줬ŽÉX/º“Ý©;ûë^nàÇÜào»õ]/·H%çæBÛ:Bï7;¡±í!¾É¤aÍø~¯4øú€xá•^¼þÚ ¼óJÒ üê"T¿³ºsˆú¦?­âÎÿr€;û7WýÑÏVr™ÝÑWÓ'ÃW0ŸÙýr r®õñÌCÏÚ‘:•­µƒ\jÍôô=ßlá?YÅçwÛ+³:hf¿»¬‘âÊFI%½3¡M)å÷Ng×rœ”Ôà„k¬ Ï®ó‰·ÔúGZ€ÙÁ·>ØV4”Š ¥Ú[+¡­½OÒ¸Îé™íQÒÒf±B×òÑ*]ÏóÍl=nŽ]_!6¸žo¿·Iî{ìf8ñ•Nêýr¯Ð÷p·0ôÓ>þÜÒo}äGÓŒ¯>+7~õqæïý>¸“,]}¦Àç +™Ç&°µ»Z8ýó~ÌâògþÓ]—ybâî½¼fëºm}Dù¡ë‡âà®Ðãrº'éK¯ÌÖ'wD.ºg˜­>èÛndÑÐ\â1f “c*Fë!µq4åÁU±ÎxõÓ`ùìta„ƒÁìëE£ ‰ÎŸúÅM7𳠴͸¦§ëp¡EfÎêʘb!§s²Çâ,«/Dæ+„ôÆqRJµ“~t—Ã꣄êÑBB£_;ZŽÌÁÇÚó,ƒ‹ nq@ÕHs1¹Î ó­\ï¯.\ï7Û¡ã!åuN#VQ«sš?]¾øxàò‚Í!1¡`$4\„3ßî—¯=WÕ‹_¤3_éP#@3½Ò*?=_,ît†ÖßøÞJhÏ€ ³:‰?ù›+wò/{uݯ6aÍ@ÃL&6{„”×:y ×ÿã.±ðì,pw½Y-ƒš ±t`&l\d¦‡ÖŸ`Íw}h¢µ>,k8Ÿ{r[ÛÛ¥’‹ó<¼ü5»·îÕì÷–5œ‚•œß6 :âÐ"sìÀÀ‚>¡]l¯ J°Úë.iˆ!fìZL…ö4]y¿XKhɈ¤Ÿ=0‹´Tð¹äÄ\¹´wŽ\q~i¥”ŸÇ½³‚˜"}ßïUOÅù_ú0$èÚí8¿‹ŸJ½Ï\I‚Ýkéò AýèëhÃ7_”ø}óA-få U¢ž{,b.<}ã­¥zVƒèÛ>_§ëùi‹¾âÝyÚÐÂá;]¼4›­×¸²ššN7c +FìØeîu0ÎÒÝÓŸùMèŸl í©€æ÷Ý|Z>ØEÚiaùvЊ·úbr­š0 qÛpé¾ñàåÏäºëË¡KM%®ù½UÂ…ß´ÂÅè¼úÿ±Q(¼0 öBË)ëo-jÇx«fÈõÄ¢3³gQWëFZBÛŸ;\b@.¾j”.2‹ùÌ<;1‚ùºÄ2Gz“)ÍôÁ‰V°¨—4ÐI&Ƴ'p¬Ð{ä %Äâ‰qÚ2)1o¤œZ:ºŒx_à B‹[.==zu,†¹˜4²úgBëÜ"ÒŒJ¨t‚Ž!´>ô=_o_€X°à©6Ü]…¼KºøŠî›;BïbÁù†›¸ÐXf±Rßö`½˜xÜÉS‰0÷™oÍÄ ”aˆ!bfóD>¡t¤—O1¤utÀ<óö 5'¼î©ˆÈQ<¼d 0Æ +ü"V§Œ“³ë&‚‰…x+‘nƒ>™—fÎr3}@šµ_9ZN¦“ÂH§H‚V~fýx©´6«Û·A7QìûjŸÐu»TmiÞU_Zf'Ø}ê©'úƒï¾xûV²Ï™FÒ†lxoÖ¨¾ùýÕˆåò»/ÊŸ¼ŠÂœjxè¸ +¾~Ì—…Z‰õ,>vNb+G¢Wŧ5C°_ïo¶}ó~͆yë5»·Ðh’¬t†h WV»îÜçÅri–C*!ÄßöÒû™A“úÓÐ/…ö?ïg¥ãƒÍùƒ‡­ää*'¡üì<ø@è6ñG?[c8ó•l8õR+/-&í‚Öéü©ïÝåë¯}ø›ÿ!yŸÿ¯=|Éå9wÀ'KkžÀŠ³Úï¥Õ€;‹¹z0à´ÁiÖ{]µøEâ”±<@L¯e1=ËlN>0ܺ˜Ä«döM(O¬†YʱÌÆ +F‰±l-eµLÚEJõ…%¤ËÌrhñ`´éUU]Y¦Vž[].0«Ä(kèÔ‰Ío+Ï,‚¾¡‰o˜5B-^7ø|ûgÅž‡;‘›A3”¸ÙÙÇ'CS9ÿL1Þxªœ{*ò-Ÿ®Ç›€c×ÜTh¦ +)õNBD‘> Þ +¬ )¡ž›°1¬K/é šlM,¡‚.gáp‘ƒÖ—å'ÌßAûW`µÅòÄÚ1ÐzWóNÌ"ÞL~ópŸˆéŠ÷Ïêh¥ƒÕ¥c1¼-áð‘‘BRýbätLU‹ÏÎ'=)ô9®.“{ìQžx)÷ˆ7WÂ.eö=sÄs¡éƒõbç.¨•Á×\ÏómRF »NõN`ÊèÛŸmà†þ¾šºŽ—ø’3ä¬ÖÉxm®»ö°õ$j„°B;.4ÇÆ[‰4ç‚’­¹p\‹D+WO‰Õ<;5ëæ®ÑlX²V³ÛºœͼüÂ-øÄ:GáÈ™ÙBBåhèÄCK•8‰¥ŽjF-Ø}£Á3÷ôP4Ð}">ô©˜ÅyıÜAqðg7áÄÏîë{_¸SÑ©ÙbH‘­–e˱õ§e÷ºÒRå%|ë³ÍrݽuЊG ÷ ½4h‰ßí%æ)ó7bFû$1«k2åëUï.•Ú^m—»¾Ùkèz±ßÐõt¿Ðy+XˆJr¥“”ß=Z†ÐÑÃyè 9½S)ç(»ºP<úÙZ¹ã»]rÏ7n†žÇž¾½µJß#wè'²µ¼TÉk™fÈ®¤Ô]Y)v}¶Cn¿·“Ùæ:ÊÉXn#õÏ`±nééE–:€‰Éw<Û"þê.øùúè“BZ(êžNq?–ùé’SsП²NNÓG–Øñ õŽ\t…=w(ÅÚSô3sÙ²K³yÓ6 ö„<¸`3°Ü¡&t>ß_ºF¬®õÒŠ>0 +Œ +µîÎ:b ÅW8›–­s\ µ÷Á~ñØÇëåìc“ #/Å8P¿3¿å]9JTŠ-û÷4Òë;ÿ‹§pùg^{êï;…´'h2z*¡,¶™8‡B|Å(褋%æÁ7€]z)(ÒÊ'óècv‡³1ûØTÔ`üAøq3÷ý4zÉ× zŒˆ›ÐÛ‚7ô†ùÀ+ÒŸ,91G9þþ&©ù³Íà²Bs”ðÐ~eù TÚ5 Zšºö÷ÖHçŸsêà/ZÜÆ0 bÚ°ûâ{â Qé}èÆüêF¡÷é.éôW^bõÕE|B¾=4üŸ|°ŽñYŒÊ²CnŽÞƒ”ßç ÍgÄèŒ 'gˆ©=“ôA©Ö`챘1 +º||÷O.â±'˜ 9£ö“Ó:&“v]ïÓú·Qó‚™…¾õá +gÀæ í_íÖ›Øýr‡Øz+Øò¡ôáàú5#t~¹MßûÕè„¢'Bþ×¹øÔ,¡ýåVCç×®B÷w»ØówB÷Á˜Z9^ò?l…už“Zse…ÐýÀE|äå3øXP:îæ[>ßf«Twq ´î¤‚Ó³ˆ{U|iÒûƒ»|â;/¡ïo»¹îo¶JEççPÿ¸øÄ,Ò·;ùÚÓxå~ zé¹_óÁRÚLj­ÅE—Œ@­ëÍj@p×=¥CfÐA”âÇÈì÷“Ž$˜1Ìî´b°ùþ}:Ò;[ú…†Š+Ë…ýs¥øòÑJtÙ(%½y¢Øþd›ÚõhŸX÷ñj5­fØ¿Úöx·±ý¹«Zzu1ò_½hæÍû™ ˆ`^ÕÀâ²Pw…ê9®Ú—ìz[ƒk¨¶³ëÕöÜ]-½±:êØCBãäsÑ/ÆJËIœÇn®1tÌ9ìÓ‰¹SÑ×úw`wˆ=¯w{âºÛM³w7ó«Z‰å¡¾foxs†è<!(Ê +q‘¸Y1£ÁJAÿ!é6Xwj\ÎH¹’ÅAh¬B—›ØYÌu?Ú«œx¢…Ÿ8ø›¾‹å1`gÊ·Õù'X‚-«—Â-ôb˜9ô¸ Q†;0NHSö`¢µDš¶9#HSùÈàlúÜ`@$‡œcçWÀX!¶qt‘q ófû$TŒõÌrSE9Ò3û·R:0—;ñz¯ñú§Á¾Ÿ½—)]~-ÀfÜvyiLœ¦¦ à‘wÙÙyÄÆè{¹W>ùÜ˧ÿkÔýÝn‘Åhbg±˜Mœ¡ôæI`gé ÄÎRÿ…¥?ùר±¿å±Ÿ£\ÉÄÎ*$V±mâ²ìÁ¦ 6<éÒöNƒþ3lï ;Kmýz—ÜùrÙ1[ãZ1Â\Ïl ¬yc .ñjÀƒˆ³V"˜Ý$U9Aû\xy€ØY…ìÚ¾ag•ƒÅò»è{5÷øhÆÒXÜû%†ÚiY|`—^ÃKæ¢ý-Ÿƒ’„´–E#³ÍPØk…#ññX£žH\ÑH.$Ô|&hz“îõ±;kH‹œ-§ñáU< +¼:ŸôÚIê‘óå†ÖKÐâ.;1ü+uà±'rdìe é,gŠ,°“CLZÜÄjy°‘tfÁ|†Î5^wÕù%ЬÅy4â÷F¤Ú˜úÀ)Äø0†e;JJ·3±³ê§ŠCOÝÑ”ÁÎ2j¼<Á3INöÝÀ CR#’lggM;‹ôJß°³Ó‡3:§)µ·WóNÎUY<#þÐ\[âv¥µL"†bZ™8–†œÆ©ÐÒ7¤3_Èî«’oGö]{g-žÏâáHÓósLÏÏèž +ÍjØ·Ål5©x´áHï\ŸŽ{n~m<¨nêyô‡î<ÿFwþÔ íÿ®;ÿõèίãìÅk1 M5£mŠ’Ó;]œdž„>4u˜_åˆn–wÐÌ“÷5Óƒ£–j–\÷åzä¹rZ×$Ä?°ýø€Tkàk¦Õ*f'–Äa=\0’X쉅£Õ즩†ÄZ¯ kþÈÅ…BÏó]à¡¿¨cyØ2àœ{ºë5ûwï#v–NRÍôÂì¬è!&zz5»µ,¾™#>S†‚Ól !É6J`ü09(e8|4XÜħÎj˜¤æ4M…ÿ£Rlï‰wÁ®­tüî:0~HŸ>¾Ìy«Êr}æª7Ö)Õç–(åg³­°eºÐÿhÎÞ W +-n)¡ÊQ`¿|3©ý‘ rRô•l[5<ËçFˆUÐ3ýbÿfõLâŒäü£,‰åÄb&ÅÈ7ì¬ÎG;äžÇûÐKyÃÎB¼UâkÆÀžå´ +'ðÊÀÎ/µÙ³³òLì,#«÷}Ã-_Œ Ucå€k¬]hø«‡+‘Áçòš¦Ï,µq¢1£f"ó;dÿ”aÄÞbÏ÷I¬‡çCoý_Ÿ:^-ìœ Ímbö!×h|ƒ¡ãý>ŧ*é•ã û Þ3±`KÎÍúÙ#þä Y°cÁÆ£ç³Ø‰€Ð|kµr¤®‰»k V"øèbÏë'k<å@ó:Eã%™¡vD?ÛC§jÀÄ–˜Ïk?X\RŽ*¶÷öòÓØ/hö{h5‚1ØÂV>ÎXÐ6tÔåÄ6EÜ)>;½bÁŸ™ {œ)@ÍÊþÉUª¿» +¼y°³Y.í "jÔ;׬õÁV©õ³-à»*I ãŒÙÝÎ`TÈ]_îFž}äTÐæ&>á‘ö™B×Äb$³¼#§mŠ”ÄÞ#¸=÷Y¾uo‡1³qŠ!,ÛÎ7¹a¢O:«ëËçï맞(ÊÀ+/ÚÉ-×;‹øí§ær-;Klþb#±³2›ÁβpÇZT£Ì¥ìþ©Ðê&6õ‘!bgÀO;+ÏÄÎ2ü+;+ê ;+a˜àbÁ‰¬¶TYÞŽœìø충Ð÷9 X`†Äb¶>&ƒ­@Ïgu‡ÌžïjÁñfàR!g îž_qe}€©Áò“ÎñÀl•]K%"ÛŽød!ñÃÀüVÒ›&òG?\%žü³»¾óù&ð9ß` œ/çÙj5ª"â‡ó~þû]–g5y`Æ0üŒ‡§ÑšË©•Nè#"þ ~ÃïEÜi.€å?Ç'J•—‚W6·û½ÆÝU¯A¾-†$2\7Q-š–/å•,nËð'%Ìç²ZFN®%æÎ[q}/\äþ—û‰ôðdÝ쬤ßÙYñ6FbgYªÔÞ\­ÆÒéýÌðÚÁÛÆ^©!­~‚Zuj±OA×lŸ¸<â[S=žvté±·|²‘x,KCZöà›¼a‚œZÃr¯“³Å–O7Ëv íŸnå›ß[ <õÂp>‡j™Ng¼/©þÖJhÉãÜ£Zzy1¸¤jÿ¹ñÖŸÄÂ1¢¸¥14Í–ÕkS¤¦Ï6#“X-kâKšØY±³žl•û¾wWN¼ôÆdÔĈÎÁeÓ'Yq!yÃß°³Ð_s€øJ%]sÔʳKÔÜšÉßs[œ¥šÓ‹”úwWJ/,»R‰Î³bXãè›r:œÅ£×Všøï®&nLQ«3~±C«òÊrÑó Õ¬š‰ðÅ +ž0Äü-pî¥æ›ëÄŽ¯¶£¿F{î` æÔ2ßÛ8A«u"†sx.±î¹íÎri÷,ì_¨]Î}ÍᚊEÝÎbXšN 4×û˜#vRþ Mÿ”J'÷=¢Æ[{ÐLôOµ6D; ¾5¤ÕLó>Yª>¿Híùêé c¯âPÆpø|)¶Ø±3DYxéšyáÌ‹=鴂 ™íÓ(F²¸Fœ]ô‹{Ø{bïì¬|;K>úαùýõˆÔoe1ßÕ<•rMæ÷ÁlA>,¿¹Z®eﻸk†\Ø=ƒXó…ƒsÔ†k¤ãï­'®-ö\âŠF³X}†_é‰ùRÇ=¹ëán¾ëÞ¾ý®ª+‹À³ç¼'µìÚRCJÓD!(ÂJ®:³= õôcyõ6z_lçZ?\K|'VcQ­Qvy±ÜòéVùØG‘'yjý4¼1ÁRòK²FÏGÉuU K¶5$–9I_ìôé¾ïE,™ÔÚqÈxVy{±z]Ïl[0hÀ0Bß<ô5(#Îiº­!³y +Ø]¨ùä쎩`nÈ…31cB}¦¼³DØ+ú—Q™¶rLöäaÄ€a¶¤Tœ[„ý b¼GæÚ‹I”ï#SŠ.̺=¥°g&˜ßˆß"óq` Ả%¿˜w| +˜Õ4çR÷Ñâ¥TÕ\>–ÌìÞ •ëXÜf5ò}âØ /*ìrÙµ§Ú<Üö>™þÎt·—ª/.FOC½ðµj¸ðÀ(v?Ü!ùDZêµ²ûWĨɮŸDŒ/pÞ‡Eä ~¿°³Ä†;«¨nËmž"×^[|\ßþhêw}PŠµžåøbRË8°Ò”âßYœ¬îcëxºô†UÐ1l# kªé61ÖÕüþY¦ßÛ= ö@µ 8ÔCó¤Ú‹KÄæ»ë˜mîPÎB=«Š ð;ˆ WÄìžý=ääÛÀbkT¬dµ|÷£mÊÙG<ö;w®ãÞFœ±Ãž»Z~m)›LÎ)Ÿ}¬ó»öIhÐÕÑþç>2<ðzïï`õ ^3|‘šÙ>•ÝKöص/陃³nRpÖp¥èì\ª™›ïnTRêÇ錡æË©‰aÛë î–Èì6®CÌõz–ê4:­Q#¥ C~Œ÷%ÿÓô%X=9LÇ̈åÉþ–RÒ3 |+œ_"&QÅ¥ü±Ï×€9¦Í9°Z½(18Ü +¬-\O¥êebå¥Eèå#F‹!™6œ!Æeì¡+Eçæ…özÁ¤jÎzÛ˜%“kï¬Æž1ÑÄ]_[¨œšµ!§Óço¤Æ»¦Ü’ÖÑà\Cù¥%°{º×è7Ç•×2 ½k¹ç‰óßK¥Ø{9$ÍF<k¥$ÖŹñô7†s_+JÿמbóƒMÄìA¸ÓW–‹íŸo‘Z?ߪ– Í#¦9˜·,磜µâÜœ/„PrŽOK0yô­Ûîoß[…µ€ø%–õÎ;ŸíÀYOõÌׂX÷þjòÕé5ã³â÷’a÷g/Á{¹Š{è]¡îoÿÄ>•ö¦ý-P÷"Æâ÷ QV8“^88E¢ïa+ÖÇÄDL;6L¼'ì A¡–Ü\YN«häÃÌ.°ÇœT=ÆÄ3g©R~zz¨ØƒDΨÄæ9‹ÅhäHxm†¢ó”†ÛkÑŸQŠ˜ý±×§_\ %×Å™1"ÓVIÇ’ý~ø¯ŒÖIˆ“ +XöQvè_Êõï®óˆøA`m —v|êlÚGÎd÷ 2ðòjÏ/A>BÜj0Û ûf±…øØ;‡/'OûgÁ.Âs¨ÞC­Êì9|Ç‹­|Û£MðyJ9Ë%ÀUB¬­¾°„ï~î¢=Òƒ½zb}%”:ÒÙôq¨ôÌ|©ˆåµàãÿáŸÀ]î~´Eßþùz¾ñîJÚÓIb±¶ÃÖ˜‰oÜ2™öÑÀÙáô£M9rË4œ#àÚ?¦ÜI.œÍù'[é ‡-PK€[…œL81­†Å™Æñ2Ë?eœ·*š£æ6N¦½²Æ«+Ď϶Jï­Ã>½àŸaí)…šq‡X,+èsæZ>^‡ßOû5̲Û'cI…½Î|Í™ù\ǧ¹æÖrÇ?XYT1<Ý|L1"ÙF)é›C|8œ!Éš)‡²‘k§&V¡–6ËG¥Š>æCÏ.‚M²šköÞà_À›R¢SìÄÃÅJbÅ9¯‡ù¨ö)Ôçc5Õìy¸FàK{ºk5Þ:Nƒ<µ ê]\wäIØo•˜ÍJ‘)6dÛ`L³k¦äuLÃY92ÝVEàÜ¢G›Z:†XMäƒßYAœWôLXŠ5.Õ\3ù#°O™#ÎX±è³³5¦$²k—ÇìŒÕ'È‹`ƒ¬Z%4¼»÷9¡ÐòîZ¹Šýö>‰'~(øÃèó OžT<šöJYN>›Ò÷ôæè„$–oã,m»nGN΋ŽxeاK+sBvÖ6]ø‡êË‹èË\bãv…øÇ…DEúÅ&;oÄ—Äû9×]Îçï÷KŒõYî³b¹ÏçMÎó]\Ù¿Ø3Ø·8/f?»|éÊÕÎË´~áÎóM¿Õ™}ÛÙ36$8$’}QçïhúÑMìÃ~ɺ ëV,]¹bùçõËW¯ZºzåºuÎøò†õKW-_·ö_¾Ž/¯§ÿÁ—×Ðüþåÿþ%ÿ‡/ÿ÷/9d/ØGÚ{Ûopž¿ÀYì—;»Úǘ®ÅžðÀ¦îd¯ø÷ Ã~p…³¸×~Ù®À„ÿÀ$wgÑÃ^q^îLoØôç?^Þ:öW-_ºv½³ÁyûïÚ•ì»â¡ÿoO`?òæI¿Z:ýýëÙ–³â™ËíçÌ¡Wˆ[¹ÑyõŠµk×Ù‹®¶û\Íî4®Í]€™—lŽòAsOÎÏÌÃÛßì€gÙ>wY³g—Vãæ®h´úCfºÀ,kŒ9êƒ2¬õAéÖÚ€+/5Æ|·‹§fÛæ}×=’ƃ3ó0Ƙ{èÃÌ÷¸‰š].Þš}{¼4@ó22׶òö‹¶à"rmõ¡…¶ž)VîZÍσÈ>éüã,õùô¾I–îÞ>ô·Ý¼ ìwè4»·¹²ÏZ·lŽ±Qß¿ß—~Æ[ +1ヒ­!ebH© É"cvË4ŒÒcÔ•dzÃsì0òL£-‡ËGc¼ãÁ8zŒqLC~ótŒš`’?c©`<’'ái¶†¥˪‹Ë1–‰29"Ö$(Øg%4ÅF‰†DIÝxÈI‘4 ~#H‡’†ËA‡­‘†Xö÷ãË!I"DgØ‘4B`Šµ#żьSüÍ!Gi! Æ +#…–c­!•­å$ çn!ÅVÆ8 oÍÇ’„ $¸¤°tŒKBBU§÷5ÓÉÍDŒã‡±÷•b«¦WWKO.0dwOÇ(²·b&øÇ[AZÞ{ñÀÆl±ßƒ±P\ÏØ#£IÂ(³}ª’70CÊl™$Ä9ˆqUìëµc¤äZ'!8{¸·!Ò²­RtÖ’ÌÈ8>‘Ž“dMáhº&È>> £L8>OÇÕ!ÕÀþïfÁK¾æGô2›CF2ÌžÞAf^Z?3w/UÉ%F¤p’s<°_ÑÎ`Ÿ^ƒñQa¡gï‡÷g×”ý?¤0wïÚ¯Áx)d]…B[.¤ØV0É +ÒÝž/õôÓ衾tóÐi0>-®íícáv@ÖìØë©9€ñV¿dk9²r¤W=ZŒ(¡£Ìhð6ÆY¸²ŸsÝ i^_3Háu@’Hç“`)¢-… $k54ÛΑ5B‰/å“Y ››®¤ÕŽÃqs={¿ì5˜+I5NjFÛdCN—3¤ ‰Ng$9«äR'ØžhÇ$Z«©-“Øõ¬@–"óøµñî¥öÆjCfåDüŒÄlGŠL²ÁHI“äµÓ˜¼I’ e:lÞ'¥n¢1&ÝÞ›dgH*s‚dI2Îu€d„àwØ +òƒá}B,ÿH+’… ˲c3G`œÒ˜ql +Æ|å¸<%(Æ$‚²NÆÈ•šTé$‡gØ +‡[C–‹Fq˜íóÁ‘–b`Œ$”$f E£12o(=³H©¼¸Ôxtœ‘i'FeØÂÎ1Æ9"Œ‚И^rÃ8sÏÛT³»¦“ìÕÑ×ËÍ÷6cŒQÊ4IE1y#tv/˜=Ðèq³gŒßöÌ„”áÜ"ÓmiÔ$¥ÀÑÓ>]Š/%…&§QŒ½²ûFãxAáVRzçd)"ÏÎK4ß³ÝùÈ=­ÀÖ›!ÁR+G[èå0v/ã,9ö¡•CÍxÈwÑ„°1FZdL`"[óþf^œQ¹U¼>ȵŠ™Ã0~#D€~`æ-›‘Œ2{Y–êÇHÁ¹6:C¬þd)0‚¬„åØA‚îO(FõL£Õ›îH K®„ØéÕh Êü¨O”¥šk§&ÕŒ5Ä–;ªévjX² FQ)•ã$Œ:¤XcÌUJ¯¦Q1Hf`TžÝ[Bc°û@òö y +18 +£n…€]¹íñÔ¸í×j ᤙ-îã5ö5z™=Ÿù$Þ?ÖJo2‡ÿ!Ùà¤a°øf½_¨a‰ÑgwO½Æ[ 0S­…,ÈÚâoC^6Æû&YaÔk #R4Ö•Ç^sùHï/ª`„’P1rCÕä…WéY?×]{5œn®`l&8Ç–ó±„<É ²ØK2ÌÂG¨a)¶HPbóGÂ7BjT M·ÁH¢ZÜ9 cËð°-9ŒÙ'»Ÿ4ö”Õ4²<§•‚Ó†“|Xb ø æÒ¨4»ojÚ±‰¦¼ cºZÔ;›åS!)¤–ôÎQË/,†oRKNχ/2$–8B +K Š¶¢±-¶[È!‡‡a4UM-«.-'׎… ÉAÊñ0½cgs1ºhÈc¶„±XŒ²õCÒo$³Æ^ ì!¥~$ðž°–0–ª”_\L#·õwWa ãcsB>CR9YmSñ»!Ž‘S1£Ù#”,fwWƒ-–ô͆4³¡hhŽ!½c*ÆíÙßµ„'9ºÐòñ4òéÝÃ…Ó“Çc­‘ìÚG¥ÚbT|*óµmàü¢Ùý;D²Àðuôºq?Øs0&Žëùsh4bA aq!4Óò²‚Oœ¥t0ŲJÄã™_äÔsä/]„,d˜ 9 ù|P®cdö]4‚d2'ˆ‰¥£1ú̱\€ L²"‹G@zJ:ražRtq>ɾùÇYIÌ—Òh([“>Èë Áû?>ãëZÈ ‰æ$-Àü¤ècÅM²Üì½ .cŒ›F÷Ó(T#²ìhL”Þwý8Êá#“X,Ïd9avÓ²gHðïãÞÃÒÏ&6ŽC.IòQ)Ç'Ò ‹ßÈípIB%ƒåqɵãH’)¾`”šP:†ä˜mÀGQüe6ƒ±@øX¬¡Œ£iòSÉÅŽ†¼Îj^‡3ÆwiŒ‘­W¬KÈLblëò+ +É9´NÃë$™ÈS3;„Ü.æ4ј"lãÕÒsó!› *±ìâ|ÈbCúcˆø ŸI#•EÌ鞊1SŸd¶éH‡CrÅ$iÆ|9»̾ÆÀ÷CVŒÍ·'$FщY`Á8$r ø=9:×ã…d±Ìf*I2_‹Ë³çB3† þÌ÷A²#õ¹l1L£ö ‹Ê·‡ÏüŸvx® >àKØ5mŒdñ‚ÅW2xaI6¦Pö*o.£µÅjøFZoì{ðÈmäòëK…¦Ï7ˆ5·–‘´pÅÕ…4¾Uâ ¥¶LŽ¼³PlyºEªýtµQéà©…Ÿ³PRêÆ)U–ȵW–a4œ®]Aß ŒßCFŽ¤ŸŒ`ùe<»¯ñ,~±õ¨¦ŸdÌëŸ _¿#ú²€åKÅy¸³Ja>¶©BÖ5éÈÈÒè%»Èƒh•ÝoØ$&hœc³¸&l}l +Ë…äÈl;ŒŸ’|îWlé(\K>äÆ‹°Ž¤¤ßc,ò~Œ‡Âf ù%f§oÆòñZht™å‹ÿ»_óû“JQgAš€ä#«//†,6¬2U“kÈWÒGb¹£”V>H øQHžÔÙùy@ˆ¹SHž#¶ÀÞ_LÑHŠÏ'fB^þ²¯eæ‚b¨ÆRò:¦KUWcüXŒe÷/8s8î^dm0š +ܤAÕ‚¡YRt©|*dðð7hä<׶~¼¿ÉjØ-¤¶…lÐA‰Vð•ˆ2[ÿdŸE½³¼Å 3-‹åž*ûÌjüÛ[Š0ײúK¯š°$‰ðf µäêBHóÒxkÉ…ùÀ@ŽF™Y~Lÿ®#Ÿž#V¾³’ÕbFÓ`½€¡“ëĬ¶Iøà3:&…Ys t¬ ’íbL±=Zc”9rRúàYMfdþ;(urHí(q5cÈX¬@|TY½Aþ~‘Yvrj•I9t¼t¡ú;$ņb"»¿\ÛãÒçkn,†Ì;ì“|@A—3|òjH½!·b5Á4ø·FÂ>‘'ÒýŽ‚Å,äüÈ ߢ²û 9Š³,¾È,¾ÀSÎÁl™%uãh”›å-‡XAR˜á¬nKµ¥\„ÅNé÷¯“¬ +¤’Øú…MÂÑÈðïÏÁzÁš‚– »f\û½¶¢¾™ÀP@Öœ¯<7ñdXïø;X;(€LŽÈlâä²â­°ÎHJýMÈòëXÍìnšQdñŽV£õäC[&¢–å|b¨Ö£t¶>qý”äG°+…°šƒÅ$!Œ­ƒÀdkžÅc`µ`ŸÒáŠQ@Gà:ctÝKÏjÞ× ½$ä…xm‚êöps­ÌêPsÈÛóC}äg¸ÏÌg!&³\ØF)½¸ë ±°RlÙH’'e¾ù¡àfÉE[êb,).É…$[Cò2†ZV—›dýâ-Ñ›"óíxßxK/ÔëJ¤…§`Žz õ®›Þ'ÚŽ$Ëêt)$}8$õ ˜Vãæ³{„<­èä ¸ög›i}ÁeVOà:mqÓŸü»uíßn€&ÉõÃSÆêc-½%Õ 7¡ñýÕRÍ+¥øJG. Ö +=ÈR` È1™#à7©άC…ÕÒǧ@FИÈr‚èôjT’-òO5µd ê S oŽ5Eµ«µYŽd 9ÈNYn ) äšq‘–„ä*“êÇ’¯e1 ˆÊ `÷Ìg›äøgK5W—É$Å\0’¤àêî®û~Ø'|íÍ÷¿"YP’v‰.‰üšddçÙÑ@מÙìy|'â5Ш-„pöóð•è Å”8ð‡R‡Q‚œ ¾ÎxÊ 2Ú§’Ô4Ëq •B>?Çòj  HŽ5®p¤™c‹µÛ$ËÖ‚ŠzŸY\pÝã®Á}×û&[¡~VÖ´~¬€€¤´^ +2—²má·%æSÐÿ€äåŒÌÈq€ŒDò±ql- ƒ4Ÿp(c8ÇêjoVÓxé|4Þ²¿ÉJ²¯Ã÷‰‡˜í¦YC:õ:¤Þ9%ÖÒ|ðãƒR¬±õ¾‡-i1‹¾%|'«÷,)þQœ/°2}äȨ;X¬ž†|¤(î®!™#H| fd5.$„S¯ˆçÕqgÿc?_ÿåj`5°ŽQÇyꌄ1Ž²oBõ;‹Å¸â‘ˆE|ûÛHAÞ +{ÌérzJeñ½'cvëtä¢ðß +fõú05†å[AÞ‰iæËɇBÚ¸T¯9Bª–P¥§æSý›Õ:UÍk›Ž<=C5µjœ!¥Î$«˜Q;‘òå’žY|Çý-„>J,~&É?5ÏPJæ ¯á{_ïäû¾ÛAxÇæO×K5wWBÒP+X Ä ’> X"ä«ÂñO×Iµ®–Ò›& ?BÒ†Cv\húbßõ|+Iª±•Ù1YÌh7åG®-ÝÛ µ=Ý.w<Ù)·Ýw\‰I²Å•œ–)¨KIº’•ˆK@ ä÷:S~Ì>”²+‹¤ª›KÅ£Ÿ¬uóÐkÐË€]p×›êufWXS„á`u?Iȇ&G¾¡ ædõ¤Ïhm2»GŸý)ºÄAfu dÉÑ·CÞËdþÓ?Õ5$ A$Å×Sn-GWŒ‚_F¾ƒž0dÛa“q—c*G}®ýÍ¥L9öÈ(% s8lòŽÈC ‡ ©W©fôv©ß™^7A-=g’ó@Ár¸„üQÈõHº$.o$Éø´OãZ?YÇþ«î/ú_¶ éµca^j˜9ú²äF‡kEîXçÌOP~™¨œÆ)ÔÓGéÈ©ÔO¢þÏÑIE_RË2z}ñ襰|ƒÕë!BoÜÏb*òÇÔcLrC,e~’j¨ÈþÜò}’¸C½•e§@â1¿É“‘$Q÷LÈ5B>Æbj“”Ìê—Ä#£Ñ_ GAœð6egLõ䦫¯-rONíš„\÷ qB*¿ºHèün»xôáz1¯o⢜Ö:Qlxg9×õõ6໤¢ÞbB•#Êb^<Ës +{œ±”–.BÛ“Í|Ç“-RãGëHn%öQh¯dÕLkÏ/î²B$Ÿé6È裆«¼µ×[ì‹Õú®›HR,,ÓV8e…z]D½Ž8Éò&ôðßÈÛS.•\7–Ö»7ȵàC#cÊF*©Í¦z=¡tõ™ÏE¼€”´\|~žPsk©\ze¡œxlœ”4 ß'¬{mÆÔf“„.»6jÂñq²Õ¢&Òò@2ó·è‘éY õ¢§Ú`OÈPÒû{½žn‡~ õ +™/“ŠgQµ[pü0HqÃ6eôñ~GBð7— §¿Ý¯\~fäÚ ÉÛ7H)(k¸àÇrÿÖ¨éäÃÕŽˆ[†ôã¥ú{S*³C’°‚¬2üg^× H°’'z¸^¹m$¯ù»ôžƒ’Âê:–Àß’Œ•©^·G…×FŽ9-Så’¡9¬v^@us&»& ª1Ôc@Í_S~f!jz¹âÊbøD¾ù“ubÍ{ËÄ +äþ°éüQ<«ÄC)ÃH¶± gò)8a˜O^ÇLþøŸÖ+#–^œ'DW: ¦¡w­D²Ú;÷ä 9û¤3â4Õ’,¦CÆ ¸3¡šÕ•,fC:M¯ÆXŒ”Úòp‡Òþt'P!È1àG€ €´9­k×Äz»šÞ_+ý€¤þ(¿Mm{ P”úþ¿îÐö}»ùM½ŽœÇÈ®)êuBK„±5‘jK2šÌßʵז+ùÎjnçtVÏ‚´"rPȱS¿X¢†»«ÄÊë‹EÖ™ê6V+Aª( ¡ýéVV¯¯‘¢ªGR_‰ú£^—j.-âý7äéX«ÈLõ:ÖK–äéiÝG؉ONïL5ûøª×ýX½,»·Ôw.œMõ2¾—á —˜OòFè3bhŽÜõ`·2ô•—|î'üàªoÿx!!BØ5`¹xËs”h ^µ0IŸ²ÚŸù0¬M¼Hü£^GN…ú1€$’ W…~úIÌäÊw–(e§¨¹Ç¦(T¯WQ½ÉW¼Fª×ÑCD=:>”ùa`…cwW_†Þ:ú”T«±¼”juHê¡×Û2EòˆùB¾ýþF åøΗÛXNbBB°œ ë”z¶áÙvœ1Ê¿ !€D—²û§ys¬Vöä4‚_ÌïHˆ"{%žùá´šñ@B(Ñ©vX;„Éœ˜÷…_3!!”Ö'.rÇ‹xG ƒØß/w„ì$°àWá[X]y™z®$!wää\®ýÑfnð—]Àô ­"'Â5+8=ט×îlˆÎw€m"·!‰Âc¯;îo[>ÝD2”xŸ±lxg•D8Èg’òìüj—:øµ7®pì½ÕdŸ¥gæaF:rnI­UÞ^"å 9óQ…#¼±?Ê…˜Ã¿ª¹=θˆIèk¡éÃ!)Ëù¥XaoÁ„é¨Gûݕﬠ׆þCËÙïR™o‡_$é5f„–åCí„Og%Ð'BÍ/F±§þþÍêa}`’•§.ÈÌm·€ž§9Ø|HÚ0`!p@ÇÖ®ÀÖ<Ðè'áÌò( '@M„ûº5¤}QÑú—,§[lVÊo,%ü»fB뛸¾—.\ë—t=/¶ OCïÒ‹åÛ{] ¡gµºŽÿ á ߀½+OƒÆ{¿Bö‰¿Eh'ô%ƒ¨7ƒ½sØ&ÕÕÃ<”0 =,õ=ó7è£@*uäg G†æA6•öÊ#L½.Cqß\’«Nªk’NNù[c@¡ÿ©D1ûeviˆ*r þbkÕ%B¡Pß>Öt¶B‚Ÿ΄Åzô {žTáÈD[âl!#çý7¢ëÑN¥ç±«Ö4þ BoŒ³ ›A2­r,ò{ !pÔìEBä›,ÆÒÙ1™Õ@Á©ÃÅÀXkê/ätNGíHضŽÐ§ü·àÌl²»¨Rø R¹®?oº¾wêÞ[Aýþø¢‘|ÿ»°N¥ø{ì?aýªä‡êÇž†ÅV1,a8Î𠦊 ¨+ȃó=·“:$MQ ñ‡Ì=½<5û½4¬î7CƒýÔèýø˜røEàC÷í4»6ºkvlÙ§B½V]P^Mã€íEß {Xø=ÈIZõ+‹™è[GôQ—Û $‹™ÈÉ7PóB®×…d=û^íÔŸýÅ•­©5@b áé +9p3|èI#êHPÂMÐìwç5Ò¡ôáF 7˜¿¦þ䡤á¸ß´¯áiEŸƒ¢­p­”p€±J·ãƒÈQnQ}ÒüÞfò‹È9Ñ뢫þæJñØݵÈ3!“ˆ{ +ß »¾Ò$7Z=öQó[±JòŒõWWH_»A†~{(ÆdæËKºf+=öžéÔþo=…¾ï÷p­×‚­©ôô\®åBBÍ_l $«ŸqÞÂÝÃGã¡D™‹L úP„Å.lÔ +!!rMHõ_‘ÑoñÖ‚oˆ¯„šS¾‹=aç…æ{›¤ãŸlXÞI=ƒ²ÓóáG¨æL=:^-<7Oìúv—Ôÿ£ßý› úÒJÞ©YrFÛdaðû=À­QÍ ékÔK8Æ>•[0ŠÎE¤ÔE]ŽþjuÔ¿@x"ÿCM Jnˆ* dö>!/+4|¾FÊìŸÂEÙAÆ«ûÔª!æ{w{j\vîÕ¸îõÖxJ¡´Š¼Sè|¼ r³/GKÇ?cMõDÕµ•8óÅ[K¬–Æ{W»îíë?\£²ØF½÷”J'ÚÿÃYŽlȶö8s¶H½ßº¢æÊbØ ÷"ùw$DÜp!!Î.…¤¾W2½5[O<Ξ°\ÓÑ4Ù€³Pȃ“†¡×¦å ñ`¸¥šX3–¤èq梠o6|ì•üäOß٠װΘÓåŒû‰þ;Ðð)jQÇLHë›n,O¿ô”û_¸ãþ-E¾¶åÞ6ÃÐ}­Üù`—tìÎZøqè©$˜Ñ»¤ó 3-;¹uêoìÙ½ABˆ„„øj«Ü÷g7eðµ'?ôë^®ÿùv©xp6öxøC™Ãô‡’­¹Ð|›7H¡õùf•ÕeðSàªÎ.5äÕN¡øÎb™\sf±\wkµZvnåÁÈXì ³=Ìßã^ mŸl–Û씺îíº¾ÜŽû‹Þ³PÿáJìÝ(À[žËµ}½‰¯ûh¹X|e®Puk1ù¨òK €œËNÍENG¹9ö!ï—?0[jº·Yj{¸5zlêì×£î¡õ\çö˜MÈÇn¯W:Ÿì‡¾q7\|ìg8óR*o.RÚÆ ñµŽ\l¹ö tþÑ–Þ¢¯™7³SÔ "ËØz™ ¿&³õ^ö‹<Ýx ~Ž°*,/4”^^j,ìŸCùÌá²Ñ8¯Œ„ÒþåN¹æƒUtž{vÀŒþ¾× ´&p©¸?\Ó‡kĆë+€„PSŽS=œ924Í0÷Ì1T\Y†3¦œ¦s*õÞÑJ(M=öŒc“PS¹q…#i'¹Ä}pôV -v+MŸm1Õì,~§â|Çù…†¢Þ9èÙ^’ö¡ËÑÂQª:¹@<õä€|ûQ€ñƽ0 Ý÷î×LgÙº¿Øeè{â!÷?vã:>XOG ³?Y i|HUÓ~ðR,G@ÿß„±`5[jí8ì‹rM¬6ey¸zúÏõã$0äbAÏtÓþDïTþpõ( ÒÅÒw"¥r ÕQóÑóRó[§¢À„„PŽ½³Ø’Ìg¹¿!žÕ¹]΄_cu*I +³ïK]¤î'»©>ézá‚=`{€µãëÿ¬Ý”?°v=?ìƹ­`’§síÓœkÀ߇4zóýíJ÷ó½BíG+p`;´'´öRQ££—†xÈj$åìÞïÆ{Q†whOþ䂵 TßY*&wŒ‡ô=jMÔK´|¸rùâìö©Rº_턽»±|Ðm×~‹jßYœW#3쌈#@ˆ†Åƒ7ÄVйb%¿~ +É!cïgËpæ‡ÅERÊeWrúf`Où/aØ°G‰ýv/qV >ùðyjLþHêõÊ´QâX}j¶Rscü¡€$Ï2ŒÕ¯WHª¶+¥”Q_}cÛ×û€§—3Û&£&A/ +ç}|’jÆûÆäŒTÓÊÇ‘þïGÜ[nðÅ.ãµ/}?üSŠxñ•ûTÜôÄ&ª×ÐÛ±òÒB`i…žov³)t>Û&5|¸V9raR88‹ºØóO­U`O{°ÿ‚„àYýJûBíÓ/G=¡oùb°r|D¾-^lÇldŠXx~pЄ–ÏocµÊñiò$âÎãÕœ["¿½1ÛP84¹ß›þ*Õ´¥sŶϷ©í÷(w ½_ýµÞ`íN¾ðþß±vO]€µÃ9LZcè1[$yøÊS ýÄâ?ÎAD˜¤ÂÓ³pFø@)½q<Ùå­¥rFçdØüj3±ïå^©üÔP§ gguÑÅYÆŠ+K€ óAØoÀ>ÊÁD+ìSa{CèQଂšßéLçÊoÀPa¥,Jª#DÄ £32,¢®!™røÔŒøÈh™ ôzµ†ÜÆ©jÙ©…8ß+ሜ¶ÚûÈ øS}ß·ÛèŒBdþœ1Äê;¶>؈ž $èÉ·£&Æú*>=ÎüÁ­º‚Õ8»’Ý4…Ö*°’µW—“¬äu›ÞSnï ±îâR®çÑV®õ‹u‘3s„”£cq&„#bÿO¸¦;« ”Q;Òùô»ÓA¦ì¾éîîØÔ7B*êˆúÈ„™,¿¼8pCéé…t¦çÀqvk§äܾ÷Ç]òÀ/äÂËóè| ðYÈËJ†æ°ša0.$—Ìê +¶× ¡µ}TÔ”¨»ÓŽÇé¯cù r] p²Ú&cß{~bp*Å}Üc!|ÐÇÇÆ 1Åö@w£Nb” e¹tΠ³\ýÙjärFÏŠÍQyö´o· <,2ÍNeñäàé¼D>õ{éï nE/µäì<ª7*¯,"tI.γûg­XœE}”³µêê +¥üÊÜ[ìYc¯žÐècbÿýBœñEŸ?`&õ…°gÊ|/í壇…ç±^%$uÓÚ'HE§f ÝßìPú^ú˜ëB ‚=OäÃèäõ;cP<”oK³*9§gªY½Óq†ŒÐ?@tàL2|pÕ–GÜZN9GÞig)ÿÌL±âÊîû»ÈYSšÇqñu£ùŒŽ BîÉé\ã½UÜ©¿íÎüâ¡;õÏÝú+ÿéÁ¿÷o>ü=(\ýUNüÍüÛ.~à·ÝÒ¹?ëÔ›/‚ ï=Qß)¾ó½*öý¸Wjút“OqÇcDšútv•]3 Ù:'WÝZ.u=ßi<ñ”÷º¯ì¹ÏùußÓ*ÍŸl#æˆ=ên¡óå6ŸK|.<úþ¹G¨ùÓr`p•²w—‚­íé6ÚÓ:r}1â1õ;S¬QJuŸ¬E ¥<äØë•ÒKpþÅØóÔKéùÑ=(±øÒ\V?Mr§ +y'¦s…Wgzµ<]áué¿vëoý§ž¿ûoîOÿÓOøðß‚ôŸÿßu÷ÿË_xýtùÇïJÄWËü#}ôK8®ñþ½<õÁ“LùöÏAÂßáÖ¯ªzûëpãͯ"|.>ö7ö=ÑZí6t<Ý'v½ØÅ|Ï&ÜW¾ææb±ãõvµÿ¥·oÿS^éøfR~s)jEß¼¶™†Œê‰¾‡‹}òæÈõØ;¾C¸&`<±O‡ø(žþÖS<ó«·tåIºòJ–n}{P¹ù4X¾óMrê[žümßþõ&}ßÛ¥Óßj¥‹ßˆ"»‡ÜÅß<¹ ÿôÏüÕ›¿ð›·tá[A¸øgôÎ+E¹ôR5\}à{ç³Ãʵ‡¾bï·{ôÿ/koÞT³î}O ×(îîîP£Þ&i’¥‘z¡@¡XKKݺ¦î-PA ÷R¨»+uÁáÙ{¯ofñ<çì÷œówïëz“k‘4iÊš™{n™¬ùý3÷cÙ}ðPG6GF¼ÙŒìÙqµW‡¾Òi€¾¯¥s»‘mr¤y ¸ôf M^iÐÁ3Ûԑ ÿKkSCßY`YÔ°kš‚üÑCDÞ>q³Ï»3b„ßúhŒßùÈ%K©gƒÐôSø‹êõÀу^ ÑmØÆ‚.œ~Ð,?l· vˆ‰»½|´Æ,¸ÿÕXXø•ƒ=ùLPE ßýÝ {ñ•¦+;ω+k]Í^—:˜=-=!)¨•’yíÆd΀>:7*ºh;Šl\ùþò£„.ì—P™Ã:ô×Ę̈´.-¾…‚‰å9E$A‰¾ 5}ûÎIú¼Ú^t·ß”.”Šou‹$¹¸$¯™ ³Ú D9ýêZ¿ôx’´¢.ß]EÈÊv²2¢ÑE;Pþ"ºçydÙQv·(ëƒ>‘Ù¯%Èý¢!LÞÃÏþv€ŸûC÷ŽÁømÌ1áÀçÅáôpïe¬áËI¼ý‹9ôÑ—úæ-- ·¸';Úu3A<Ò&êÿ,íi7ë­’éz™"iªõ‡ý(&Þ|µ ‹úŠËš/H_µœtH¤wÌÌTÙY¼*r2TvJ|¯^Šå|Ѧv÷ +¤ŽP·1<±~ZÿCkÆtNú!žôj½Ðüv­µéÍz)ª7‰¬nm +Ù•]âN_\Øf&zÙxTò²ÅNXð»öè‹x:,¥ßu¢‹úŽ’ϥģ!Š~ÞmI½í:J}²&Þ &+úO‘åƒöäû϶xñïÖø›o¦ÂW_h¼ø“9YÕg/骼,é.ÕV¹’Ï?˜B"wTKï:€]ùtÍò^A=ì‹´™S÷Z(2·Ó»Ö£Eçtr¥j#û–>­:Fßé ‰Û}&ÄõcúN!¾ßjN?ë2Ço~5À +>S·º0¼°[€=êÃñ—CR¢è«5UÚoOUõœ!ËûN’5Î’µ=§ñ#bòA‰bþbP„ßû Ä é{í4ñ¶ÍŠlî8G÷¶˜—G‹G[„íŒ=¿±Á[>;Í=È7ƒÖxþ'}" +ÆP—øÙ¨.Cßi²¾æ¥(> õ*~Týþõ¿kÑ…=É»jG›Ç/%É:dø£õ‚[ßu±Ûß …¯>“Ø“Bû«†0ap§ õÛ^Qú¨¾4§3¿[wTú®ÄÙ´²ÄÛ¢ü¯YQ…‹øEÃqÉí6‘(·Û„ÍU®ê¢:€qŽÊÖ‡9áN±ëÕ¤†]¿ð°²o–ÄàgOñ§òPñhE(ýéCõK_ ý©%ˆú:t‰òT†íÌ•lÏŠ ¨MŠ®º˜p¤çV>ò›—x¨-üð‡û‰fýå2ñ@G¨¤»-˜hìq„ýiO¾µ¡^Z s¾kbY#ê’—­öfÅUÒÇGéׇ‰û£8ù´O,.ou2ë( W¶»ÒoÚíDeg$%µÎ’Š:w³º·Eåíç$¯íEïíÅE­§©W=6Ä›^ ñËfh5v’·§Äŵ§ Ï35¹Ò·W|?±a+ÿÎ?´ùO¼dè°¨«9@ÚW!ª‹õµ^¦‡Ú/‹û[CˆÎ.‚Š¿™ *þ0Ã*~±Ö|±%>|t¥G[%Ÿê"mú&ˆ?µ…5N¯ú¥äA.õ~3ñzÛ¸¿þѽ&zÞbcúªÚAú²Ê^ZXc-)h1•Þ¯³4-¨3'u‰©'¤Ø³>ŠzÕa#zÛrRü²é„øI§­èq·%VðÝ{8Â'aü¥^uÚˆkj\Eõ^Ò¶ÚËæ}%1G?¤Úu^O=Ò{?ÉzèU‚h¤>PÜQ ªlp"^™Q姨öz/³þ÷1Vƒ/ãuÝJ±oÏJ:לšäИwº5=ñXgnœéHQ9:à'løå8ÿáïÆhýG|&REäymžñAÈ1 ® ߆b—Ðëù"^ÆÇdñè³î÷–]E2óÆâ`ëžgñV=¯ãéº6aÉwsÎ}FCàÿ|)ßÊeŒ±) y‘ÇÍ%âÂ&KËž×qv]·ÓεfgÛvÇ»r Í%¤”ûÇUÇ#´î¿k:ú6Jòé]„åÀC™k“ŒµÉÜ +¯Ø»ž±Ùå¾qöíñh·Ö}…±¶]·$õáâáö«ÞWqdˈ3ÿc„ç~צöí#ýž¬$®~Ñ3{ÚpVò¤Ç»öÇ!,¼|#?¦n£ðù7RÚYdÓó<éH÷“dÓÁºhº£ÅGÜÛ|Ù¢¿4VÒ[B–õØ ‹?™ +ÿÎ>ëÇÉÒÎãdMç9a÷#d_“«Þ'q¢úJW“Â_u¹Wê·ñrFöpîýPã1†ü¶ßÚu\K̬öIH©ñM +i¸œâÛžz¶=#Õ¦ï~‚äKM”øsgý©+Dô­3Īÿaì™ÖŒä£ùqæC£õ?Žðîü®EÞøÂvÂ8?¢K>\GE”lC¹+™ÛoÈÆÜ{úÌÿ®w`¦×š„’ô.*¥æ _ºÏû¨+~ÕigZSé#©¬ñ Ÿ ˜ s~ÕÆ”mÂÂßmàËÊ7aOG1Ic¥ï‘ÏR÷=O–öT†Š>4˜ŽVÆ8´¦¦ú7†¦ù5†¦¦×y'4†fJ:Ê.M]g͇KeÞ-‘—š/ÇG·øÄ_«ó”å6¸G߬ñˆí½TRRs9î|sB¼ÅÀÃj`À¨>I>1—óg[ñ•6™ÿÁHt¿AJ—VŸ6kydÛu'ɪûIìÑ®û©çÚ²²]Ze‰õÁ±nÍá1aµ1ת½dwÝbŠ"+[ÃKê.D׸DU48EÔÖ;ETŸ«k£**\£TºÇ\«ôŽ « L´oÉJ0~!i¶ì{"Úþ8%xÂðñûÿw¾ ȇƒ"Ñ£ :ï#Ìøª-Îë%È{ߺ²ÇA2ØF÷vP½ü$ÑâOÕ‘ÄÈ€ý¹;H:\e6X+#;zÝÏ`Ï>`¢· Ç¥må—$ÃufÃïe> áé!Í—3϶ç\µê}', ´îžp¤¯ épß­x玘„ˆz¿¸»un²’Fç¨â§È×­N‘ïàcQ“sdQ£sä³:טB8ï2k½ã²«¼ãÒ«}âjC¤ŸÞ†s+šU±FÇhÐ÷FDâÃ’{}–âwí§Í*Ê|ÍZJBÍ»ËbDï[O sG´°+CZâÜ6¡øQ—µä]«ƒ¸ÆäW_,% þ!5Á™žõ²LóÎ]Ôy »ñ› µy—0ï‹ùdPD·µúœkMÏ8Þy+Íl°ú¢x³¡²ñ×æ«þ¸ mq©)^‰ ¾©ö9é’áòª§ÉÛ¶§ Ù·-4ů981©ÑKv³Î-µn1á8½ªr•½,óL|VæWPá!K¬ô‹=Ú+úØBw·Hëë.Òo»ìÄN¢ò'qu½+š²²‹Ð®ƒã‚ªƒâ}«#½ê"ÓÊüBªƒS‰Þ/“7Œ€ßÊ=ýSXU`rbI@|v‰_œ[S,´¯´´ÈšËiGá¹á#£žÆïcîÆXØþýúÛv­w2#êBóCëÃòí;o]±é-Œ§Zª/ÐÕUg}#¯¡qBÇ«Z—˜›õî1ÙÕ^1w\cJZœ¢2[Üã÷$à¿ô{ó[“¡Øñ¿3ŽØ÷OžfÃOÂÝëbCj/'$WøÆ^+ñ‹u­?Õœ{º9#þh{®L:ð.ܲÿ™L2Ð!ùÐ*iï ¢ýb…ßü»!ýük˶ÊØÓm9™'ÛsS(H°|k5ð,žþØ}øÕ™ì÷}« ;Üs;Îrè‘̤›9fÒ>z˜øPïr¸ç^¢wsLžiSÑEîkÆ“óm'øÉ"Žsš2×=m'½m‹Iõï"|°×ýXo^bd«obR½OœMß-™É¯ÌYã^ÆÔh€3Ã!†6fHãQÆÒä+sÚäsŽúVçO}¯óǾ|ñ0î`ÄF±m«x÷]üý+qYû³úºÀ£wSÝëc3b«/¥^«òI¼Ðš˜)é¯ ¡›[½¨¦nQS­·d°%ütË•4Ϻ˜Ô µ‰)7‹}ã½÷ŒqjN‚>ûy¢t¸:Ú²¿8Þ¦¯0Á¡=-3¸)(Ó«!:õxWNù[ßE¢§Çîo…¾³:Ú¦ÿA‚]Wn’C{bbB³Ob@Sp +ý©=ïûìŠ÷|sá72–œ†cxotQdâlÃðüùúeŒ¿÷û Ñ/µa—j‚²Ê|d0îÉn–øÈ*CbìÚ®ÄØô܈!‡Gü¨æ äëOÖ0Ž¦Z{-õ½-s‹Ê…>«¢Ö9b´Í1ì# 1»Ü'.æ ñÕþ‰(Ï´þý˜éÇ¢¨ì¯¸Wп=kuŠºÓéy§Û)šúÑrÙ8ÿÓ®“lš–¡¬›¿,UœY`>Psá±>_;n.Ø4wÐÔ}±«¼®ÔGaï~¬œ>ÌsàoÍ“fiòsÁlÅÅ`þ¸•`±ÊF°tþv°fØÁ³š—kfê½`ö×1´°÷sø{ÆŠ~ÿÙÞ¬§T–ûÞ/¡ø½{ôû2÷è·•.QOKÝcÒª}âã+/Õ†¤úÔF¤¤½H¸ÍŽ©,©ôbBtù¥x‹Á§2¬ç—óÄР·kkTBCÛùˆæÇp8‡’±C>- W/ÿ—zî7” œ¯L3ö¸;Ë0´t±Aþ—Íú…ßaðÙkдRo –/Þ–Î^ÏZÛ0LÁ$0L€ÇTø“*˜+ÌËUƒM»LÀA³(õóÏ'i$.Ðicty_˜ü_gÓá¢Á¾`ºuÔWÔÖ îï±ýp+áb]hRòû€Ø¬·~²ëï|eÐ/Æ^+ö{\æ!{Sî}µÌ'úcÙówž²7ÅžÑÅåîÑ™U>q±5Iíí¡LŸ}ä—.ç´_†Î„ïɈæüÆ;ôŽÙ¡å÷Få€ØYnË^-°jåb°~Ãj m~J^ß?o–ïµÚ¶V,Z ¦)` ”€"{W‚íR€w9 ÿçÏŠð•I°Õào?)°¯M‚÷…“×€Í[E`,賎*ñ•½ ‘%>Ž•½ ”Å¿ Œ/½›X|).»Ø?öê[¿Ø»E>±/ÞzɼõŠyüÚ;¦ÎÍ;e^²û%ž±ï+]£/׆$S_{éÏÍØ/Ÿ¼;â^·ÃÜéßæ¯×Çp˜«ç¬†v¨ ÏÛXxVòl+ÐØL„:S9ðŸ7ôþ½É³­A¿‰z`2+7>Ncä§ÀŸf‚ÙÓ׃;¬À¡€ºYü7F裬ÅCí!Ç:®'æùÅ¿õŒ¾öÞ76·Ô'ú˜è—%îQ~5a‰æO"ý«Â“m>zçSPê)K,ó=Ö•KÿÒBýÖäÑžT÷á\xt»g ÷7ÆîPÜ›ùÛÅ“fÂ6ŒcÏ OJ<“î—zÆ¿|ëÿî•Oüë"ï؈Ò@™wMdBxe`|Xõ¥¸k5°îªv—ݬôŒI«ô‹ãeÎé¼fvjÜž¡asA~ÓÆ`¶üTÖdzgñÚœ<Ûÿ +¬¢ÇÿÚ†Ÿ–8¾?–{?ç¡û½6Þ'B¯:ÌÓ•–ƒyª‡Àê}ÇÀNó,yfFûÜënÞÿ(4¿Ä;&¬,(îxǵXTÛ·dÆ¡¼ Õ•0÷Š „bãm»òeèõür¯˜j˜³778EýÌu"S½-‡ +e0¿kœ»`Îìÿß¾W„Ç?·õ¯×P{þ|ïg»Ç°=3öÐxŸÊÎÞŸõ§Rø³­ãÙù7kÚV°vÏ1°÷èm%›Ìa?ãdÝq/òtmv¼ìýeÖO¶dÆ6ù¤”{Å7Á1l.ñJi{ç“ÞVî™ÒPåÿú½W<´Ï¸'ÅÞq)%q†£Œd‹šÌœ¬ÂέÿÉ/ü»·¿Úù?ÝP›Æÿ9¦cà}Ûþ©ðc¢òv°d•¬QwÛÄ©r®1 Œ?36Ö-·.¥½Œ»ýÒ?þåŸÄ÷o½SªÞúdT–y¦=/öN|Pì›Qì/s¯Ž‰E‡OMX,Œï²øZ_™UßíƒJÆpݪ­ÿv;~zCöœþiLåþ|o|w"¼O—› f*,SåfÁqR>iŒñ‹€ŠÒ +0Uq9˜¢° L¿Ìž¥Öªy½GÞ(i¼e6Qƒo=`Þ"ƒñÅ„X¯êÈxñÇÊÓ‘—aÇۮȠ‰} +}e #È× œü*ô­Åen²ö¶ó17aÍéÔgü±ÖÉú°rŸÌV˜òðß|%úù¯xæédè•P›TÇ­³§lsgìsTvÕ™»À,å`ÆäÍ`ÆØM@yâF ŒžOØfM‚¿7K,ßjv™æ*ÊgVs{[›ÖÛ¡vuW#Qnv÷…l +Œ}ï|³Ûßú_é.õÎ,õ»:På}e¸Ö+{°Á#£½Ö-¥²Ò#Õ]šÕÌΩ +ÿoüã_~µå)h¼T•ƒéŠªð§©pQä‡ñS~ô%‹ÀLÅÕ@eìz 2~˜1i+˜=ÿX²æ~:ž`+•.·ƒÎ”ßÒ?Ýø cI÷¿ñH|{ïÙŤÒ"ïĪb¯ÄêwÞ)Õ‰¥Åž‰ïÞy%Þ-õŠ} ýé«R8ôz\¹¿L«‹ÑX»IãßnË_~ùˆ ¬gûçóq¬ÿçóipU•–‚¹pœæ©lógmsæóVhƒËx`Î2˜³œTçiƒ™KôÁüU$Ø` ö¹wLVÏlxáý",–Í[Þ]Ž}\ì%ƒ¹Y\B™Ÿ æ™ñ¨ö¸óæ/0+/wm|çû®Ä#¶Qfô±Øs,\~Ù¶½0¶Nû—Û…üä8Ö3(²ÏúÀŸsp›L3ågƒ9Vƒ9Ó7y³‚$`Õî`évxóÖŠÀ¼¥8˜½³qÁLUm0w®ûÞ&~<ØïÑ8Yû£Ëb¬-[ï^´¯Î My[ñÜ/©ùoJÙ[Ÿãß”¸Ë>Tx$ŒÔ¸% 7¸$Ž4º¥6Tx¤ œÔà#Y¶Ãäß3tþSÙmêŸÙãϘ‡æÞÏ÷&Ãw§ƒYcæ€yW€9“ÖUåÐ7¯³¦o€óo˜£¼¨ªì3T²m›¿Ú Ì_&K7Ù5`»Õ]…=á}ÓÕ ™ÕšeÌNÎGæðᦼ@”ƒ>é—XÿÖ;¡ŽS}¥[lW¥G2šsÝîY]u]Í®éï+=`-¥ÕÈX±Nÿ߶͟mìø¡x¦,?(+À + Î+8çf(,‚¯-SàN…‡ÊØe`æ¤õ°m[Á¬9;¡}j@›ä€¹[ÍÀ‚ö`‰¦;XÁ k¨d°O[,ŸÊïøu¦Z%³…,;ïXœá÷.::è]hL9̽ê`Û–{Ä=†1®²Ì=®«Ò=¡¯Ú=±«Æ-±ègüÙúäí÷̾9SçþËãö×|CþEª +ª@uÌئ¹ÐgÀ×'È=åç{òóêøÕб›¸ úÍí`Þ¬ƒ`ÑR ,Ûv ¬<è–ëxƒZ^`‘š3X },Ôv«ù1`³éù=SÕŸ0k¸Ã̺ïÇ™²ôPߢ˜¨g/§Ö=÷OozãŸ]Tä‡j†ðªÀÄs­É‰Å°Nh®re×!E_]T¿Ã¬˜3gÓ¿ËÙ\ åˆ0z)ÂX6q1ôýË€ªâRèçA‹œÉÚ¦ +¼ÏŸÛ·Ìž¸ ¨L\}#<¦­³f@ÿ¿Ì,Þ`o´K¶Ëx‚åœ°Ä l°¹-¿+ qâÁÛÌR­FæÁv’îþ'ë³Â#_‡ÆÞ~á'«yí× ÛVQäý´Â-æCsä§F—äáv—ôªz·Ô´ +ß“ýDNÿ×1û™ÿçÏù’Ÿ¹ðx8Zá\›Çp{ÌPXT§nbÇJu´AC0Úá­°p3 } +Ì[nTçjÕ%:@u³X´Î9“P°õXÂŽˆ–É{ó˜9j5ÌVfïëÇmZó.–G'¿½}gÂk˜KCo¯sOémpKlrKÿÜäšÖ_ë™ÑSãŽÖ’dú wÙâÝÿÒ¸)ü“üé?¦À¶ÀìcÒ°x¡X²X¶CÌY¤}…˜5úÙ» Ï„ó εùsöƒys‚ªê`þR.X°ŠK·Ú‚ÕÚÞ`£0l:ò@~«OÕ¸-‘íö>fîÏú1W³˜ÙªÛÇp…ŸÛ]L»ø¿‰Ž&«.òÏ.)öŒòÆ'NPùÝ‚ûœ10¹ë‹âïTw§Ic§SÁT¿T¢¢:yéÿÚ®Ÿ±m<›"/9ͲP„ž ¦Ãqš5u=˜ãñŠ-6`­ŽX±Ë¬XÃK  ¿œ§¼(æmóçî†9%,YO€%›E`¥Æi°‘ +6‰`û‘g +[#{&í~ÄÌÕfÔ´>0šœQƆ;È£†ü·ßŠ²kʉ·ê½cך›˜ùúRbڛˉ'ÚòRÌÊb½c2«ª.D Õ8G&—ùÅê 1ø£SÿkÛÆ°í™ÌÆæi@•õÙœ"ûˆrä/g(-€9È|8U²:ƒS6€9K Á25˜Ÿz¡x rhæëÌ"µgÌj”Oª=fVíOÿÛœ½²A•Ý}Ó÷xUMÚsþñ¸AÕÓ50k52&Ÿ˜Ó¼OÌIúKI€ùУðÓ­É2TÏ¡šåšQíZì÷¼Ô=¦²Â5º­Ü-v¤Æ3­¡Ü# ûÒæ¦åY®‚|òïÿŠmŽÿ3–#ûD™±êØy`þô`é:C°A÷X;ƒU6Q`½ÛÅ ïÇl *¿Íïý¸MçŸ(nr©´# jÂŽàöI;›'íp/·Ó©hì^¿šÉš™ šÌ~µ›Ì2õ°öYZùÌ*ÝFF×°™u1"£6†Œ2çëbP΂ڕ sgÏÚ¨.ÁúÆšñ4$7Úh¼ð‹ëw{®í(·lÕÿÅ.åÙ1C~}¦*̇g«ƒY‹´êjX¥y +lÄÀzì"Ø$ŠÛŽ]WØÖ0e³@í%ŸZf‡f-³ù¿}!MÓwÚæ(lƒíÒX¹=vוxUN9Ø¡¢‘ðuþ¡ÇÌV˜Ÿèþ˜ñŒ:P_J| ûZ/¤bQlÛj^DÉjüî<º¢ÿ¬èù·#øí?8Âì¿iPùÿ0=ünN=ýlNJ¤ëmÅo;N£ë8%Œ‰º8Da†Âÿ÷ÐzšiÊã–À\+X¸˜–¬3Ëv+uœÁ¾?X¯wl<` ÖmÇÁªõÚ`õj°~' vb!r»Ï>»çBÉͬ¿/Õ©c´ šãAÆûòÝæûf”èséEÁ·oNÂÏ?\ ;J/ç×õé}ë o0Û+·‚!ø5Œ¹°eä$ÕÚèF}¨÷¶|oÙ÷*Nô±;„hqâ—3aí£To§Ÿo]DjMå…¿š°x­´Ñ%KïüìRUm0÷€ó ¶Seâr0oÞN°b› تkva~`îöOUÜ]:]í³VçÃç1£gDŸžza¿Ö¸˜üãëáïõÎü?Úœ8¿3Gu¾3\ÝÏ ßð;#1úÊX‘ŸúüŒû3½Ð·ó íbÆëÚ„1*f UŒ'ÿÝ<Ïë³¢gØëXפÃ=w϶f¥뾓ÊáÒê˜õb‹8¿'ŸŠyYŸvèœK¸|Í>¶NûŸnSà¸-TÝVnÀ<÷Øe÷ZiwP÷”½Œ*´½ÝzŸÜèWÆÊècmðk¶1{5ª˜mÚýŒ¶ñïÌçÆY~•gLbÌ«>,F4úÊ­¡@ÛÓyÅìÒ}Èl׫bt¸mŒ9¿9%ùÃUü­>Œúòá’ñCFczL^cÛn` £ Ð>Jt#–ÕªND¿Þ"r¹2_|"j:íù`‘û»!ý`ÄÏù¬KøÞZ"pÉQ5´ »~+Ì›¼ü¿­ý§m*À< æXSWƒå;h°Ý4M~X— +ò‡>³óÅ‚÷±ãýÂØs>1Ö†-Ð42§ŠÁŒÊc^3c)a\Lz™ãÜ*†â¼`ôx²® <¿‚ÜÌþí‚šß­‰¡/ÁGƉßÅ3Êÿc'/°p1?¥qž÷Yx4J *¶`‘/Öc©/wwLDJÅ’ªWóæ·!ô“^s*mô]³‹ }·‰|ÐFš·½ +‘ôW…r+rË>ül×è§*ÌÓÆ-ÊS–À:zX²Öl2v»ŽßRÜu©zÒþ[_¨UËìƒó‰«÷Š9 çÿBUÏ.s‚‘×}U£×ŒÙVírìÃdéèÛpr¤ÕW84xSÌp¹A±ªÜ“G¹gÎázúO1Š{°Ì¨„1 ûZý©Ö7ÞÅ‚…ú|àX8)ò®ÿí vý‡¾Ð>lŠÐÂE‰ŒnÚMßí‰_·ÙQ/»,©’öãâòJG“Ü‘ƒÂëß´±œ-üêGmúÉ ¼è‹…á FýЙ܉KVdëì¾)ر~“ì¡‚ä4Ü_N=T˨~d¤&Ÿ™ÓFÃŒ)ô×bŒ»ø—o>ø·Q_#èô/äMß­® vîÙ8ög•Lîê‰ZK=Ouäd:µ%¦[ >ˆÃ?ŽxskÚàÚdžo?bÔ¹¯'³g+/úéJÞ£zø³n»7d"¼ó›>映"0=­`h"˜ô¸ËIBü}¯ŒDrË>òú7ŽôM«£´¸ÁQ1ºOxòÒD§$e£Ó±“öŸKælgc´»ž.÷§]*i +0®ÍÞVí‚ÝÒ9õ¸þ¹/˜õZÍÌAƒ_©ðÇWü._ê·æ ó‘—1è»?j¸ÃhrÄß³Æ^ÿ&&KFOˆ[}%•ížÔƒ1v!m–¡†!Ðß» ëßùÉ•ÛyOþ¡ËK.ÝÄ?4íƒ&mÅr‡uˆ»CaBý¡GÒlÊ?}¡8(k%•X¹ß4§‰¾«p6«,ñ—¾h–Ó{K¬Ø!¾¹Ôðlì$ô}Û ÅÉìÚÁ?ßÐXΚ¶,\«ÖÚƒýö·ÆºÇ¬Ó`X_Akt# eÔÇмÆÌøößöY»+é™=-0á› +3“·8æ2ÉÒ;c%_q€ +y¸cÄ»–Ì{—Ïûѱf.ÐÑÜ°Ä¢í¢×MG‰§=” þíülðTöúóü!#öšècîã K§1ˆ%K§÷hÓ}:dÔË­DfŸ–øfEÖõ•´Æ®ýv‹z½Ap÷«^®Ù“êS¦EMŽØ‹’W¾™òx7kt''uh³×ƒYšbOùÍêR°Ææ¹ëÔÀR s°Ý"JN#¼AU§€Ù û†9¨[ûÐïg¬Ôñ½¥¢{6vÇûê,“ˆ¼%&!™ x1·—s³·sóö +Â^®Á\2gã *”sÚlÂýúÂåÆ|âDðd=-} ½ÿ àÀxÅç±Ä\^(5—'|’æ Š·ßn¤¼ÝŽ'<Ú&Ly³»6¨EÞï¢ðçÝ4{]ååä%¤wúøð¯žü7 irƒÑày$Í09ûÒÁ²0êéZÜ/côŠÄ ÿIˆ)h¬® tvì5m@“ÇؽB,;Î'w™™Sôlš+zð}è7ßäùXbå,ìÁj"¨`yéî*Qv»eN„Š¯ÜK¹†ÏD{0ˆ[«ð¬M"¹a?ùt£ðÚG-I~7!¨‘¶U›Üü»†Ð'cž ¹röt”4m+ 4y/£¾· ~0Îü_ÏNè÷0˜~!³[ÿ|þ4u®Ð‘3NnYO¶ö_ «z‰'ß(áÙøé‡ÔôoØ=ÏVcÁOV$`÷ŠuààÚm€£©ÌÄ– +VÊ6g=T,NyN“º„ÍÆÓÞíC×ùқͰÝ|,ÿ³.?·ï ðbÖ,8q«‡‹®«Þø¦ÃOèÚ&Lú¸ ¿ñw#~|ÍüBš*vÂu<á3SÙ²¸1b„åèðÓjvð£Þ¬áfõïä=`txw™Cœü{Œnü}§Ñuf»Î[f¯î0Ã1ø…ëŽ2ÆÍŒ‘Q)cÈyÅš”1÷%chþt±ñIÏ1K{‹“ +úº`ÏÚE@s×.`ÀåÜÊq yÚsbh"¤/·8«ˆüé–9ƒ}‹^YÂò@³VJ܃UÉ“>“H§ø™ÂŒÆ}XzÇ"àêbÂ3iá7G}¡äeõq‹Šø‹^±ð⥗eÜÿþrñ“+ImµºRZZêBÜ2Ú÷7–碕…!ÏWóŠ>6úÅåEúO™ý:nO¦kÛçNÐu,œªs6w’þ}fÿ#s]Ëǯe,9^9³ô M¶º1l“6ÐÚ£4÷ìB{—ñäõ.ßÂóÛÔ…§<'ðR€ö¤óqHOºMF{ÑÈ«Mú¦7ËÄì>\ßÌň!¼Ò¦†ær}~öòÌ9\™+\‹öŸH2[8hï•ßÊ•<«:,zÐ*‘6YP׆ ˆä®´îýdÖ¨6ºæSTÚx–û7~V×^,âÉZaô£u‚ÂoF&Å`Ƶ0§êf,8=Œ97cýÛÌ6ãðæåF–>Jjj\ Ë“Žä¼ß!vš¶¡Ø¥ õ$@W]¨¯ßtú©ECŸ”×Ñåýš@_›\ˆ¤– +æ§]¦˜ùd.7÷Ë[ƒöI|¢æ£=ŽT^—‘yAíÑÝbAÞg-¡{ü,ÜïêBaöGu¡¬l æ¯"82IxõuIQûY²``÷º\HQEû™±Ë7–b>)sqïŒùÂÀ‚e¼Œ¦í¼‚Z&׿ª™$Unæ^ÙÉÉûº‡SsÙ†kRó7‰IÉßH£û¿ïãú_ÃõŒSá]ù¶0Œ›$vnã¹&¨/¤Ì:FNçÑÖrê;÷€]+Vƒ›w#8ïp[qh/béIU‹‹~± ÏïÓÝkÑ÷iª  oµ +ˆÜ!},úáÂ+yå=“rϘG¸&C›<»”½ÍCþõa-ìm™è]ÃIìág>ÿú7-AÎG5AÞMâáA•tž¢‹: ®×ž šBœóŸ‚y]™ÏOmÞE¼JÚë.Úö>L¡z›¼y/.ç£Í‰Zoìñ@U“c ˆSòœóiÓL +]AèÓ•ñ)y¾¥‹’Ðì¼"?*¯±WοM@ æ#¸CÐ4aN¯š7ÊT13·˜´°W”:„̇=ÛFgÕèᙕꬺƒä•=Ä€Þ®“òûµð‹¹‹ øÙ¤_ö"´× í§._Y†ø<–ï^¸hÉK>Õz-Í¢¬ÈGtmˆC†<_O\~±»:¢A<î¡™û…7?ëbýÆxhÁ*Ü-ræ™8›ï–6“xg7ªt×隊¾ô¼¼vBÎPì¢ÀÅäxVrB‡8eþ™È)j°t¬ +˜ ë¦MÊ Ö¾C@kï~`lÈe9Ä\¡™&9¦Àê✺4Md}\ ‡mEú/ÒSwKrÚ{ +}ÊmÚ3LåÔIÔXŠïtH±¨7….i³0Ùû-üœauÜÿöR¤ÕÅ—Ç ­ŠtYˆ :$øÕOÚ¨±è¢M„OÖÜ9B…¼”¿±±‡Ã&Ü¿h›|Õ6¹ûýIþ—ƒ‚àÛKù~7\“g +OLDãbˆôÇx"€öæC[Ÿ…>X‰ ž‚ì ¸³í+¹0Ææa\ Š¯¬ùxRó^2¹]q³ψå ´áÂÃ:ho‘\³»Úªå´k¡ýâ8ô)„WÚ|ò|„ +~>l:~A6C ã| ­~·ÉõauáýaöºOJ<ï“à¯ͨ¢îÃ؃aÿöüé°ˆãWMÌ΢1e.Ç3;¥€öoṟõ%O›ŽšV¿÷––Wº/%¼Âè1nèû庂Ã`½êr°nò"ø8è‘€o{aŒàè…1&–§1ëócÒsŠêšÚà ôŸwîeõØ°³ÁS{ω|sy+è“ŽÄ•YÍ([çñ”åIEÚÎqY¬Ÿ6€ùʯL½Ò—ˆ"înB{ò$—n k˜䯡ÍN*ò…4 ¥ÇY!ÒÂ8ë?Mä=Š}¸ÈxP˜Q³æÒÐø ’j· +>ëSwpÁÕŽHG84é.àQO7b)Mû°´¦}ä•A=v®‡ÝYM\º²‹¯ÜAÞê4!îu +Ñد{ÌÉ·Öøã>ÆĽ˜oîÁqßñ\ü˜¼®tÔ¹€‹8÷¶^ãðÓÓp·ì¹ˆ…ÛxŒå¶ÐwœÇÏDO‡¶°ð…GØÛhß +‘7bH¬ÂŽ{ŒÇNûM"¼2a<¿óÁ¸Y„³ì§ +\‡¥Uí#2Ú5‰=†äÍ\<·_›åmßîã÷úhŸ†0£m¿0æÅ~þ°:Ú„jYtÍ7ñ|X*¸2z€ó~?ëë>tþ¸“ÿTáI·ñDðÝUÂœ ìê¨&âfb!wVb÷Ve¥›ùYý{y7¾« •u9æ`ÛªÍ`ÃŒ¥`×òM`ßæ­àСC@߈éÁØóc +p §Ãz<À³<© tŠVFìAä_ÐmÄZD¬?·”ÇøÐ÷`Öò¬~\ü›TfÛ!<«]1»1{¯‰DpîròzGr«F„l— ÌYFy&ÎEL,úF£Pô IBvˆ‰[\,ç£6–ûEí Óê÷ >¤½#çàÁW— RJ··Mè§]V‚[¿éòC_­†V®çeî2ÉÚ+¸±ˆgå¦Ä£OÉ­äxç1ûˆ)ü£®cölÙ6-\ öíкjFÐo +ÒˆDlxñ¥ë«%i¥:¢„ªƒHw qè¯/”.X=LÏè9h¯?â¾ÐAWV¢}¤0,$Üeª„oêaZÛ>üæ¨!–ÿQ|¶¼¤JÀñâIÇevOž{â\6¿‰y·…å +®Áb_lÆ£Ÿn$ò—à·— ®öÄ +8DA?»òE »twâe𥧸Äy¾™³"v,p¢ Òm ¡¶÷ˆ˜z3g%ÄÙCüGüˆ÷8Ò=}X¸‹o܉ì 1a^±82?8·óœ€w‡Ø‘¤ß­e”–=ìäÈG„é{ÐÞJÿL%j­è‰ôeÍIúMÓ¼`ÀD˜P¾„±_þh Ú›ˆö¯oº-ùù_5îiª‚³ÑÓ„>Ùó9ßÔyÚ(߶©)Èý¢‰X`Âç•ÐšWl%ÏrZ+·ñ3wáYsMÌœ5÷‚ýë÷€Cûô ]òG€ØR^h kK{ïI¸½ËþáÓŠHƒ’e¼X9*áN13¨à'ëÓq]¥ŽÑ³Ä‡Æ™v/¢¬ä%‡ÆK½³–’I•ûë ±1p÷U<0w)–ÕrÈhP's; Ð>W*äújÄijZ5D7Ä6¾ wPƒó³&þxˆ·ž½h;BÞèã +r[ÔÉK9ËHϘÙXäݵÂ[£úìÞåÇýbaÁ°îhØ*pŒžŽ9Æ(c™Ã…ÙCjxlévaÐݸGêÁÅûK…çT448`×Æí@ç€@:žHëK €0ö¤Öò,óÃÿËè$Ž;ŽEÌTÖ.¡ß$£ 69ݺXVåÚÑoeï2‘öKX€Ç<ÝDF<ÙˆËàÿ—÷Q[p­WòJœG\ˆœAùß^Ž´6p—¨¤Kœ*Š“¤g–©sÖƒça.î{ué‘0‡eI:ÇÌÄOºŒÇOúNdy;AV³ӱîck}íÃGŒ*Á—1hŸ4âíQAÖÐ!Ï6âö¾“L0+9ŽÀ {ÆNøL¤<Òæ¡ù"Èÿ¨%¸5¬‹]ë×ÄrF´…í¨K·W"¶;âÙ]Zˆ±†ØCxÂO†5–×£Kåt“Bòq§„xÔA ® káÖ!wÛ°;CÆØ­OúÂز­˜{æ´®&tŠSÁC ÏÌl?€r,¹~Ú?Žxþˆ)ùfa§€]ˆPAk¬®¸¬dvØwœ. ë `dHêlÐ4êRöRĦ¤|³Á¾œE™úXpÜmœÀôœ"ßò„ÒìÀ“kö"­Ä…ä­¥"ŸmElÄûd×^Y‹{”eiÃX!H*Þ&ÈjÝçã^"îñ2ñín<µr}¥Þ@’×( ²«t‰+µÚDî€~»—C=é6¥ëê]¤eÁÒÆ÷~hÿ½yÑK'êA‹ù\Â=n6œ»Û‰ƒFh/.~ó‡¡À=oŽ¶.îRB»àIDF¯&™Ó«øb˜Wæ\a`ár¡C¼2ÊEu4‘f«)@|–»’Õc´vKŸ +™Æj=\ÍBLy¤«„ôðP¬“>(=Lßj . aq¾0 1ÑñëC‚kƒˆm†%4íBã‹XtH³€8ëÊS§^éóga}AB_A¸ÊfQÎá3×ØY˜¬§ÊĹÈéô ŸIø)ÿÉ8ŒÁH醰: âò¤SÔ ´¿ËÖÀ²»ÔǃòI_Èj…Á:'±tÒCúxH—i3!Æéà71\ˆ›ÝFôÃV±øn³„ºÙ(@5bF£µ–!|c5y1}1b=á²×[{iƒà°NÂóGô±üQ]AfÇ>4gÃŒBú3§='Q>É PÞ‚]í?DúßZ†twM`-ƒj2¤D^[Šl14°îã9| ò òˆù.<ê8FxÌcî¿ÎmuêÒÝUž%Ð>¨ ŒLh€Y:(Ѿ) Gq€ˆ^‘âö' l”t )`LÚÊÁ¾X€ØCˆéŠ›ŸVD,’åg_[ƲTÐ㥼•t`ö +:äÎ:–•tgûr «)r¥GW|£³¼÷ÖÖæዳæwË­©ì}–GÇšºßFˆ‹›í%]—Ì»Š"Ñ^9Ä*ß®'Ѿ|¤Ç ”=Û(„5ˆ0¥|— kà€0äù*þQÿqZ<°Ýn kÄtbãæ)¿IFHXrRžgqVÑk ý¦% -Æ ö”UâÓ¤¢C,;í˜ïDÄŠBº%ˆ¡O:EÎÀ:ŒEq[r¯Zjq¿üõx3âÒ!¦–øzQ0Â'î~ð®~ÙKø,C {"æ”ÑÏ6“‘*&bk9”ë‘7—¡8‹êjÅ EÄöÇÎ\šŒع°i‚ÐgúL$í ¯s R¦oÒ9q¶ð°£’±1ŒB + N2«±í éX¡µG ±„`ú©qš4éPŽ>Sé *ˆËˆÚ…tP‹›¼± +ñê` ÓøÉȺº±înËŒr8†ˆõ!Ìj>ˆôX-X¤§ójÊ»¨»ì8৽' Íl0³ã?ucÆJaJÍnÒ1~Wd'oBBßHXË‘6ÎcQ !ÝçàSy¦v¬†´ÀÊŽí¤yfbvTžålød.@1å( p‹SJH¿Ö)³hϨ9H Ås¤ÃŠÛ¹ŽGëd<ú˜<Ìä„V.cˆs¡Ó‰Ã.cÔ1–SD!V¾{´*xu9¬ÛÕ7‘¼Ò¨GdT«SÑ·°Ì»ð{f'Òî_oZ<sÎúÅ3'Ó›5R– ózš£ÂÄ7ÛQ,§Ÿ·[Ð%'Ñ>=TÃ#Ž+af}ÙQÂ1ÆÇôùÄéЩh­ +wI˜…j#¡¥œú~#°gÕn ­f øVç•{}X»jéñ`. sH‘-«¿ÍšË!&7âO#~)bÿã–g•øayÜâŒí6ƒ¾µ +ù@ÄmÂcËvHn6Ò’ëízo=Ë.ôK^„_ï1¤wšâO¡Lî0:ø¥û+ظƒôÉ\gcGÎ*ñøé΢}õHŽØeŒ®> ¿Èê”Á<€t„1ÝcÒæÄ­+".&«W í 1¡¸ÇéÓÐÆü¦‘§á\òHš‡ô»H^°å2Ú´°WbyUa…›Ä¡·7 .Ò¬"mOŽAœ:2ñý:ôæ:Ä7ü©oè1I|úÒ4¤×ô5ðÔ²½dV­ÊÍ3”ÕÍöŒŸ‡8˜¢;-"铺£¢ÛM$žTºÍa¤M€Á¾Dº©ˆ™J8GÏ ì& +­Î)!­ Ê!šÕØD6†æ%²ÃŽ:aµ„ü2g¦ðÍ`~ýbÿ°Öcc¹c¤ +b½‹}ò–±z3¾‰ó‘î«éŠÚëÄJGZ]#ÞqæòTâ|´ +«aà•¶@|ñÖj–'…Ö9cl¢³jtÄ×x¢ôzRöt+²Kè;sω„¢Ýdz…ªE9,«UrK‚ý=iÊS[ö`¹ŸusBÖ¾¿”·„öHž‡ÎMÿœO$ ŽùOÄŽz7ÇlœÆ`ÇQ_8*és)Xóh]+w€=vm Äå´ã™WÀ£”‰Ë7—¡Ó'±TYaÇ@e±[$Òô̹@Ü'VŸ ñ© E×£ ˜‡ØBTFb1³¾é´Û$aZÕ^–ÿóbÐœxüI„%wíEšc„}ð87ä aíel‚dƒxv‡–0æÕFä'uu…@O Þ;Ža3î«ã„4™¥æòˆwl‚‰€¶G,o–}Òue~žÓ«Kœ¹8Ehq\‘Õ9HY* +Ï[‡tÉœA"oÐõÙm,‹)àúrÒ6`yÌcçŽâJS¡O6àÉ-ûé¨Ê]ˆ‡tÔИ¡µ4Ä&"¯}Ðe5O¡¿!ÝRç’óØ|=ìùF*¥CÎèÒ•d´I2šŒˆôêƒH Qä:ƒòÍ\„X†ˆ£‡®g@|cÂ+{›s=XKÆ–í¤Ó>¢³º $Yõ\³ìZ¾èJ!â'¹¼Qä“´Pâ9WU¸•Ì(Ó¤S+µ mîbs2˜ÛW—ÀX·†å霂41ñ´–dΰ!•7hŒÖ-Ð:)âA™‹Ø¸úéK×W õÂ#¡ðÄ¥‰¸C´2f2;â<†KšËi8öïSè;!vXi¹#‘ÞªŽ8¾lÁº–Ç'nm§„4*ÄQ/w±hçB”YmZ8ÏQ_ˆ³kŒÈ¸÷»iϸ¹ˆ#Oõ›Â®wú¦À¼ËkŠè¤óø|!Ëë»3Ä%îâü럵—ˆˆÉÈ…±í§Î!q.d⤓— +V!߀´—ž²9¡dê;_ꙶXê·Õ`¸òã¦r†FÆ@H™É!#Š›ˆ·…X܈7Œ[ŸRbù“—òVˆâßì£Ëö#]VÄe5àûæƒT`Æ2ÄÒ¤¾ÞAÝiÅÄ9 <±¸¥ÇXM8.fy¤(»ÖúÕ½DvÓ!êF# °wðŒþäYß)Hë=’'=&¢Ü­=P¾W#æ3Š'ˆ3Føå/!/dÍÚ\ƒ4ö`̘†¸|xæ€×°ÚÐbTûÑ.ióXv]v“–0½v/ªy‘fZc×áüs– ›—¤6ê Ö™Ù®I&WDÚô×qH×iÍéUjÂìƈŠÖDXÿ‹úùâõeDjûAIz³>‘ùáü¼â>H/„ªR–g”мGkNâˆÂ-Df†8§ŽgšSOˆÒjµñ¤ò=H³•Šº»±î(¿ËXÝ«‹÷Öˆ²{ é¼<âÊ'm,³ë pg»~|1oË·ËïäJ «­Å÷ZMñˆ¢ì÷§#§aö—&¡Z×Ö€HwK‘CDêœL…†ŸåH"Íhw|ò°¼‘ž€å#mÄ/”„n–ú_]I ž.²š&rMœC¦6¨‰3êôȨ÷ÛÅ.ª, ÅWÄ»>ã=iœQjgañ0/»ÝÅ?l²b™jÞé þÒÎBy.>ý¡e˜¢Iª¨½÷´…’óQªˆ*u_€x°(Ö²š0Þ".>«…ç0Ž~¿KœÒ cš\g J¬Tgµ¼OL‘ºÄΕnD_¦g‘ÆÆùñ¬6ã5³€¹ÌYíEXgà0Þ 6½Ä/k9ŠõˆH\¾»· š$°tTBuÒ/ùä/y]_Âj\^¼¾ +å +ˆYÄæáw×¢>D¶% NÈ#]>dÿâ”zmij«¾8ðÁz”ÿ +)k9Ü\Ž@qi^!­—‰¨B¶î¡Ï†+#Æ%ìï1H×Pœ +û+¥ÕPød#⨣ïPÃh[yÒü”’ø¬ïT–Á÷t‡$­Aß4£†ƒ˜»ˆóŒôŽ°lèÏb˶³ºnió;Oí<€G½ßBÜ_I„½‚5UÁj2èîìj‹ºäI¥å‹’§•Gø7FµðȉðâMä…TÖÇ"Í9ô=鶭ë!}Ä¿CÚdVç!¤{¢¯mtµ¡_åS05“ûKoNbï3…°9©„â"«›u*d:ÒJAëst­ëx4ïÄg½¦Ò¡0"Æ*âr³ÚYÐeÖéŠòøˆÁGæ|0fÀ<igñ °tPDÚ²B긂<&xÜ’“~S$¶^‘Æ Ë”µpC±L[¯I,SùrÎrñ¹‘„cÀ4¤Ãtf¤éÆHc…Õ6¶˜Âêú^[nê2Óì„Ǥ©"ºœµü/·(ðÚJ,¯SWú¸ô°YÙkwê~'lÆàüÔiJ˜tXwЭU¬6òWÚuéüVžéÕf•ùA›„1šÕ΂1›ÕrMœ‹´³„+V;KüOÚYÂüZ¨>DßoqŒ06Wú©åÏj°Ú6g=&#m +VžåÒf/Dügd{ig‰“›Ñéí‡X;†sœOÚÉ ¡m!­yô1Òj¸6åÓ"ŸŒE蜨Ãã)k×±H_^’ÔpˆÎèÔAºøaôùãòÒJŽÕoAšá¹+‘a9ˆ¡ù먘§ÛEiuÚˆ«Keuê"Æ#‘ÚªcËÇ¢þîü¼ÿàÎg÷êH +Û--‹_yŠ¯5qÉÐ[kØuC¤óàwmî¥Ì®+†®'â^ï@ká|ësŠˆuLüÅuIV9ºÞ +圬^1ÒÁEšˆbyØŠÍõX6÷‘Sc.«Wƒô ­ÎŽÙA»96±ÏE×ÚYí,Ø·ig#í,˜ßÙ{M{ÇÏGÌX‰ Œ{jg‘Çý'òal|HpÊJž”ÀÿËÔB²´SB¬eR +mó(²×eVÆ1vMälÀTÌö¨"ÒgBLo–{÷rËâF:[0N£ÃôäÅiH¯ÎÔ5r®ørÞj:¦h7…XÜAy«þ•øZ=åÈè»,ÂæL'ü&Ò¶?YܬþPRÍ^–3‹4ŸçwØ ˆY‹®Gcõ{í.Œÿ¹ìÌj|HyNBÚQâ“®jgE/ s› Ñú 刴³¤€ÇEz&Žc‘NúÞ é…¡8$¶;?áOí¬ÙH;‹å•þ¥eí:Nê–¾Pùb»Ô'¥Æ3–ÃÔ{«Ûå’4—ÕPt št,%^²ˆ¥/q…¾Ž«ÈÖw"kß‘/w¢ÏÃx8õçç½~~Þ-sbV#û&OB[=qºäröJÓ´Jó”:[7eÕýwÿ‹;½ÿß¹óÍšˆ;/}Œ®½è¡˜†44Ån)óE^Ù‹„‡ÏAk£ÆRç”QŒGºYÌBŽ‹›É ‘ŽšïõetTÕn”çÒ.sQüCÚ~¸Õ…1ÂLŽÏh'Š¬ë¿©¬»£ÿt±g‰cäO½64ç/ß]KdµBºDh}Qó¤-ƒtι†B`¤­Çjg (±œøí¬%hÅD.G +8Ú|_läQ|’X;“v/±u/²>7–¶q‡|4Òâfõ©=b抽 ÿIžtâ=«wû–Šµ iü°|úsAÊ(oÃ\úµbÙ“]¢ðÛDÁ·Ö²šmþI‹ˆ«u:èÚ´VŠXÜ”C˜2ÿ&Ò7£Rë4PNŠÖE¶žÄÇ=&¢ëFXm,¿¬%h½…ÕþõÈZ@œ»<³<©Èj9Á˜ÉÆÈ¿´³Òë4é¬z=´–ò—vŠ·¢s*Èži—H¯ ig!½dT›ý§v–ÏOí,)¬÷ÍŽ+¢ø"u›I[9ŒAs1üÅgB•Q„|®Ä'a!«gvA6Gê1úÀÙ(vЖÎcYí-øySÇðYèóˆ·þÏŸGu¼Ø?})bn³š}(×½Ù#I{£ezñúZ‘kè,Ä}FzϬì¥Û+‰«C:tÎqd‘v,ÒÆc?c'Z Ÿm]¾ºò§îúiE¤•ˆôÐz úÎË£—¶–7ˆ²‘Cµ#ZÏæÄibSÐg‘E[P.IŸ¼8Ù„gŒ`ÄáBzXAâ¾jš²ªN¦:Ø$Š•¦ +p'ç7,¥ÚYT¿ýàyþ-ªÅå=\Nµ³ó ¥eˆ¹(¹jòÁûƃ«›jSÇVSí,%ô“¡Ö£¥ügí,×?µ³v÷a-´äÉ-%‚Ûy¡\8üÞÐß&˜rO4™Ÿ™c¡­@ÿžä‚=ù{+G-¹b›t©€¨îþ>ñôLú€¦Á%=<Ç•“%r/E—àTŸÌÁ³4¿EÿÜ1Š¬[ ¹¯ e%­?@ÿPne¯…ýå +ò@®FóϾ +k­-›EÆ\ArrÛ€>x±©œ±PmÕ|“F Žˆøƒü ï‹t§åÛþ ÈÃ'œ½ +hsn1†›e ð6ç°‡øãô1R|õ4hùR\Iâ¶C|.Éeï4ªù‡ýVòŠ¶Õ¾ö-T; éÎÞý,þ¡åõE;˳ŸŠjgž#¦]\$íŠb!³ÖÀ¹Cok¥J¿ŒÑRòÁY–¥“-w…Q}kšûe¦|ìù÷–S½‡ KC¹ì¡W@µÉ3G ¾©{˜Œ8Èåß_!”Ô¯g‹îÿ¤È»¾ð´†ý94—)ÑÃuñ—€Kû¥¸S³ K*ík2Ô—[î‰ÎÙ8÷R9úõ'ùÚ8>·f0OrÙ}Éí,–jg5ý$TtŠûÛÍ°ùÕÂp ¨° ìcnï¥-wëû§vêKРúJ1¥úRÒ‘ÙRhêXßCóõøÔC3Ōˋ”qÇgA»Rt ˆ½b˜ã¨›(CŠõ¸¬³ zô9./¢º1Qzx-b‡=®¤Óó”±ÇfHA©cà‹EüýV‡^Ðß‚Î=Ÿwq)WüdêktÍZ‚!iÄ÷ªGK»ÒFP gçPªu¯ +-ÒâÊ&aý‚Eîr´YŽ{ÊE•éqN~ý,8[M™å6MÄNŠÁéï“4Âpǘ™oÕàl|{+]¢!¿Uú¥Ž†æ |2Ÿrl¦TþĈò c­b{@_ø|Þ#zb¡\éªej±UÃ{~Hì–BS}Kc$‰kTg5O’·aê¥=ú%U“ØÔóàÖ_Šœ‹ÍõR⩹"ÉU¡ƒúf¦pÒ°*CSÓ/,‚öpÕDÁðÀšØw-`Øz, Œû :àN}zžu{°"ÖU ]èüpégçRÛ„¶Œ?ES„‚G«`Ÿ|ù«MX¯“Ê› ­«žøOèÒ™A?ÑN“ê@G”LvFÆš>Æ„u èu)6ãò|EnÍhg)´°²Šg« Å¥žŽž>²z"T6\Ö,­9_™Nµ³ ‚zV±ÏèrrMäz¡Þ£%d[ÌåÝø1‚Ö[IÌWå§X“ø}h¶³9 i亣K¿"˾£Zó‘UúRæ…Å|Îõï©®-Ö\vE U‘ü~qû§ñŵ«…Ò†õŠÒÚ…ä½’OÏ„žt> ÷$ÅŸ£ôÉÃÚ¹h ɇg¢¦!z¬.¢µ½m«ä·–P}'’cÑ\#þÔ,!ÿþOBöíåÀI&æÖŒBµ»oíÕ5É=ttP%'ïþÊ=ñ#ø’‡k-ËêL©–Œoš.°€‚äCf¦$_—Ûf• 4ŒP7† êƒQSÿþÊÀ¼qÐîBÎ'‡æ†Y9=&´Î¶{EýÒ5°¿à<8ŒjÀ[ÎÄzÕxߪÃmó¢xLŒ:>•Ë¹¿51²|"4¿¿9âã -„ûŠ|”úÅ°œqЬ¦}.é·S½ ŸDªªôNI5˜É؇ +é$n“ xŸêØE–êqäÞÓÜz¸>ä:‰~Ñt×áSNÌBMC:Þ,)׫¸²†5¼åŽ^2sÁúÕ¨ Îø†j|Aç 8Ì%| ­'ü“v—yu!ÍÛBóÆ igçËŠ—!—Ùùô–ŒÏyåëB+MŒþ¢ÅIò>2'ðjgEm#s*÷ +ÕX—Â÷Mêyß²oa4„ubõT>íÄl.ïÚRbcËøÌ«³ÐšUâþéxª Eìž|°õmÐ"s”K"¹|YãJñH£Bqä…¡¼¸v9öØaÍ]J8;‡î›ô,yla}öž£Ý™ n6GïÚ©*ëÍؽukH>´ç _$'cI®Üû˜r}ìuãíƒúŠQG¦Ðœ9ïÚrÑ'C×Bå¨ÉLM5¬C÷êAw‹#ö—qš2™%Á†Œ…¹Šaí|úãºØœ;‹Q— ùd ¹Rƒjy’ÏcÊ'Aß +û—¨&Qâ…9Šì‹¡9M9Úç@rYÔ¢8{gmhmá~ŠÉçærI'g¢–Í9ö“+Ý{AGkèbÔÑ©T…®õB“ª`tÖPÛF/™vuÖ¬¨æ!j˜°‹è³3¤ˆƒúСV†”èaÿ ¯¾Öƒ-é<ªš¢L89vOÇõ&èq…å‹ÚµPÞd@ü÷Þ#DGpðëÇmõÐ÷¤Ä¾îÐscåÑfQÜ×lÂåÕÿ@5{PC ºÓ§çqE~ä ü$ÅTO¥šæм%˜bÖÄ£Ó±¿>@ É ,.ëâBž¶µò¼»‹±¾‹õfÚëè1€Æ¤„Ã3àç¥D§d}£ /Ò£kBÄ¿+ò®-–gŸ‹ûuäó¢‹&ô+¨¦ +‰+ÔçEaËTª„ë&ø‘Æ2﹤ÃÓ8‚ÏIÞ²xÂœ'þ‰àPÖÞ¿Î{ϸÊöMÐT n]X·‚S__ˆ¹€øÅÅïÄ•´¬Á^Oép3Ë¥ßXD}µª.0+Þ—ú2–Ø{ ½'ì  qµ+äýE÷Vçҵik[-佈±xÖÖU{2P ‡NgµSÛÂܲGÑ/{44UpMXcí{l&˜Vd„Ä.°Æì•2¼GÏüÜ1áÐtÔP± Ì(z„ ¢šX$F#áÜ”Qû§Š™W– >#Fû#ç'EŸ˜Î{gŒÄžÎ%°¿è Kòþð_ß NŠÐ²w €ú¥qy14¨~´¶  ç—3y6]G$ã 2è奛 yÑ]Š„èªÉrom™r§r èVs@ŽóK%qF=J øSÀ~«¸j})T=–®•©ÏÌçŠk~âÕ×—bžµ èmÂ;jÈ·“XQ¡'Ï¿»ïO×kˆ=Åã#÷ê)RO“ß_.Ï»½DžsszQ9gÿ~ÐÇä\¼û‰1úT{HB«' +Ž$†º„¼³GA«P„–6Á£|bñ¡GfÂ&IÎ5koð/ЛÝ|p;£‰{‡ aåÄG£u>’3Ñ|ƒüîô¥M Í3 9Üù.î;pÖ[yb³üŸ~Ô¶¡1Mî™Vü-öò;üûKˆç™ç¯@O ù ölI‘{'aïæÎëÅ¢WŽ.rgøoàHª›î?Œî9‚¼WÊÇFÐ8½WâSxŸL]h:S=aìW ̧šÝ°tnQ£õNµš¨>7Ÿê¼¢fBp(æ8Ÿz¶ÇAû”ø8ªs­XÔÙÉ÷{FìŒä'ÀE°A’-d3/ÏÇ8²ù——Éä=ÈuR=1è‡BuÔɽ¢‡ÒµR‚‰ Ï&V<5BëEð6öÒF‘û{` +´è¨^ÖéüâG O‚væ6½ð)§fÒýÀñ‡&c¿+t¡Aˆý‚˜_#{ ¥ .ú–Æ¥Ä㳩&8¹f>¶d"µÓ¸ÊIŠ” 3‰g§s^™#€çèµaßKÁƒå˜OTcËÞM:áæû;’|aÌïaÄWu*’Oeí÷ôFð;}èô80ÎGhºF¢çMçõ™¹Ý_¯Ç×ãëñõøz|=¾_¯Ç×ãëñõøz|=¾_¯Ç×ãëñõøz|=¾_¯Ç×ãëñõøz|=¾_¯Ç×ãëñõøz|=¾ÿ?úúëwl[g½ËZ‡Û¤£¿zóbKò³¹õÎ]¶:Æ:ú–sW{ìZç`³ËÁu‡µ‡·Þr<Åm‘o^§·\oÚko[Ëy–Ë,§ëý 7mõæùó,ÉßN×›E^:o΂EzsÍm­õ¦õ¼©ùµž‰‡ƒ½Ãò¤…µ³mÏK ÙK—-û~ÎÂyK—è}?oé¼9‹,ZªçòŸŸ^´p΢K—ê9ãéïéxz1}Á{úÏ7qþŸßÛYg»«³CÇLg™Þ´éz«#ÿ§ïÈýø÷c‡çÎí¦Ö»Èùïèyr-¹€ÿôô4ùŽÖ.¶Ûôè³zäi½%Óuæé­&n¾±Õñ$_æëÍ£ÿ8oòƒùÆ‘<µGoþ<=#=Q9Oo^o®3ûûyóçãDç÷\?9á%ß÷ü¼åŸ^H¿nùÇëÿëÏôõ;þããÉ÷žqÞààl»¼ç[z5_\û|=n£ÎÜu¶»ll×ñ†zœ±ŽHÎt6ΞÿÉOô~.X¼`aÏÇ(õæ“O^²×¶ýÿèõ¸ _þæË—ïõ‘OŸÿ=½K‹ôðgótôõéùÁH—ë-š¿dÉRnsÿM›YfýZ#f³ËYlÓ0eí5ñ0¶jšÈ­5ŒÍl4ŒLì46 +̆u挡Ș˶kXØõF§Ì. ·Ìο·ù¶ÝÚ¦’»æúÕ&ÌÊ›˜ÍxÆXá¤a¬r×4–9in0à˜u«Í˜ML»™*·kšÛîÔ6³vÓ’»„ö—9Fö7±õÑ64·dŒL¶2 ´²°ÙÕKfÞÇÜÊ«—¡™%ýl3%y fýÊÍä«9cÆÛk¢¡›ï·l±¢¯1ã4vÞ½AÒ¢ôI 2&Upþ· @/% v€fnÚ´³3a(gÑøŒMÕh4U†çM@ =[Ý{‰hü™‹³_ÞÒæÑäóÐpŠæ8Á% ?%× _EGŸ~¢ÈWÒG(‹’®àõh®ÚîÕW°ÛÙ[µ#bÒƒ|¾gü0­°n(郭Oo 4K+TrÑFDK M`·¹k£Y Ѽ­Go€›ËyFní¬Å{¤ E£ÂÁ³·ÂÞƒ’ã€\Œwòï‡FPÃZȬ4,„­ˆœÈõ»úô—ü“GIq¦+ƒË& ÉÚLrÐ`m<µAA¯=ºR_‰âíä}ÐðŠûé;”’3Ã*¿ãó¿a=£q»’ÉóiÃyï´¬}p_3å-ÒònA)H@κÁ’ñD¥÷MÁ9ß I t#>H(Èç(,´¼•&ˆM•öš Á´‰™†©¹µ†¡©Ä€LÊM¼3%ª4Ú"2FjØ$cÐk!ºhÉÈõ(lÈ=%?ƒäsýº- gAXË:Dö—;D÷—mõÒ)¹ ˆYM¬™ÊQ ¤žÆ ùÉCÍlܵ ŒfÍFÆ»ÖÞ½…Iƒù])C9—ˆ2ÎUâfª]Z›Éë6¯é°•H˜p [²°ÜÝ‹Uºõbí¼zKŽÁ”.AEϨ!–i°¹ ¢_š.6ÒËÈõ’sнRGH…c•!¥z iPîIâIJÔå7öÃ;ïé§pØÓ[òÍÿ†Üß±"7sÆIêkËÄ´ ‹”IcðžØ¿Ã«š%(éJX%è![ÈŸ›·ôI£r÷×Qzx PzÅ%›Ø:d¬õNm+‚àFaé ÅÚìЦ„—NAý9ÀhUdC³°+lhÐ’gE3™ä•4BpèÏnßÙ„c´ÉˆØ¾Â~G/ÎÖ]d¢±ÝQCA Œ;^À® 6˜0[ÌSÉ8b‹›ŒÑ#Èߟ¤°ñЖ)í4á(¡‚½WØ|³ÌÚQKaëÒ M݆&2ƌۦÉÚúöf‚ú°Ÿ â|ؘÂÊKM̘[hþ¢ [®aäœs¸>׈âîÄá RaÈ<Ä]IÃ@X¸yÝFF.9kŠh²é/·rïâJðJb/%¸ ¾>BròéòÑ#|0|#HT9Gÿ~h¶”¢K&¡!þ¶%8û$ãIº‚rÇ‚p¼½__JŒ¶'•6/ª"+§Ð&p2n’_ö˜\P9chs#‰ßÀvCJ@pœwš.%›òŒ"íŽN‰ˆmÀGÑøëAl ð±˜CYchs9ˆµ¼£‡)ÃJ¾“ŠõИL4É|ż&1o@,#R¢Š‚oqž”ÄÛÄAäG›2Cri&lãÍ·qG§äZ\ü‰i ü© ,ñ>“6‹¢É2¤l<hic(±5b€d2=dmÄ—“{Aìk8|?Èm9p*öµÈeÐè l¿'¸…ê q’Ú€±Ù݉Ã($žÛ¦#w èËÚß2^„’9Fü1%šk¸ÈýÄÿ±N;ûàÞà_BîéPÕ/H|AðçäÕ¯§¹•œCÒŹtn‘¾‘Î7ò;ø`!áü6÷Á2.õÒ\JšœxfmÌtÄûææcÏÍàòŸþȧÝ_Ä»$ 21‡ŸvÒ}ÒuÅäã³…´ÓsÑôNï]DÅw A%q„°¦ Á—žd\=Iü"óQòËùF¶o2|ügµ] äN/EƒÀâêB‘ø8ئÂZ¯Øá t¤M¥dƒhs-oØÈ3h£8‚qOÈü „0 ;‚ ±–’<ÀGa¼<â†à^Šðy”H=zæïõ%Æ÷£ñ6ÒGK;ý“pçB›² †äIügÉxјØï7 yH(1fÊ©Y ü¦Í¸ÄF%ïTê+écOÂ0Þ/a8Ä:àGAæBE âM…HZ<ŽxD ¢×ç5˜ÆçˆýAœB[4iËíÜiŽ%†Oà“ÏÌBc5çAÆÏ>°/ÆçÂ4ÝBH¤§RDõ$Þ-n|*þð´™>÷6c¿IrØ-HÄY‡à~Í°Û£ _‰X!ùOí3jï$3ÎNÃœÄr‰|%¹ +¾7ã]4ÍIþ%“zM(Ùß ¶1gf€t˜6îÆŸAÝÑ&í=ÓïS† чô¹¤s3AÆÍ䎆`v8ïŒ\Pá7x(ŠÇ@ä „íM° yÎ@FϹGë@ŒÄ\åª LJ +’“©ˆÿ¶óí !qWêpj$V >J$ß þä„;‚¾É#(IEqûjš;øô£1‘Œ¯¼ðñrˆ(R/Ì=ì“ú€ˆR=øàjØ[‘œà[ø·Ã>éøChƒÄ,`~àÓHd@ŽGã,‰/‰/ðÃs[¦â+麴Ià‡† $ŸÎ$opòíO±‰ü—ç)a H Èü…MÂÑfè/ƒù‚9ÿ,D–~G‰¸Èïè¹EUL„ÀÛIG§"~ƒ\ 󟃹òqÄÖhœø6OmÌ3JA>‚²m$g¶tÖBÎÈ‘x§€` H¨Íƒ\VnéNs=Ú\Oæ'îŸè3Œ +0Ë;œƒÄ$Ö‰Ì[ïÞ +!ûäw&(î3šòMe$WQXi –\ˆsc-‘·;kšóö$qÔqŒhø ãL|b2ÁÂýĸ30¿›AnË{ĦīÄ÷²ÖN½ävn½dÛÜ{Ñx°3n°ÜÁ»7È|AÐhNòòÂBÏ^¨M°;Â(¬<{™"_wh™°Û4‘!ŸÂ}“Yºiœ’’á’©lÐ's¤ÌÖ£—/i@œŽUßXħÞ\À{& “oóÐF „˜‚{à@øMš¦£†Bréœq HTí!˜ÀÍ äêÕøSòŽ|b0 nÇœ¢¹ɵ Fê ¢j+÷l ’#ïT]dAp…qzeŒ¤¾–Ä,ˆ¯Pl»'>»‡h°j2Ÿzf®@I¦#SÒø£ôk‹¸Š—›øÏÌû:(á)%­q‹ |M rw†é@|‚Þ{b{°kà.øNÄkˆn ·`Éëá+Qr¤ØîÛ‡â`Ïôa® ¸  h<%Ñ&$0ÔGãuWC´ÍîŠÌîé¹Û¤>–Ì ù>¾’¸°yƒ!ƒq—Yyk#†`nÏüÙ­ eËx;MÞ)¸?ü6O| +ê 3¤˜‘ø ÈðÎÖ%s©HÙí}å$¯6#9©…%c&ØhPÂLò<|·Ø®­_ob"_‰½\ôÐé È v>½1eV;{Ñ9F|,ê–ð$ßëEãó:Dy‰ÕߣQ_’Ìk‹)ÈK3’äìÁgFܱ÷ò#lQdIQ\÷#uÚ?õLJl•÷W9•Uß]¬Øûl­¢âÅ*\™wÿ{>õÚ5 +NQk!Þ#wðïÁ%àU6çþR>íÖ"Þ?w4ð!ëàׄêlîÃeŠÒÖŸ(Y,ÄËÇrE=!öì .»v_øt•PÜ´V(¬[ "–2FWBòÇ!/¥¤D ãD\‚¸Kø^=ŠÉCŒ?=“O¾8‡Ëº·ÄÀXÆ –»02”õäëÄ®0§¨ÀÉû)9¾ãž¾À"rN’?ÔÎMb÷¨ó žÀ»Å HÞÂuÔí€{å[‰ÿ´ñíœdU Wâ=3(¶Ü‡À/ï & BzØ$ê÷¤!u·àl4y‡À~‚Gìq[`_Ø&ˆ+C•;#i­$Ô¨íÒz§úh)îhQ ò@‚áv‡Ö£¤,»ÂS‚∢oå÷–Ê}2Pýh,«|·ŠõO û3•œ4Q—Ù8pî%§Ç<'~‚âs`…¨ÇÑš>jH±§Óz­ÿd}²SÔe@"- Öç‰Z +Á$_ÁjãJOS}³G÷)üJü$Í¡b@hxd*„„€÷)yòu× "È+Ã÷M¢Äk”l©l"ˆ(A rfÎ7uïMò—=±CQ_åöDÁ9î‰?1BÍ4‘vÊÙ9|K¿Äx!Nð gf²%/VqY ßsaß". +~c¸Ìsóä¥Í+!LÆGíýŽÛˆ¿ELFrxÌÑÞ·Ö„”1{¿äëþP¯¡µBâËø¨ªI´FˆÜÍÞ³HÆa›êx_Ä.ê‹óØC[ÄS-*EÕ› óýSì‚· êËZ b³³r:agÊ0Ä-¥wF!?ÇÚ”Dì’s0þ3¬ô;ËR’QÔ +p¿B )qèRÁA¢Éëþ€¿¥]=ùºr,œ%§ É/ÄTë“Üy:Í›Éøõk §5ä|ð5 ‡g §OÏ‚OTäÝ[Ê¥^ŸË%ûæÇ(HþÀm÷éC )#Ê¿>áíw÷± +ž¨È¹³‚9\܉©¬[Ò Ä4Ô®Å$÷=ð|@qšæ’$¦ƒ  Bnl +É+IÌ)œLrׂø²¤ü†5bÑÓµAÆ€HÛé¼&qË ±+÷Æ.ë&%1¤øÖ7oÆ 'Ù”íû´Æ¼¢sÅŸù:0ŠÜSäëT4ÉÌyßþ” ”ø[!íì<1¼XO +-™@òàI Ñ<­×@p)óÚB.éü,>B°šæm$W #DŽØ¢§?‘|}1ïš2˜Ö÷E×äë|êÉ9oBý 8s¨'_Ç| â}º¾FÆ endstream endobj 28 0 obj <>stream +vb²w¢œ3ŽæëÖ$_‡à[ZwŽªšLóe<·+`¿%nB‰Š]Të ¥õëÅê'¦ÂÑ69Wùr³¬èî2*vá@îù6‚ÅíÎÝ´’‡V©+Éý‰ÃÜÄ9@¼ù:0òGÄJþ".Ô3PO"ö $›-Æš.…fi¾žLóuÙâi¾Ž"ò äyð¡ÄCà‘;¶Âl¨­£NIs5‚Ki®²@ÔBóÇqs"¾PQT·¢yŠ’ö•“ôˆ]L†yJk¶ÎÁä*[*v!þ“ØÄÞùà}ßšÉI®l"gXk÷/bQ:¢'ñÃ~©£ v!ºùÀÜ¡B*Áåß+¬à×zÄ.Ä‚¦ÕBqÛZ\ÈÏC9;òùž Ã@¨r/øU§(òIŽtŠÖ\)9^ì)ò¢Æòªwë @ Ák ˜÷,âÐUX‘žÒ-|l؆’/fß]Ê×­äòïÿ@ 6q èÌ<·§B—Åz”¤´äÉ:©ªÙ ÷†Í¾¾ˆÚgÜá©X£ácN¥$rIWfó!Õz +×ÈfX•;h¿J¡åzGÄ$Ô5XGÿ¾ Ë•[ûhcm¡G€$M—®w'›OÏ õ‡]‡ß%ß¿HIåˆýQ1GÔ@äGl +e Ù¥b1Åzÿ»ˆ‡ØERðâ?ü‹_Íÿ vÁ“\ØÜÌXE1â æ#bGrO¿ÂÖ¨ŸÜ4œ®Ó!·wô¥ó‰ÖЃóÆñQ‡&ó §fôø/òù fôKÒiÖhMr#`ú•+Ÿ‰9K})|'â?0ÉËUÛPÑò;äçôõt-±`<È`ùä+si=Â%hð<Œp¢r&s`ûmš·Q±‹Ìñ\uó?¼ v¡dLM%†ÚÖsœ@jî×8BR_Ä.Æ@ìצúSìÂοoaçåEʈCSE‚]xÔHIN„šgxÕD*4“x`DÖ؇?pégæBŒ¯±3v†<·q)±zˆ¼‹Ç£^E×€» ^Çš|”2’Ìoâ3Q›¥${x¶ö¦kn7*Z6+Ê^¬æHnK‰q !)| +Ä>°Wu"äüœk¬­?à{’Ël½´M,ì4 Ö³¨yjBì[áàׂØ`Aæ.Kæ‹ŠV¡.i·›Öf°vÛ¤y5ˆ>·ïˆüžøÔQ@ˆ<ĺÊØê© „¥kå.=µ.etÅJÄí•:²‡@yw_ŠÈƒø꟢+±_b—JרA´~†Øš|’Š¼Ðº½GÏÞ +~ +B-$Ö£îLݽ‡É·¹õÂÞ*†±3ì?Ä.J׊å7³~¹£þ»©viQ›AÒ/i$ð=Ä.0Rð?‹]„÷ˆ]GÅ*ˆÝ¨¼IdïÛ—³õèMë !%;RA2P§ø7âðdjw®qƒàG +/}µŠ-íZͦ_ŸOëýžQƒû^®Ã<å=Ct°þ„ù+Q?”1Š +ïØÊ9íî‹=<È©!2/Ÿ+ʯ¢äî kE.¤Ø®ibjÂo1eHÞ¯<ëȇ‘û)ÜÁ/BuÓF–Y·ÜYóã&â°¨µZ8@¤,W‚Ĩ›a ï LIs‘¿’˜‰z!ù¨¸jÈË!H +± 3É7ó‚ˆ÷…–Vt¬•y·™Ì©Åû†Ø…Éf[jàaÁò Ä%‘ÿƒ\›Š]°ÌCÃo÷ï«‚¨ñ×´>¹Ý«/Æ›®kØìЦ_íÜ´q¯Dg Ðëê?@a¿›ú!Š-2Î/󮯠~˜µNˆe\\Àe_[œ HŒ)|›}~A‘jÊhºŽ^ ‡uTJ<™qf>_Ùløm¬¡¨¼‰/),–×oRV¶XHû:MØŠ® ò‚†ï©Ø™'|Ü¡)òü›Tì‚Í{¸ŒŠ]üû- -cÑU‚O@DŠ +~G|*vÚ#v!ý³Ø…ÛŸbž½Y+-…è¨Iñ.Ö„Iœgójàsî-ã î¤5ƒøCÓàGhÎé›5JŠ<:•+í\Çï{m (û°ui1ìà$! p,[ÕµBr4ç©7ò%ì#*ê1„î‹ðI‰¼õ#äêÈ!N +ü‡šdçÕWé3b\Xûq.›ù`1¸oœÜ%jê»R‡À>Í%ÍëM˜Õk72›7š1&¼#]îdK¯‘.ˆÙQòP@Xɽ7Í'’Ï.Àž/Ø(»Ý³7Ori\»TZ»‘˸µX"±ÖÞ}’FÐõ?ìå!m¹ž¼¤ñG~oçf*v‘zzlFþ± ï/b»ú*©ØÅ‘9 vÅ EmÍ‚Ì'öž¬© È«Ä^(àF{¯>¨µ™Ë• ·Õ¹—´'u$%ÙÇž‹ˆŠÉðU°Wê‡@ìšsu™qs©*¤Tã‰ú;D1àS¤¨â‰ k–å^˜Çj7öµb|!šE}m~íJeu¹PR¿ŽÏ¾º¾«~jriÔ.é~µÆ˜Ž<ù7Öìþ»à¨ØÅ“Ÿ„ŠWbÕ3Eõûò}­«øèªÉXãQlì#ÛîÝ[îÞïO± ¶ u…Dò2ø)%„)’ÌQ†¥£ñÄ2!õð,!ýÒ")þèLŠƒHì {{ˆ¿ÇX±…÷VEõkùÒÚµlé£U_ÔžÙŒ[ °v#B¸;òÈyaóŠôÛó¸èÓSØäK³¨J89bš\üÁ)Àt›cxBá•“ùÜÚ|aÃ*ä<¬o¶.ò¬×#ï¡óXûöˆMÙW¾Kš6qÕÏ •'[+· lÒÅ™¬Oá(Ö3m˜Ü#aÖ ,lÜz™qVfÄN‘ƒpù2~M óµ(¬™(¼Ž +Æ\¨Œ;5G¹OŸâ™ñC±_bÑ£µBêÍ…t?Öì  úe­¢¡‚ÅøÈso-æ2Ïχ؅ä“Ck¨`Ï‘*"÷;et¹¾2ñô\ìéèÁ4%ãiíu Ý1Ci= ûäã´†òß]‘ƒéwÌ0ÔÁQ[Qæ7®sk~ìÉÙIüöÅþŽc3”Q{õQ³§Â™t:aj§ä“Lç6 W·©.Ô:AœÒpãâÆt/[ÙÃuÊŠ&caßcyñÍï©8%ÄÀÕ÷–€ô$Üt=ÂY# þß#ÐAr6ß4]¬‹ÊsInJp¸t¨E!ß÷|5Ä. °ÎE”OèYŸØ;^±3eD๸Ë3¨Ø…OÒpšG%VNCÍK +/˜@Å."zÄ.ÄìsK hAÅöWz’| ´T +Ë‘<•’%“ßó% «ù²¦õ4?)m[5A°O‘ñŸûÆýC°¯üåzìû16g{HÑé>ƒ¢ "ö5àóAúžW·J,kÝȦݞûÛ¡kB ÂZ*rtÔÒIŽ$iRX_¸îª<׸ÍüÀ›Õ˜ lÊÕ9œwñ(ú#×D¾D×w& ¡¾8¸h8YL½°þŠH@l=bh$Mõíȉ1¿¢M¥{þà÷‘Ï&A”ƒäØ»œ;ŽÎUf¦™h1¬¬çšB÷~Ç¥Ÿ˜#/oüI^ðp){XŸõɉ==BKäg*DuuE +HQúÞ +B}&þøtEîµÅòì«óiÝâX®±ƒPG¦š §fAè\whÝÓ‡}àØ»ˆ¹sT_±÷õ:¡ò‘yj*Ý_a0ಘj}’3̇@ €&y™‹‹_èÜÀ:*rJäÝ~9£ð {úÓ ¾Ö…¸OPáX¬{bͳ÷¥qcÌ:{õ¥{[KÆa¹bD³uY÷hˆ’#O‚xªÜ‘`é*=!¥fp‡P>ŽÆf×0º¯tÖ¢8l‡ß‰ÄCJtO÷K„Óz/ýä­¨¥Æ™Jó¤Ó3©(K(ö“ñÅ^+g‘ß@$ˆØ‡”|f¾˜pz6ÆkÖX«§¢¨cbýõBìñE?¼r"­ aÍ”ø^º–þŽà Þ+z(õ£ÂZ3l4õì<*„€z:Ö¹"Ê&Qá5øë´ ‹ÄôSó‘ÇõÔó'@àž«~a /o[ qJawò0Î5pΙà˜!h+ ¦íNA¯×CrØ.ü jÛ +âOå¥ +QW¡×LÎ Âö)Ä~2®,¢ßɧf‘ç¦#gÃþ0ï°ëäUkQ å"öMàÃ÷êaŸj=òÂGË„¤kói]šÌ ì×C¾MqnâáiX+¦Âó…÷—Á7À¶Ñïý"ä=f 1‡é~Y¬/`5 ìÇa³n/b«_o–5-v% UØ8н’¨)bíó]ˆ96Mô/KEg|3G£VDæ€>] +H§}#tíß+}©&þMŠÛ?Æ~šŒ£¿w +À;FÒÝ£îÒ{QPG“Y:öì©·qí…Ú’…¥«jÆòýåö>½!>¤t<—vs›óh)æ„ÕH^¯iA|,p1öæRq=¬—ù§èB´ +ûRøÔ«ó{îAÖÄTzÎ؃”xq«®[ +Q\šÏß +»Æ>QËð’I4/þ‡  ɉÅØ33±¦ØSØ7b_Rü™Ù|æí%³‡ùdŒ¢ºOîÔLŠƒP&ñ’ú…âoa/|ÚÕ…£õKb÷ä¾Nƒð)ƒ ¶ñ46󺆂û¸WŸÖ±&„uGÔŒ#K'PüD♢ôÑOlî•ÅtÝÊ5jDÜ°Î/¦œ˜‹z—~u!Äbûy·—PaÂÌÓóà—ùÄOÓXGb`l‰Ù‡¦SL  !Å›Nce×&YEëJ.ºò;¼õCYqû +¬I±©·ç#‘4.*;ŒÙÊ×›E-+¨Ý§œ…˜ÝEQÝ$f-Æ:*É¡æ-FîŸ ÿƒ˜#ŜɧŸKk Ð>Øbª(¬[ÎÆVN¤"¨U9îЦñâ4å/×(Ê^¯âÒ.Æ}„ÄV.ýîBÖ+kçW4š:8‰-{¾F¬h3‚ð;­7¢¯ 9Ö<‡Q/Û§‡u@n{xÚ«rh¢´wöQQ#ˆ`O2|pòi‚#.Í£˜#ì~x"—xzº<›|.0«Ož®Ü3}¨" x4z`‚\]»P~ðó&öð;c‹ƒ¿®—þ»±âúo–Š›Ÿ¶²gÞóìþφòªÏë•ÖóG_YHÛì•×ŸºK7Zwpçº$®âõF>÷þ–ÑÅú*¿¨Kн«äžAÌ’ÌÓ©Bò¥y|iëZÕþ§ +ëê:qkyܺ¬Ö\Ì»·’ +/{¦ŒPÒ{Œ¼RQôxê3bÊ•…Ø—¡(~¼¢F4ç$Øž¯z±…«~cÈ•¿[Ï•<_ƒu< ÄDý\yûJb§em?Éski]šO9?þSQÙ¹¾…+n_KÁΤ¸#3h-•î=>~ _ù¨CúlúŹlöƒ%òŠkåmkØʶMbu›‰PÙ²–ò’æqŽ¨ßàÜå… Ëa'°kEYç*ìa÷¿1àŽ´›C›;ñBnQþö'YÁ³åòêß7p—^[Š÷^ìäït¹H—Úí¹SÏ8áy×*7YòÇÚdâ±6òwÏäâéV+þÔKN‘öp¾"íþ®c÷¿ÛÌ~e$?öa‹âÈ'#űO&Üù÷*þÒ[â^óŠ+Ÿ”üõ7ÛÅ3/·ŠGÉ5®Î4«¤³í[ù³{â¥9j̧~5’þÕX~ág–¿ùÉ^vç߬äW~„ÚgžRmƒ¿Õõû»­.Þß¡<Þ âö·qUo6ãÜøŒ›‹ h\!øHqõ“R8ýZÉ—½ßÀ_°õ`_ü|­ùV-3Ï^×ÄZ¨å­;ÞªËunâ‰×–Âé·*éH§¨¬~¦Pîof…òv±êµ1_ùÚ€??b]|쉩¬ºf H͸¹øEŒ!ó<­f±¸·Ó@,±™-{½Ö¢ú—Õ²‚÷ËÌ÷þö£yõßWšÞé–›·u;ÉÞü‹—ôþI’ðþe¬¼éWEû/ÞÜ»Oáì»ßB•kR¶½9©v|~8Wúð4Y|ý"AÕÕœbõò‘zûó«…ʧ ‘ä>Jì_· +7_;J5;ªk-âñ¥êX“•õ™G.[¯Ýô¶>Wã.|¬’Wý²^Vôl¹pð¥…êLÓvþÈ[¹"ïñ2ÔÿP3ª:Œ‰2Uí{,³>Ú`kyø± +ù&[Þ¹ž‡-Ttmdu˜K§Û¬Ä«O•W[\dÇÿ¶E~î{ñ½J¸óÜ]¸ùÊ‘»ôVÅž{Ç —;mø[Ϲ›ŸmÙ;ïí¹‡¯Ý¹oݸ»?;(nÿÍVqã7KÙµ_ÅíÏÖÜ£WnÊçµ±ÊÎqbÃ#îò köø[ýq³¼äùòŠÏë0¸“],¶S’δYó'[x®ú™¡¼²k­PõÌDu®Þö­ºøÈI8ÖÁ±G_™±»Œ„cÏYéT«µpé¹µâð¯ò㟌ø#ÏåŠÓòs¯Š«ïTìÍ_mùû¯ÝøG];¹¯\¹ú»¸†.Å•wæ‡Ø¤¸òVTœ|!“Ÿ{'N¶ ì­¶m\s‡§ð²-Êòýƒ écK²¬½Ûͼ©ÛNÑòón®¹Ë—»ñÖVqàóf6ÄP¿œÑÈË°¦I}9Á¥ˆ¨W™§?žm~ðßÖ +§»”Ê;u{ìÎ_Ý£,x²K97ËâÈïåG3”]û™“_øÀZTÿeµ,÷틢ߖ‹%7«ª:äÖ'UwîùXÖÞ ÝúàN¸Õ͇~Ò•&gåÑ6Q¬î4£XeßÛÈÓXçø½ï7L¸Dòß7^–ß´TvæSyÍo6ìÛŸƒ¥Ï’¤“„Ï/âù?^Å Ÿ[âù_ßÅpÞEHjSŸU«]Û˳£ê’ò3Eçnï:’­øð×é][Šý‹SyV¯¨¥7IÊζöI×r?ݸíøkmeU¿¯‘—X¥¼ÚêfuûQê|‡£pý={ꣂ»øJ’´z[uÔ$KµíþÂv±æÙNå½åÃÆ@«Æ[ÑâƒvOåµ'nâÝ'nÒÍVþZ—{ãåVéj3±Çzå­‡îÒíwâó,Í*^-·H8¥ož×´ÀüØ¿¯7¿Øm¦¸÷Î^|Þ¥zõ(Uõ®1U|Õ+¼k•^·&²Ï^øY<üWk‹‡ÿb%ø‡¬þöÅ'ácKœòscšÝ«³¹Òç¶d¶þ…{íµŠ;ôÖDž~w›z}®"ëÉÅÁO†xN¼Übgy­n·êê#7Õéz[åñKÕ©FËãÖܹçá…J~éÏ_ë°oµ¸JWŸî.Ïvk/ÍQ»µ}u:Ëáù‘\åû†é}{⶗ײ¹–>ægº·(ªß(+zõqa +»ï—MV›v)/t9È+ÿe<åÁóÌÆ9²Ë¿qªgñv]—ó·w^(°|Û˜!t´„I/›c·¾¾Ÿ¥|Ù˜ÈÕt¹Èn¶´8ÿ7SÙ¥× +îþ3g®þ™§¬é·íÜ«§!“m//d‹kýÍNÿe£IÅã…¦U–ŸüûJã›Ý†æmsté¨Ì+« Ë-¬ÏOlŠ- oJ)ÚÕ^Zd÷êT®ò—útéçgÉÂçç‰âoÏ·½>›µ³µ´ÀñÙlëwç3,ÿ}»é±¿­åýb"~Fâü‡BÜÙ™|ê½…À®\õkCsOv(…Cÿì[V>•)Kžð…õ?)rî/Qìÿ´QºöÌŲ¾6LY[$\xc-«úËYfÍ\yÊÙæêså?Ê•Oj÷¿¸Thÿêrª«6I|Ñeù±6swkQQ䓤âˆ'IE%¡yQO’Ê”51ìÓ绬ßßW‡¶¤•Æ4Çæd´„åT6««›3×e’ëÍŠ©‹ÏN|Ÿ•X›íÕœ›³õÍÙLþÍ›öá{Wîòkå¥gåµ7åÇ{¤K-ü‰v–?Ôn&~j·øØíÃÿú2Æ¥ý@Gû¾·öýÅ.íGJ”]ãÙšŸÌþ«RÖôwyÿ9šÜí65ºÚ½Á¤üÕbÓ}Ÿ–‹÷ŸíÞú¦&{Ûë«Ù\Ç®æåîa§;ÁÏRE›)wàÅñT“J¸_çaÕr#Þáù±üm²ŸŸ*òl+ßëת΋zœÐœ’™Ü•YY¢>ö$ óæï´ÚÖ=)÷}Óo×û¥?lòNmxìZK~®kðIøÐ?ãLm`femhVrm\ž[Ky®åûë©â‡¦›WÔò§ÿânq¡Û\qêß-¸c¿Ypgߊ⹮­ÂþO¦\é¯ë¥ý/Yîäo¬PÛµ[ù¶-YxÙÅ¿|¡|ÿ$Mú\—Æ~x&üܯzÿ0Ýêmƒšëx`qù¯òK/äâ­&gUÛƒåûÆT«÷wÕaM)%‰Í±e»Ú«öm{y9[ùö^œíë˹Û_Ï·u$ǧ#37õqDö‰Æõ½'>é·[¼Ó®·z§Ý!_o>õI»ùÄ'íR£æi2ïÊB³÷> +Í.© ËŽjHÌU}¾•bRÛ-˜¦?œn±¿{µpòƒ(y¿Uyò•t§ÝÃêaM¸U˽$ëΚLñn«»¬úÃZyÅ»µRu›L:÷ÜVy§u·t›Ääk¿Ø(›žD&Ö'”?V—Y?»§n>s’ú«EQóRÙþ_6pÞŠB[k˜gkI©ó³#ÅVoï_x3Çê]M¦ôksê¶×§³}Û²‹ +Ÿ„äå> /rë¨*Q¾Êw= uè:^Þ–TÑœ—ÿ$D}¸1 ã ™çÉ8]{䯾Zœw©&(ûøà u^mD–cç,ñSG¢ÐÙ¥zÜ-Üzî"=|â->hñ–êûcn¨k¢‰]'dÇ×Åç„×¥å…4¦å×Dä&Ö%±/ß„˜Ýè¶0oívÜNüSò£¸‚¼{Q9{ïEd<Í"öU\œV[ìHÎMñác°ÑÝn#“ÝF²ößÝñÞ.­ÇÊR“$=N>àöìH…ÝËÓ9|K¯P÷hWø“´JŒ×ü2?ÌÜ[’y¢É?ó^‹wzYK`Žýë㹊?^‡š¾év0{÷ï.æ¿wï‘ÿþ9Øêý…”ÀÆ̼ĆØÜ‚‡áY•÷"²ü²rÜ›K²<šKsÛ«Õª7wRl^_R+ß´¦*_´&)ÛŸÅ çþئ8üo†Âå?lmÚj³<ÚªÊ\Û« í_ÏÝúöJÖ¶7—r„O±ò7ñáÞ¾kL¶ï:šmóîœÚ¬³Ûɬý£=ûⱟ}×ɼÐæÌý–OoF›\ï64®úm±qÂ… Æ>ÅÃL‹G—´Í7«û›¨xû2Ðéåþ¼´Öð¼üÇaÙv¯Ž¨ÍþÒ½Ëèe·å–7Ý’áûn¥á»nÁà}7gô±ÛÆì×n³¿w{ò¿5Fò¿7FÊù%Ȩ£[Ú’Õ6ÕôT÷FÅÝ¿o“jÚ}­7Æ9vœ( +|œUšUSTù(,Ï·5¯Lùº!Qhn áŸvú‰OB•o[Rw78Ó»9ŸøìËyª÷u6¯oçؽ:»»½¸,ái|YHSF‘óóª\¢Ù®®@áu+ñuv¯Ïäº<¯ÎßÝž——Û–õ4¡Pøܯxõ³¿¢ë7?ó'Ý6Æ÷º O~\¶%-o´aÊq›kºW›¿ü}‡øGCrL}BnyM˜šÄ=õá{aê¨ÚÄL—¶ŠL»®C™Üû|ó_îúg[ÇíùÖ® ‡Îã“‹NÜ Q_{yúNhö±»¡äoCÕï«÷Þȱ}Ibì»{ˆ¯ñõ yï©oÕ¤WŸõ°Á'õcÛžäOäqøºˆ§ ¹²¿} +ÞÜÑmnö{·§ýË#ÙûZ‚rïµy¥]hñSŸnñËJi‹*”$þÞˆxhýñŽÚâý_v^î^e2xãv7­uV»4´˜ï×0‹–ÿÄ,Y¶†Y°d53oÑÌì%«˜yKL˜•ò@õþ†®¯ú×éžvoPüÒT›ž¹÷ZLöáY·ã³ónÆe—ߎP§ÝJ̉&ØÁµµ*Oxû&ÎòU}ÆöçÇó.*H«+,»•·÷AXö‚rê"ó€ó,ZÿÍÉòÓÍô½õ!Ù׈»Ôê~ì™wÚ±Nï þï-±F>/6ñVYk(23Çé1{é2]f3œù†<ôÈ÷3ú~ÃÌýFŸY³Fd6KþšUaZËW°Ì”¡ã˜±Ìòª1ŒŽ–.3Dóft/=f\ß)ŒÞð9ÌÄq‹˜éÓW2‹Mݘ5±õ#7]éþÁ¨±[½üOÅÝîmÂݟݬºî««ïFäÞ¾˜q·&0ãV­_úÅû™Åua99µQy1 ‰Ea ©…Åw£rÒ1 SçßÎÍx“³õíEµ¼ë/öÝÛPÿÖôܦ6¯ÔæŽ=)dÈÿþ.Ì ¥ÛdÓ?æl +<4ÌÀ§bˆQÐ ]äûz~™·ùô¿-68Û½Ü ÷é”UæÌd½¹ÌÄÑ“=ÝÉäF2:Ìf ÓéOƒÉO£˜ŒžÖHfòp=fîR3æ'«t­U^—®.ø8~C[÷FÓ_ºw˜ÿÑícùþJªøöU‚Ðú1\l{%½îLtxq$7º1)¿ànTVù­õÁ;ájâ³*oGfŸ¯ Rßx±¯&,‹øcõå;Áê·ƒ3n?Ì({–U•ßÞ¾;©û•[Ú/Ï}Šÿx·3ѹ«4Ãø¯ÝNëît/^qcø’Æüåk™©Sô˜Y³§1ë­Ý57Gî×5¯±ÞÁWK‚3„Äôeú0ÚL/úO›\—ù§Áh~ù¹yf ¹êþäU½ÉOZô¹äß·:Ó™y DæE‚æºcÝ3…w÷ÂÕWÕy—²Ô·âÔ9·â²rîGgåÝŽÉÞ{;2kß­ˆ¬7ò®Ü +QŸ¹’yþzhæq27Õ„¨OÝ Îº[ëŸÛXÀÿÚ'üÜ'ÿãs螎œÜëí$?Û“–Óœ³éU·ñ–ŽÌ´1Óˆ#çsëCÎJ“^ÆfyàL5˜ÿ8ðûÿzhÒ«Á+qt˜>CÉ×ALoÍA䧑Ì衳˜9‹·1ë¢uÍ?¸ñ±;ˆø([é]{¢SÇÁ¼ê›Y·ogTÞ Ïª¾–E|LÆÕ{éõÉyÖo.¤E>Jɇmž»”yü~°:¯&2ËéyU–ðGG"ÿ×Öø Ö”üÆž)íÁ™&ívY—}cÜ·0zG’kèKÏ¿79C|¯C®i±¸aä;|¯ñß®æ¿ôêþùº5È?Œ]ò~#É\œù“3³*þÙÈõ‡»gèÞÎw½‰Ru6$Ût\Îtè8íÕ”—çý$;÷úu‚e‰Mb óîÄdcO_Ⱦv;˜Ž|éù[!Y-5A9]2¥O5 äýì¶tuó¦ïº-~ïöÙü {Ãrc;f(¡ÿÛ®QóËÁÿÚ_î™n}fâDcfÎ/æ§ÐÆÁë_uoR|~äçù°8¥ðZ|ö±9o…d_¸–{á^pþ©ûÁ9Wo…æܹ–sýfhVêý8uh}ZnJm\Nr]Lve=É»êÕ‡kƒ3‹k#²ÍíöÜp½{Éú¨£#VÛùjγ„­9˜Ú`?zÿÙæ4éý×¢vŠ¯ÿõz,±7ù}:÷zæ¡ýÏõ%ÿ¯ªÃŒf†jOfÆŽZÇLûÁ‰Yb]®¹¡¹{ƒüç—Ö¯Ï%¸š™\ŸíÜQ™…|Ø­¥,¸ y%Á^Yqä«oSVŽÃój<àAHfÁìÍMÞé=X×;­èIhžÍ»Ój‚/¤Õ^i}Æýÿzï{‘Ç?_ëŸÏázµ¾ü®çº{Ó;ÓŸÜ¡þäß`:{{3¸×dfÖ$fh¿YÌhÝMÌŒ•!Ìòí7´WßêžË¿½Dp‹šÄÄ„¬º´éSm¢å‡«ÉÎmjâc²._YJÂ| 0ù>â[oרÛÛ¼2“œÓ»=3Ûè÷nÛ å/¦ü` dFk úÿæ¿ùJüüg¼À<Õ!^ ×4ª¯>3zÐBæ›Ë™1ÿgF\Êè[̌Йnjè3—6`3 ß÷ŸÏè$¯Ó]ÍL^°YjY­µî@÷4“®n»Ö£I.ûÒ€ÍN\‰Ì*$±ïÙð½í·"+:½½±ïͣЊ÷ !{ß6•¶7ÖÖ!ïZS×½d°Öÿÿø§Äõ§`¼Fië1C{"? &£ˆÈOâ§æXâK&0#{Mc†÷™Å ï7›1p3zÜ:æ»iûmfð%‹…2Í_5ú¥ÛFx}#(ïZ|ÖÉKÑù÷o†æ=º’Ww'´°îaPÞýÛÁywî„丒u‹øÓk÷ƒ²ñ|öƒHõÚçÝ«gÌ]ý¿¾–?ý&|DêÙû|ù¾/õ#ý¾|?„Œã(í‰Ì7dœÆ_ÄŒÓ]ÄŒ÷3V=3~’)3f’3f²)3jìzfäw›™qS9f¶aóC`‡Îª»Ýs¥W‚2®$gQÜr'6ëüí5ÁfÙ¹5j‚3s{»Eð Ábf=¹œuç^P¹Fõ–ߺ·.sJÑœ´p9‰­Cþ¯ ~²/õ ½è÷=>°gö§hd03Rs43¦ÿ4fÌйÌØÑ?1ú³•ÌÔïw0Ù‘‡3v†ÈŒ¨`FO‘3£'˜0#G­g¾ùfýÝ\ófEÐõ/º7¿ë¶µi=íVW–Tx)!ëáåˆüæá…5·Â +IŒÏ»q/PýâaPî‡ú€Ü÷M~yž5= *&5ø{·rÒb³ÿÕ˜áüSŒ6ø zì‰y˜{=¿Ó!¿ÊèöÃŒ ÏŒ8ƒ5lñÍÓÝ¡³Éü[ÆŒ¶‚5|3bøOôÚÆM³bÆM’˜‰s]˜éqÌ¢m'´–¥¼ºêt÷´55ÝKŒ?uÛÛ?Ý zùjDÞã[¡¹Ídœ×d=¯ *Àœë|Xþ¼1¨ôy³ÉÝÚ ’KÄ¥¯}Òý£þÌÍÿkÛì¹V†ŽâÙ0Í1Ì0-’!‘y5œÌ¹ZÈs˜Ad “Çð>“˜‘g‘k[ÀèŽYBìs5±Icæ›VÌø%nÌwk}ãf:_ÀLW3óm.j®HýËÈ•µÝóÙ·5^{n—¤FÜÉȈÿØ{Ï°ª®uï{R•ª"vQ{/(vA¤—µXköUè Ò‘ÞAª¢€Rl€ ņ]c‰šXc¢&{×[vÚ.É9g=ã?HöÙÏužë¼ûËûÍ™kÅÕæ÷¸Ë˜ãþý?­iüœä^wȹú¼pËiãn\/ØòâFÁ¶—_4½¸•ßtùÓ¢­©w[=>3,Ògè¿=nÎ7ø{D*{“AÌ óQ䜆{´'¿·!Û¶çߌ‡3ƒ,&HÆÎj:ñ›ÎÌ°K˜‘£9Æiv,3nI3Æs53Ö½˜¹4›qðÈaFxä2TÌŒàÆó«ž÷q=c˜¨xcX!¿ü´pÕõ5¥—ë?:µ¶õÎÇå;\*ïº|¹x j† 7«šÒ·4]!uÂÛytRóÃ…J×#†±C†Lÿ·c¹)͵#’èeJb™•#ñýNÌ ÓÑÄÏ$9€ÚfòŸ½ñ@r~£˜ÁVNL«QÄ7’GßIÌ@{âÿ|Ç©¡Œã´(fÔÌ8fÌâ"fL`#3Ê·š™uØØ¥â¾Õ’ÆÑî ®$Ž×}u®<ñn熺‹5›Ÿ+Ûtëâê-ɹ}q¹¨áìù_ßÉ®ûËýÜ–7Oswܼ›ßÚöEicÐoߥOÕdýŽYOüßÿÓ—ôäÂd´¬È\³'c8„>ìMF0ƒúL§c5ÈÁØ 3”ØáˆY:fÄ ‘ø”@fØ_fÐP7fÐ(OfÐŒfä2ç‚j˜Y±GMæl|d³ Û0dé-Ã,·[åÏ¿ÇE=î^[uu}CË'•[ˆïÜv‘äÒÄF·>½S°ýÛ{ùm¯äïøñA^Ûw·‹Ú¿¹U€µ¤M>Ï +'ÇyÿÖ¸™ü‹ìñ¶ä\Höa=‘qáÆŒrô!çáÊ éN|ÅRfà`â?»ŸIæ™kÇ,b† ]Â8 re†V0ãfô¬f‚ÇjfÛÎL_qÒxVÉÍÞ3ëžZ.8m±¨ó·¡Ë®fy½4(ØŸæ¿8UQ~©¡aÃùÚM_^.ïºz¥hë™K%[Ô7~ S|lð :Nê‹+¿†I_=/ úÆïù…a‰ëš«ýÙŒþ_Ï«'¶YÐì^Ò’fYˆÐC™~dœö™Â #ñxìÌ(f’g3Ö%œ;QÅŒ¹˜q þr˜ÝTò@Ì›Í :ä” +fÔ5CÃŒsKa¦Ö0Ó„&ÆyÅG&³ê¾±ž÷¡a¨ÛÃR÷¯ Ëߢ¯ ±Ò÷¯Ë£Ÿª°gkÄ·Çãïm길¦©íÒÚ¦„'ÝÛC¿¿¾¹ø~cÇÍ›9_ßÊ®k¹^¶ÙûµŸéŸü¿ž›9=›û2ƒ¨ÿ°¢9¿ý‰þÒÞÌä ÃÉ|ÄØ™ááÈØÛNe†Œòcœ–’ü8ùœéâº×ï7Œ\ú‘aòÉ¥§ ãíø! 6½ê?oãË~ó‹oZÏÏ<Ý{ñº/û¹4L\~ßàôCŠò/†Dù§«¡¯?Üò¸eê9ÔäÈ5O£v½R¼åãk7¾Èkxòyþæ··ŠÚî}^ØÌýô$ß½èóþððïÿŽmZüËaŸÈŒõÆ ï7=Ù™ê•ÌLà³™ñQõÌ”ü“¦S«>3Ÿµîs‹ÙeŸõžžyÆtzÁy³97-ç¬j=§ê¡õœ‚k½çf]îµ ì–Ͳӆ©Ëî-=hpr­}:Ð}Ÿa¼×}ƒ—ßCëÿ ñbÕï ™w·5"gÁyí%¹sÑíúm +AÉø,cÀÓÐx"ó'~be‡‡.•3ŒœÆ/þ_ìÒ˜Žüú€A$ìÊ éÁ š dÆ/Kf¦qÌ®’™®©cfÇî7q©½g»¨Ûà°ô<ŸÛ†9ËnæÃÿ-¬~ÐonÌ“éšõŒ³~³Ñüøýf‹‹oØ.©zÖßmÛÏן6Ì"ù‰·ß_ !ªßÞ¥K?]-õûÎ {Wáà¿ùÉåÆ«øc¿+å/¾KÕ|üË +þðïl׸Iûþ+Hsê×Péì¡ò‰W:ýé»1ÚOž¥`¿SàUC«¶ÚÄÞä{XÁL³ë=Šäú³˜Ž*fÔäÆÉ%Žç™ÍLU•3S¼Ó˜i‹c˜ÉÎ<3~Š3a‚'3e®ÌÌåªæ¥žî5?çªå²ÎÿíyÇàîûÀðÊÊýôkaÔWë5?^«TÿòKûão¹~Ï ’÷ž¿MñÝñrŠßƒsÀ ƒRñ…APÝ2„²Þ&JïçK_ß]ñ꣭á//lÑüðUµpÿm–êsƒŽ½ýÛJéÛçe¥w6¶Þº‘³±ìVíV÷¶w£F;Îý7ìÒUÉ=È<#çÙßj 3lØ\fìì f–W<ã•1óù|fa\«éü†ký–~j˜äù›A¥4¼[¥ùËÙbîo·rƒþëçUì?îf«~’øÃJÏ_ +¯ *¿_ :ÿŸ â_^–¼4„x×|2Ü/¾ÑÂ+ªÖÜÿŠÁW}Ó¸ï÷yÊ¢ýƒÕ§ AÂ7oŠc_hŽþæHSêãα_i T0bD¬™Xn¦vßC^<ûJ«ìüËÏ´V«1Ò:íÿuØ’q1È…7UMòÜ5ŒKüE³yë¾²]ÐnDlož÷Þÿo†ÿß ‘¾¿´Ëž¸Ý4ÌöøÎàðÊìû›öÝ,jlºU²©ønm£æÝ…¬¡øÛó¼`pñ:epö¾iðT<1„ª^’Ù·¿çi¹[+ýôõš€S×ÀàXc·Ùó_O}”ØÇÈu>v.ÎÔäî®M¨ï'töþÃO>ù6˜ßó£—Pzh”:wÏ ¿¨š^Sf)™a6cþÇZÐÛ¦ ɳHŽÕg3fŽÌ8·/ª}Ñþoùt¾„)5Ä+ÿjH +ü‹!Òïñ÷ \àMçÿ¹!@ùÐξ5ä}kˆSÜ4Hç ÞÊM/¦*ËŽ:(:¾sVßúG¤ðúûbõ†,Õ C¬ÿ¾ßç*«N8ª¶ßŸÃwÿè-|øNRoûb&Wwn +×z~®pì^æä5­îæռЇŸTËg¾ •ÚÞ-n¹ˆ5ŸNO>CŸ\¨Ö}w³Fqà Î\Èÿ?ÏË’øÅ>&Ù¾½;ÛQ¤ŽžÃŒšäÇLÈf\♺¬ùÒzÑ¡ÿá~Û°Ì'…÷Ãbïòsƒ¼ã;,ý‹ò¿hðŸ|™ûõý»O6ˆo—²¯_å^1(ë6R$®0U¬J3W•Ûúo9éäÕà+¿|\.=~–¯¬<:ÂG¥aòL•ûÿc ·ÿ76©Ö– Ë5Ì“}«Ñ^|/.]}§ýüFFÐÞ·KØý¿xp{¾qçwýà!Ÿù:Œ¿üS˜ß9ƒëòU{­F_Bëì=ìH̘2eæKëŒÜ +Î÷Y~Ûàê÷ƒAô£!Åÿ!˜øk­’Ä]þ§_Jø_Þ•úßà“ÓÝož«3wþL&0)Õ,èø+oÍãkEÉÏötd=iÚñêäþ‡·«· ²ïî¦ùU]røÐસh ìøf–²áì8凿yó}%r¼bü݇ËØÖ_œbâÄ2œ>΄r’Àß/nwZ-÷ÿ¨¿ô8Cå^†ºýÝB6qUPV³ÊfëE)̨!Î4F›Ðõt£?ìÒŒékBâÚàÙÌx–™§¯6rÝòÝP·s†)î K|ÿfг¿}Çÿþ¢TúûÃu¡oÏ7âÞŸôæY™pÿuÿÙ/‘ÜÅ¿kÅ«ï´÷—ên<-’N¾Õr9mýÜüŸóQ-2Øÿ®j¹á¬<ó_^Ê–kÓU™ëlÑÍn»<‹ÛûÆS8öZÍn»;‡-l,•ï¡]×9Njº±(xÏAÿéÙ!7®–ëÏÝOO|¥•÷=Wq{¾]Î5}1G½þàh¿ÔÍÖ¸ßfojC×þõÀXì;‘1É™â—Ä,J:Ôkù†É>ßR_®Àï[ƒäÿÒ +ïBÿÇÿÈ3ÿÆÛ]Í©B‰ 1‹Íµ_Ý>NÞúÅb©úÔÔ@ã2j(³`Ì0f‡2žË\®é²³æ⃕ÂÙo$õÖOfò©ëûÐýçû^ûÓ=ѱBx–9X²òŽo<äö—žbýùYBÇKwíÁ'’xçešæê“n÷ß—sõ§ªýìË_y)<|•®øÖáyËà¶tívó£»Læ­ØkºhÅ^3·Ø}½<3OõñX}¦¿÷ÞŸ§ +ïÞ–`/NÑÝúíÜ«ŸóŽ–*·½œ¡ìúižâ¸Á#¨û·%AÍý-re¦;ef Æ°Þ^LXB²eTNÁ€ˆüÊ¡è :ö“‡ðÙ‹í­[ùêÿªRû«¯úàß<ØêããØüõv\Ýîqü‘Ç +ºGóÜ÷áAG~÷P¯¿0ŽÏé̆˜«ÃÓÍؘ3Ú÷²÷¥"äÌ—ÉÁ—dpçÞŠª-ŸÏPUŸ«è|77°õõ ßâ“—i‹Œg¸ê™q$6¼”íÊ8‡Õ¹m¸7Èó¨aª×%ïËäqœøýŽïÇy–êÙ2põ®A»GUw8(QtÞwVt¿@]{~"—Û1˜OßÖ_Ên,ìwr ÖÛx»û0‹–0*_¯TJF« 5fõ¡ÆBIó0õ¶+3ÕMŸÌRoÿÄ™ßöálvû¥9ÜîWîâñÿñW2ÝW¹¶e”¸z‡ßýÖKwöîÊà·V‡y©:ø‹ëEºËwÓÔûßy ¯‚Ëk´W¤¯±ò-Ý3Àsíù!KÂ+L¦,ä˜6ŽLÿÞ¤ uè„ +Æ­èJ_'†å¾ßDþ§Jø7+R]2ˆA nÊÂfû äZ¦—Û°õg'ñeíĘ + åÖ` +¸z0žs\˜À¥Œ,ÆÒ^!ÊŽ+Ùë’Õ0XV¨oòïAÄo¥-ù¦s¸Ú“„uGÇ‹kŽ×t=õ ßsG'm½±@ÊÛ0=Bõ¡ñ|ç7Ë„–{‹øº³ÓØÝ?¸ëö}%h¿¿[­rs}ÐÁÿtcKÚ‡©[nÌæξƒŸ\¯ +yûÙ&é×GëÔ¿²U3¤“x–àóó9a˜ç“¹¯¯«"ŒñÒ®0 +hy4E|ü]Ž|ó› áÌ/›ºµßò¥>ŒRÊЪ&pëÏLðUë˜yc'3K&Íf—¹1!Úp“ˆôB»¨ÔÂþaÉE}õ¹µƒù¶ObŸ¯|úawò+·ïG/ÕÞ—KØÊNný>'áÐ7 +ì«eüâ©Úöb6Ûüƒ à?ýU[oÍäsÚq yBnãuÇ£…·þܾ·žª¶[sTõ—&*:¿›«ÕmCx`ñžÞ~ÁŒ‡k9'Æ}þRfÙü… ›”k!î(ï{¤ä»ž¸²ÉE–JµžAOºŠ—}b¾ zÑÄ]|‚^×Ò>ÜÒG00ØO–bÎqÕûÇò©km¹ì vBí‰Iè?Ñu< +Dï´ï±B÷ÑÍhÍÉÇ:݉aÒî7¾BË‹ÅlÛW‹ÄÎwØó©¹v?UuøÎ ¸g&± NVŸøÅ?èÊï\Àm’S}e üÆJÆ-Àç°avÀ†‡cüÃKÌ–.U0^J¨Ë4Q¥oîëá§a»¸3~Þ:ÆËÕ‡qâÌx-^Þ£E#'{z2n‹–1>ŒZÁ3}¸IhJ®mHIǘвî‰è Ò•ÔG£ÔýÂ?ôèíšc_kÕÝ?º³[òe»F°]?¸²›®Ïä2¶öW'V[³»~wÕ]~š*}%Ð^—œíƒÐÏÌ­=0š+Ù>”_Ý>œ­:ê¤là¬<ú›{ÐþŸ—5ߘ¡Øùvn`÷ÏóO\öªAtë?tAWÿCô?þ…Šò]CE[ú+wþ2Ÿ?ù†jz>[™·­?›³}›Q×O)G¹ÎϸŒÀ,ž1—ñ'óŽ)ì^6°ôtUýÁbçÎMç÷½ôÑ|pO#¿/KGŸ +ò¡Çjaïk®áÔT¡¸e˜”Ý0@*h&äµÛ2„[Ó5óPµÿ;÷É7!šOï%r§~T©öÿâ®ÞóÃRu÷OË„Sß ÒÕçÉòåçqêý¿.cS×Ù +iå¶\ñÎáªÖ‡.¹ïõº§w*c¾=µ]úöÁjåyƒ"ð#ƒGà–×S +OZÃø +ÉÆ™m}ƒN¼Ô5gÇj“Uá¹flH¦©’_iì¶ÀÌ¿éÌR’ðéëú²{¾uü ”‚ÀÌ·X K2Õ§WÛkk?š-wÞòæ;n¸²w–ˆ;Ÿyƒ¡?|G§Þ÷;_¹×Q(Ü:X,ë‰^/ôÇKkw:Ïþé¹ü„GÝ-Éw·…]¿\¢Ùý:P¬þxŠ°öÜDn×[7áô7²ºãù"öà^ÜÑïøš£ãùü:{®¨i°*¿m€²êÈHEýµñŠ¬Ýý}ô™Æž\‚‘Ÿ6×DÁ§û+#ŒØô-vªUu¶nK™Ñ½ú3HÝ4Ýnã¾p9ã¾`ৠbbÄébM¨.Nòš¾šÈ83žœ+ô_ô ¶ànéRVÛÊÉùÖè–öÜõ×¼®=òLÏÕ_šÆæ¶ ä6}6Sµç+_~x4´º”Ú8cŽØªæä‹0íÑg:~×_{cq;1`r§Þ)NþÕ#èèÏAÇ~]´ï§%êõ‡G«Ê:¨óZ°‰V?è)5 zó‰­ä«NŽãÒÖÛÂ#£ÑWª^‘cîGò0_…Ža5&Bqçp¾ùá±å©+¸ÙàQžÐÑ'<{à'z»„–[ ¹]ݸ=OÝÑ/Ο"· 37öç3kûñ9›ìÙÍ$Îï}ëªn»;/hÿWöø%wñ¥^øø¥Ž¿ð*DºüU4wòZuø7OþìêÀß–qñåVR¨‘2$Ùý[üÞ}tg¬ þò³ÕúÏoç_é”'þËSý¡!PQóÙ/u43eÐf²ÍHòs8ãé/2ª˜sõÊó ðdS.2Ó\­O3u]æÁ,!þsÉÜTK]o+$Y©B£Œ+äÄ Kmz¥ÕŒŠÉ¶ÂMåø °äîGJí‘GZáè·A\Eóp>«ÆNÝõ`°ë¥¸†Bfu?9ã ¡ë»î̵¨ð«gWÇÜù !äÜTa×/ô I%‡G ›î¹5Ç'Š•Ž|ý…B푉$O˜¨êþÉUµåúô ÜÍvªÕ»‡*«Ï;©S›ú¹{zÁy!³h®;ã¶À› PE¡ÏRWaáú£tä{^½ëÙbè()ëú@w¯?;Ûþ`!×ö`¡¸ó•7ëµG&kvŽâ¶Þ˜#z$|ðœÅØ +¿ ?yÉŸ~)˜¸€+Ýë Ž+µPð±Æ^žãéª`àÜÇ÷æS6öå󻆂ÅGöR1Äw$ó«ú[!”’Gí'Óз"t¿õ«ŽŽçâ +-¸”2k¡¸ƒÄó#$Ü2PÈÞÔã#kOLæÚn.ÚŸ.|ã'üZÁïý΃ò¶¿ >øN> ¶ýÉ"¶ñÜTÕ¾7®èB-‹=ßÂÇoôêï«?›ªêüy!¾?ŸUÞ‡MÌ·ÖÏîyëÆíz· ÜL®úÈ8®êƒ±ì¦k3Tß-Pøu©:£ÉÎ+0”™=~3Õ~4ã2f:³pÆ,fùòåŒ ³Ü›Ä6’ûIŒo Àx{*o_%£ O4a³ìÀ„A6X‹`ý‰|¸1§"¾‡‹4¦úq[/Í•:ž,ç;ŸºÙÍ%[ ë÷Ž÷? Ôº¥íŠU{œ¤¢¦¡`bÉ“tò‰gZáÐ÷ +nÏÜÞŸ¼ÐÆ7ßk(¯®¯ßå¤Þ~ÍY8ü*H>û"B}èï^ªš ØšS”¯\‚:^/PW©ŒÈ7SÊÉƾl„‘2,Ó”KÚh«Z™g>¦ 3}Ä8fáœeŒ×Râ7Õ 4"Á†×®Ù?A×vÍS³íæè®C^¡ŠÕ3A +¡z˜E CÐënç8ô‘’80B(Ø4H(mu`Ûž,ä¾óãöýàÉ×}4UÌi$xñbFµíÉ+hJó›ÆOgR®àú¹Íçfð g§ ûFñU‡Ç¨w}³„;ú} pô;%·ó'wnÍ1'ð2Tú…°ÂX’mÊÅVYA·A&þ9©Ô +L=uH¶8{à?ò+V÷ v «NLà¶ÞŸ ûó—ä#„”ê>|r•-_dÉÅåõ;R,;äÄn4Ÿö ×}8•ÝñÅ|ôV’ø¬;y;B>ñH§?+Q¾ô`ôû vÛç³EûÙ NDo"úׄK_…«öýì¦.h¤NmèË–t WïùÅUÝýfòb›ËÔ{Zb†5 …6˜rZšnÌVµßwá ;‡…d™.[äÇ,š2ŸY¾Ð›Ø¥Š TóŒZnÌF’Ú2iµ5Ÿ”k©ŠN1…%e¼Dd˜ñYöÒú3SÀô×UŸÑ0PÕ;8:ÛB#E뢳,ô«;G‹Í7‚õ6_°m_µw4×ùh‰Ð~ÏUÜûÌ}®Rõþ à òÝ4î©…#OT꽯ÜT\ÆŸ~-h®)㺸s$Ø£”¥Mb…ºùÊluçãEd>.¶œž)6}2o½±PÞy×W×}_-uÝôvÞöö~ïÍþ6P:óU°|çn®þÙõõúûŸ•¡ÿ>ôòù,éä# |®P°e0™»ÎÂWþèÅåþæ§.èâáÅ3K\–2lüzk¡ýÛeâžo}ÀãŠ;†²U'Æ°é[í‹z.ƒfk0¾ åFVìGõ#ó{ÉÉÕ}©ÖCΦ`ÊCW zxˆuú“×¢åC÷ÔàÂaÑä÷}ÁDç÷¿öUï~嶷í Æ,:hq¤®L®´Šw JHœ%õ…H|…·i ”½Á^ÈÛ<+&õQú†~BúF;!­®ŸœPbÍ'—Ûð$Cº!TT›`,fÕÛ£¿•ëzãÆu½pÇC*Ù1‚jÕ’:§éš ôÅ ]^h31$¦—õÃE8ø•¿|ê±V{ì¡N:x_Ìh¬P†ÐúÄÊŽ`=ñ›.Î{Ú <©“ø}o}¸}ï¼ÔÏb΀a&A&¥ÈZ*iq@ÞÂíún¹X~È º»A¤–AM ±j÷hØ(\BE JŸ` æ;»2Ãœ-ìͯÞ7‚ÌmWiͱñÊpÆc‰ã$3\xº™\º}8âà ÅVÐÀŸPHª´QG¥›yùIL€cD®…ØC`ºò¡)¦`Ɉ”Ÿ½Û‰²TðsM÷8¹ªk¬\}d2e¥¬;2žÛ|~&ÕÙù—öÀ}.üƒOb¢NK =öy¤Ôõȇò(ÈXKÇŸÚ+“t/¾XúârzåÀ*Ѿ+¢/z 즦±¤a·î¢îü~1[ýñxÕÊòÞînJfÑäyŒ© Àt¢q3¹ÌÚzĺDceXª©Ÿ"œøÍpF Ï2{*¢é’opóåå”[jVtKÀгêìù•é½·u|©;þy¬Tz¸t`*qMg Gߪ„c?©•»~Z ”uÃ^¨&9eÃG3ÄôºþAÚH#äzbÅA'ÄYÔÕê°S°ý¹UklÀäÒjûª +‰Ï,±㉯ËXg'ƒ7™Ý4˜Î0  1•p’©Æ±'èXaí‘KˆÄ¡ÓæáÐ12JúÈ9UýÁeÄyA,n¹êÀxðêH sëadí Öt‹(3*½ÆC°>Ø·K /@µ`¡§Úxa6ò.éØ3:|Êjk6$Æ„ ‰ëÑmc™ÄJvû­ybÆV{…&Þ8H$¾Qˆ4£²{!†ˆMCøôª>Êàxª!­Žˆ§×šgA!+)g£¤Ã19J Rfø°d3è‘:e \T?šXˆçÐaåãó,°N¦”cIŽ`ÄFäš i5ý„èÜ^j)–rŠ$°ò IU»Æº})¸‰âÎûÞBû—®Ré™”y·áƒ©Ðì„vŸvÿ=6ìãKi‘ç>Ê +>xKOÙgcŽ²M—œË埆ÉWŸ%¢O5<8®BH(ñe+M„Œw Rjú`­ŠÏÝ65‚?näºÈŸ™?~ã±4€QEdš©uI&>¤vu÷V’\šäšª¿­dCÀäüR°ÿùðT35ṁ­2“³jí…õ‡ÆÂÛÄo¾>Gwð¾¬ÛÿTk>˜BÙ…e-#ùýßøɧŸógÿ*1xòkŽ¥qúd¹Mƒ¹©fþJÝYôÕCNkîå£bà©NÉļ:Ó -¡ÍÉGÆ™‚‹Iõ*‰} ¥PËŒk*§K/ë+¦¹TØ< z`i6J¹Ì$‡Ã’Ì(¯ªöÄtmÍá©àrA³JŒI4§Nlúl¾\sp2ø†=ú†…ÖÚ”5}¡× } ¾õú±ó¶;r30C©nvÑÖaà`jŽ<ÒèÏÜY©9ü@䛯ÍÆ6G®%tSÁL²ì…ø ++6"Í ZRzÕØ„a^*¥0#ne–9Õ*kwVUتBH~BüØ¿©õh,ϨëÖ»¶¤Û‰êÍ”6 ‡îÕtÅù“º¬thu©IŒ€Þ–°jm!³¡?Õ0(nsÐVš@yRXçl<9]î¼å©Ý}O©Ùq×SÜtvìR&Ü3G<¶]ž'îø õ fÏó@®óñR)¿™\§{hÊ°­æs{ôsBÝöt>¿¦{”\Ø2 ßÍg¹'™O"#Ä–[q+‹-‚4 Æ\T–9‡k‘aæ£HÍãθŒ›ÃÌŸ:—ñp—3ÌHgÂgÔÛ kŽÒkú–*ÕΨ²Óæ×A»¯ôÌÜ'ªÏ>ñ¯Ø‚˜¶Ô~Ç,fê›Rò­Ù¶› (ÿçÜ«Páô_4\Ë‹Ð’ÖÛ’¹aìGj¯€ ž ò]ÏÜÙÆ Óà'½¼XÆÛ[Á@AF­=t§¨Ž4™õ¡ÆàqZF-‡ƒåMщyÖRR¦šfF™òÄJ-WéZ/.“7~8v-D¥š&n½:_l»¾Ü/© v ͵¶]™Ç·¾: ºâúaÚ²£  [t +X‡|ó•ùÚ½wUüžo½„U•¶lXœ)Õ9¯Ø>Z³¡{2tÅ=¯|…îW~4Öw=q£,¦ŠýcĘ +K1¶Ð’#óOEÆ\i©æÌT¾åÑ"¹þ† XqÐQØa- l"q÷×^Tó”ø1¿u¨XØ>ŒæëµO“¶?s•Û_xéÚŸøëÚø ;¾\-DMV½TÚ1,Cpô°Ÿ|c¡¸ËæëNN7_Ÿ+·}½\î|á«ë¼«麭Òì¼ã~"™ËÓ4%Í#tEuC5õ'f‰í×—É­7܉mºÐœŒä6BÅ®Q$ÖM¤<½„*[hbòm‹{ÞøIݯ°nuRð …ŠŽ‘4î§?½fÿX¬Ï…ûF° k¬øô;.©Ú†[‘m®CÜ/g-\ÊàžP m-w°À„]Áñ¥×ˆÔµJ•Èð‘ñfШÐÖŸw¡hiÕvT›–Ìs\ m×-qËgóä¢-CÁ‘—RËlézgév’wÛj³-ÉŸGP^ß‘× +áø+^µÿGw!w£=˜Œ +ÍJÛzt…´ê¾à¤‹kŽŽ‡o€v"¸ôRT‚YpÁæáú¢6G}ÑÔ`|üx°‘ŸÃJ!Fà1"n‚·7xÃ|d²åO®é«Ùzi¡Ôt}tYÁ¥ð`¿’|PªjwKSÝzqŽtä1§ÝsO)ƒÅ­5¡š6d\Bº¿5]·}‰_] t=X.¸¯7œœÌ§—Ú€á/¦–ÚBë?ÅÄB+äæX{Jw:‚ùŒxΘP¶o”˜Ó9”Ê1‡Æ‰}Áåã;¾w·Ü›OlȵŸœÛ6Œ²ëº¸³;n/@Í Í,¬‹Ñu¸ò=£`óºÖûž`½‰O—‰-_.ö¼"¯7tý 5#츹”íº¿œP¬‰Pÿ‹ë\¹ßIh}ºD·ã¡Ðñõròzwpô95ƒ¤ðUf˜÷XsÒn<1Sè¸å¦ÝsG¼ç® i»íÁ7>š­Rý±©`ÝIeœ¨îUå5]ßúÉÝ_+…ñà:^,‘*ŽŒ¥ëÇ•ÝN”o·ï¹BâËHíƒù—§Ñû)u}¹¤5Ö¨uƒH Ýu…´ÂD)mS™¼?åHB3†ØJŒ6ö÷VSÞ1´UÀ/ÔUŸ˜¡/ß5NJ[ßO“´®¯&¯iˆØzo©¶ýŽ·Xÿ™³6wã ÊBF|ïzÕj[hœIhgq[I^vø…R{êAeª­Þáð§vò(^»ŠøÃx) LÑæA8_]AÛ]fý 0Põ[ÀƒE¬¥š$Þ‚‹Oµð²+úÉ Ÿ¹h·ßó n¹ã«iºáJµ¼“+lõ¹›‡êÖ˜¯àThldZPlò½tY=,nqc÷DéÐ}¥æâ­ýùë‰`qû¸ù2þ|‹»ó†§n÷—Aš]÷¸Ž« )‹5eû“¥¤†žæ êíªb[.ŒäV$ÿ¥Ú‹¤ÎàI¼›^WÖ9±¼@aí±q|ü:kux†êè—hJöÒïE5.+÷G®fÍ#6›„kÛRK ÆÐåƒýk·ßõз>öÑVœ‚ü—•"‚øP#qšWÐj qY¨?Aë9uƒ—äz›C×PÛJ®×öÇ~Úª3ÓÀQÇ=$Ä1NŽ1C“Í´©¥}(ƒsËÙ9º¶{>Áí·ÁÜçzG\ñg›¯;S]„ü¶a`ó­ÏóõŸÍ*Žj/šêèqݱ‰Ü®G®º37¢ÂÏK×½±Buà;_wnš°áÊt1§•úXhÎá>¸ºÍëzÐGÿÚbçóåÐ=ññðe¼<ˆ_UI$ 1úSoN—Tb+D%š!.Rݬäê~ÐJÁú;Õ0ˆÉ³À¼Ó¦÷‘kHc\nªEüWÇ/M÷=|➯}Ùv’Ç@;kE©¥:<ÝÚ²¬gŠ±ÆàqëËlu1ÅVÐ8¡LÙ° s‰2m‹­)Syíž12øÜЀȨè nèÌèwÜ€Æ +Õ6Nª°¥º…¥»Ç§WI(´…¦Šfmç˜?YÜšªÝã¸îç^úÓ×¢C®_,Ž?`3¾Ë•LNÓ¶ÁТ,îu‡ÆS=løO½ä}•Á»ª¥Ž¯=D£©v‰ÙTg(¯i(´³X]ÕÎÒþ‹v»ïwÔ‡¸¿èÏÑ\©G;«œjPm›ÔBhSPmxÊ¥íþ3lïOí,mËÃåòŽ§Ë©“9®ãYb[КÇk´ÐjÈ©€|ZSÒ>ßIŠ.´"ózA_^×|o¹Üþܺ|4^g¬#Œ¨~ 4ëöŽƒ¡Äš}“¥Æ³Îš¶;àêJϽÀxZ/%1rç¹úÿ‹;?ìŸÜù®o=u'ž†‡_¹P¤Ýý@!ÖšH× ¡óP¶{$Ÿ^oG×kNL¶\œƒµpUdš)XÇ2ÉË×usì·BÎIõŠ¡ƒ MDm”±ZAs=Êæ^‘l]$ªW=èˆTsM<±›ÌZ{°Ï5»ŸPí¬rrmÿÔÎZí,’ß%ÛhWof¬.—Ľ?´³Ä¸r+Ƀ–³ /E‹:òYÁa&Rx¼XË¢žØæJØkµÕÇ#qŒ®‰¤VôábVšBŸ LoʽÞr~eqCg‹Äi<‚+ûB¯.8¯n¨vm÷¹ñò< ,îuÝã¡¥Ý}W÷²„<’3%”YÉ1=,nª?Ô|kåÌBóœk|ïÚ#SÁ¬Å~4ªßŸcѳœM5>ô±EÖÐŽÒ&æYõhg58ˆ{øa}PÊ€v–žQ* g’Ñ :]¸ï½0Ä!m|¦åÚYƒ¡Ey¥jgEæõÖçï¡©;ç¬/Ù7NKâåð¯\mIu»r›‡R ÅÜuöбÔorK_—G|!WML©µïºósñzûô¼¾¸çõù`VþÅDb«™•ýtk»Æ·Ýð Ý~'ÖMwþÉçÿäÎï¢úŸÜù‡ËÀןÆÞ‹çÄ4hhjó·×wd£3ͱ&Á®Ìé%¥ÕÚ!ÆC7+ 3Rð!F,tÔJ÷;Éõ7ç!Ï•sÛ‡"þAÛÈ1W !F*•†!vbJuXW•õ¡Zìåý´EÛtu=zm˜ókM:/‡.ÖÕ$ï¶ tÎ~,ãïáMµ³Ô’Öˆþ©5 +kDˆ‰Š@=è¡"ñ%ÊñI™Ý[k¡‹É²ÐD¦õ’£²{ÃGC‹›êS6Õos€ÿ³-ï©Þ¹¶ÒÖ .Ðø¡|ú´uvÈ[µ$×'~`’vÓ͆ÃS5ëM¢šmåÍ#…]w<±÷k¥`qKéµvyOè›I­wÜ“b PSd©+´Â¾ªUÖ9 +ë-Tû·°ÓAH[Û‡ O4¥ZN$fÒù§vÖŽ;ËäλÞXKùS; ñV“¶±?ìYέ¶‡^´³ —ŒÚ쿵³Jz´³ô¤Þ‰3E|ѧ×#ÒÍ1wÁð×®ª±CŸ«+Ù6‚ê™ål¢Ïß8„øÀÁˆrxv/ª½E^œ±a ^Þú¿¾u¼¶|Çh0·©frM—æëÚ.¹Wɫî3ôž©ìšÃã„]¯=å=ß+À‘…v,´ñèëIìÄ€Ðô‘³fí®q=ºë)¦ÐJ„þÖqÏ+€“…i Ö0J)ʵ#Ö³ÕZšØñbÝå™È%åÄJ› e(à/0þ*FÐG›èr×Ô—mtÔåTÛq§òЬP-ØʃcÁ°ÇžÔ¬Üï}¤† ³¡7í¬@ì•”‚¡Å +#@;‹Ø8üÕÎò!ŸGÐ~×¥­ï¯M/é—eSjF9"É\ŒH4Ó$ø í.â“媮1Ð@„†];‡®YË­%RËõÅÐwÕd6Ôu8B£Bn¿é<÷9SÍMõ ׶ŽÚo¹!¶P„J’wo.e’s„.Gç—$ߺ±L_°i¸.¶È*$«qHp©ë×í™ Ûó%«ßO£ÙýLɃÜ|Û…jgQýöýã¸æO¨v–ØôŪUÐí,?ÌEm¢±T´Ë¬nªM½v/ÕÎÒA?ÚY%=ÚYºÕÎJüS;+½—c‰¤¶Ô’¼9/´ã‹¶;€ï ý ä$ÐÓeT’ùÙ8 Ú +ôõ¤î£ÉëCVšp|„t©3Pݼ¾úÄdú€¦ÉKz8Ç»ÇhɵÔÄYQ}²˜´^ÐüÖämÂoþd¶¸ï¥»ãñBèr!Ñ&Ø_Γj5Z'ħõæCÃMü}4ŒŠ'5yd~/<'PÉ1j}˜±œScuDÄÔox_¬a@wš‹ ùOþÖ!RÍ“ Wmn?O–ñóaäÛbLñÇõC´ëöN€–/Í+IÜ–áOÖŸKj9«Žjþa¿·ó‰›¼ë©?ÕÎ#=.ËBýOí¬Ì?´³Ò,ôT;ëà4MÝYgmje_5j„ï½mÜ+Õå6 ÖÖîŸ\Ö>&8µ„ê[Ózv¦º1-Žx.b‡z\5'fèÖ™¤-Ü8¾Xƒ×‡Å˜B :÷RÓY±í¾+Ö×è=wh ×ß»i°6µÎžj8Ç­¦Z÷úÕ­ŽrU‡î_¨]?äpMÅŠG16×B-F³Áƈ4ÿÓ?»ÆÞÏSd‚TaFbxŽ¹.¾Òõ­.wã`hžÀ'KŽLÖvÞ dÜ«X‘ß>_J©´E,ät‰&Ju˜‘{~HìA.…8¦+hAc$‰kTgkž¤nÃþ4¬—öè—ìq6ž[ß5—ÐxzttÙ›S}°ÂfÄàŠfê´ÕǧkH­ + ¬oöh +×ØõèP‘Š<µþŒ3´ßPMhð\þ¹&ö@ ö… hãzC£yˆ¸éÄ yó•ùÈq_ÚñÐEÎXj:µMhËäÑX4Nn¹é +û”:_zã~¶óž_èžÛ²Dü'téÐOŒ2¦:Ðe;FÊ«*ûàž>ÆDHÌ·Ä})¡áã™ü¶ës¡¥Û÷H`w>w…v–¸áàDô|Hå{GK…ÃÁ²èšó¹‰T; Z!XÏZOì³²“œ9_hg•öhgÉ›?œ#6]š‡A×[IÌ×69Ð\“ø}h¶ ¶žu–ëÈyW¶’Ë;FQ­ùò=cµgæH[/Σº¶¸ç’ZÑO_HêhøUuOÚn¸Éí·=øö‹ùíä½jOL†žt> ÷¤]wjš.{Û!*ÞL®=8kÚwyäEtm£ë‰+×òÉ\ªïDj,Zk¬;>En¾¶DÞreò$…*”áõé¦Rh¦9Ö|´É«m¡ƒªÍ²Ôe¬³—v|áÜñ¥’jÉäÔ D.À“z(HIêu–ض c a„ucèÑ`]ƒæ`Tç4ÏRWÐ4Ú]¨ùä¢6hnÈå»G£Ç„®3•t;‰°W¬_&XÊÉEÖÈè ±%MõáɸŸA5ÞVÛˆ™4ßG¦©8:^ÜzmÖD4壡ùø-m!\WÔ£Ô/–lÍjÚçReÕ Ê®¦¨º¬õ¨3ä¡r=‰Û¤FC¾Oul•·;ŠäÚÓÚz¸Ùä<‰þ¡én#m86kÚ£µº£·ôbÇíeRp‚)«’Ü¿¢5E C©ÆtއŗZÓõ„ÑÎÏϦuÛê¦árÝ©™ÈÇÙÖ;óQ¿³QÙæ,ÉñÅÌæÐJÓTþ¡ÅIê>2GJjg•µ‚¶‘„9µíÕX×–îrêyߎ°Z B‡ºzïx©îØT±é‚ ±±ùRãyš³Ð5«êî‰xª WAìž|rêÛ ;Eæ¨XCjùŽ;K5‡îðü¡¯ý¸¶ °Ç÷ܵëOM£û&³ŠúȇîªCO]]uòLRøáÏ¢ô»o ]_.#õ¾3|‘¶ ÕŒ%9rí×tŽÅ^7)º°·¦âÐ8Z37]X Én¨Ö¯4HNM5¬Ww9BwK$ögÅc– &¹¡šQ«ôŒ•Ý ù1ÎKØúé¬Kz²—šÓQ-OòYš5NзÂþ%ªIT}f¿åó9Цís µ,Ö¢Äè83hmázjj?œ.Ö|0kùˆÑbL§K6…Ž2î¡k*§ú(ô^/4©ZFBg kÛè%“ëÎ;ãžÕ<Ä&ì¢òÔ$mÙþ±Ð¡ÖïpÄþiÓ…žÜ’Σ=ãtë?˜ +»§cõ&èq•4ÀÚµÜyÏ—øïiRJ±“k!†¥˜i2ê`_xàE îðCf×C…Øtk!ÕìÁÕ>1Clý|±Ôòù횽㩦94oIÎGsÖêñ¿>@S¼u4°ÄÍgg󻞸sMŸÍÁý]Üo¦½ŽqeV4&­?8 ~¹”&«¬ÍSò7Õ•¶:Ò{BÄ¿óMæp›OOÇõÎ:êyµ&ÞúTS…Äêó*Z±‡e<Õ Ây“ü‘Æ2ïÅšƒD’Ÿ“ºe6ò •DüÉC…è¼^øÞØ{&î~ê @ëÖÛ¿\$nº8sñK\×å$îx´ {=µ +bý%gê«ó6DΊ÷¥>†Œ%ö^Bï ûhÜÃÚêþÖ«nð©ôÞth¤ ê^ÄX¼¿™h†=X ‡N‘²ÊL­ +îÑDÌÝ2š*8'Ü¢VšøúœVÃÈ«ˆ]àsæ†þ=zæNÓ¬?0k¨¸‰œQ“RbK5±HŒFŽ„嶺è¯i<7ë3š +bäûi+M”²`O„_`©É‚Ž%yø¯ü–¡ˆ“hÙ'æ[aýRnøx4¨~´¶  —»u0êlz¹€Œ/4È —Wwd*òª[ ÍöòN¤F¡ú¸w_NµxZ¯/€v^Cë=ÔªÄn‘A‚o{²„ß~g!|žf=É% «„X»áèT¾ã±›vï5tbp¯žj}¥WÙѽ'XkÄ ªƒ¤ +’×B߇‚îrÇÅlëçóøMfÑ{:™$vÀvÈëÑ7nFïb={‡ó6éÉ‘›G`×úÍäÊ=c¸ð,3V·Êµt«s@NÌÝHâ̦A2É?eì·ªÚ;V»zÓ0z¯lÓÉ™bÛõ%Ò¦‹.¸O/„ç›+¤•FÜ +ËÊv:rÍŸ¹àýéýš|bE­Ã0Ǥò.G~ãÁ \Ûµ\Ó•¹ÜÖËÎèEãò, )ÆgYhÖìKõá°‡dõÞÑòJCãW[i³¶ ‚V¡ZÚ$•ªwzh2l’Ô\Ö¸÷ÿ½)MR¶•¸ªÒV“QÝ_.é$>ªu8]ç#5­7Èëp /­ðS1AjŽAÚõ.®;ò$Üo•ˆÍJ ÙÔ¶¡1M®™¦¤möòÈ y–ZÄóÆÓs¯@O õ öliË»œ°wó +ß÷‹5™[¢v†ÿFIuÓÓÖÙÑ=GЂÏÜ`Oâ˜=óÐ{%>EÊnMgª'ŒýŠÍT³[‹Ü:·X£Í©êOµš¨þp&ÕyÅš ÉC1Ç¥§zü´O‰£:WЊÅ:;™cš ríJˆ‘úylÔ@³…Ægb‘ +ÍÏ•kÉ{ó¤zbÐ…þ0Öy°NžYÙÞ+%9ôÙ4; NÈ$ù6öÒVë¶vß8hÑQ½2ܧË]g: Úu˜Ûô:À?l8>™î^w` ö»B7„Ø/ˆùEsrmá¯tE­#h\ª>:•j‚“s–ÖîMí´j·¿áÌd¾úÔD1³Ñù=7ì{iù|æÕØŠN2ƒN¸ªû«%ì_JÝ_H{žùñµÇ ÑæèAþGÆn,tzH˜Hç#´+mé÷¦óúätÃûãýñþx¼?Þï÷Çûãýñþx¼?Þï÷Çûãýñþx¼?Þï÷Çûãýñþx¼?Þï÷Çûãýñþx¼?Þï÷ÇÿÏÇر ËCSCmDo›±n>s‚ÉßU¡«R#SlmÆOwKI]ž“˜š’帿ü9ŸåŽ 'ø‡fE¦Ïž<Ñq¡ã7Ÿ™3‚É È¿NtœBž:cÚ,gÇéªÈÐ8Ç =oêHþÙQ‘“@~©‹ìyêBò°™ê2Þìi³]fÍqœ7ÃeÆ4ç¹óg:Æÿß¿ž3oÚ¬9³f:Æá×óé_ðkgú„ÿñë?ß$îÿýÞq6+l›› ›ùŽ&:Š‚Í G·H›äžKá¹ çË"É7þãº'Ît½l¦/L tüÅ@#=Ýä¿©ôOSç͘9óŸ_m¶£ÎqæÜyŽsg‘'ˆ+þ§ãßþxÉ?æ9:“Ïž9üoù#}¹ÍرôÛa8:Ïœ;×ÅFô±ôö÷Æ'@`ÔFJ!Ú9ÌXÁ……(¢Œ¼ýdÆs¹ŠñõÓ0*v…‘:²ÐŽlT¾9•g®ŠH7Sj“=ÜÌÒEÞŒ§Äò±Fúdã@6ÖØÓWd–»1ÞžJô3¥n…±*r•YPh’ ¿Ú’]Yn©ˆÌ6óS3Š0Ä'uxª)YÚK’iêL?Û7HGÞCÍx,õ!?ULmŒŽìN÷÷¡Ï ’bŒø¨,sPLtÙÕ@+Ò5@=º\)¡7®Ø +Ýδ«eÕú~è,Eg0v£SWÚ4]&è„äÃ’M5èŒí$.×TXÚ]Y{l:2Ñ=&Çç[Rúù©Y™m¡I¤~HR”J‚ç£ûhEfo9j•¹>¡ÌV—B>?mh$BR¾¥"Df›«ÑMÌë8M¸1HD  +Éfè&DÇ°™bJ¶Š“.4ÎDJÙÐ4|Lš9Bé1 oI±yè”=U͆©å0#ø±äü³-µyµƒ´Uû&êŠ:F¢ 9Hc$„§™ª@Ͻr÷X:lW÷AG(®gÊÚ~”^TÐê )Ù=J*h*¤UØŠ©µä÷uý¥¬:{!º¨w.ÁÄV)©ÐšÒ2ò·¡;À)­¦¼½&è(Ú:]LØ9OwªƒÒ@>‡Ž5á¥c•ºhc´A`VE)U¡F~J-Ú’] R%9øk˜(x³ :GÕšx–œN®)ù;(˜Ëýt–‚è*Ä”[r1•–lX¦¨Ý +K¡ «_iê¥o šAç´¸ª¶_Px²‰o€Ì,óR0èl Í2—júH©ú‰ñeÖ¬˜h u† }ª‰yž;¨¼!F á{€F¤N7tI¦BT¦¹ve‘•.¾ÐZ“VÑ7¸ 67R“[7;ÍYr¾ä;k27Úkó·Ó·;‚b Ë¨¶™‘’¬²ªìa?R\†“a®ÍiJ®ï0 ˆ[‡k7]˜¯©;ã¬+¨‚çHÄv¤„L tP*II+íï¡4„Íg×Ñ'çÙèR2­t™ëìA+ 4†U«mA‹BW™< c"„'˜Q"dl¡¥˜R`NJ}þ–áèð•SKl5Qù”T´yº­´™5ör\¾¥°b•9ˆ\´ ‡Ø>`*F&›ö É$¶‘^ÑÝòºªƒ“55Ǧé26”ã ¬ÄÄ|KØ9:ø@"BíÐËjH;âJ­a›Ú¢ö‘”xµù“yrÓEè`” +z(Br‰µZGÆ‚Øí:N%öŒÎÛòÎÑ (P%·„Á„Òb"3Èœ7Rrz¤U|?Zň‚^è¼â+¬AßÃû(¹£ !Úˆ”É9 [YJoè/E¯¶PëRLð R ûX[l"Ÿ•èÒëéªiJGblVoÍÊ2+V›d¢Ö?œhªY¹ÚJ›¹q€.e½6>ÏJ›e.T}vÍ@)]Ùæèp•ò6Ð.1Ð2Ð%OÆÇ’ªbq džÌõöÚÔ*;tRŠ^zã:Ny›Ë5§§£Ë]ØèBÕd‘ë +úñ½èÑU쟠Ûpj–níþ‰ZJqØ9N—‡nø"kê‰ÿìéØ%>™øLtÉÀ®hG*+16»7:Îa3ºŒÒ~èZ¥Çè*)Ù9]=´35­¢µ7â—uéëûkS+ûiRŠlàçð^”ˆ…1Ï­¡]£´Ã{í®±º²î±˜kÚòc@·êéìÛãD;ÃÊ:Fj [†ƒ²£_½Û‰~ˆÉ…ÖrQópt™ÑNçŠÎÑtó¡#¤ qˆœS7€’AîŽ+°¤Š1”2Üâ€.59¿n&muÌo]áWAýÂwåõd,aèÔ!>ö 2…o†.7!`W¾ž +Æ×_Å€ÞĊĽy&À_Ï°2y=ñI|xŠ«‹2†ÿ¡ÄèÌ^°øf6t¥ oŠ®g?ˉÆBdŽ¹Sh¢->dyØ’i†._Ì-tGÑŽ¦Äò×÷q~‰eÖšôêþ ¨Ú…&µÆD?Ÿå^ §3Ö c&ºØ’ I6™ƒPIì¥â á#´±Ù– #hRJûÀ7‚2*®Ì³@7¢¶r‡:–á`[r,±O2ž´ã©pÛ0yÐI+Eçö¦ä°Œ´»O_¾{í’&ã¦ÍÝ2¤'/h©­èCòЄ´kºÆj×ߤ]s`|‘.c(XbT’íØ"ó¹…³ªºRµ9ëhV­ë'gÕ „È@1@<ÌÛ„Ž³qèZÔ•[BG,: +Éü¡Ô7JX#ßöÝ04'œæ:R5ëM¡Ý¶ f£ cèpB>C)9…ÛðÞ ‡£ÛTLF×_‘µ¦Ø:Õ`‹kvŽ•YW±w¬.¯Íöä³a.¡»IN*·9žv»ƒº»ªÜ–Æô¬Mƒ0W„rís,Ñ¥G}*ñµ 6p¡IdüVP"0|ýÞòtˆãz€|®õFPWcH\XY` ²¬œj*…e›ƒ¨Oü"§1Fþ‚®E1@`mä7cÓ@äB ‰P•½uíþ#ñ¹ÆÒSòI—U7Ò˜ÒÊújÓ«úSò± ø(SˆÍ #>s(óÚ} òTV¥®dÇ(mI›#:wi#™¯˜— L¢cóä %9´ŒÀ÷¤„©‰‚tG»‹·ÑEØÆ?»S«O1ô)qݱ bƒúDü„ϤݔèB,îp@‡)íœ$¶j¨á ­ôÐ̈/'ׂØWø~Ð_Å”Rª†QÑíú +:!‘[ÀïÉI«mÐYHm …Ølzµ¥%âw©%6ÜÊüÞB8ñ} Õ¢›~5™cÄÓ.{ÐÂKm@¿ã‰ÿbWõµÁ¾„\Ó~ú/H|Õ€€›iÑÓýI¾CÍÙétn‘¾‘Î7òoðÈmäõ§§ Û>Ÿ/nüh:¥ +WŸœD;×ØJ9̓¥µN›,–ê®9Kñ5¶ +üt¬‰&»~ ¦öèT¹îÄtt…ÓkW¶s:ïA£”C(OÆ“ü2Œk‰_d>js·Õ—ì_¿#†¬0ýˆæK• <œŸ­!>¶©Ñ5smi×%GäA´û”Œ7lt ÚIŽY\2?(1…äBrB‘:O)> +ã•RÕ×RŸGI㕶˜GRæ1y?:Ca3 "‚¼DìôÏŽ||ÚµLrH‰ÄŒùˆý™Uv¨³@% äÈ Ç§€ˆM»U‰j³6R_Iëí¤Üõý¡f? +Ú ¥ü¯;2*âê¶á”Ì‘RfKÏ/¹¢ÏeÝ£A–?ñ]Ì\T2­±4%m#¥Ú“SÐy,¦ñ‹.è1À÷Ñ]©PT[¶×IJª²…OŸA»Í‹pmI𛤀݂²-ÄY¨¡*•a_‰X!“ùOí³¢Ë)HŒ2R‘X®Ð’Ÿ¤VÁŸƒ¤xc©¿Xmâ¥!üÙºæä$Pyig뚣 XíbÎ ù1ýó†þrå±b͇“A«ó· †¢hĬ{±pûP<øü¶!PAѪjR‡A ´v1¹Òj*}¢1rRúàIM¦'þ;*§rPv4©ûS; ±ñQKê ê/AïK(´’sjí)Å¡í©­¿c²-hL$ãËm¿»}~ã™) ¼Ã>©(kw„A^ Êr+RŒ€¯!q«ìy"(Q˜…œyÈ-Z2 ÇÑ8Kâ‹Lâ ü0Í9ˆ-Su’üú´‹›ä-4‘‚R0ãHÝ›cIs;¥?~O‰* $‘ù ›„¢Ý¼ós +þY.oEIUäßèw«Ø9 + šó5‡Ç#~ƒ>†ùŽÏÁÜ„‘Øs eG¤™ažQŠùLùÙR3Ç™ fI¼ã¡¨‚®zêC›‡ –å‚“i­G»ÏÉüÄõÓd­±£ +$ÆJ1¤æ 1Iˆ%ó 2Ëœ'ñŠZ°OiUu_¨Fà:£k]É’Z…1ÂZòB|7!u{œ±JŠ&uÈJcí ðC× Ÿaœ‰ÏBL&¹°…¦êØ$Ì/ÄfÐ_¥”u}(™”ø~ä‡Bh¬)•dÊF$›Òx°ªª“eÚ-†*R—÷ýÒL±6!$”Zñ!i¦JÔëš…aŒz õ®œdz#¥Å’:]ŠÉë šU¦˜Ô¸¥dŒ§Uì 5®õÑ":¿àÇ +6 ævÜY$îyíËîû›‡ºõ«ù `RR?l0»q™b$i Þ&lºä,m¼Ï#y5T (‰5µ¼Pl‰¹Û¤>–Ì-ê}ü$qÁÇÓÁ¸³!Yf¨Ÿ¡(Û3ÒÍ š4+EK±E–ðÛñ)XÿíæŒÄÈ 8€ ‘µe ™K½@åVä÷æH]Dj¥:˜ ’Ã(Q’ü¾O\Al72×ÔHÔë ¼sšPù@ï㣲Í1ÙU¦tŽ‹uKøNRï™ÒøGã|™ Ôò°€u‰Õ#£Q_ +Eã…9”pºjFRゾ ì y£æýÕŸo¸é E ÌcÔq +µž*˜B‰Ä7aÇSÄÔÊ>ˆE|ùlÐQ·Â‹Û¡:¥%ñkOú¢–‘ÈEá¿A &õz/m2É@ZAÞº4ñ‡ˆåÔ‡‚êú-­×+ì@©¥*Uû'Ðú·°ÅA[²}$òX¬jsjê²ë{ˆŠùuCh¾¼¦Ó‰oûr1U=ÊX×ë™”üPÑ4JSµ{¼°é³9|×sw~ç×˨²cÓµyÒÆ ³@3”c+¬k¡nÃÅäõ‚"òUaë5©îg)oÛ`ä‡BLnoÇ…m_ÌçÛ/¡4U¨k´ ó[{r„µ§&‰[nÌ—¶?p•Ûî¹ËÛ¿t©¤‡VHâJqópÔ¥”ÚZ%âÔOJ»i~Lšu'&Kµg§‰›¯Îõ d¬eÀ.üØžzØæUà u?¥Ç¯Ìè|Cƒš“ÔO žÑ¹IìëËéCéúÍ•\>‰Ëÿ„Îi —)Ë"Èõ]€\ +Ƙ¯Ã"ÈK/à˜ +øÑ&lÖФ!Œ_±Ÿä8Ô5˜øwg9(íÞç¦Û_?í0N Ó]Ss“ɸiD‰‹`R#LN‡éÅ´MÀtÆ +ó—Kק@~•¾ä>&€sÊ6^÷W‚’1ÇŸ`Ò´ÿ£u ¶'²I˜Xö â㳚Šÿ F‡Vn§]R~‚¸(²žM‡<Þ@$Ô«‚r㑼¾è7•<†cÞŒsÜ“”ሣ*Ô©˜šÝd\ÍF^°›´r +ìÃ}‚Ø!`–(ðÞ:Pº€‰BÜä4˜ÚôÃù>_÷[V²E˜Ð´‹›&vÜ~,uàôàë4ðuˆ“7Aÿ¯Éö–² +šÁ¼7€µÀ‡,LŸõš$¶‰âë='s9Fìs!^ÀiÑÕ{Ë©€çëDžÙ«D—ÂfÒ–—GÁÏ9E üÚd6‘CÓsñ½‘\ Ÿ Sl…@æ”"La 92!æðp^ćmÆ@MHz-ùO¾~eäk¸\!öeŒGúb.GÜíð…Q0…lSy¼?Õ Hù³ Ô­vñÙޣ ÓnÿRƒ`,FSæƒXü<8ègÿ©·¤WÂa"ðs¨MI°rÓ«`¢2øO—„…0}•›Â ¹¸_Î1ÜdÍ?§îM[c^‡ñø[n‚Õ_Ÿ ^7½Ñ)j¾èZÆRÌWr¼ÙïßÐô©i\Ž8øïÛ«€Ó‹|²×€O$#‹¶Ñ¯×Ó>€ýÁ¦]'“˜?ÐG¬GqÝ’>a_eê·ˆ /TEÚóþrêŒïDˆi»ŸÂÜÛ9s¡È1Sâ4Ç%qL‡ f tFùc^‰c6LMJÎ*‚:(HI¢*÷‰cë4@%0øP +€©æܹÆqƱ+â +šÇMùãð­M¤ì(€€ +¥0õã>~Jûî¿ø:`¾§À×9U‰ãøÌŸ´ËMÐÄþVøhƒØ5NYâ¿óàÅ0U0(Lbçò5 Hòj3íûd ("‚¢3ÇÛ0W‚)… DÅÖíÅ|}+sڗߟþ'_g¬u#È¿N‡³ +hˆ¯Ãyq“é¹úÞG°S§äEÇðy_7Ç|!ðÞrygô%_†ï·›(òº±‚›ly&N "c©(¡BSœQk,ºÛDÐiºÂØ·;85ˆ£øžÄXÜãñERrNqhê)æþ؇ÁÙ„×Óý¯¦þ1€›Ž“ª Ÿù$l"ßÇkÅ^·VJœÃæ‰9¾îÇñu˜ö +¯‘ãëC><|(öà€H…½ÚÊe[‡<%ÇÕ0.å¸:LÓƒ\ƒsÔ<ÔŽ°/$cËw‚ª߬Š1ÉÆdpN¹œí Çq„ì§!þ5PCgS2!0Wæˆ2?û§„Çñì‡m”@ B|ÆfœNiÄ1é'ÀĤøµ!5qtº(®IÖÓÁ!†Ò–øß¿à=&ŽÁô+ð« ,BFaŽíû˹rÓã®g.#b«vé}ûA¡¡%€‰àž¹ÝZ&s‰U–žq¶ ؆›NövW®JG½ÛÅM „uÂËÇ›N 2N™›â_»_’^o÷† +{½…³OÏÛË¡FÃ\¿»œ›²æûr-㔡LžvoõQâ¨øW‰s’2ì#Ä$ÈkPÇ®Œ†i²„¹õ¨- )tÎäêݾ7r¯ òç1ǾK‚};øEnê¶?NíòF0éÛ(xÁZN âZœò?Õ ¼@ Âwh2?Äð/¶Ñÿ5sQÀæ&F2Aœó±ÆÜ&£‚­q~ò¢ï4®NÜþ˜ wž¸ºcä<ÆãÖÆûáª!ÿ…ÿ}˜¢˜ÑÖw&L5ƒúÇ¡17LÀ}ä&f­†3ËùRðÿ#`^.Ã؆›Êüœû}®–=¦¥2~/×sùˆ“ãÏsŠ +g¯M–ÀgàÈ©oãÔ BæÓõ\ü¸ jRdl,AœMA=ç8Lý¶8”–þTƒ˜ j°6Ù_j–WFM´|±Eêvk¹cÆr¤˜AÎÓ5}§Ä⓹ +TȨ˜’]tPÎzP+ß…ÉnjףUDDÕ6PŒšt7òU\p7ÆëP3%uÇçûLÈÍrSè@ÙÜŠ«¹ú‡(¥A—Lü NcnËMŽÅx&v‚O5 è•€<p~úôõ \þ>Ç|XxèòžÀr˜ž&9OPÃ&ÚŽEèà³Ká3ªO‚žÀQ ÞÊÀ‰ Ç€¿?¦úâj¿Ä˜ŠŽªØ-ö~ºŽSÀ÷ŒŠ.ÙE¤4«Ñe;IM{§AîÒãm#m]N Bˆ¹º€ü§„2ø¨]ñ¤ÈÄ@ÌÙ'ü[œªä%-/r¹¨ƒmr¼&a¹8 +rXbà÷Øß@¦äɳÒëËab*W+?9”ë’^MYÆMª¾0chÂðÅÑÀg Ô ÿ)>íÛ¥ô´ÇD.±Õ蓼ÂåíÏ õV0à§@ÉÇzÈ;sŠç—}¦Ï ‡ÞN-âg—ÿPƒH¨Ò'UëR¶J©Aeç9›<¤­ï À÷ { qüW5×!5ã85l72+ÌÛŒ¦Éåœâwäð9‚ü;‡Ýn/áìî´çDð# ’J$t©Q êTÐë\¾ÿ‚Ç$2µs?œSæ‚Ó¨?Áù•p~(X‰S¦Á±•>~q4ôð§6P¹‚ÉàdRµ7ý¦™"(ðŒyÈÈÀaÞ? xÔ€÷#ÏzO¿Ê¡:ÚÚ¿SíÛ£ƒ@=r­‚£ â1{!o5,ø;€¹©²À_qÌ„|!(Öqê ^Š Æ€c&`rˆÀyaR%Ün¢gJ‹†ðNŸ.>S[A Ô xº0 Üt\ŠA ¾ü¦Osjz2Ð'säÊh¨n`Íå'\ ûÍÕ5,Nà>Zž÷J|ÇP°=}eyø"ç‡8lüd«8òõnÎ/æ„\'¨s?ÛD‡½Rœ aOÁ7PaO6 MõŸÅÕQ]£•¡ŽÊMf ÎÙȤÕëÁ~ðÛPC‘Ya_~-a‰8©BGšÖ ¤¶ó¨”-"ºr;§Ï ãyk•Ç©AP‘%;85ÌŸ¡ßBßȉO+€"(BŠSÄv^*+œ„ó„ä_Õ Îü¥qa$evT‘Sàð.Ô„qœ§"Kw1áE;Œ;¹œ×­àG8Îiª$q¿»œNhßϤv둉ê—»Ü\,²‹™K¥whÒÇyaê5ð%èç’yÎm2×a4x9䀫ÿõNÀC“X^-=}m¨UAí&ËR!ï·2ö©óˆ“ã`‚;y>`2Ø'_rTA[“‡Ô5´‘®¶ â1Ǹz(àN*¾Z&ÍÂärÈa HP:;’ã~6AÏØ(uäÂHsiX»$¡T›Îß*Á±Ë½[ûNçêÐËá[“”‰øª=Lr».§½l†ø§„ÕŸjçGK95ˆ;ë`š¾äüµ)[àóDBï ÆšR»ˆ¹Rè…Üxøò(ȵñ )¢œ.¹0ƒ›B=n)KÀW½r~&Ÿ†çîçm“9%(Ã~BþT#À§H<âÁ4caÄÓ ô­fž(µIöT¥8_Uª*Í(ç‹â+ö3a¹*àèŒ:=˜¾ ¹K®&™ze®üjv©AÐœDí^QJ—ž8½•Gfôk©jÌÕô%Pã!رIsó—ݸ[‚yø))(7øÝY'u œÇÅwËD·×ˆ‚žo‘xÝ]Íá`À8vp½=ØßÃ^Q1E»E±LB©•P¦û ¹g*8ÔnÄ lí~gS¿‹ *Ø@_Í^Fù=_Ãù(ï+Am’öº¹ 0‡Í¡x”\Ó–0¥»™˜J5à<”MØLà P¯ÞÃÀòз‡mBör»8¾F‡ÎhÓ—Þ¯6—ÞnQ¾ÏVSÖ1JÔ…À©Ä9ï‰PƒXœnB› 3Áv +„Æ8Ÿ—Eà×Dø|C. +êE<=ÁïqŠ*J=®“¹§.åðÌÏ^S _$ıe¢€¼Í\?Ôì@aôÏZ/¨j‚R*ì‘¿•y²Ô $Öá\rÐs$s‹X(½š´Tꓽz:†0Mü|.÷y ‹×¦p9v»°9ÀǹLÇ=ï>‰«ñX]› +ypÈ­H£ª4ÅÅ{†8;Žß6Ðßqo•Ô#y)äì9eI®í=r ÞÈøe®¤oÖŠ^V”=-=êúÚÔ¹^¶Ä’ýÒ”#Qjµ—·Soµly‘ +LŇ)Õ\=”¥0F€üÿ‚æl63¡.JD`nŠq¸äVI¤¶©ƒ(ÓnI †êÉóÉŸý'ƒJ:íùb§aí;ãQ>i+ ç%q^À©A¸ ©AˆÃ«€â7-céÌœ”9å5ÌS¹iÂøçL|¥:“X£Éñ“„&u¨™€b(Ú‘Áÿ‡¢Ý¼*Ú%ujBߟšÎõÄ.C_üû0=²\MœØ¨Ml„û¶ÃÕ„@Uj©ÀÑ!—ñs$ñÒüéëÓÒÇUù™=êp(ÿÜu´UœL½® |‰«ÿì;™óÅŽ±óaŠ:•Ø¢ö®‡ñ Þ~NY”/ÆñÇyÉ)»q2ˆ# züÂ(ðïÒs>\_±Ø5x7 jGÐ[=?8.Š`Š²WÎj©SÊB¨ þåØ F õ¼—Ð+>ð(çIκNârýGìLj/„`}s‰8àéfðœÊ¨‘ÛZæ¯>ÙÜ”f°]ÆÚ‹Ë«CÞDS¯Êô"û˜¹ÀI ý>¦—”ÌÎ:M’ØzÏä¦ßÿ©Þ{K¤7í—=*9d–_hMßoBÊPOˆ 6q| r; Þèû`(ÒRImš °IÅ7¨2!ù*âëY+Åîé‹95]¨ùÛ+AŽŽ>í6«Áþ‹‰ù+Wr‹]ÊåÀ'„Q%Û@QŽ<é:–8qu¶‘y´û½¥ Í©Ê»Æ`®þ“è/5ˆÐpw-þr+Äl©{ÆRÀ~åW9N뙶ŒŽy¯*‰­ÔÇUkÿ©hGý¥h—Ùdò_íêÔAÑú0¹3ù#l‹Üdxß›+9Õ'ÿ¡ïÔ‡8…$÷[‹¡G”™+r%Îþ}Ÿ¯ÙÅϻ܌NiÖf¼o.çÔÝn-¥hÒ*t:i<r-Ð Cلκ0jf"ËG‰“õE+Bî‰V€~XÀ}œZ#Žs dªÆÏdŽcìùx°É C½j\T?ý­åòØ_€ªÈ>x¨çx +`vÌ3¸]èeôÉ^ j\Ô ŽràÒ¨SA}jC£€^‰k¼2×WÊ Pƒ•0OŒ£.ûM£NžÅõÈàx¼†›P>8#\vQsAõ rµRgù|‰×ÍUÐßKƒz#`f°Õä*=P>¦´«r= +§\ÇC!ô¨pyÇèŠ3éóœoN çëê­å\Ïø}à³¾ Z¹ô®8FÌãÎ*(J欅d±KâКœ“ÒA÷×IU{‰è’mÔõÛK)ëÐÐ1¤D„¿æ”šr·pªAvJ05ŸûÛ ¤ù¯¬•dÄ«­DXîF.oêQ§¯O„<2§0éýp (K=o­âzú záì\»»”LîÞ/Jë3¹?\Îõ×€rà²kK1gØ +.ܤ|ðÁ˜W೸ð w6 Ž +œx·m¸\\OÆ7€uAýÆ!f.Ô=¡æG¶áâ>ì1uâòh®·Õ>~ÔhûçAõ8l&uöêPížê¢Ä1Œ¥Ò•EþÅ[wˆì’æq±ù´Ë®/=¡Èá°S¶ã$8r“à¹~ W.ßËý;À[!—zíÎrŽoøf¯æTKœ¡ïÿuèµÂqø ¨è`ûøål{g¯…½…š5Ôê9ÕÈcBýò…Ðã y~×´E\^j¦Ø÷rµ|ÈaÁÿ‡qsùê΂:ÔšÁFmà” Ÿu.·ÄÅœ2øëÀ§[ÄA7Ê'F-x:パԤ +ꢋ~SéÓöãà5c³_EÓ.NçÖ +ëÁÜlü ä¶IìO‰„JUÈ«pkrį ”ßý±ý¿ÜÂ)`û=\ƒ¿·8ô‡2 •Ò²ŸHoÑ€\(í–º€qMV†>+Èõ1e;D¾¯6ryi|6 _ø6‡s}n¯€Z1§Ìónø°mxÞúEðßX#ºv›ë—…úÔy!§ý8ThÁ*£[W[³CtÞw +iq”ë•„œ"ԮἋ®Ý[!¾;—Se± ™¹"|–ru » î¹®ö9h:§âŒý›ÄóÆJ.ösü#z÷óã®ã˜cîÜÅõ¨u ½(Gšê©·8=rKÓÓŠ3&NÙ%[qP(aœæÓy›¨ð²mp@y ózö±€‹¡7—SŸƒzÙÿ™ ê})L@îÆ¡{:b*÷š¡ÉçÙ:J^¾ Tc9>}+Ø5ô‰šºÆ/æx)àPüÀœX|=g5Ô‡ò©K@ K╳– )Pá0+à0ë`%îâúä®æpä…q¼äü‚SÜO`/L`îfPáâò—Øîñ}]Ê  ¨j$ .F…<ÝÄÕPà~û$/år‚P‚º#äŒÝpø Ç32¡l/ñr+W·:í1TΠÎ/ö¿¿òitPîfPSåÔè# T8å¾ì à—É(짹X‡càõt³o­ä0-(L€R×½•\ìOëЦ4ªÒWÓÂïBþP×¼jRT@ÁFà/DtÕQZ‹•Ö­CÆ6ìæìÞÿ¨½©±å»pÌR? uTÌ·@Î[ì~c øˆ9Ï«™ Gë¹((Lßl0&cÊwR×Óq*«:vjï@½%©s™Ø­F•l…ûþzXé ·›©Ë¡ÓiÛØYŒÇÍÅTbÛ>qJ“!(£sùFx® 8Ô<C¾À%Uê€ôױܳ*N·I’@§úêГ >Ø/ãˆç8ÌárK™q½½ˆöÉ^I„á0«uäLâBÐÒ.n圹€—n&n~Ò¡n÷ n~Õfÿ0"_3%ó> rúêÆ'}"ýÓ~2m@“¹Û%TN˜'–òÅ‘Eªœ2ñÿé2ûî¯$c«wC~Fìÿr3ôeqÕ»Aõ‡ãœÛ3é èŒ}:©O“ŽoÛu¸@©ˆósIͪ¨&6í%"J¹¼4ãÿd=øO2­]| ׬ + v&ñ¼³ŠË¥rý¢Y+ÁÁGÆãÖR*èÙz*ì½ +‘òa™Ô´JkÒg4ñDi  ðHÄ×ï×ùxíDLåN°°k2±] zG¨=zôf>¨DÓ÷?‚¤Þ½ÂèÖDÆw-úy·©¸èÃÏLaÇIÉóæÃôÃVZt_øw¥Y5¦Ì½&¡ø^þÿZ qv£ó°“&K6’ï6 ÛùŸU©œNFú¼æ¸4§Ú°Œ4³† Òzt…é­êÀ•@ z è°¢’˜Šý¢‡­"æ^·Ž¬Ü9¤0š¾ŒŽoÙ'”¿Ý@ž½>x7߬jú ò iVõ!*å«P¸pÅ^/Öqêk1uª\Mëú“5¹|ç!ë‘À™ "ˆ¡ +Ù.ö|ºú_dIuÆâ¤n]ÈAÑW,Ãüiå”>Ÿr¹±€pÏYdU·Ñø«)|þCH¾ú&% +3§ò¿Y +ßÿ퀠œµ Z¿\u¸F·|²§*zÎ2}'àÞÉÊK]$5ö¢—½–ÔÓ1õ¼_"yYBö¬ö¤éýj YJ _]¥)«Ó¡šöcß³ ö• x¶†ŽkU“¤6›˜¥Ö‘â¸6-±÷³uÀÍ\bIíüg›ýì1ÕÔ5m©(jǹœR(xBâ#}«Gßî7a²Û&»EÄ’÷>òè'ý2æy/öÝ ùò£”yÝsDœÓy@|¯1«åÔË$š0Z$ÔýN>䘿 +³¿O?SLÞÇÿ›/¿ŠD¥­$¥•WÌ^¿»höìÝ)iV¥Œ¾ÑlH§÷èÂkc‚ó¶@,àâ +ÆGdîG©(»[Ê$ök1ظYlÆĵiðœT4±¸0Ô'¡jš_h%{Q~F|¿ÛT”Ý+“ÜiK3ZIézJ”Ô¬'Nï6bÒºõ¯'«AÍŠ¹~9%/VáDƒó¶~_Ãç<°x«8¹]OœôA—JìÖd|QF÷ïà'ÛÃÏø¡j\Èü&ö¸°çË’þZ_Qçu¢æËi²ù‹Ý÷Ñ•êûæ,,ö?Øó@~¬ív„d ÎOÜýÁ[ÖQïoÖY&?Ò–#­«tÇ÷QB½ùz@”×}LR\o#{ÕpNœÕ"•Ý«13Ï);yàUž•ùãâ³’Õ2"ý‹¦0¶u§èf§@–Ss„¹ÓK‘Õ; ÿ9cQz‹öCƲÔj¡ùÝÊC¦·«eÀ7©¤vMl!¥C›º×—d7™‰skIsN +³~7 RÏúe¢Â¶³¢¼®côó^õ¸½h·`òÛŽÑyŸQ…ý‡é’î³ôûÞ3ôÛÏGÉ‚ß‘o¾™ +_}‘ŸÌé²®3Ò¶ÒëÒö÷žâʲ+ô‹æTVÊÔ%âÛö)ŸöÃy tPÌ£v‰$§ÉœyÐÀЭúDZ‡†(½•'{\qì[ö¬ì¸è^ MÝí2¡nvŠîµQ’‡æ¢çmæäí¯zDÖGCæNAf· ˆÇ]$™Û'£ò¾bÞuŸaÊ:~¦ßw¦+>œ§+;Α/$tN ±‰|Ù+&|û„¢Í"*¿é ]ßrAÔÙäaÚÿ>X2Øà'lfÏðkXK²áóEº¾Ã†~Ó{ˆÌü¤Káj> xÔ49_Žq)ÄÈWñƒª×òoþ]C”Ý!•–_²|’{I]«Eû?^#¸ó]›¸ûM_øê3M< ¿ª #zU±ßvŠãueé-„ùýªc²Â"kÓÒ"çï ]ÍòJl%/kNHï6‰Åí&VIíÕžFá8Ç$÷ëbL¨"¹’:_U³M˜ó‹1QüÍ‚êýì(ùôÞW2Xâ+úôÁ‹ù¥ËSô©Á‹ùÚwès“ ”úkÍŸnN +ó(÷ +.»q¤ãN9𛓤¯Éÿð‡‡‘fÝïå’ž_i{“7UÛq ßÏ3ô›AKæÕà!aú÷}DÒ€š4·ñŒYA™ƒìIË1ÑëžÃÔÃA’~Ö%‘¼o´2k)ö“”6_½i>).nýYZTi--©²7«Ê¿*~ß|AúªöŒømíI^ã9æU‡%õ¦ó€$·ÛcÅIi~ÉYIAåYìóLMRºv +¼.åGÖlâßû‡&ÿkBõ·Õ{ȺÊd}Uâ®Æ뢾æë’îFªõƒ­ äoæ‚’?̈’_,…_ŽR>^ 6xJ?UZv=Š|jò£*>œ£^uËè[½<"èí*àõz2´V…¼ùQ¾'~Ñ`iúªü¢,·ìŒ,»â4«ÁTö°ÊÂ4«Êœ~Ü&až~Ï»æU‹¥8¿á´$·î”äiëQñ“v "ë»!ñh€Oãø˼jµ”TT\×V;Éš*¯›w…û{²õfì‘·Q‡ú^Eˆª=%-âÒ+êuŸó¾õ,Ó\ídÖý6ä`onøñ¶;1gš“¢.ÔÇF]¬ +;×y¼5#Ìt /€ìqÖür‚ÿèwCÈÿH~œ&vL[@&|P¥n è1©ýzàÛ v ^,0Nø¨B 1k`Ñ–'7¯-ð>Ôñ<ü`ÇëpQU“­°è»¹ÑCV]àþbÿ íHC=SDQ– +b‡Û %Ùu¯ÃN¶Ý»Ð˜œ|´åQ¬i}±'Ä5æn3)¾Ñh"ÎÆ÷éÍû‹fuy^²×?37›Œ¥w[Äàg˜öF—mØæ"bÞ»‡y•x‡ƒ ê¾j:˜$ýT`ÑóH~¥NÎÙdF‰SèýÇÐä÷®agšÂ¥Ønue‡m»!í¯ô—ô7ûì|F7 XósX2㻶0¶kíöt•úEÇìYÍyéÓŽ£DÚû ÿ÷ëø!Uë„/¾Ñ²Ö*/ËŽQGÚŸF›öV‹Z\$õ×t¿ •vVùÐÅ'…ŸLO~7>ï&éw­'èŠÖ šoGè®:'Ø“ƒOÃÄÕ¥WL²Õæ¥To6NØaôà‡ªQ«ÏoúýØÉ–´ÈÄr—ˆ˜ +×(Ÿšë1®5þ±ç›b-»FH¿TI>·ú‰>µùˆ¿µúì~úscBô±ÖÌ0ó¾'Á‚êGŒïý®Aßú“d·â8? -ò|´š (Ú Ø•ÎèÖçbèÆ7[Ó´:¡4¾M‰©ØK†¿S!o|Ô–¼j=iZQê"-­p=í1¦ÿºOR¼žð/\Ë—¿_O<$¤µ¥®G><9Üõ"ZÖQê+þPãa:Xr±16Ö½Ö7έÖ76¾Ê9Ò£Ö7QÚR|ªk;oÞÿNîܘp­þzxpƒKxZ•£<£Æ>øv…C^oèµr¯0Ÿ÷^¡>×Ã.×G„èyÂôô¸Q%ý§éæÒç '¤¯ÎH «/Iž7eî7SÌ­fñÇF/Á kÍ|í¼v²93ú\sjü™æq'›ïÄK;ª½¨âÏÇù%“ +k~%*ÿ~Œ÷–56ÌeµxI][S?î¿k½x §8ì`wnÝÒs….î•R=.¢Ïí^²þ’ ³ÞJ9ÝÒi'xñ›€xþçל5½¿&í¯ +0ë+w©ñ÷©¿žx¾9=õ`ç‹0io‘ç¡îGº²¢wÝ ·n ‰¨v »_e'/ªµ*h° +|ÝhXˆ?æÕYæÕZ>¯º’Ï]b¥sXr™sX|¹K˜G¥O„ìS¾?¯”•¬Ü`ÕEÄ’œþÒ]’Âæsf%Å®f E¾æíÅ!â·g…DJŸ†$£I(yÜvHZØxQR€cò«/ÒšZwŸ +ïDÇjy¢yk‘\”×zœ¸õ›ž ¶~›ðÆ-úi¯XÔÔèr¡1>áDë8³Þ"ì óÂÍúŠC$_ëvg‡Ù4…ÅÆÔ:EFԺƞiI—ö¿`:êœvdE»6ùƸÕ{GFÕ:ÉoWÙÕUiòïÓ«²+òÜbÇÈçÅaY%òÈR·Ðc홡â->¢ö&YuÕUQ~ÛIII­•ø}ƒ•¤¼ú +œ yñUl×Þa^å^á®å‘NU‘qÅn>åÞ±Tg“ÉVÀodÁþɯÌ3:²È#<¹È-Ì®.ÛW\\`Åõ¸cøµ‘ƒŽ†oYCÞÖPØüý,üí“÷ª|3}«ý2Ï´ÞI±ìÌgÊmDåeç]kÓ`ŸàzUir»Ú>$¹Ü)ä~Í•¢« ÄûðÃÝYä/ÝÎÆ=ìQ“¾œäg/ß?9šõ?õ·¯ +‰ô©¼]âšVäz¥24ül}|è¹ú„ðcÍrYO¡¿E÷s¹´§1@ú¡ÑWÚÜê%züËAòößõE/~9dÑTz®)=ñtsFÌáYz_†ìy.úØ~èùÕšîív«ò;Üq7Ì¢ï±Ü¤=nÒCÑÄ>½–§“ùË:û[Sõ¬S&:ÜŸ©ïûNY/óËÝì¿oÕ{ÄîÔ‹¨[¦Æ?Š–(¯G‹f-FÊ3—à5Ì@Ð84Acñ5 ¥„¦#eÅhÉ4e´~› Úk¤¨vùÅxõèÁùZM¬¶ñöÿÖÚ´ÿe€¸·Ë[Ô8è*nêöt·ûýp'âj•oTô[Ф|7ùÍBW9ö‹¡iîaOŠäoÞÛ§»„b,Qè(Sà\ðÞ>8±Ì%,´Â#ª¹ù¢/Ûu&ðK›uÜ/}?ûœèH6ú=¾¿ÝªáöfÚ‰õ°;5ÐòeÊhÍÚHÓü¬‚®û™z®iÓ5Ú(.] Œ&£‰h4…F áÜû¼.Eü> )üùõpüñxÕcñoÄ_)rßßš°mØ$F»Ho…ý÷ØÕ¢¾"Wy®<ò…w¨<ßSžïþîjhdÁµ°ä÷ÐÔ|·Ðûy.¡/óä9ùN!O^;‡dá³y¯ØIþ°È1ômé•àë•>ÑÌ×OÑçzOâ—OΗZÂ#^7ãÜz)0¼É1\§‹5Úcz ­˜½ÛáTüúáµÂ¯J[ìÍ8|Á+†þã ~þŸß¸ÕÀo˜€F ›‚?ND#&â¯f YSÖ u[¢ýU3ù8n ²ØG’ô5ûo¹™‘çZïœöÖ54ãK(ö1Á¹EöAn~‘æ=OÝËü£À6:„d½s”G»‡oKýÒâÃüÖèåÐèUõá‚p³cï7öäþ°7ó6ï1@Êãgà5Œæ^ÿHü +áó xMÓ±ÅMÅŸÁçÃþËjþóÛ0nuÿºîaøön,þ{3ðY\½÷Rój¡y›]e4Àa:zHñϵŽáÎßÌɛЪÇÑÎcwGhÝf× +»Y«C-ÏU&‡Ëß^çìðtCbhMžKÌû§ð:¼‡õEN1M….ñMïcjÊìÃ_¿u +Çöö´À9,¦È#L•nT•¢¦qgë¿ó ÿÛ·¿Öùß½ÁšÆü¹§#ñûhný“ð;Ž‰S· …Ë…h¥Ú%´Y;lO;ßð3ky¨áε¸—žawsÝÃs߸D¾ÍwŽ)ËwI(-vŒ{Qà™SàšPà.·/ …Ë¥Â/Çwyx¥«ü`×ݽRVõòMÿëu yCEî5+þËžûógcñOÇá÷)Ãf¡ŠóѤa3ñ>MÃ>i.Žñ дKѤáKÐDÅÅhʘ5hÖL´JÕ í<òf„z>»žéÍwÀ¸EŽãÄ„P§òÀpÉÇRÓ\¿M)rìcBŸa_™€ÃøÀä©Ø·ÛÉ››.‡ÜƜӪ9$Ìð;{H+éò]zR4KqâÿeoÐñ•ðõ_ñÎéì•`MJ£—¢Y7£9Ów¢ÙÓ¶#¥ÛÐÌ©[Ñô ÐôQëÑÔqëÐTø|ìF4s<þ½™êhɦƒh›i†âþLv¯ƒ=jÙx×÷dUj `³û/ÝCcpìk-tMnÎwOiçœØûÎ-µ§Ì9¥¿Ò)¹·Æ!¡¹Ò.¦´Ô!x×¾rVe’âÿÿø—„õNýR¡Œ¦ WÂ_M»‘ÇO…¹Ø—,@3†¯@ÓF­AÓƬEÓÇoB³æíG W`ì§åˆ61ñöŠvùtO1üÂZˆºß8D¾ò +}ðüjÔ»<çȲ§ÈòBç˜ò‡ÈwŽ‘……N‘÷ß9…æcúêC|?ì½»\£U_µ^ý½–¿ü&øˆ±œgõçç£9?2æÏÏ'ã}T±ÍÁû4wÚ4oæ4{Þ^4w©&š¿ØÍ^,@³—#¥¹šhÆB]4o9Öê¢]ö-ÔÞ²ë%^:¿ô åpKáõÐ'NrŒÍÂ"ŠÝäg†÷¸—ñ ÆbïßÛ‡Ö:†9„â5Ê ¾±v÷WX¼y'Ž­“ÿíuŸÍy†áÜçC>pè ŽåÐÈ$4Caš=vš=e=š;k/ZºVŠ–o?…m±Ä×q4w•Í]D¢YË4kÍPÒDsæèp?[ÏG»j'h~`µúØC÷¯ž)OôyîZòÂ-ªþkLq¾K Žñ‘oŠìåJ"*ì"úkl#jíbkJb“êý`¥‹·šü¯ö ^ÿ$£Mú=Å<8{C?›€:Í9Í·Í¿ +)M]‡}óJ4sÊZ|þv ÙSw#¥i»Ñôi{¹µÍ[a†æ-– EëO¢•zžhËÁûŠ;ü»¦¨e³+ö³*FÙÇënx}‘ëYïQ÷©ºÔ.´­Ô!Î\{­}R[•CB[ý•ø·¥˜KxiÔ²{–®Öý_ÛæÐZ·Ϧ*ÌFS1CÂçj>sÓàï-@ñNÂ×´Q‹ÑŒñkðÚ6¡™³U°}ªc›4Bs6™¡ù*gÐÂ}öh©‘7ZÉD£•dÚhñLawÀ¯3TKÙToñåKñn…ÁÁ^…¾!ï1öªÂk{ôÞ!ì Žq¥Åöam¥ö]åö‘mv‘y…Žáç«£C4ß²»fOšóoïÛ_ç ü=DªéŠJHiäB¼¦9اãïOÀ{âÐÏæ!¥1+°?Ä{7n=ö›[ÐÜ™{Ñ‚EZ¼ù8Z¶× +-ÑrFK5œÐUk4_Óý¤i‹VðCÐÓ…ž­“Ôž²+yýìQW¡ÃÏÅñ¾®y!AÏ]­zá_÷Æ=9/Ï) 8ƒ™gä…ÆèÈÌêË®pyHñÇWWÕî±KgÏ^ÿoÇòáÖŒˆ£×pËÆ)cß¿) _„ýül‘38Ûœ†ß§+ÌÄë[ˆf[Œ¦[ˆ}#¾&¯B3§cÿ¿X)¯5GÊë,ÑÂ'Ð’=Žh‰QZ¨çƒÖZÞUØæQ;nï]v‘F«†qðIiûK÷ÓÕIþ¯}Cï¾t“W¼v«Çk+És ~Vbò¡Ê:ðS­mt³m|Yµ]l\‰kˆÉî‹kÅVÿ×=ÂÀÿñõ_¾d Á»5Ÿµéxgs×tÅŸÒ¤õÜ^)Í×À6¨æ`;üi“ý´Æ>ÅÍ]¢‡”æ¨#¥…ZHiƒZ°Ÿ9_´éx–âÖ€† ;o°³U+ØMêì6㯜°l¼qݳÈ;8:ÿjö¯1–Æ6Þ\eÓYc×[gÿ¹îJ\w¥cBG…=ä’äº-,o±òökßÿÅ?ù‰x-}Œ_‰”RG •uñ:ÔÐìØW¨¢™³°ÿ˜µ ûL|ÎðY›7{7š;g/š¯¤†æ-â¡ùË)´hÓQ´BÓ­& õGr6¹”ÞØZ´`šýåÜ©kñ1o3š7g;Æ”<´p …n£eêçÐ:#_´ŽŠD[Ž 9Ù˜™øúZdܛ둧šnĘ÷‡:Õ†$–•ÙôUXF»…êô±äFƒ³ÿãÚFrë™ÀÅæÉH‰óã8Ì?Žûüåôó1™‡Ï£š:.e4}âZ4{¡>Z¬ŠññÙ—Ã÷öÍØs“] úœ]xRõ »|wüßfï”÷NÛÐ5e‡SÙø—ŸŒÞãU>E=‡]¹¿–U7ùÄž3þÄž})ò0ï{ì®1Z|89`Í'À] œÂ^¼³)-¹ÜôÞ.t Â1®æ½Cñ¥ÉNÃñý4ðàßÿÛóg,ûd¬4j.š7eZ´Z­Õ>‹VÖh¹eZc—3|­çÛ‘›¼ÞÙìövôúËO‡¯·Ï±Õ£lìVïæñ[=ëÇoµ7ZÅ*oÔN·Š ûž°k÷Õ²»Uo³‹Õüšgjd²ËµkYmýzVhÐÆŠ šX‘`½|©:"0 ¬+cgÇÊ eŒt ÷!˜§!½Õ$"³¿ynw稊. [¼|Ïÿ`— +Üž_Ÿ¡„ñð,54s&RZaŒ–ï;‹Öh q­¢ÍÇo*n󫙸û;_5ïO%»u_%»üß.Ÿº)*GÓ׋½ÑYè°'oŽØãT:q¯gË4õˆ¯óö?a7a|¢£ÿ kÆÿ1x‘ùRäªßÍŠt|Jæ„6­0(ZAÞÿÃXTÒ}^üâÛòîFÂä¿©3™ÿ0?únÎ<ûl.Êî•ÊžT•ä·œƒ~'£"ÖDMâ£8]ñŽ{“6uôBŒõ7¡Ÿ”ùháj3´xÛ ´L˭廣5:к=GÑê-$Z¾F­X¡…Ö¨ˆ +á3lûù'£vØÝ—ô÷EZU¬†^kbØËš_¾;X¶ß~wUð훕ðó[ý–ÑIÿu^|×ý[ìÃRÖ˜WÂRü +Ö\Ø0pši¬µc>T;ì}nÑõ*Lü±Ý‡ª°â¿g¥ÂÊǘÎV7ת€ØŠR›· +¿p¸Á…‹”Uþ »TÖ†±>gxÓÆ-As窠¥›MÐ&í“há†vvh׉Øá;‚ßMQ-dWiý`ùÆìàÏâOÏœˆ_+lMþñõgáïÕÖü?š¬Œ~gi}gyÚŸY¾þwVjð•=Hêr3ìbÍt|óçéŸ £mé7Ò €Õ”±2ÿØnìxs–àkBuô;o»u¸ã^äùƤøãí÷bŒ }ðø:èåFIf=I?ë•'}Úªu!vÜ’•»8žöß½MÄûö“Ò6´l­ãÜkhÛÉ×#¶{µOÜ™À*aÛÛ®ó™% ~eü`é}g%ûšØêeìfÍnVÓðwöˆumˆ<³Ì1$²ÂEîTí"|å9=l{Z¯ØmÚØ-:e¬¯‰5çw±g…\‘|«öc¾|¸føˆU32=® ¾y;ÒÓÒDð%ô1IjTðëbÛ”y’SASDŽ9‹©ŒßõE9¦dúgmÊõÎBmº’¾¥ï¨5›ŒÑÜ KþK.è?lSã,Œ±&­@K¶ŠÐÓ8…Ý~mÓÀÿíÿÌ—ÆßÙ“Æ¿°gŒ>±‡ô°/¨e £2–0xÏ׳ÂÖÖ¤“=Á+c£—¬Ž±¼m­±[Ö|^b÷AÅ¾'ÁGÖŠßÆ7ÈüCÅØ3[™S»•¼ñY‡z<È"J6/×±¹*ÔýqÎ;‰´¬èŠy}¾èi§97¸Ÿ®ØFû®§sšhó¦W>Òî2_^)KoÜEþ·ë‹ýâ$ÅyhòèùhêÄ…˜GoE Wé£õ†ÖhÛ‰;÷]+¿ûÎßÒ¨dwáóÄÓyÅîÑq©¤s2q¬ÓC%ƒ×¬ÝTn{üíhÙ`¾?=Ðè*ìëµ1*`y<¯P%Þé#Ãy?_ÉstŸh–³Ø ˆÕu5º3-vÆW³~Òå‹‘Ñ«áÆ7ÿ¶—¸ùCWxÆo¢ð€í:¸n»è~§Xòºé$“ÛfÁ5Ÿ¼/½d’1°Wxó›&‘Þ¡A¦~Ô=ýp€Ìûr@ÿ%«¶ÿçŒq —ïåxö¿¾MÅ1cÍz!ÚÁx S·Ï´¿’UÓÿÈÊL>³ç úYSì¯%Æ8î’_¾¹ß] °oе¹1e»š6RÙ±9?Âäa¯Ž¸ñãÙ–ôD«¦Èøƒ½9aäÇg^+ÒKû¸NßóÍ|ÃǬï5kd”رÉ8øÙ2ãÇ?tÈçí4ñ ÏDxï7]âRÄ4é9E}!"d'¹9I0ß)a>Ý°‹¾ùÍHö¦ñ’¬ æ’ ap—ðôµq&VQS Î…Žßmx-œ½…‹ÑŠ\>}ØŸv9MVÄqmÖf´|›m—ù S 랣þ’]£QÏîÕû•• |¸BþÑæÊüVïe>µ?¦¿Åªí»D¾ývˆxý›„.<%©mt•–6;29Â&n¦¾º>ÒݹÑAÿ;?ºt‹ñÓhG¿[Ï¿ì5žƒFäm"2úµ¨û}aDõV¡CÔ,Æ=þ'‰WÒ2&²t·iz%+,±6+-r—½¬=%Ên—ˆ2[ùDzç~"²d«Àûö"ýó¡ã¡Þ6}ø.wð¯o°—3'¯D?­Ò@kôÏ ÝgîŒÚÿ€]­ÛÃR˜_ÞËt±"ãÖÌðîßv²¡k`†t4È„o†ÂLáÀqÛñÎ ËDá%{ŸGk øhÛÂ9hç’¹h7\+ç ­}Û™·Eüºîõ¬ƒ„ço$Ï{OâúÏ3û ¸žèãöc( «‘0KVß¡)JèÒ¢ƒr7Q‰]’ÛM ]ÕuA\ÔtŽHûm?ôz­àþW=²`ðUß{‘×ÉÔª`ÕU¯—LÝq8Yqû‘Œá»dŒP?ž9Jëò£IšÎO§éd|]K ¸@/ŽcuP ÑûõŠáCVÕ8¢kƒqò—í¼‡¬¦É{M.EMÙ½[ ­Wžƒ6Í‹„:ÚèÀ©³c-mìg´»:ž3¹ÿE“zÛvTRQa'xü _pÿ=Áí_5…>— í¼§iËÈ{<®Góe…ɽ?4Þ¯–‘6ɳ„ö#GžÁ=÷’ÑÅ3{Z~Ö4¯îñr€æ‡½ßÀ÷y²”—4¨bÛ·AÏ)gæ>‰£Â5Z†cóœÕªh‘º9Úr h˜º’V»Vû »W;_±ßOìY¦åzgšöùбFΩ3Mn,4ñIœorw /©v ïFÏN_îJÂ6qy1bc7‹²¿9Ÿ²½5:å=AGCiîÞ‹øz8^ñ‘Dj® ”™+P.Qs‘ù›1ù[ȈǛ…1o¶i½ôÃ6†|Ñ.âú*¯G/¤ãç“7´¥Ïª™–V8[”¿ñ1-)v”æU_ÜÔ„ç*ˆ+!Óy¯ÓsMŸ¡u=wö^ Å5»4c‚2š6óÌCWlà!uÇ‚ÉšMì~½–&¿|t!ûuä¿ai“[¬º±CÔt“#ø^^tŸ z¶ŠtK˜ýÀpê”ûx˜)h¨¦‰´¶nCFªšHDçžâfǹd,6³ +ž%â þ¹ ö”kô<"²t+á—³‚òÊZN_»¿\œÜ¬g‘^%eÂKw2WügÀ3”ÏådRÇ>*ºf7øl0í£†4³’ôTûȚʼMnÿ]]è’0W]º™x6H›6{š ¼•3ß¼?Xkþ¯ìEÏNév°„n6»]÷ræd5Þ¤-92Ì0ºa ÝØm#*ë¸D=ýÆχOÙ¯ª‹Œùæˆ{FÃóù +Âûé +=m_ºí]µíSGf ѦZžw˜và¬ãd™­ß,2®pôùŠžÔ›9í|"ó³6?£k¯ðjÒ|Â;s1u§ƒ}µÂ[ß´øm›…Q·‘·þnÀ¯ØHÚÄ)§®Œ¡lCfvQ· ˆÌ-~\ÅV~Л•¼¤nãVËø>»ß(óǃ[W1¸ÉnÑÊgwj÷³Fz¿°íAÖP¯ž50xÇê½bõMŠY†—Ëêø?S6<í8ÒÈ⌢ÉÓŠzºÚhǪh߶mHg„ȃ—FÒçÇà MÐ}þóÃÁ_Ðv‰s |oIÏ”…Ü<ϤeR{o%ú´ËxÚ*|†0¡vß²‡òHU¦£fSNa³…ØJsËO(yéA¾ì”¯Þ[$° ˜Jº?\"yÚrPZYî}²wïl©{ýABóÊãÖ"êBðT¡Ï‹Æ,Ÿüb¸H÷»[ËîéÍ3cµ/eOÒ:Ÿ1^÷!»•ÿ‘½ ½|üJÖÂÈ)}¦Ž¾)ÒT3ÄkÒD;TѾ»ðŒíúf›‘(³Á˜LnRžuk,!x&OŠì´ÝxN­Ó5½],ážÃuMT†”&U8s„ÏÍ¥äùë kÿ©”_ö*xþDšØ`Ï0™<éó²ÃâœF©4»î“Ö¯GE·íƵ煉5¡çSü®ö<ÿîoZü¤¶DÀÓUÂàÇ«Ùß L +þ +1¦jgu°æxß uï²› ýë—X¸ŒPUå!mc)2’^Vä_ ¬©/F{¶i })ÒVÓEjk¶ í=û‡´hD§´´úî}HWÓ x$Ë,ÍÏÙN4sI\bîvc%<$u šÏ827Ú Ì³*ˆïn|ÖÚ‡Ï$ÝR&TÊ‹7—§ NûŒ¦þ¡&Ík>OgõRܳ.61Jð<3qýÖ"Â%féœ0O虵Ø8¡n‹qÖ “›_UM¢J7ðRTŒn|Ýa”±lË3©ø›Ô¤èo´ÁÃßwñÜSgóæ§|ÛAæô“&‘­›¯DLÚÄÌ^ +œb,:4LMeÚ¶tÚ³AàsGu ϲÁ,=é%Ïi0‹~¹žÌìÒ?¨‹ÖŠ˜¬fJt§Q@eôéÁÖRNÑsëàŒ}Â\êJ4ö·Ñ³‰kÉ àòoökùfâšÓÄ£Ï|þÍo‚ôª‚_öQz(¦¨õ¬(¯õ„àæ÷}Âó^© î §”yüØúmÔË™´¹êêÑÎG1Lg³q.Ë3zÎj…õ­1tÈQÚgtéQgŒ.ÇM6Éfµ¾Ï–IÎ*ð-lGÍ.7&)¨ïTÇço=RÅx„¼è5Y˜Þ©çƈ133`n1}àÌpÙEŸé¿ç›EI:db©š0©j/Ò¢3 dw«¤‚Ìn òj†2å>‹vK^ÏzÁóñÌõ”Å0ŸÇ¢ð¥Ý©†ÑgÓâ繈ÓúŒhŸk¨ë/W©êÔ“‘ ±u·ðögm"«ÛôÍZNÚN'#gñíâf{Þ[À z·œg•6MWvYA‹85L_b«È#/*&¼6•ÿsàDuU#´hÔ44ó¦õSB»ö#»‘¡>›CÌš #¤Ç9]œ³×&‹Aⵂþ‹ì”ÇD˜»%=çc@MW½Ýäf¿šða¿1ñºKF½è’’¯z͘¼öÃDN¿€÷‡ù¬_Ì¿õë>â¤û8CÆ|˜±ÙYEx~‹Ìø¬+}VwÌ´ü­³ì}©=•Û+5Îþ‡–à1kÄó}»D[p­QZ‚VOX€?ÎCZ4âµ)8f3ÒÄâìpâÐå‘Ù…ájû4Ñ^ì?÷ªìäô؈óÞ©3Žãøæ– ++D§/•\¼:•ÓŒ:j=†±8=\tòÒ˜• ºÑ`,¹× ¡²:M¨y¤•ïTArÝN*µKæR—}¦ˆì”¨ä: éÓw–EÏœV=6{YzžJí׆gЗ»‹(yÍ6Ê÷áJúj¢2ôjåwo%Æ +ù7¾¨ñÊכ؆Nå;§Í1öÉ],89ECó…-»Ðn ¤¾Sòƒç,ù'<ÆlY¶-;-™0 ­™<íÁøð•©SüBqÀýõðLžôú£µLdåSÌ•"³ÓÃùB¢eLJs³A ã¼ûd±Kð\&ôÑf*áí^aBÅ.Œ¥×Âþ ¢*·²>ë2÷zHAjËÐQ ÎyMÝ2èÙ:"¦nW·‹NéÕáκ߽Ôµ”…DxéVúN« õ U{K½î0§ó[‘Oº(w®ó'\ÇðÈã +ÚZÒRã!̹?ê4š<0™´Kžs£HK‡Q<ê(ö§ÈŸƒ§`[ø‰rÅ—_þ:xn…º1 O{f-'N8Œ!ι§œq<¿‡ñ`ØLÊZ>ä#ý²Wqe»¨„æ}Ô­}úö™Ñ­ÉÍÛ¾ÛeD=èÀs„¦Ý—kù™ýjðpYèù¦^ôË)ƒ{ø!o×ò“¾î‚×OZ¹Ož¶Cyß_.LP'R÷ÁÜLÂçÞ2ÂóÁR¡üÝ~R÷Nã[ßU—"§j™£ÍË7 µÓ¡mKÖ£]6¡ýû÷#]#´_Ç6ŒõL¤gD!-ÒÑ3FƧ…VÁSaö øxFf-¬?š´P øØ÷‡8ý¸ð7*LbÓ~2©YfvgœÆQÞKè›MFÒ;b°]Ú3}1ã9fb‰nÕ +Å9uRQv‹„ºÓÃ#Ò?j_´á™02ªzÜC‘sàlÒ;u± æÝên¯‰èYÛAÁß´ù¾¯V}K×'ön3IìÛ)ð¸µÀø ÝcÑY=áÁaÆ.'ÎLä»2rÇÆmhýOËЮ­û¶ªö›‘0^ríæ +iÜ;-qDÙ^Ð]ƒ9t0¯/”!…8=LÇàÙð¬?Ì}y¥,ƒçHqø‰²—+Q®±ó…qM»ÈÛƒúDæG-2ðùZÚ&J‰ÂÌ‹§/ùLåžÉ³œÃá›ÂÜ\Aïì•DèË dð³u”GæBÒóîAjÇ^"«ÇˆÊê6&R¾h×î/†y|Ù9EuDof=œ8î9ÎtDØ?Ÿq3õfÖ#`ÎÌ$8¦íãçÒžÙ+ˆðZ°/˜ù‹qÅOÔ9ŸIäÙÿ½÷Ž«ºFeƒé¢:„ÎP 6 ñéŦIrÁX¶„FÓG#idi„4²-cã‚q°1ÍwÀ˜ !Jrù’J!äææÞ”Û¾÷~ïûýÞûã¾µÖ©3#Yg„ÊŒ8Öœ³æì}öZ{ïUö^{­-§:ÖžâO­: cG†6¼rEÃÓŸ©tyÇw+öÿJų• ÿš¿ó۶țŸ56ýèÃtä'¿[xý¯·5<ùK>²¿á¡ïNó‰x~-ø“n­áÿªô­Þ÷M_æ‘3Ö¾Èwäÿ¾ÙwôU¨ïÀجò=ÿ¿«0XâîI¸¦Qk›HqZvÀ×øT¬9tÁm·÷_uýü²ë¯SËfͼÆe}ÙB_ ÌkØÛ²ëžÓ]+O©_Ô}<æ ¤/mË&úvM?ðÎuÓãº6-{äÜØ¢¾“š­89n›Ø¸¨ïä¦{]ÚóÁLŒõ„±1«Ÿüf`Ëó—û}vcðÀ'7‡žÿã­xÎ5¼íÅ©O0pèóÊèKŸø‚¯ý¡Þ÷üß*ë_þïªÀÛFßû¼3úÃ?,½ô¯µ¾ç?»9tß‘+BkwçßñÆ5 ¯üÇ<:»üö¿Å^ÿÿÀîø„ó-{ä,ÿ²]gûþãƆÿ)ðØ/„†­oL ¬Ù{¾oó·/oXþä9•• Ëd¯P6熚2Ì㉹¾|>øÙãkJL¤˜Ÿ£ÁÔ²1f*Kà›¡G^¯ùç¹þCÜY¶áÌp×ÊS#ž¼8°ë{ÓC¿ã < +ï;úŸ³}Ïýå¦ðºÝïÚ19¼ñÕ+1×F`åÎÉ¡•ådhí“çSL»À\ºø½Ï^ZóäùKrÅ®oÒ+O¤ï=•âílýîTú^úðYþE«NÄXóXÏácŒ*ßâ•'à9iŒ·Þúi‘mß÷ºî=í6Û„…¾æ2ÏþÎõ§†×ì»ç‹ï…ÿ¬ö½ò¹þçþ­Êäßg7øâ†ð}¯^…±Ý1NAððŸª1ÆÆ +<©Å°öý—¹á#_.½þdžÐÛ_6¿ûÇ°ï¹TúîµwåFÓÿ‹÷¿ö÷þWþk^ÃcïsþÕÏÇuµ†¾ÇÏ lžyð‹P‡ð?õ±ŠçÇ1ž?ÆŽôÅ`®µtç¿ëáspm áПn<úsÞ¿èÞ“n;hNYÍüHY8³õÌð}‡/ÇØ”á{_ +´<7¼|×d¤±/u÷I¾æÞãë[;Ãœ§>œ¹z0&PtÛÑkÂ;¾ÏalŒ÷I1®×ºcR,m¾=ïñ¾CŸ_óqFðñ·ÙÐîR{?˜yæã[~ê þõÜà3¿|þ¯·^ýËÂð;ÿÜùèã•M|ÿ¦O¶ÏßÇú£¾ðw>‹"Ï ®~ü<˜»Bð¥¿ÕàYÜÀËÿï|ßê£çÏž(»Q¾©¬¡ãÓ‚þR:ò—y_Ì¿îà [Þ¼²aég£.:§ +s¶6—a|Š¹éù«(câî#wn;“r=Üõè¹Só*a><”uMßùÅ¢È+Ÿø0.L°eÀ7‰1Ñ/þýVßs«ÄØfþ''cÿb,:ÌYL]yçæÓƒëö_\rì‹ðŠàªGÏ ¯xhrpÕcçú×}´ô¡³‚K>;Ø»ã¬HçúÓwn,€ Ƽ¸˜7„ò€Æ:'†úvNÆó­þÃÿ¨ôþÓÍÇ#¼~ÿ%”«èA°svÿBÆüb˜óòbn&Œ1Zºá Œá|ùŸk"o}‹½ñûÆðËŸúÐFÀ˜Ñ¸vB1„xijhó~Æz +<ú.‡±g07Hì¤À ÿ>ÏÿÂÌõüãLœ3Ã,Œùgº×ž^ÿÔŨ·øŸý·Y¡¯\ywo[m2ÌÚòÜå8F1††¿sõÉ ë‘'LĘï w,;¡aÉš“÷¼p Ìí›Ã÷½qõºֲÙ7Î-«¹-Ræo]:)rïÓ—`qŒì\w*æÀÂø„Á®Íå¾ö¥“æΗ-%'-.ÆØCÓ5ï>cÉ„(~ösWP,ü¾ïèU‘-‡§D¶½v-ÅJÙúÚÕþÇ~ÄRN‘gþenì¥Oý­ßú§dû[?ÌÄßøe"|ø³yú:üí?cïý¾«ñO¿º/þ§ŸîÀ³r«$öêÇ!<—ùý¾·l†§)ûýõ††m?¸ºþŽ'UWÖ•]­R6lŒéDróÎ §Õ`>âÆôĺ–Ìñók[o¶–…ZûNÀØSm»rkóžŸÎ¢ØiKî=cEaÞŒ¡êÛ19pÇÒQn7~ë7M-ßþå’ðηŒK‡1•ü»ß僯ÿ{}ðÿí«{öÏn|ý +ŒaÜ:å#ßgBKwœs[,1u½Ð¦—¯@9‹vµ¯¥óxŒíï﹯cú{<Ó×¹xæúSCÀë–m=;‚ñ&Wì>¯aѲI € l—aœdʱã óXáÚ£c Òrœî¹ó„—­?#r×–s0.#â…yP1wdËKWc¼:a•ZŒ¬g/ÇXw˜·ˆbF-Ý>ãb¬†C¿¿ó P.X̧ºëÇ<ê]á7þHýè¾ç´†Û“ÇùoOiy1Æ2Èʆ§?TBËž˜\í˜x[xc01!Ô¾âD”!¡Õ»Ï,ÝrF]såöµu0çÙm·ß1‘âl¬?x1ÊÔQÖEÊ-wNÂüE`§œY»ó|̉…òó°:VŒëdu‘%AG˜Ðжò„`ïö³‚‹Vžè /¡8EaŒ•¿ú‘o†·<{%Øí7aÜÄÐ3ŸÞ<ð››Ã¼ÅRÌ»‡¾U9;1w_ìÅOZ~ð“ÞÄ¿ß×üò‡Mr×»<ÎцÝ?P–G~ðEKäçLã9=´á1Žkðö8ð²;Ž .{äãþ‹‚ÝÛÏÀµªÀÊ'ÏE¡¦¡uÂÍ××”©W+e³oZPV߶|’¯±ë¸y`»VßRº4èÑ$åß®kˆOÀ˜Üã—bìÿ@kf’/°hb ¥gR¤ïÁÉÁ^¹y Æm +<ö¾Øøò§‘Æ¿F¶ë:Š]¸á©K/þËüÈÛ_6¾÷ÿ„o{íæîûö’;˜Ÿlåîóü‹3“jêêË0ï,ž«Çpõ‹Vž0w^}òEÊSz@hÕékNÁÜœDêxŒ‹Iù*a|aL¨Z_¤,زäøH7Œ±¥Î uÃ\Z³çBÌG€±‹¢½^Aq™A‡µtM¢xU¾9=¶ýÕ +ŒË…9«BÉô §.´ûgjdûË×b|C-¿ášÓbÝ÷‰ùº1¿F`ïû3B‡~[ºÆ ¥¼ÙkŸ¸ã`F_û,ÚôÎGwD_ý](°ç +ÎaÌMàZbÞTŒ™\ñÈä`ǦSÚz'a®ŒðÒG(Ç&Ž1œ—uá– þ;úN \Bx‚=›N¯¿ôàwû7¶Éòe;ÎÁXï±õG¯ |3÷î¾ó>QNWÄ쌕Ž¹º| #0ßV°çþ3‚Ë9‡r¬Ûwqló+S)ž®sîúÎôÈ¡çÄžû¤.ºÿã9¡G¿ÇḌÀ?Ü3Gy|ò§Jhÿ¯*ÑŒùr¡ÿÐç7…ïÞtzd2æ”iØû™êþ¿ç`Ì ß¾/ÔÀ}G/‹¬yêBlÛ¼Ys`>…Ê‚K6žê¿cÝÉ·E;'úÛûNð§Ë&Í« ƒÍS]&_%–©RÙìJŒËÙ2¡.ž:.°lçÙÁû_¾2¸tûY'c©Ráe[Ύݽs÷…ùÌkFË0îågÃøTÀ_ÑeÆ +ø¨c1oê¾û´†}¿žAñ~ø·xðíÿŠúŸúÓ Ì9ìzàt˜çƒíµà¶@ŽÁÀá?V7ìú±ùäܹ e·ÜR[†ù®¨–=8óNQ'ÌÉÜŸˆñŽoóÇÊ|‘–‰Ë›bD§WîZ~²?Þ;‰bÊ? ?õÞõ{ß­Š<üÝé8®ƒí™I,ôÄÏÕо÷o¸_áÕžKºÖ“ï)¿¼ó04®ÛyalÃþË0@ã¯_‡±{ÞScÏ\8ò—¹ÁžÍ§7´¤Ž§<盞¾<úÐÑk1ï`èÈßn ýÛ|’õ‡ÿPI±˜6½xe(¹é”Ð’5§øaþÕC`\éðöw*O}v}dç2ÆŠÃóÑ|ŒŸsÙ]¿ç’Ƶ;.ˆî|“ x¿*²÷ƒj›2éd Û7={ȺiO¯sËé˜3°ï³BGþ1?|ôo pÝ×I1tpÓÁKIîwŸ¾ïÅ)¸>\óÂ% ÷XúÈÙþ®måþÅ+N¨ Å'TÞ0«ìú™7•ážÐBÿ¢ ˜Ëc÷~3Æñ%][W* $:&aŽŠØÎÉ”­wÛÙ”›æ9Ò"vøÚÐã?S"k¿ãȇ3N§õÎ{Ÿ½kÝéÑôŠSàúŠ×÷Úßkƒßþ[ þÅÿ®®|x2Æd¬Þ²MËsìÝv&ÆIÝ÷úÕÈ0w"Æ¥·wNj^ýØEMk÷yšÖ>~1Ú`äãÍæ×,(kß>ã1¢ÜÄx[‹ã wN¢ø“÷}â'3û߿ó²bÌQʱ_A o9pÆÒôí}W ¿ö¹?v䓺ÆânZrå´~¹ýè¯BÑÿ½øêŒàáßÍ +¿ôi]è¡ï\Xzo9Æðeî=sãw(½æTÔÍqí!|ï3ŒùŒòãŒ7¼pYè®C4´ßuæØ™q&Æå ükeèñOTC´ý"+÷]H±ëÿ®ºaÿog Í‹9³p]ŒÖá6¹ Ç|ãÞOç`¬·ÐÁ/ªBOýæFÌ}Y¼ê$Ì뇹f‚û}SÃáOoÀ8¡¸&Büé¼ùÅ+‚{¿¸±qÿïçþy”¯Æ¸Mwmÿf¸µgÎ{\sŠ=ü&<øaeìÈGuÍG>F÷ývv`Ï/UÌÙÞùFƺ oxé +Ê{µù[Ó¢‡ÿ2?rôÏuÁgþk¶ÿàŸn ozm +­o>zÅ·{áËÚ¦7“ˆ}ëóæÀÃ?õÒ>F÷Ž3ý]÷†¶îm`bÞõÚðâ 1Üûè9¨ŸâHbÎwõ¡EknñQ¼cÌ­‚ñ ·½É4m|öªpïgE»¶ž]µûüÐÞOnŠøè–ÐΟ ±•“b!£|Åx×=÷œŽ9ÎÂzî,ÿ —½ú§ºØ[¿k£˜j÷ì¿ØÈ…zT Öü°ã¸pÆÝóMÄ·qõ¾K—ïü&Æ@mZýÄÅe-åÜy‹qñ)ÞŠMgEù™{ú“9ÍO}tkt÷7S.ï;7Þ´ò± ·¾éÅ_Í̱±üdʃ íjìÓbq‡>:-üʧuÑw?L6ýèý4ÆâžWykÙš€‹ûÐsŸûÍmÑg?Yà?øó™‹mʸ lhc¢=ëYwº¿t+Ð)÷"Ø7›¾qá+QÖc¼Ààýo\èØzš¯uÙ$´{0Itý —E×½xå¸ÜüâÕ¨+`Ì"Ò#zã¤!Ž-_¸s"æåÃñ{úãÙM{?ŸÛòëPÿm'&܈O¢ÜÀœW˜«ärpç›d÷D21.Þ'`^ÃØ^ ×ÓŸÏmyÇ‹qÔq å˜?’œŠß9)–¹÷ ŠÁùø÷ÄÆ}ŸÌk>ðáBŒ¹‹qž1ß‘ÿ0ð³ÇÞ(/ÂÝû.ÄØÁ½_ÞØù36¸éÛWü1ØT¯O m}cšÿÙÏnn|çƒöÖþpiã÷>X\ÿÒTvüÐ|è½é¡»öÅœs¸Oºgߟ®‡ù0þæîúræ=™7ûÖ²¹³¯Ö‡A½}‚‘o®±kýéÁöô$”‹”7ëÎmga®\§ÉU'㼋eÖÙrc¬b\nÊüëàGs£G?©Ç|¡#¾µáè1˜;kñ½§øZ—¹e©ãBK&b<îÆô†Ó“ëNÅ'S¶eÙ aŠi»î4Š©|ÿ‘+#Ÿs@,Ût&æáÆ<3Mû?]€9V(·qצÓ)oá½Ï]Ù¼tÛ7nï\s:æT‰ÞèJ#wtËsWù~9·éí_,ºýýwW‡¿ýeÇÌ­³êÊ´š–¬= sGÅÒ«NÕrg=rqèùßÍÇõÁð2ÌÕTVW‹ùL–ˆyºpß ó…¡Šu,?EÏuæ΢x¥Fî¬Äª“šîÞItÇ…¦õ/\yFqøï¸çÊÛµrÏ”CqåÖɘDzqÝ£c,ýÆUÀ ¡_£É{O¥ñ½ãG–yx†V~VþîƒcÌjß¡4ŒÕå›Ïj¼ÿðUÍû>¸5þôG Én:ô‘w>`Äñõùqç_…qç›ÞFß‹/£(Ó0‡fìî§/Š®;|iâå'àšDÃwî}ðl”ñ˜7k¡¿eBmàö ˜GíÞ¯ˆìüµ‚zndå Pþan¿@Û]'ø‚·O¨¯–Á89žò°öl8ƒr±/ÛxVlí“7.Û¡åkÃ9ÿ×}> óáú¢ôÌ-ƒyÎkç7”Õ̾…rgù± A3wÖe¸F„2±vaSÙÂÙõ _Ú'¢|jL¬8©qÑÊ““}'G½'FÚWœ„<sqS~ê5».ˆ­{òb䟡ôŠ“QÞS¾  mø‰˘ã‡âÓ÷n=õÖèúÀ®‰=úŽ}èÕŠè¯\C9Û6î¹4øìGsÐ÷×J1wxéƒg¡NÌoÞûQ%ꤸM®=%–Zs*úPn¬ ‡.ÃõÊý»æÐÅÁÞûÏ𷦧\N 3IF¹³öT9ôñ-¸–bäÎByí}øÏ‘•Û&c¾2Ì…ù’Ñ6³rg­×rg5½{êx”/MKüF¤mé 8w1†¬gûÙ¨!Ïm\ÿä%”Ïì®GÏoºûá󞇲#ÒºâDʽå›—=t.–ÇxëöòhÇÇ6î¿cnSÎ>Ô5ý‰Ú¸ï'ÕÍ›_¼&ºjû¹÷ó=S.Øû^½*øìßçDŽüµãÈbîXÌGåAvâ@p÷÷…èýÏ^¥å]ï>s%bþ\Ä=¯þHYm$1q/ZVnŸ€¶#®g/ôÅÊ0'vxFhÇOYÔ%#éÍå·ÕÅËÔËjÖ—›׸òs›6<}æAG»œr›¢ÜÙüÊT\; \°›_ž‚1ìѧmVÿK~äÇ<æ›ÇÜY ÑW2Ü<sg5ÃeAÌcùåΚû½±÷sbKןٜê;õöä½å˜£1ÒÖuB¨-=)Ú òswOŽl9|%æ@Äj´vŽyÍžúðÆðSï߀ù]£ËwÛ´ö sTDüz6êù¸Ï:Ææ¦ü„÷ï½÷ǺÆNÞó[™rgQþö¯òïù'ÊÚý«”;kõnÌuÜ|œ‹±ôÄðÚg/ÆXÝ”›úþç)wV#æOÆÜYëµÜYöÜYi#wÖÒƒÍÉãü!°-c ·£Î‹¹ã×>}1Æ÷Æü¨“`.°Æe›a~îºs+Py°;"‹ üíwç´MÀ¼T¨3PÞ,¿íÍkéæÔ½D‹süÜ•1 e´cí©”Ÿ,Ù{"æüŽ®zòüÀcÿć^ø×ù û?Ÿ‰ùý·/:ýËðm5²:zO +Ä[«™-«€Mž¸ûD|fa¿Ì×Ô21r×öɸŽˆòí7¬×00ï´¿ ôŸ»Ÿ8?¼ý[×`¾ +ÌÍ=NCÙüy e¨o‡’Ë€ï3wÖr=wVïÉM”;ëeotÇ÷„Xf󙾆øl;æÛƽÒÆ•œ{ðÅëš7¸²9³žò[“=¾ò±ó(ûžŸÏ | ‡0/ ŲÇ|”›|×y‘»Ýë…+Q†öüâúÈþg÷þâÆÀîw%ÌOkaèŸC¶Ì~â~äûÆ’G¿ÇØ–o_‡yIcÏ~²0òè÷ÅæeÏ µ¦Žoºcå)`¯]~òýëQ ƒ-«å—Ôrg)wÖ'7Fžù—ùÑ£_܆>ÈhP.Œ®u§ÚWŸX¿hù$rýIFî,\_Âœ”_é¾SbÛ_©ˆÝóð…$ßïÙã ?üÒµÑG~ 4nyý:Ì]íZ}úŠáÇu“Æuû<¡ÇÞâ´ü?(o̦§<ø,ÊŽ(æãÚþ&Óxÿk×ÄÖ<|>òâ(–oIù·0Ï}x÷÷äоOoÆõ5ÚsÇ\‚ëvï}ô¼XfÇdÊ᜺‡rÝ7ݳ×Ùrð +Ü¿¢íòêïýHÓЦƒžÐ’•'ûB‰‰ ÍmQv’þ‹1ýWlŸ<N¨ì¶ú– ¡Ö»NhìØ|:Ú·+>sž O?ôÚµ±CŸ. 8ȸW±øî“燻7ŸŽ²Ðߘ>®Î×2¡}~@ö .…r¬qõÞKHF‚\£<»¸æ vú§áz©–¿äÈÁ‡ßÆØú2Ú\Á]o3˜‡ qÅcçQ~°5{.F¹Ó¼iñ‡Ø¶oO‚­Š9pp}SË)¼ýl-ÈPÔSw¾#`î7Ô(' +æà]ùêšèw‚¹€q|á ÌŒôÆu¨‡„}“‰<öžŠº"î«`îxÌ‹‚y~B;ßšNcsˬ"YtUä©_ߌã3|è_oÁýºØ¡OæÇü6þ‰yéj`þÄö‰”zÃþK#=›ÏÀ=}ì“`úîSp_*øÈØÀ“ïK˜;«ñ…Ï‚ Ï|y3æÎ +=ôò4<óÞøüåá5/ÂXÖAZsþá4Ê…¹Bp=럛N€/æκWËyì»bh÷O”´Þ +2¿qÍî‹I×¾9[P>ñ=!²ðÞ|à²Èƃ—Q®ùG¦Äv½#†ŸxW¡¼¶¸ç’ÙtVÓ°0‡ß–£SÃû>¨ŒøíìÀn< u=ø浘Ïó|`¾§ØÖ·¼+žR†ûW”£fí#PŽ/Ìó†zXǽ§Ñz‚-wVh×x²ÛîÙ}QdÇ[,êã {?RÑ~oh_qBèø¡å{ÎÅ\iÑÍz.N°û`_6rgmØwæ6 +ãœzò‡”c=vï³Whõ¼ÇÙ‚˜‡zÛóW‡w¼QÚýcƘÞõ#ÒYhÍjÛÑiXå†ÛãÞ‡ºñ6Ì;s4´lùƒÝ}å£@à•?Ï÷ïû`úØáž{ì·¼ä7Ù·öŒÈ+ûâoýüŽöï¼ÓÕúêÏÚ›žûð¶àáßT=T‰mF^[½÷bèKÀhß¡)èë^´æ¤è¦W®"›y÷gDWÙßxçñ˜G÷У›^½šò£Ð^/æ¤zêR̳†kÛx–,²ãGîYQÎC\ÃÄq±ù­kb^œ‚y¨×í÷ ÿMøÑkº%Í£#W5>ð­ +÷Ô׸ބù¸Öï¹×®#‡>¹ø·7ܽ®<’\yr¨¥{RtÙÎo _Oè¥?-l|õ÷Ñ賿¯ íþp&åìÁ5Ê;ý&ÚûËÂOýòÆØ}Ï_M9Í1ç-è|¤³n{uú"ˆ®{âBÌzì{|àÙ?TûwÿLÄý]Üo¦³Ž© §’LzàåkÏ£.íÛpé)w?vAã½{=´'ü=°ûÇ¢ÿ±·§#}0Ï:Úó¾hÇDÌ_A9U@®ÏÛ´}X®¦¼Aˆ7è$#`Þ‡¶¿<5ú9Ø-<êõaàO ‡­:Û¾g¡ç¾¸spÝúéß\zô]çʯÐÖÃW„öV…¾ž±— íü‰@¼zÕÃç¢ÎŠõ¾DßKÌ÷„~$÷pí +íþ½?¯DžJ{ÓñÄqh÷¢ŒÅúƒ‰ô$ôÉÀµpÌSº½g’¯¾Yˉ¸òñó0§ +â„{cÁö;Ž_pë<Ði£e‘¸Ç¼ü¡s´|æßõFxi®¡â$êŒÑîõ§SN,Ѩ#aÛ7½:ºë‡®ÏD7ÁøƒöÅ6¿1-Ü÷È7Ð'"Ô±ú”h汄ú‘ÝýÔ('£˜Ë>}÷©¸~yä"æ<¢üA˜k sí|â<´³iy5ô/æ Ã|y;^«@}„òVcÎöÏ\6 +åçÀ½sä唋gïû30w–!{mU·¨aˆÀ¾?Üxú£™Èó¢€.y•PÖ>ôzEàà畱ç?òažÜ«§\_K·œM¾'¸Öˆ>@[^žÞz-æ7Æ{äO˜wùàG74ìý¥xôÇíé,Ùc昖ßxÏ…´ˆëè;¼ê±ó5yÏ%èGàßû3Ò"›\éoí›ÔÐØsÚ˜· +uÌ Zù0È™G¿ý3‚þV[žŸ»çÑ i¯ìÑï°¡}ïß~ô]÷郭wŸP¾c‚1Ȳ Ïxü{~&cý´_s7Œ‡µ{/Ä9ÞxØxøå©þ}¿˜áßýžä⧞E ¥VŒù1C}'Gï{f +å‡C’{ž¿êÑh› ½‹tG= ÷[Ã0fÃ+N¦±9¦fÑõû.A_žHçªSb(Ïw½-¢¾‚ù´ÐDŸ­ØÆÃW ïÎ+lîG—?q.ÚÎÈ¿Q¤¼é½[Ï&Ÿ#Ì¿ü¡É Ç&“œÇ|¯ÀSÂ+v‹9)Ÿ0ú+®ÞC9»c¨û`ž[\£½kË9”«‰xðwYÊóŠk& ‡â?ü–Æ0÷)ð8Ês…¹bqæXtÐn=Œ3°OP/Â16ÜõûuÂàžH‘¡À“ò‰aþPÌ?Œë<¸N¾|óY´W +:æg‹>ó»xŽ.¸ômô¥Ýt»ÿ…«0å+Ã}º•['£„¹ëpn?<ôíkÉxëKW¢¿+æMÄ„è/ˆó‹t -ò«Æµ{/!¹´íõ +Ê 8‡ïß9Ó-Ï]xèkÛÞšZ¾k2ês„ú½<õË8Ÿ(ÇÖ¢®I˜'¼þè?ßØð­?/ ýó‚ð‘?Î<øòÕÁEËNÀó!¨ÿAßMÁ<= ¦Ñ|Ä܃éͧS»i^gúÿ¸÷ã~Üûq?îÇý¸÷ã~Üûq?îÇý¸÷ã~Üûq?îÇý¸÷ã~Üûq?îÇý¸÷ã~Üûq?îÇýŒðgÊ”Ùm³â™xyè–ò)•óÄf¸¯÷dÝå ˧4O¯ìÎÌJ¶f’éÎxwŸg‚B jüófyfx¦ÖÄûÝÍL³Ø<Í3Ó3µrË4Cøušç:x”ñr‚gz}"žòLÕ*õÀÏžÚîä¢d'}­ñTB{t&ü+¯U™õ²¢(xFT¼œÈ±ž+¼——9ÑN!X¥ ô€¶*lU²¸ê8UÎk®Lu-Ž7³N1K¶Á“ƒ ƒÏŒ:*é–;­™ªtog´­*½Ü)Fí4uàÑLãË*3ê¨:‡ƒÁ†Ñò¢Æ£Ï1}>Çnn±°Éδ/“Ì´Âý,BôÐÓ ÉTÂù`Í*3êÌ9E­³·£¶5_Zfö"£?z½Œè·–xObNwâÎÞDg«ó±œSjÔ1Ìôv·ô¦àå §xjE¢g¼g °rŠOw¢§7å\Ž;á@4=FÓû¼6I–hpØcV›Aþ"î—dç lŮೣ>Ê’NqIw%ºã™t·c„¬£Ž•/ÝÛÝš˜ÛïZœluÞYôÕNžêtGWº'™)`îŒD;HµtÚ„é³íž™® X|•œ (¸& k/® X²& cÎRz& ãu³Ò´Û»ã@ÜÔÂt²Çµ]°¨úŵ]е‹ÝÆ XF%dV%–&R¾Åñ¶ô²q°XÁ©LÆ­‰¤‰Z¦1S¬6QO¦mVbi2Ž *ÀÞ³uäZR½ƒH¯ÒU¯çÆ{{z’ñΪAq,FÛñ°ksÎLÚÆÂ2uŽˆsþÞ6 ¾¹RìL-ÝÞÞ“È >3Jwö׆¥7ï{*ôôv·Ç[º7¥Sq“UÈB_—šèÚšN¥»g,[<¨-jWú +é4íéQÇ°§+ÑZÛ;È1ê{ƒŽ» ЛŠwÏ^Þ•îLt:Ç-¿àècY(’ÕéΞL|HZKÉRs >N‰´Â1UVŒ…é)€J‘[Ñl!Ý2ìvôˆ¨"uédg¦¦¦‘Y«Løô[£‹®ÒÓŽ†´¾àî>ŒÅîCÚC±«{£¥ •ÎvJ±ðÇšÎÞqà£Å«²-qÎÑ–ŒCs,¿— ²8dGD(jDé;;"lñs¯â—™ñîdfqG"ã|c»”dçèìÜú‚I¦.žÌÀtE¨³(é[øJr©x˜,Ht/J %KO%*tªã.¹v¸ŽGãõ²®ãQI8U§Ó©ªîDb…ãmŽ¢õ:ú?©Å"_.`V[ÿª¶d*î|›±”Lçë¹mÎu•±à-ãÐÎ1"%³ìuì¢;Þ–ìuÎìÇÇNENww-N§Ò‹óÀâ1[Æ/ws~V¦È¹Û¸ái#ªÌåi.OCµu¼8ò¶vÚ¤ˆ™X'‹œ‰9î’R[L/U÷Ýñ#À±ƒréÅp,@Ýý"8F1Z÷[Ñ &ç"¶Ø%“se´Ä$S)GmÄÊ&– +;U2VÇIœOü¢whiqÜ7.+¾>)•E‚JÇ;(Ջ㉔/‘J´²È–_pÔ‘¬w¼á5T$ó Ž™8š•ìéJÅ[‰ÎÌ‚xWéÉ$ÆcüçÉ»d³.v+]97:ŒÇG}œvÄ¡*Ç[Ï%¡‰š²˜…˜sq\ìBÌqŸ”š&^o8˜DÅÈöZ¯£ýTq>é‹|ª8?3[Š¡^¸äÅ2ûœw Eóõ w‡ÔÉ)U¼cº½;ÝáܧýµçA´:Ûfšó˜?Ú³£¿Üì—Ì"æ|•Y{zô=RËâ}Žq¦‘‰wÄd´çÇàØJg"îøpCk<Õº íÜAÝV xwr2iç†Gz éLw:ÞЈ·¶övôîgdgá¶"£Ž[w‚Ì{Çèµµ%3É¥ gƒý¨BœÉÛ“©T!>ש1³LâÉŽÆ×Q)íðwÊxq›iuÝfŠÍÎsÞ%¥¶$âºÍ«ÛŒó¨c¥ç73ÞÓ+ŽWÇ™Öqã8S€-vÙä:Ρ|r¬–†ãL¿ègZÇãÌ8bb®ãŒë8Ó’®ãÌ:ΰ®ãLÉjâãÆq¦q\ìBÌuœ)F¶×:ng +˜ôE>UƵãŒóWj|`˜·ˆJÇý§RèÌ£®,á`…xBºQºñ=J§/F®cÛ†q2²r^ó, +Ô\ØÚŸ#%°t¤Øø —4.ã_;_ý„çqù›#þ&¹üÍåo%ÂßU—¿¹ümv7¾Þê[Iàr·án®öær·¹Û×Zys¹[)q7Wws¹›cîfß6j.Ìqaœ19ÇÈ˾gIíº“¨€I$'‘cäÝIäN"ûñuÆ#:vmÔЮ/À»ÑVbô½ç5×%—'Ru©x_saçG‹ÑÑi,Óm•t8DK> óÀ'n7ˆË0 :;“c<¬ü› ×ð=~ðŒ7÷øž.ŒYã«RŠX“ìlK´';ͱl¢]‰xfVŒÄVbÔñsÙ”d ›îDGz°–~-Ù‹*ÕRH:ò"?%0óIŽ®Å_Äcïk~` 4vnŠýü`³½4·Ù +báEÎïZÓ]éÐZk{™ì¥Ëª K/8^`[2ˆˆ­?ðÑâ=†·Ä9O[2,Íñ²î’AvàìˆEÈ }gG„--´Ø%g¼;™YÜ‘È8×JI‚Eê”’$·A‡S”–ÎöǺÖ=…8„v¸ûÏîþsûÏ…‰,Æ%4wÿÙÝv÷ŸÝýç±Û&Y;Ð3³ ¹Q*{Îã7KŠ»çìî9ˆœ»ç<Üö»çœ{…ÙÝsv÷œ-ÉÝs…-ξ‚ÂÇg•)Þݦ¶d{{oO¢:Ý êw§ó¡—WnôÕvÇL£·»º/»Ð¨#×—H¥ÒËœb˜J.Zœß+Z1x¬cs‹:–ú /’y<¹EØ5_ƒ´Ä…L²’_‡s“ùŽ»72oæ¢îD¢s&ðÒÄÌdg[rQzæÒd:•ÈÌìN´ÍLwÇ;Û$sèrðrèÜ:w.í.Я).9ÞtI¤à¦ õ[‰ÑW¤LjÅW$;z3ƒdYµOãù1[ý™•$Û¿ã1ö™¥™+5ºŽ^z€×Ë º÷µŒñdü÷t%ZAëè#Å;Ït"Ì^ÞJ^K£ùÇÀ¦P, ^Î/è.渋9îbŽ»˜cþ¸t£-æè+;´¦ã.æ¤ÝÅw1Ç]ÌqsÜÅw1'1g,4áÛwW¦|ºTºKSãòxñø Ì1„…w-j̽(K8<‡ó +EžÃ9"nxŽ"sa-öð…z9½ìß¡9Æe™T2SO¶¼ïŠÐb>…Pì"ÔpUl"tÜD¸’]ãŠÑ±£…JœR‘ nd«qÙªànu£Z ¡cÛ†qÕªr^³oq¼-½ÌÍ;äÿzÄ}‡‡ý‡,sû—‚PÚ‡ý§msœ–õ!æ‘AXª‘åE>WŠ©¥ÛÛ{œ݉¶‚Øu©qZÂôke# ½sDZ±P,3:Ëõ¥Ó/®WäF+0SœŽÓeɶœÈô§GáŸwŽÑâD!>Yæ㣎“ej»!–¿Š©=ʨV°¢ã¡è\= í¸Lœ[,}îòÇ[ +’»üQš†Oi/(ãeùÃ9"îòG XÈ¥ÆÜåwù£˜øº»üá.”ÔòÖ™xNO®Y]Ò;Øi_&™idËnöàÓ ÉTgý³ÊŒþò—c7ËÎÞŽÚÖL|i¨Ù‹Œ¾ÿ¨×q´œ–xObNwâÎÞDg«s "§Ô¨#ØÞ⦦“ÎÏgh…"h¼i”ñj-lÑÒ¡*0L¶uäóŠ¶O¾Á´ `¥~©&ÚÞîp®ÐãŽÎx +&5^ƒ/ßDŒ×q® LÚ¹”N*n4%7šÒ€È¹Ñ”†{¥àhJ#²’ÔÐÛÝÒ›¥§d—Ý80%pø®û¯D–‚‡p:Í]†=æ¢Õ¸óB+£òB³$Fó çÿÝ%ó§·èÊæñ–9½­õ¥ÇT¼²‡ñ¸Ã­$‡ÛÜn¬ËÜJt´U±£ +ÙCxØ»¡;ÞÙÓî<ÛEñŒþ!ž*pMÆbÑd(Úi)hÜÚ ,Û]9Éî òÆ«L¥Š kŠ…$C³®èÚ1¶mJ +«)•óX¦yvg›™Ê +A"Bš¦;ë  + +YT¡«‹’öÊvQ‚ö“¯¯£%*ŸZÙÖæ™_šîF&RÎx*á_h^$Ê{­¯ÚrÆ+©2«ªªÀH ++ˆŠ‡ñ²‚"È §p¢(Hœ¤9)yY‰‘gy™’̈ŠÂñ"§ +,‹EâdAd endstream endobj 29 0 obj <>stream +T…áUŽó„âå–»S¨nn…‹;´ÌÃ2žžh#ãiæ՗W0^Þ¦¨Žõ*¢ z:Ê+XÉ˪Œ{Y‘<œàU^ñàÓ«È"€D,È{*T¯Ä*¬ä©.·`,ç•FöÔ”cQYT¡(Çx0À @/x/£HP=+{y‰ã ÂK*ëi¥6ˆ²Ó+½ +'qšJVD ‚寪p‚í)ÕË ƒïã¼ë©€jßÏ*^–xl¹I… +–õÂk%hºàUYI´«)W¼0:YU"ÀCá0%Ydõ„h-‡v1/Z hÁÊø&{UôØÆt°Äò40h O!~*³ÌªÇ„ÖËpðmOAXV¶ÊQeC ç +Ïr¢…}ÒLâD‹@¥¹?VÐ!2+(Ù»BèЖ֒¡°,,9¦e§ˆmMiÎg\Sš f]Sš‡Ä¼ ØPØ×”æ~˜,˜…Q±\&À|66¥yHŒ Šå³2ª«pfô +;›ÒlH¶4ö9§c_Qe9Çä ÉzJ–eÞÞ_ÐY xŠÔ_¶ne$¬mx9cŸáÁ6Ò¬«ïy¬©ð×±8¤ÑâC@g±Øõ¸DQK¶8Ð.ׇ„ñÍ<$Õ Â1G/ª,ª³JØÝl=< 5°ÿp¿@aX±±u›;°{$l® ÆòBo°Õ%â`°½ ”™ìÑ0øT />œ5$z’hÎ6 “9m pÚ`´ž×¿¸c÷?Lq”†€Bù ƒ²‡ƒ¨ðîeu+#°Cy›L¼AÎ ÷p86nUË›mhÈJÎо‘54DmhˆÚÐЙ‚þu 9ACƒõÁÉ9ă©œ=0dVáq‹µUTÊÛT\xR³–µFp`ô‡[Õðâf*‹c ¢‚׫ V¼õ]‚ƒLp€õÀÉmëšÏð.<:}CÖTÍZûÁÑ>UÊ£:¼&8XMp°šÄ௢v :¨àèOîÄ\³uŽ1ü‚cÜ×) +ÁÍ>4¼&8XMp°)è_E"8²· ýI]T½‡ò6EÌÖ(F@p ‚ÛàE!¸ÙƱ£É Nœ&-ó«(d“K¯<™Áʪˆ¦Ÿý™‚x¬œU9¼ÍÞÖá ýáS5¼øHNeC"ƒ#áÀ‘¤`ô¿Å".²úfPqÑ´ŽÊ émšÙiÓ†]\ †Û šDa¸INÅCÒ‚#¹Ày4^ ý-Ia§Ûà’¢?1[7Í65³Tˆá—ƒá6¸ +Qn’SIA–DG¹nHˆæ9†i_c/)rçЀօmQt®qeÏÏlö3x˜‡B?èôφŠïTNh¦…HRA$ Áë‹FNY=1ˆœèGÂÆKs‚]c~91nƒj…áÆ;•šU!z´­*h‹DNØ7•ýÈWd¥Ž—kìoÓLM‹9Œ€œ·Au‡ÂpãÊ ¿¹çœíÓÁxUŽcal +ŠÈs,#^Òè +Ί’飡yM³tæM0÷CìJˆ¹7Âj¹P?-ztËÆ¢k|qÆ?ë©ì¢ÆÖV-nëgìdc×Ö¾]«oâ0œeÇ»°–U§9äÛàrÕe‰çN#{k‘äÜõS˜Øx +´˜½¦²J¯°W† ¨¶ý.UεÄCÕ0ã`[(8ce½nØ°xf kéx¯XŠŽÝ鮶ô²c:Z[Y Θœ®YÃéšÖ DtÛé0QG¤Æ„èÂRèp@n–¢L'‰½¸þ„¨.×øfE¦¦ ÓµdѪۂHV]Ìjæ±@fUÆëTý³M€NáÑKT³9b`oÔšK2ôÓêwOEEK†y$M³ÎaWUU¶¶övÔ§3fÔA(l/陾0©O´¦»Û€©icŽöàKâA€I<9Æð*#å óêÊysu6ØОîî0bÉÓ „AÛ–nI4WÎS›¡¹¾L_*Ñl½Ú6tñ¡6ä¯\á8©%Sà̲F‚b;ìmFÄ x£gTýÙ+Ñ&À"³ ² M †©ËµŠáBaæ8TÌñ$YÚ¨ËqÚ8ôîVòX±’;-ªË•¼¹c@ $ŒJ ,%s(™8åÒÆ™[É1Fõ駫«ŒÙ*„áÌkÛ–Ón9»ä!ïZàä¤2Q‹mF.êsWãä(ûè£ + +•ÊI"Ïf{¤Cw0l¶˜ømä¸+Áï0mxU³_Çj.'£ˆ\Õp"§0œö65çm„k×â]~2?¹fmÁ¥M0ï G.ê(ÏcbË2Ù\Ìc•vÉn±Ï~aù¼8—[çqôA¸¼MØdÊ<)“ËmûeÀ¹\Ú$ŸÏçªNN“ ÊÄYÛ!ZüÉâs`ËòÙ¬m…S<\Öú8'uÜâs¢vÈbt‚ÆÅYbt 2:NÈ>ZÁ¨à ¼³×ɪÂW‹óÙoÓXø(¢V5œ¨gú1ñ¬“%_/F5ÈA);£²­Gà]…%ê)<#¡s:žá©.ÊЖÃÕø+²"Ç +‚Às 9…ƒÍ˲²X‹€ñræ¿ü£$´lapVç*å¼ÁÚX“Ñ0h?Òs©~ŠÔ ¬écg°N%B~å#G^Æ"k~‘ +¢•Þ!¤9ÉTDZMÞ~ àcؽ¹ÐðeyŒ[ÄB]ŽNÓàF>§àÁtTcð‚YÔ˜ûYÛÉÇè Œªé v0@( –J³^£ŸäCŒbZ‚>Ä~g§xeE`xÐ=:Œ#€½ÊÁÊ*¬¢P É+óð'J«ªtÀ^-ŠŠÌ³ªL¾ÛäáŒRb%ÏS¼ôÒÙ;F…ä„€8ɲ ÂI†sY‰¢Áˆ^“EI€J4Žñb`º¨xJÅv#f  ó°bF’Y²W† +à)‰…ÚxRAD–gN”e•Ååz'ïî¥`#YãTAÔY@S@€,kkmÃEEx0H ù£Ìó¬±?®b=²Q¤âóœ¯Åz`BÓÄ{–Е¹Ò5¯si¢;“hËY«N%»º€‹ä€g%{#èO‡n ß`ÚNiî…f|b†qC¼ >ÞCaäš¡m dæ’øK,MRàÖ>Oh!¢æhG),U=xâŽG7‰ÐâŸAöœö¿b›>‚‡Ö±9S¨-³â™ø à"œ\šwJÙWþüŸÿðóð÷þŸÿßh¸û»û{Y1ŒÏcÿ>Øüújd  ¾ S@vv‹Á¶f2­…ý³R›º¤zæô®XÑçAæjÓ’¦4#6u¥æеš¾ÖÉQ¸j’K –:“*lΩJcfrÏÁÔ¡¬H@þ\E*'Nwë—×ôRË*»TK!(OǸWyZ– hSª¬âýíÅÛ©Š<]Ë´t+-®P¶¾eÁ,kJ3è\ˆU¡ZèÍ£¥wÞ?ššFðEÝ ƒ²žö5|´t¤MižCÓ„h s íˈ{ šP勦yƒãÛ΂èô³ÁLúeÁE«rƒ +V,ú™-µÈgbc€,|µší÷:íò¨„¤‘¯JÙ¤³ƒ=jí”á‚”Åý–¸Þ`£¨0¼p¼WTÁÆìlȤš„¨™õ¸›ï¶Hf¶Ð"™‰…²ðÔêµßë$Ë£’LŽÀ‰Y"Ã"Ì«$ܨ’•;Éd/Ç˼b2¨²]J^”MѪ×Ð)fLŠÙAˆ™Y¯ºñj‹`fû,‚™8 K­Zû½N°<Ú´eµ ¹6‚ÙA„ËZ¢[›ž,è°J–x`qþYÃ7óv&ˆM£ÀÆfÅ6€N1 dRÌBÔÌz ÜÍwÛ¦¥ÑB‹d&f1O½^Û½N²<êhRAW[(.¹"Û5<”GE×H%R½ (–‚gÜÛô;dSï¬Rº’fÕ«ŒwÛ”;20%Ù®Û±œa¶ê÷ ë‡^n,Å΀Øô:«”¹Y¯ wWçS‡Hf¨'6’ 5Có1‘×µ#É ÊF2CÑ2Kª˜Y¯°‘ÌY$³4ÔŒŠMä—ÛH¦·ÐF2 ³”‰¹Q¯ `,—:Yº›dÈDÍPvLä ÈF3Cq²ÑÌЮÌbºúeÖ«ßÛ(f@,‚Y /£RsãÅ6zͳÌ@Á,fâmTlË¥M–²fŸ–:Èš>ºœµ&˜®þØfhI6‚ª”YÌP¶ÌŠ €d&È¢™ ¤áfTlbo¼Ü>/õ&Ú'¦Ž†51 Ü͉ỉ™C»vfÑŒ3)¤afh3ê†ÂcÌT‹,‚™º“2µ+£Z`Ì™³ƒ/³bsóåÁŒZô2p0 œE>ªÕv¯+—.vuÌ¢•12ÔkCÓ±he¨C© É€•Q§qoÑÉ„˜d²A£N_ã­Œ–Y42Ún@Llõ:m÷:réa׿,Ådû¾†rcÑHW€,*’1T(£JãÞ"‘ 1Idƒ:FºúK- +í²(¤XŒ› &®z•¶{B¹Ô°+\… ˆŽ¡¨˜3N×e, + +E"C'2Ëè:“Y§~o‘È„˜$²A´em½N_ã­¶™¦·Ì¢‘Ñv³Œ­Q§u¯Ó(—Ç­9ÂÀŒ¶q0lûÀJXò4bHQžéØ|AÚsÚ_ûÀе_uXߪ2þÿëþ«þX–ý¿qå~Üùég • ÏèøÇ¡~¾Úf+z½y¦jzà Omwæ1Ñß-߇­ä7ei'¶¿í¨ã }5gKDƒaSD+˜»-’-`cKæmh¸es¤?Úi)aÂÆŽ™¢Ó\ßñîoË$ê|Ó +ö³mÐ!nœPɼ­“¨óÍÂ+wû„€CÙ@év“»¿•h[+P²ŸÍ‚a{…Êån°do±Ry›,Ê6K”;•ûÙ~É°ƒéÊò·`:¤M*™· “u¾CˆåmÅt(›1ýQo`J÷³I“ t¼MƒIµò7j(ÕÖ¶j°dþfMÔùv fyËÛ°AT ß²é‡j¸Ÿ­œl ãÍt°ÏÛÎÁsæCØÐÁby[:Ù@§›:ˆMÞ¶ ßØé‡Z¶Ÿ Ÿl ã-ôñÉÝô¡dŒ…oû wRÞÆO6ÐáÖâ’·ùƒÀ·ú¡Õ1ô‰üm¡l ã!(–¿5DÀÂ7‡¨XîöP6Ðéa“»EDÀ‚7‰ú¡Ö±dZÞæ‘ XÀö‘M¶–lÊp![H6¥×ZÊ:ÞF²Ô`kUȦ³l%õC­c6‹É,`“ɦöfv(M6å6‹°CÙl²ôÝ,Âeéj9Ðu³;”­(›ž›EÙ·£,u6‹¬CØ’²)¸YdʶT?´r Üf3‚!lXÙÛ,²eÓʦ¾fQv(W66› aóªz ®ÍÚ)[ø¶–M“µ“uH[[6}ÕNÖ!moY*¬ª…oqåÓipõÕNÑÂ7¿,ÕÕNÐÂ7À, ÕNÌÂ7Á,ÕNÉÂ7Âòé3¸¾j§dá[d¦®j'dáÛd–Jj'dÁ[e–’j§cáÛeùÔ\AµÓ±ð4K9µ²ðÍ4Kµ²ð 5K+µS²ðMµ|ú LÉ‚–Œ¸·¿r¬“ž…žÓ¾%Ý‘8KdÎá"IÉ ^Íjà¬J‰ 9`ÉY¥Ìz‹¬§rÚ8\ e//¿iæ²AöÊ"FXMƒ9•^¬Àºxg"Õ\J÷$´ììµƒÆ Rªv3j …Å®ÂB¸êïÑÒž©º7ž(ÓY:úo%Ú0À4‰è¨e[¤ <Ú/F z‚Bðy´¨;Ú[4O`íYPu<Ö5Ö§jÙmo²½ÑÖP#yªBÑCxŠ% ¿1Âl~¼Âz¸B¡w—–Ójc$ Qð˜´+£B¡Æ›¿Ø +(=”cÅ-uœ9ÐÃÚBxŠ¼¢d%'Ö‹ª¿=ªžÁL6TËÆœÄ3' © §Â‡KÊëXÌ4m«'?ÓôHãV5œ¸3³%öà(­\V< =ͺlM<1ZšÉ¬QXAÃÐlúà©ÐFõeTÛðÍ×ö¿Ö3VAm€kõé£Üö^[sô!þU“¤÷—~Kï\{´|~€˜~F¼>ýCa·U{ˆ¦œ«ˆ<¥‹dU{‡“-]øëJefËš.åFâq쪆;ƺ1]²'ÙSú ­Ek­°MœW¡“â $ ©£{h ®Ö¿‘ӯ©¬GûOWð ­kòª:f0'h«*Ž‚9U/è0_ÕO{úiµõP^UÇh#‡çµYUø*§Xç§D<‚¯ÿŠ/ÄòW¨Uä:Ñ Ó]þ.M#´CvU$ÓOÑNè”XxÛ:0Î2Nuñ¢Ù7A.íeDQB››§Ð_0byÞé^×*dЖáýN²®«qÈH’lAjLn¥á¾» ‚æ.K™`~"@ô*¸6¯/IÛ­6Æè粄Š—QEmÓE•dm7…ÉuÔhi²ÞR‘ÛŽŠÜ¦â ã<|*ìk[;Ù©°“«ÂNÉÖrºë^¤U;¸ÆðÀÀÂô `(‘;±Q'†-'ßhɸ¬Ö1Óo D-Äû»5¶ê¡m#û;l¯·šU]no¯•¥ºQ–Eòò3Š—x:ŽÊäa«CjL'k;¦5ùÅ´Ó¿æcÔúBݨ…˜ÍnµÝÛºc€QgMÞ[ˆoâ3Ök+²î:X ÜΚ/͹µWd†"u^©ßéÝ!cA}_°¿{óé +«"ºñŠ¯ +ÜôÃM, +Ã'[]F7^‘@ƒxȽ¦XÅsj¶ÞZ=L{p’GPpçMYí­ +_Š;oõ>_>#×en1ï +Û0Giý^å=$™‚). <%ó"y\(´I‹þ*KNA •²u ¬d=¢êþ>f%ÀxQk¹ ‚úA;WD•`–µÞcZËͶ˜Ï­5+ÉŨu …Ñé¡5þy³<3i†êê´­TA3NEô×sg´tÑ*:²a^‰òf‰'(ZNµLVã¼X™Ýð pÛ}5FBÝ€p^°TìH‰†<Èg{šÍq¬¤ ýcxNbJ §Šš=CšciòiÚ°¡-šДV`aJˆ’æK†Á[TÉ£\uùZ±~àµÓ9 S@û$ o‡Ú0f7pžœ0`6I™å’ éÍ «éX6OþŒþ–¨´~îØŒ€¿À¨œ©Ô Æ@f˜/´fHÅ8`/ÄÀ8])Å|Q¼J[“0ÊD} xTøf‰Q˲ov…q£À 0!8$ »7ŒXd0hÉ[TKi Ý- ®…[¢hyj™ ÕrÉ+ˆ¼tž¦ƒ“K&"¿íô›¨9XkehÙ–Ž9éQ7BïcŒ% =\¿æùŠ=Ä +HÒ˜*24ÖꑼN«ÎïÇc»x¢t‹1Ëø8”18aL +2-œ@  ¿2ŽNÕïQ‚±/æ©ô8¤Zã H B;¢bqK +*‹I[ASEÜš…WêQ x¢@…±€»VD‚{P0'\¥4`˜Ú€C?>¨³>Ø”†‘”i-BÎcUà F5Ú«Œ{myTCC0ß®ƒpyL¿ÕNù +Fä`i$$4ÀxÝ}¥{M*i}­Ý¹õfè½™0Á0”Ì[ž^ÚZnÜÃÛñ°§YX9YèZ Ψr<1|FS^ÐLu<3â…,jÎ΄ºHáÈ™L/—1kBî&éƾñ\rmYQY[I âÅ=#-‚±^LK£)rv˜Y½Zx`Ì*P¿¢×òX–ÉÞY5ÊåCŒšŒ0¼$¿¬æ› œVP«m,säöoŸŒVõy5鬿BÑg'©ÈFÊ<í²¾/âfœf›,‘ ÒïšJh.éÅxƒ^~ÒP´Wè÷´&#cÚãµs<Ô`Ö`¬w£zF#sÐÀå)(,‹6Ä ¨Ê3fÔú¡wŒ +[ãƽÞ$£°Þd½n#ÜĵhÀ³ô +£°qkÔmÜë¯6 +ë Ënwëp¬¼@U¨d"¨Y2.óö 2´,ƒb\‚b´!ÞRï®ÈÄ[ô´sîXWÁi+~ò`G_Òiy:) gäB¤]Ðv1mº¥íV!Æ-–í:S{Ô¨ÔHZUú-LOsâ@*b»U4©‰UršßºÓ™­¡;[cég»†¢¬~KûjFt£5±Bcߦxsîôf àm!:÷B8“ÁjÈqÌ<Ñ®!¬9 À@ÎrYU´”ǼYNwÕ²Ü8.× +JÔ¶áVÉ‘¥K¿ŽEW–!Gª x®Ú#W5Èi>¬`˱œç‘ã…–5¼;Êó‡Öä°Oœ¼ieN8mïØ>³&©h Ô¬Y“?³„¬y4îA¸@ ¹Òè]Ê¢<y‘s½\Ð53Y‘[Ÿêçd¬>ͯ l‰¢®€ê] +Ú¿0”·±è[5ZãUáûñIäªF9Áæ—6ÐxÕO ÜCCHAe‹Ñì%UB›ŠS0'› YPǪxüT„¨ + .¼a%™ÒEóðaÔüi` ¾Ž~ø¦jf·7žÎ‡X%Úµwðùï0JuäÔŠwJ^ù«Äp8 %F +}ãfãJ55vCby¦²;onO·ööôk¯ãÞs=ꊦ0YN„D†:Œ'Aûk]Ôítô1“ìv8+‘inê ʬ'TÙ¿ö‚ç…Xøgž#£„ jZŒuS£ßTèwù7úu/Éz% +*÷žeå2:¸ º‚dÝÔè7ú]þ~ÝóÕXt“u•Ü%<*®0šOaFÖaxFÅÏm^˜î$W4hFEE¹rÛþCùÂ.üEÑ~©KõÂßÚ–;­™r-ü€§ª»·g±gA¼3¾(Ñí©ínCí÷˜¿y´«ã©T¤\×âd«þd 6ÝÃ{º2^O}º·³mzþ³Ó<åS³ °Ì1Kd?,zº¨ +(0'Ï ú|Cº·uqÞÏTEÏb£4 ¥ÚNèŽÅYE«Ç»[Óñ”§ÂS—èlM¦ŒÇÛð)ª"§@çÍ@µ¬÷2#ô^‘Þ‹ÓŒ^+z4M@¥ÿGê¥ýsÑžÅÍ9ú¿0Ü ªö Lt_¦/•è)Ÿ>¿3½¬“n@úO­LõõôÄ›çú¦y¦/„Ñ ’tz%¨KÆ#Ó«Ó]Ø_s’)Œ(?ƒøC²Ó£= A5kmºþÈu ßO${’ ¡±Âü|™xë’j¨Š÷$[íÅ»ÓKÎËsôCª¶[/5Ú• @=©O´¦AV·áÚc:<Ž·gô}·é³íž™žrÏT[=¨£ÌôÐk=3Ë=ÓëâÝ™~0«Nw¶õ&3N:F-ˆlÔ=-Ì•COböÒDgm…ú'zZª5FÒ´<~Çx¢,®°j?Е¨Jî,£e)(œñFO—ó}0|0‹Ðfk’y „ú£h0‚¨Y»Œ¤ð*£ò¢$ª‚eVBÛV$F$&….º‘"Jz¸iº2ÌòO4¬Ún +ÚU,˜šÇ lU*ÑÙ6L”N•< -<¬ò"R>}öòDk/¶~ ²yL²·Ø‹™?~õ6äô£&ÚtvYÛÞÞ“ÈL£ ¼^`^*ÕK†cºÛï›cº&Á0Å‘N¾©Y•zj€”žÙíí ààé†df( {jmo¦,A›‡Ä¬dOW*Þ§ÝNA¦nÎ ®¡5¯SkŽ#fTjsf¸…×°Þ±àî´(Ä«Š¬²²JËú6 `D¹ñ¸Nã'ÇbÅ£r’+Z\ÑâŠW´ h8‰÷¡+™ÆN…H&y$%S¿R=ÕéîÎDwÏpI…œJMIp̾`½,:êÙÑ-¡·g aî®o÷õ­¡È]Ié—±(Å­òº³±¸g#êD /3‚¢2/q"úuxNdãœJ,:;õA#]PV5%G±ZLÕDœ=;ïðÄ9Ú¨SQˆN\ uš‰…% +¿FLLu™˜ËÄJJ¥(~¢àqL—Ÿèü¤*Õ›ð,LûÓ3ôîĸ²ÈŠ,'rxJžñ²2'«<+`MVî×g§l¹uâŠH¦9¾ž, –|=%1ßÏ“ýêlk,è'2’Ìã"f¤P;œÌ)‹YÞxPv¢ä˜®H òe‰×•&!‡X ¹Ö–™PSÂðŽŠ±A´Ï÷5èÉŽ'zJÐA¦±&p*….EL€ñdI6Üy;ùxòÌ]ª“ÕlÈ@ôà’ã…|²"1*zó#qözóCµT<æ £QìŽÙH>ûº¦L3\ÊZÙ~œdÜP‘yOY°üQ‰00yeEa)ª²ωfpž‰lM_xLj û‚á˜Ìw^y†XI… Î’¯¨,qËÉ"Oü“â ’ÊGxmþç ÎÿŸ½ÿÜN^I†áï|&gHd“3ã€MMØ3{ÿxý«n „¶göÌý̵Öå¨ÕU]]]©«ºQÉüY#ùIh ÿîýWV0þiõŒµü´7dЬì!€:bÈOSA:¤ƒè(n! ¹UÆóU Îã KÐàrœDÿråÿ+©±’Ï‚ @Âûüø8m`$¶¼H½ŽjÕa•Ð _O ³$àçÇÂäµóßÈKÿRVú_”âg?5Ý®Á³ÏÏ&ÓüßÿW¹úÿ)ÉÊõŠÁ,þKøôŠ»7“hI”l|;ˆ8Ö7®&‹Qz´~ÚUW\zÃZ½íìt˜WPøÌ&î§>Zô×4ׂŽðN÷j´Ãá4O®Úÿ¬3†nùå/·jdôð‹NЙÁœ7þ#œô …gÏ)(­¹õ<®fƒõp¤=UªþÛeà²5»å·­öëôÔ‘ð'âJOâ‘&‚y¼œñcÜõñ]AÏ»~<¹ÿù÷Ý~`,‰C‘BùX$t´Îbz.%<žê\ò¯åîZÇÿB&ñÿ[‹ +þ{çØøÅ)þ-“Þ®7·io¸þÇUæ)\ÿaËùoKápðï¸`ÂE¡­D‚3Kû‹¦ÎÉûc´ÅÎØéÜ®Mo†xÿÉÐö¶s™ÌÞ_?ð»™»»Áb+Æa7ª5ÊÉÅa+ît½ýKës-ðéOGuÓØxDì¶ìwúèpá©bËo3ÿÜô@ð&GãõvtÛmwœ+ðÿjŽ\dóÿN©ùŸ¼þé)5ˆ$ϨAgÓ ËHñ_âÖë÷£´-t/!ÒM’Dðÿ#j@ˆ¢ÛíH*Hø|l E¢ýÃø½>†Â'Ú¡8(Šš¢«aHÂÏ2ž;@óÿ1?•½ÿ³Y…ò¯z@¨çë ³ÿ»¶ÿ'ÿÃäàßf·ž¹ø×vx=j³Z)‘Õú_lj38ÿg`j°/ðkï°Ø¿ñDkc¶Ü,N¢•;æçd<ìÜþ»6°¥È@r S ¿ç ü˜Y ÏÇ>ªžYë-Fûý°Öÿå1Y_ø'J¿Ù0Ÿþºÿ~S\’ØÚžÎö#öÙo/M`PmG¸Ê'8Yë¹äm}4ä0!ht7/éó8t™~Ÿö“¾€7ôzƒ>lG²VæñíÎh$ÛJö¡ël(?d˜ÛsïüBn;­¸ö~”ÔMC¿AšôûðÞ¼›¤ü€1íõÃH)n¿þH6ô~êÏÞñõ@ÀK#ÃÍGø¤ŸÁ)óA’&}€ LúnÏ”?¾Ž*“¸×)eêû´í+ÐÕ£„×î„ÿŒúùíJo2Zí{\`YÅÀ’$Á¢fËlx×KxIdkbcSx|M2>ö„D¦0Àø{/ƒ÷ü‚djD„‹âR”]1Š’Aïm. +¯$£>ÿq¶ßO{QZ- °G»£ $Ê À9Þ€$ôƒ¬Z?  Ùï :Ÿ1è‚ *À\P"ƒpà'ÜS¸VI”oÉbE-rQ*Xyé'2èeô*ØÞEaÞ +0èŽB/º<ÈVê$Eÿ€˜c!LóÇõ(´‘ÆFš‹ ¨`Š¤Ñµ¦lÕ +LLºßÍ+ A øi?°10!E3ÇU žíN +§è„¢  âŒEz¡{/Aûña—^Xç?ꉢpñG€!½„AxýA†Å" H¹@rAPÕíÅy±¼Dàˆ…Ñ••$£þà Ÿ ^ d!xI´¨€q|$ºƒ…*.UYÀÿ‡­WŽP)Ä^ÌÞã¢A÷cÂ’?>Tƒç¾x}~€Ëòô²×pP>‚À剡¼Ú"‚’G‚ÄÌHùøHøQE €} pV0.’ðza%ƒì °N!| º¦=Èbá¿(¬g.ø€â'h>Í@Ñ‚>¢Áø@î!D~tm!+¯~%Ì“èšBöR’ é÷ÄÀ €(]rÈ_˜hIP"Æ`‘ðc^ €ã; +QÚð,H~PBXÔ 4  "’ØRP^@”ölU¢Û/¨¶ÁÌ':œ‰…ŠîC¬GY&Œ ¡–&Ùªã‡%‹…sþAm8F’ fs;EÃSh<ZŠlŠ³%:I–‡˜À” oÞFD÷"b!åC„@í¡;o±Fº`÷Kz‹‹‘X 0§Gz“ä lÀçÈ¢pžâ 0èw?&ÎÑò3~?Òù~:ô±lCÙË’`XypYJËFJ´ÝQUÿKà >Vâ ±SÔQþ‚ÖóÒ>T@×#&*€¨§>$ŽùëRùfÕ]籑^4¶@àÈ]A IDgVßßÀB€Êܱ¾k @ s›Aw0…ñu5ÀÞ"ˆëPHaú%(à.‰EÀ ž´|˜â>vìØjILSÊGáQ5ª³ `!ˆu¬¸ ð‚Á½"$89‡ÅÒv(§â(_u h/D¬dõ£Ëc@瓬nƒQƒfóÁo,<`;˜¿—!€íŸ„ý2 E剬œ#̇±¡¡Y¨êP¾ , z5I@Œƒ¬gM$aI$ºÂ5Àš$¢²])¥{a ˆÊPÒ—9ÚI`ÞrXyQ´Å&~v~à%t§9² ÑõÄx>À´DXûüèÆb¼Æøu­¬ˆð +ð"Pa]å¢hJ‚'íGÂê'ü`!•n”ÇÙF p2€xÑdG`Àøs ¦‚ÁkL¤Ö¥ØBDŠ£ú£Ž|$Î^ƒÔ +ƒÜ €ŠÖ!Ų>^‚äŒKPdâ dRay ßôbf¤È£¹M¡Ê4˜ÃìÃ÷PÈÔÂÅ`ØóA—”SH惩ÊЬ”c.V!-0Cñ/'{8ˆ¥N˺ÓD#x`×"+÷êF—æì0ð k0)´òÑ-áAÖ"¦Q 9RJRˆ +nÇ·°¬æ/Xÿiî‘eNz}Xö3'»Ã‹®5Ff8¸hÄè:o˜u³!¶©itG…ïÌó³šz +!}.6 +.k_½Vš¸B›Ã ”XÅh%NX1È‹«œ†5Ê¢°á¿]´Ž•˜ÈÞ€¡L"¬¢HôÝë‡\l˜_†ºÐÍâÚ+ŒS‘ +k +ÚbOÀ/È%&°À£,Ü, +'½'] >0hO‹.X^ äAÔÀ\{)Ió첸ÐÇ×¢~æÄJhñ}±D=.Hc ÉèCN;»€kЕõ0£`£áºw/:¾Hàcœ€¥Ð¤ú‘tÁ‚ìòü{ŸH‰"rJHy0TVØš PG¤À*£è–«U ÀÒ‹ + Ý ýcGOûX‹HLÂúG“¼HKZ·Þ Cl|ò­[lÜž, /’&AœÛ`€]c4˜w æËhše Ú‚™ ±–bþ’úÀn&žxy!ÛV¼ü¥@[þØç99€À×à0E~°¯q±)²‚hPO`p{qi!G +ó¬pô±8 t§X.ò^šýbµZJ6Ѳ\ud*À‚!PÔ©^ÌBè¬ðνÈ0Çò–øêÐx,˜QÈl°XA]PJì!ŸO”´qÂLåÅF+­Ù-¥rÞ²%^ K*7KØøÜGcþ§ê«¨Íùêv0 U_âšqï=É)zX.!\%¸l3É.rëÅp´º­ãìk•~ømQgò[²¼ÐÖ+Û¿¢t׈è%®)kUZsÛÞŸø\ÑÚä_Ld l¤ÈO6%…¬°I¸º»!4º$ˆ"ŒœàG§] gm3`̨”û<$!X/š~ጠĬZ@'·‚FGåa±°ŒXÝËI\dý²ë-?Dð¡3w¸ x‘2 #Xóƒ:ýçüeäÃø‘bò­p€…üÀxÀc³YË0N +gƒÍ‚, v[‡4ˆZðÜ‘° 錌Öô ‹ƒeŠ&1'õ æB$5$öÃÁ’9–¾iOlet°Ëé˜0¸ÑùÈî °†Ìé?ß”G‘<*0–} 9 0ìؘ­iò ² À±ñJ|àÜ*°gسNăUÿ…ÉÂZÇáïQ€R0‡ (г`Pbã‡_¬ªM°ÔC Ѐþw¨X~ üN<|úô_`Áù½B[’€ŀ〢ul¸‡BêüZ|À þ¤/Ò~€K£p1>õ_84֤ž sT`|¡à-žÛ>$ºÏ•A“‚ììÐûÁeÇ*"ÀקÿÜZ"|Ø;@æü=‘¥kY¤AÌPð/hMºø6ȱA +€QSŸdr/F¤þËÑ_ p Éê%ý÷ž‡‰ƒµØYò!Ž‡¿GÛõoSëÅz{›Û®›“°½2 VÐ È®>à""(¹Ÿ•Äêeï)rCœi°Dàà¶^¯ÿ´Kƒ‚((F²e9ŸØøf.\J„Æq±.#6È™“Ï„öú±™«»  ïhð;0óQÜvöȸßg‡B€ö&@ha{ŒeìðÈZšC’‚x¶…[|0¢¡÷<È` ÃBóÒÇé +àhü9¦ùD×ç^ž'! …es•HÚoEÐÈ¥£Ù89Rä2  ñ$²‡ ðƒ¨*“‹AŠ±Špsž0É®%O{£Ç-Ðk.Ô+Ïv{þæ±0‘ö2o‡ÚŸÄ©çDGþÕ|û¹êw®$ þÍʨ›ÿ`tØï׫÷õø¢Úf¯Ÿìm]û^ÿô‹èúekm½yÜßB£†Ÿ¾×z«Ñâ=µXïFlÃ*×®·eg£ÅðØ0;[ {8ë 4äƨ†*"Ìv4œíoS½-º&²1]o6¨Ð¾#åhøºÝám¶÷Çz‹·‡­x¨6ñÍ¿ìåiÅÍg†¶­ö€_]“|ü~Âß„7&{ž*åûõp$ù0|kýçr±‚Ç®Þ~¿õ¸Š=‰-ØŸÿ–.~¡^+pÃíhŶ9fП¢?ûÓeÍVój÷þGo» ó®Lá7ý£‡v•Ù¶è÷L;TòÂ6ã0Ù ¾ý—Rgµ^4f±ÌGC-”9¶tþ½ãêÏVC@”Ô06`ŽÆh¡>>~ë_šþR‚T¤„¦ñÏÐååZ_uVÿ›zèÍK5ý›9 ôÝ~½ü{%Ù¿ŽC»JpC:–˜Vvü—¯‹ºì?•ÿ «t7þÇ°6þ›—Án1ü·Ëâ@ÐM” âCIIô1 XnÌÿ˜ ñQ+ª3Í5ü{EqPu<Ów¨šê€Ž-ÿæÜLÜZ Î7IúÔÆ÷OM«òï• íl©ŒäO-#ùóïÉ)á^ný58µËòh¼¯ngà?jÕå;ÿF–~õa;%QÕϯÂÿn­vŸ£|ÙõvÙ““(|Žg‹‘bcð[ÿ½,NH<åkßÛNF{0€P¬dWHkÝå;ÿõ;¡& f«ýh»è ´yëüÖ³cÈâX¸u?Â1}-Cä·þÛY\yîVëÊUC¶ÿÜWcicËsÛÿp½»ßöV»Mºh²$„íÿô­ºrù·9¹Biýwc³ÞìgËÙ_¸ì?'ð›ÿn–£}oØÛ÷~ŠGð‡x†ÜŽˆ–UÇkì”Òæ‚uÖ-ò½}z=( ÝXHïðS©yjY^z æ·å7h¢à ‚ÊaOúÜ„›à¡>O²‡Åâ¸ÍÃÀÂSöœéÀQ¬Ï6#\eŸÛΆïuä@²…yCJ²]òDAÚ®uPhZ?Šßó)9’íª›Þ`¶çíó+¶Í‚¥q:ÚS©5òJIJx´f£ӳݾ·cètå*!ÀoÕÖ`ë Öºx»±Ç‹78.õ—`ÆGÊ\͸þüò¨c²dþ¹?1§B[D~SŸ?Àød€gëõ–ÇJ„Ûž9Cµ©ÎÀíœAÑ)‡,W  š +™X¡¡D±ûËÇSeHød`ŽKd¹75Z,Rà½r ½²}¢†Ù_Üh(y4óëíì¯õ*Ï‹Q2oòM2¶·äb4¢‘¶Îôȵ©ízƒvÓÙs;.Ý ‘¬ Aâ6€òˆD ¤~XŒ¶ü@Âù”X|n…;a ¤_b»ï¯{Ûá-yytîyc<Ñ"QçFL qü4t}´h®ë,Xv®w³Ój¦Ø÷˜à­‹ +h~‹Ù~…Ýa.­âþRÉ[ðäÿÉ NHúv¼@–új´½í­ö³ÛÞbÖÛ‰à D^»õa¿˜­F·;| Èî²S©ÆûÑ?ÂáxÌB!ˆO)†vˆÀ½ÿó¶<úc´V‡ÞSxsÓ…½ Ö‹­“%¾¹ÓùÈ’ÃÍÌ-jµÛ¬÷¢Ÿ‘sÐ>Q¸MöëÛzoZ÷´$ÈÓ(Hê½}`_§ sIòö¨æoç«õ`4¹°9_ +Mg»5PgtÛG7pÇ5 o7½ x7[§3ù¨o{GŽœ]1Š÷œoöN³!ôv"ªQ ÈöuKf­M'ï¨*5@ÒM´,|üÂ5®ÌIh^àp¦Kbw1.1?ˆ!°/²÷b±žÃ0è¨U´¤ÆÊk#ö©ßÒ–ØÛX×â=ã|›³}|š[¬Áp¬6‡ÅŽïÒŸLTøfƒŒÙÝ-®Ž¾­íYQÛy¢PëmÙ›vµtVš51}M3ËþhXÛ®Q +Fi$fbASÔ%Âä„(%Õ! 9˜Š;’ƒuxô Ïöª /X3` +gÁôØÕ‘]w‰ ·:ñ¦ç1þuœ?ïLM‹Üäõyd_õÄ6ïE“éúùÙP.*ƒÁ}Dé˜öAòC:«õÙ?¹­°ÿb€šÝê6QPr„Ñ?ÝBa¿ +û‚L|vÃýaj¦8W¨Îw….šV¹€_C.:(hÕ<…ù>nÂú&žëL%ùÎ)jZytZœ­L­¡L¨± +صŠm«J)a3iR±m´ÑŠëOD,•5p&›çœàù\÷ݹ[pE€.š!X½…Èw·ÚÍg›> =Wn¶ö»Bo«Ür°^,NúÆzÏ·?F¯Ññ¾rÀ@´v‹ë~a5^ßž7WU}*Ž¼múžˆŽµ§²i=zSÆt„{ìQ\ ¾Û/ÜCÁ‘‚*ÄA¯qíÏ{×ZÞÙ —ðx±ÒŒÔf¨¹s¶Þäô†€ŽäšÉCGm8èœ)Mž.U·ãex3AÙVü´iB®6rÝ‹ÑX[Ãýz£ŠÛr{®€#ۖͲå(¬2fxÛÿó6½¡ŠSÅ)@½¬ø²òÐ@D3ùFª$c»Zóv8:5»˜rÜ +o{(Ëáh7›¬x¡#JIô¹”`U± eȬxÙõgûåÑÊÐ ¿Óq9êÅÖ½äoNI¶¬WèJ"´%¦@Ôòd£ôÙc|0ÇQ’­·C÷z‹.c“ÉŽA}o Â6±d« ·)ªÄ êÄ­È|\›?.,Nq«Ê©8ö¥Úîå1î›ÅàOyVaÛ Vâ q›=Øñ¼]A™ñý²h7êtàÚ)ྙ,çîÑ +% )I]Ôjw©6Ç îÁòO/š×p½ŸªyѬ*±pÔ´߻РÍùÍ%5Aç‡Ý(½àÀ¡¤ï8¾È÷¾“³£çh¤ +…€?=B“‚êtºÌ!X+&ßuXÌ›öTóÁp¶gÚF“qÅPö†ïuºm›Ð™}ùzÛQ#}=gšß{á“ó½IÍvMúŠõ§Ýu×>¸Hü4›m¿Ð×GôÕ•ùˆ}Yчü ú“Ô´¿Å_ñX‚€í_žŸgSã·è_ô3½™fúMBŸ¤ ··|g÷&=®Z¢ùµ3e3I;´¶¾eúÆÐKzlɛҥƒ·‹I†‰é½1aâ;Ý”J¼*m| -²þ×_æq§éâlB7]g*£s%=ÓeÌqœú‹§MÞ㘛<ûü™ý‘÷Ô¸ÒôˆÎŽwü#¼ ?a˜–R~žÏŽmõ!4;ÕwxR¨Ÿ±e0·$wïë½›Ì%;ÏõD}xgNf<ÂÇêž|uéØ<š1¯Ÿì¹ä+ý‘œ‡†ÎøWg–ä±Ò¹×*ðê—7ü¡yþ•X®'‡l$[¨ÒtiÐJÍ¢ù#S)“ñ¯»ãÈ”³÷´×xüõ—g^,é±ý–á(´*† g|•šM†û³|¹Ó£Ý“yg“ñÐýçÜS;|Ìò…|aS vùj¦O8‰RÇ0†™üt$]Á‡—taX°Ü˜’‹ø›\øM}†ñìÆÞÄvP óàZú‡"@.¯ƒnêHf¨q.An]ŽxÊÒO\n}zìzõ¦“•JL<¥ì\þ…yø/ÁFºtu:ý0ÿ©Ó¥Û>àÙmJ§»+îžzn®lö7½Îvÿô¥³‡‚vÌãx^¡·b­oè›!k]ˆ¿è¶káˆïl“zäB¼­3ëôæ·ÎàLß댔£¯31°tÍѪxß"r:ëÝâEgË4Ö:{)ìÖ9ôI³Õmé\¯™O»ï²é<“YTG,k:rÇŒt^ÃÞ¨óiß)êh§¡«cÈ÷­.¯xuÁ¬/¯ =꺺ð`3¤‹šÛŒ.+Vuw­èD_‘]2dOëR/†w]Ƽ5ê²µ¯¸.oÚ¼ê +ÕAWrºrÏô®»¿sØt53]Ð=ô3]£Pñ鉧G]ëð©×=­Ýó{t +P^Ÿ]÷añªûhúº~«ÞÐ Ÿ6FÝx+ë¦ëÞ^77yÝ2ÔùÒ­«îœîkÐþÒíT^¯+ôzÃ&YÑ›“³Þ:}zÔ;Rw„Þµ3}è‰J/¬÷’•åIïÿ õ{‹U­^õ1K/¢o;_úÔ´ÞÐg»%Ÿ¾ðVXè˯ùª¾:¬øôõÅÃJÿ¸o5õúyM,ôú÷†î]ß_äq¸@égÐÁÒ°yÓoj@Ù[iƒ¾±5̾»©Á6ë· ®7ÞNÀà7{†À²·3D>ÂcC¼þùlHß«†|ƒÈÊíyÔP{}ðšŸQ—¡c°Y oÁÞЫõ¶†Ñ¤±4|R¥Ï“aUOM ;sbbÔWïÆF‹351:º¹©‘—>~ÝãÒ|}ÿ2ÆJ1•&-Ƽ7á2Vm¿±îÜEmw(g|õ´jÆ^ÈðbWJSãücw0nö9·I>DoL&óÓ}Ùä8X^Mä}oe¢÷ ‡)roŽ™’ĸaÊM¦¦J)j35wÜÔÑïŸLÝÅüË4üœÑ¦Ï÷ši3,ͺaÏg¶Ì‡f·y¹1û}ت‘/æø,a½1™st«d®<ÍWæ¦Ù5??äúæ1ó™'#ÿ‹y•n»Í—­m1ïÚ.‹käy²øZonKø!üjI–Ö>K¡ÚZj¯±;K{fÝXº‡iÅ2¦;˲\x·ìçñ;–XTguƒOV:H‡¬ÑÏÀޚɆŸ¬ŠÖæªa¶¾¾öÖaqS¶.’mÝ'Kz›%9Ø<)GÍÆ”Ë1Û]wç¶å¾Ò;[Í=ÚžŠ©¶íc­+Ùf±&@±}-~»)ýå°»Í/;ý–þ²ßå}s{ÞkÙÌëž½³uíýEïÕ>Ÿ½½Ø÷ë÷‡Í6ysPõ»#œ×÷ébì¸w¦Žvåiëèéw&Çg%àvìõuæÆä´¾’N*[¸wF\ëgf—9«ƒÁÙy«yƒoƹìÏÛ.ýª9w¹L1‡‹ ¹®ÄýWÛUZŒ×®–ÿÕëúxmW\sw}ê:Lž ·#ùRqÓæþŸnŠ»Ô²¶Ý­rÄèî•óîEqµðè‹ÞˆÇU¯÷=¡ÁïIò]O5´÷zž‹]0¢ßóUëö «5!¼†9qçïe‰â¾f Z“t›è?xýÄ +à’¦‚µ|c"É{›‡Œ6lS²Ð#*äãš¡È>™Z“«|­E™¾f ŠŠZTlYP¥T·C=ÙÝ9 +L^†ú*,^[º±òÒ>Û‡7åÿxôÖ˜dÑû4ƽŸåIÀ§oW‰“ϳO9|Ñcö;½ïÉnÜûFãηów~Çܾ÷یޟK¥LþGOÕæ¸&„ÿËigh»=yGÈ¿ ”RI_à9¾ÌJñÏ ¡§‚Ô¨T &Í­Mð!3?FFXïˆ3dŸuB¡¬^2ë.ꌦ›Ð¬MߘÂÆÒbö¥rÙp:mÙ…›é·rxØ.ZÂûÑŽVƒ?O}Î"µé é^m‘¯ñóGÔu×IEcö¡-zß›¢ï-c)º)ú½1g®´EÓý·Ø}É^ˆ½?W`öc›ÙÆ|çr¥æw±ûíÛ]uS®Ýõ²ÎôÝvÓ Æ=Õœ'ž`¼–xÃjÒŇËù&¡ë¾ÍÞÞË,‘v&‰ö¤=N|ZzÓ¤%2ÿLËdiCl“ÝdÎÜlŽSÊ}o÷¦T9–jì÷ÅÔ¸Ÿk¥O‡aš©ÞïÒŪÛ~kOéÍG¥‘ñ˜c³L2`·e_u‰Ì̾ìd-íÏ]6왳÷£ùc¶_Ýïrº-šó»Ý\ÁvPro¦A%÷å°móD°”ʧkÛyþiš‰å—öŤàl–b…„ÍöYx|¤ +ŸÁܶh;P÷ÅØÈà(6šÓ·â´5Š•¬Õ—])úÜm•À傼œíËÖÀ¶SŽ¾SÉS¹aIØËÓÖËgÅFêZ•Ø,™ª4gTå3ÖÝ;˜Éô>Ag^îÛ~Ãýý2òš®º+Ùp5Ý%¨ê‹þà¬~eæ–5íj…»×Cí}ßÝ?èÞƇ‡@v­¨­¦ÓÃØAÛêVO¨ßy?™z+๫/ï‹ ÏÈüØÈyêýF·jÛ4uúWG3м‹4k!kµ9ÙûöAËð˜|)…Ÿñ‡Çm3?éÚ ðÙxu,?7“Bt4/†óV:ÁÌwŸ›Þ"’y,:r´Ô?-cËx¤±\v©lqe±-«Œ…|] yy§ü´q6u"·í ÑæÌ-ºå–Í#WÊg_*£|„Ä–} ×¹ˆ_Bb®ž¥ëÚ4uÕ}xÞ}Ê·¼Ûna °–΢ÊÞÕð”•$NA£AMO%’Š½úPÓcLD>¤s„ßÜö6•†:N‘Kžöd ã¦—ih²MÙ1Í”’=ŽM³½Ý¾=ê£Bj.ÀÖœŽv£ÛÞvt»ŸŽn¹ÝûÛÝ1ƒñÓÑêvÇ&>öVü»±oñjèíÐÏìÏàToçÆ ˆ{ܹ°³?ׇÛÍ^Z¯nÑi˨gšín‚.Ÿ 9oØéÕŒõv¿F] F·3œÕÕ»]ôþDe€0 8Å•_ìƒ)B¯°Jã½çs7,´°È°[Ïàg»ÛÃjŽ.hv+sèqæ¡ëÁv¶Q‰å &ª®¼Órfv[Öªú´ÖGTw«´%À!É‹ª·n*íÐ[Ö@,7éŽ-›ÛÙ’‡­ŽÕþ±ÞÎÏOe#ç™» ýÏ{­9j<‰볧]yó^àO#8va‰†ü™ü±jóR¥|’ûœüõ^Q8=>Ñ_ÿ¡<¼³Ê—\Œ~É«©ñúDѪBUž8K÷'SAy¢E!åU3{¡TÕE×—‰åª–”;±Cë{çTe튩$T¯×ÍFReXFÿ ¸U&‰EsÕ³\)«J«`±løÖ +­X —:¹“ê{×¾»ªùÅiG-áÞ“³è5W]Éø6·œ†&+]1«sZ-©YϽ3Òù mÅs±Šï.T~µTâÛÀÉf¨JÀDú|‚Ø¥?Ó'aŒ‡»n{<âÜìâ»å¹1ÅÃeÝöب¸ONòåxÄ7j¤fÑØ ív[& ÊÃÀcÒYSˆyÎíÓŸoI߳˙X®Ë»D¡±Ÿ:b´áMûŒíäçÂÒ¾1¥ÇD±/Ù™‘ Ž™ÖÃËk¢™r·äòÛ…Þâ‘yö-Ú¹—Ž´ÓtÈZsÃñ +û«1=~k3hKò)4NN÷©)óL +ÈñaNÈòWØΨUÖ}"±XÆI¥ï&Q®Ÿv4~ÞwñLž†þªI?%‹'ÞÎÖh5ùðo~]2ýŽI6¿}ô3ý9H4ÓŸŽôØSúÊôzc’î?>k¦§ÇD5•¬¥ÇÙWüë-4¹1%}æ;KÌgzøœy'­¤ï)Qͦ?Ûï©Ù'í —¦I65¶“@ÀØÃÔ‡ë3¼@ãkYJTËöR6m–XÚ Íò>Ìþ~ã~pܵz_ì€bt 7÷úD³¸?\MDYŽñ´Õ»jÀÊ©¦ö7¦ÌóÐ4¡>"wi"û÷bˆ|D²ià»Ó‘\»â¹R–?±Ç‰`9çnº;`*ÁXøt*–s‰÷"‰9&âØ„?²ÖqÉ "ÍgÊfìFXD„ä õà(k5ol©)]ŸgewöÌ©°:k$a™!âÐ8,ª¥†f°¥&ÓÌŽ ë æ™j‹ç –_´}ës—³”š’à|TJݘÍÊÐ&L'˹¶¸%¯]®ÃŒaÑd(‚Êù*—œ³¯emµE8›ö?SŽXîÃuc: F5g3i?“¤]Õ8n2ßrb iÏÇÆžüÜ—ÉŪµN4§OFè¢ä8u°É8×÷TÖìb^õñÔ¯½™“´£®–hgEPÎÏ×E"’œ[7³l$GZy²ý¹nïñiº„'¬I¢ÈX£_í³¦=N¶î™  7j\<|8Â…Ý$öÀàO’‡ÅK¢ñQLqOƒ‰x$ŸrC“H²9I>ÞCÓw~Šƒƒ–ñí dfg‹¿>=È]5µbê㉕ìw^³Î˜A<"s©r}ŠÅ%FýÐé´¦îN¿ÅÎoܘÎ-ñ¯èk‰Â~¥eê=²o¤ÐoI¶³DÄ•eü®tzÞdP“nŒ¾¦oL'ô’¨Ñý¹ +‚'ì"~B>vz#Œ› lj¥Óp‘&;`„SËWšè·0îì w!&Ñe1PüõÔ_ƒƒrz¿FÏñ0îΤÄÍ1z,W“ðÉ LÏ”ˆhê`ö…%1µß˜Ñ4pPØw±Î}ãa`: ÉÅ£:Å ç$pˆKŽ%¦>%,ÊøÓ©G¨ð+Ë ùåC–-PãòiTgV‘$~œ|I¬(;V¼rŽäˆžÇŒW¥ˆ*Z©'FYŠ‰†‰ivq'Ä&u‚Ìò´(n|^uÀÉçÙÌjì̵¸9¢DBb©„OÖNƒeRü€[û¸ÛëI­Ì/˜ä˜Š¸gŽÇ¤ Úii^dž씜Ö+-1Žu:@ÚªøK~4 Œ<úó,4ýì‰f«´ÊÆ-£&XúcŠ¯0‚‰èÊI9ûQ鄲:»´Wà¨í]F°\ÒóxÛð8IͺïñÌ`þefUÏœðïkòî ßìp´±;¾˜Ð¡Áˆ¦'.ÛkúÕ +¶×³Žx[„!Þ²Xƒ©é¡þœ.•¾’ü%ßG‰ú*]7ºÛ>ÎÔ\’B(ì;„î‰Å{Äõ‘]‹Ÿzô¶pB[›ÌÀÙô$i'åâùd²?Iì™üÙ¶B–Rñ<†³Â^UžëÆ7"À5E¾mp‘]Yó좃'¼æZ{*õ× ,%°ÖýÏ?qN4¸&ÈRú¡s¢Á5ᬾ‡ºÐÐX—Yàûvçg%°poóÜ<šæœ}ôTLb3öL§sWÿ·< ìHý©ükº”¤-ÀÖO>Ä_ìÉÓÛ›ÃHT0tâû"˜íctÉ.|2½3ÙÀ³@„ãÈŸXå™Ö¢ÜLTKÀî°:Yæ<#"çT°ôŒÑ´ý´rÉ=yÁÖÿélÿ_":ª¦ssÓ–×C5ðɹÏmôý`ÐöÝ »-Ë8) +ar‰Æ"'_ä ~W¥âº ç©6í# ÖܧâôSÏsCjúª ÂïïÇÙsÃpÝ°ö“óŠ‘ÚØwZ !ät“s*ª;?81;.š¦¢ÀG¦“ÙHæÕ}ê…Évßì†lfu€UI™‚ËËYN£ç%À ÊÅäC-Ú¢³¼ç=tL‰‡ûF ùÚÇíO/Gãµ™`æ‡~(oÜ‹Ü®:ÚŠ s«Rû·!ߘN,™o·ÓG_¨Ò¾ÃÂÄ]øyw)bLx}W7É|ÒwH¤óq§ÌÁK7 —\§Mß—{–À¾XÆßê‹ù¬Ýæô¸jƒã®@;Õ³Ùw›nŠFêGúÝU¼ýà0‡¦ŽÆ ”_ðó9O:_0ò®tqkÿ`yì’ct™Ûò´~i[½0c ˆâ0jë×{:*¯^"hõ‚+¸§f»¢ +®—:QÌ|¥D=jðòyÝ>è@sW¯Ì—Ò7 ‘ØüY[§¶O”:äÆhé~˜.ƒÎ#óYõà§ßéTÞÀ*#×Zs³6zÖŽúC£óˆ£S¾æI.Üu:m¬°Ùqcb!Þ?Þ2ï]Ó ?ÑÅ¿’]ëIcMO|R—6š€ÁÒ9“Lßó<Ú0Xb¿`ßÓ×å XJL»²iu7Û’‰x3£L·ÚÛ$ŒÎØ–8ˆ×„Ï|ñ×°¶ÞkˆGîÍéÂrö’ô·žÜ‰{m’¨7àYäL¹7&9'‡[¾©Â*”¨']x)Û‘±QÇM@:GRÈšfc#ûn0wÒc Wr0:ÓE«ÍŠ›ÓÚÇ–ÄÄ4žêÃccc*ÔJ´¾Ë8ìô˜¯ÞÐ\mÞ“Ýx˸ߟ —aŠ':z_ÎÖ“ýM·KðÈ¢# +/¹×ÅI¿âmås<Í,0霉lº“·K MÐÎï¸1…ßÖ/¯JZvæ~®Šš„G]ÛÇÑB÷“ð,ã\?“ ýd¢áϾå–{»µûgåŸOÓ¹˜i&Ffc°ƒÖóîÔm8k- Ûȹ|E2â)=Št‘«ppœÀã.×nµüÛp¬¢Üg¢J&½àfßÍã‘ØÆÀ_‹G3> =<*;ç3{ôe~Wé +ò +n„íf©¦¤NÒgË«ÌÀ¿È.·M‚X–Ó¨da:µÄ:1¶JCÊ—r]XÁz"&¡ŠÃ š´iÖiZ©¶gçEŽñOÁwb‹¸¹JÔ]ö˜êƒÈ :[:žß|;×È £YFÊuâ ¼qÈYŽhñ¹È£h·ä‚‰±+ÁmdÒhs±¼¨‡\ãÈö4R~¢’·ÉÅbó!ràÏ<ÆSÛýLŸˆXø<×#Í>H,z#´+a@›5D¢¾.ïÓÎê×ðh)Í'¬ùúC1gzú <Ý6› Ôóbcã+_/cG9<^šÍà¶Òg[H¨€Äθñd›"ÜÎ8ª°ëRj«À2,rÖ-ùÆt‚ÝŽGYßwÖ_wh ¥î3Á¬P±Ýsð,AZ¢!E­¶òPî=3C(´ÇFÙ÷…‡I/âÌÓ$“äv{´õíÊZ‹®VŠ|\î£y c®Ûøc_KlE"™|7 ¥å!èo&<•€îóC/¶Þš£­Xô®íiïÓÆ0fšýE`o7²Ùø˜¼qhÕù—ÆN/¦ò*À>m +ì‘HåX m_ñ¡`æÌ úw¶4 BZÄ^ ŽV£¤o>Ò­Ç·V€¹KåSÓ—¡yXúxäÁÛM—Jýi³XüØcÙž9¿=‚ÙÉ<8Êù5)ÿ<;Þ$ê [ „{OñíIŸ.½Àö†äFJ wíkÏLóý°º1AËT4=ñÓúˆóð:£c_ö xAö¯l$;à¸ñ$ŸN¢é(“89¶ãœŠšÙ3ú4ÎDÞRLc¸Ž€5¾1v]çàfh84CTÏ^K.\d3÷ôü´‚yÙ'ÏÑ<¶É}·È~¼¦¸†ûF®•³éÃÁŸlb߃±°…âW&þÑšXõ'»“lôØ¥–Xòr,ݶÀx퀀ˆµ‡Ãù)ËcíDó‘ižiœÇ?Ë0òe[²DTþhƒŠÚ»¹ßðb¢˜XIK¤™¶Ï<ƒˆ³SJ&ÎêÏ<ƒ±àµz2ˆä(œÎÂË€1•$ª¥<Ú.t(JzP£—p¯½þïÕ“ù4e3Áõ,Ó}š>‚Àqu$šÐÕ—ON”³¯²}gmûð:3 mþdÅf›1«ÂƒyââhôèýJÖìl|θ:IÒ×öºx³?ë:'‰fzg§¿J½»(øÆVp®"¤Þ©{ÖK?4¦ßfÑNý`·tÎR® ïCjºÒ…Eª-RùõðjÈZKÉÌKíÙ¹æ_§O’a†üO¦ßÌøÏ’Qùù!X#$ÏASA>²— +c.¡LïãÓ™XÝéjÙë…Ãkº¨gôŽ}¿wÃ…j¾N‡žû0–Q–3Õ8iQ$&0û`æÙÀ+?VO‡ ošR‹üÁwG¦âªs8a 5w™A,]=š7ÆàcæÅœ´ÁGÌò(.ïî&šÓÁá((„+®û·U\•²ãÕÀ1ŒðT`~«sŠ¡õ\ÌæϡÃáÖl3ñÙÈü.S/QŽ ¨€lÓ[I^GvY7&•û7[Í»½{p¾rïxPMa5¿-Ïv{Þ 5üCÑ{Œ*‡Å~¶YŒâSf/ ƒO˜¿gVÃ#òˆ„èG’|OŽ&³ª›;>»Á‰ü_$ó +1ÿã¸kõ=„ÇQq9î¦{/úDù"!ïéÁÃé~öÞ5÷I°’ró¼¡í!÷&vzJ9¢uzª³yóQËc©ß˜tŽØ<¢³Ý?uÎé }ŒÝ:Ç!ÔÐ9+Oi‹¨P„'Ú±bð~]ÊöàÛQ;PÎþôÜwWýˆy“o–âòÇöðš9?%òï£Ôi»Eû çæ¾/w±@>Òvg×ϾVfûúL¤Ÿ³f6šˆH°¢V¯ñÁ‘rÙë¯LË —Û[bÊ»í6¼kgðøì0ΘíÙ}‹ê®çfbh&1äê¹Ûí±‹@߃#–Ó™ñÀñ¼¤çnÏ.ó¾ÂŸð5·€·;i!Ð×í[åõAhŽéúC…®[h×x>‡ì(=+åLÒ@#:ëvGš¶Ò@kä«OO…ìg 7¦3ØÅYqÉõO­=K'# Ôg{uD¨‰ôHõÙ®ïÆdxÜ,ÊRc%²ÉR\(m0®¶¶¨ ÐN—ÈŽïg 8÷6§‹˜Éâ{Sh.O5eÉK=Çš(ðb?#œÓ6pòë!VF`m—³jíx_¤ €úÖ¬T&’КÅ"ê÷/ß7g gNfÁ¾oߦ«¦ Ðxf²FRh÷î£.4c2z­áWé±Fto;ÃtT—ú²Å¾ŒË²PGxŠÂ¼YÉ~÷¯Jõu:D6HÜKÕg'Œ±¾¤ªR@oLDöí-+3VÚ`š¯*)9 ="çühIÍ ËÈÊt0Г˜À{ƒóŽÚqYE¾»÷E9òf^çYÐçQf\$j½1íôùÑš®÷\€e6bþ-¿<÷d€Òf>Ìv倦‰Šý-ˆ"µðŠnïë’@a‹WhiÔðR@‘ä÷½¸ˆÆ»M/5Ö¾”Ý¿<Û¬’@[–ÕDhcúðÑÇ@oL—c}É­Ò&" ´ì5=f㑨4ÐMQ/d2ÛzÏé÷2~©í»RZh%–yï>¼½I}«Î (Ò/—cýìø‡Y ¯âm·pI½ÿÜ,«Á€WE›Ø÷‚k%Kà­©áÐÉí<™Ù²( 4pïÒëâo.c6ô%^4‡wæÚ÷ÚD‹Æö\îÙ1Pʳæ…#-öPužºýü: +ýèV t·6G9 û;‡h¤º×Þ‹šì¡ tnw1@°îK©Tpá±ÐÔþBæõ4 ôŽ,¹D‚йñݳšÆk ¥J(‚Â5n·½þ +%D@·ÛÄh}äߢNtçÿ qšæ.ôà‘W¿}4o8ûaÔ{§…HåÍÝuHöiç\¶äžN‰ü‡ép~z!ùAô¦Í2oØ©#^Ÿ#Fô”ïMîén¸X•ôjª’zÎ +ÅZ!ô*û4@ÙëòO§½®åD±Ëç Êü<}Zv¬î(ù§ýê8|~*¢m¨êý¼ÌÛ¼9yܱOÇ–¯ èÝGÇìhœŽI}è‚býbc%õœ•riÇ|+û´mê{tòO_Ó¡è‘bÏ?L]Æ(ûôs_ÛäeŸÎ[Tòáüô‚bËy6Ö•{PzûeŸ)_ìIžb¦Áªß(˽mÖ™ ¯vÙ§™D¥?’}Z¤îô¤<Å:Êh É<õç‰LÔ~sÈ=u4vwÜÓ”;"^•ùæGΞ8?÷í|κÐKCËKŠ“?¦zºáÜÑ컟=Éõîžý$cÔÞˆ<Ì”ÎU vÀÃül¢?nô[VçL×SèOûo'^=y”|[=e‰Ö\œ<?G`Å ^ ¼X\âµ<ÞŠðT+ ø±O­z3ÀGNð žY´oé¤Ïln—@Ünõ7¦3XìéÈ¥ ÈÏy‘êë<Ë%òIŠì1þX±§# ©¼Ð!¨¯>2là>ÙàšÍ†3PlýŸ€zEäEÖÿi¤¹…¨­ƒ½W>X£”,Plýˬÿî(ŒE0Ö7Y @àO(²þeÞ˜ý?•kDçVZ¶ÈÅ6Å(Zû°È¦h +fu<‚ÇŸ¸‰°¥ž‡K-íº‡åŠ¿öeZÒ†¯n橪ÚÎ?åøŽ“Iók‚“–K÷úDÔ©ó4±ìaË s#.Zñh÷ËyþÛX‡MÎYG2‰õ÷csêÑŠ»ˆóÆOŒE,˜{IƒàêedïY4qàc÷ÇYYs° |p²-\tÃ6EŸ@ì%=ÓQÚtúSç[Ì\̬zjœFPrüá~︘ üXƒÌÈ =ØÔaívNóFP3 xŠ¸ÂDÑo2á?ˆ!ÛB/I +©y° BŠÒûÁ¬[qR–;‚G…1ÉAZ¾’%5¢£?ò¬3/1>‹Nv|7¦óñÙ<Î_C¯>†ÓøìI¯ +ÄÒ>kÌŸ¬g¡‘X +‘öägV¶«-ì~$VØugùJ ‘YÎʽ~]OyIºƒqóÌqò)O%ŸƒEeºßÈK(zl—¢§›Š¯¬è¹QcÝÌkaË'à eͬ葦]U+ ,ƒ3ãdÿp´#WÒ´ë¸t²b[nUâxœäÐ:úë‡Æ×bxpÞ»V³¢Fê\ÉÌí&H"’vˆFÅ×b¼Qjn37ûb4PZë«$%a€wÀ{âÑö´ ù|þa3rOi™irnȞђÇ8°qþo†×ÒÓµ#zä'ã Žtg¤ÖΤºÂtçíòØ/×]/«uÝ)¯:Е=ýÓAq. ¤ó‘t¢?/Þ&Å[€d´fJRÓ ãO(úzD_òŒï$/y£úpB‰‡Ë>'‰Y,×ßÉ 2NŒöž +ìrJÎ_Åq9%Ãœš¦UôÌ»“¬bÒ`3žƒ5ó²—UK7¦kæ7‡h’¿Þz’ZûÃœPNK«²>+^”öwEY]Y­søh1é%yƒî8u7&m3^¾¢a¡fó fpeR4,®˜¿\myîŠåätÖXiÀ UÃkéL¨P®Åë¸ÃËuÖQvb®$ߪû1ÅÞ·¿H1¡D»¯0óÁl/×}l÷MëX°ÿø䥜A9ƒVRASɧ©NEŽñ léU¹¿ÓÿÚªL>}¯s”ÙýØ‹™Ì£-“ò™6È¿ž:½Y«óq²-ÅÔ‰íNjY5Œ mæEBAr½¨OSl§ìâ‰á8ù)  ‘mù=š¨,{"¬ìQQ“< +]¿\ᓳ›’Â$£Snõ¶ë»ymøT@<Ÿ¹€LP,A‚ #)>dHAÙì¸1]ƒ”á›@(-Ñ’{Û›”Õ²VP8 ­þ¾üø,H~£è[A=ž!¶äϱ¾ÏÚÔkÿS¥÷dæm—;KA.œ¤ã#ã“ïO½Zù“Û±R"–ö%.ëö`/ ˆuåë´Äñ^cpî.ð"‹p‰KzÝêÑ%àZ½¶‰R,¡(ÉŠ±Q +ÉŠ"$ˢЂ—qŠÕC²04ÞBâfÿê0Iå%T´†7N^’•âA¨–¿Þ>ø¢ð€p¦ÊÅliŸ+‘N•‰ûܘ”¢tË"ÚÜíü(îƒÈ¢ë‰™x ¢­‰“yrSiØLéøAlJÈ9™¬Á˜FT.‰MékhÇÚc“2>Zã Þ»GÆ"âž/v•",‰,áﭗЃMyhê|^:+¿“~ùF4zSë=¹ݘ8xG¨ô¾#îMþ•9×F˜w• ýHÕÉÙ²@‘¢SÓC|[– OÕ¡Í* ? +~Ó ²«ŽÇÉ)ÀÇ}]ÌûrÌO )m'ÜÕ¼ ÉÅ[¥¢­¬g!oE]±ø¤ý%X47¦oRàYSVy7šû:’×aÃ퉳ýüt²½œ¼És/G™|M?×뽓¿/Ñ™`‡ð:%*Ü´`ëÂiZœ)œ¦ú+; )œ|zcR_†Ô êŒr_½Ç'cD \N»&RòÌÏЗ@‹‰%Únn»h»¹xOƒD“Œ¤€0ñ¯ŸJ´Ç³D;z¯×XðâÎÔ%ÚÆ$ÔÙ÷%ÚiUæZë_h0kRíêµý\/Ñ.bl??—h¨—Ÿï½â~vƒœIëiÇsc’²J¨µVò ù[‡Ò6ŠÏYæ[‚ÏsG¿ýtö¨_Æ–/y1¤Ñ2KÁ:¯î¥3¿NÌBg-ÝUBöÆ$+f¿™ý \Ì-ìK <ñï(0k¢¤&9 £Þ6Ó^¶‡~~ž{‘q¨E;ïêý7Ý5†—%vpg¿«fu!ŒÏ¬ ¡6„_]?±ïyLÚÓ×w?öøžÚZ£Y¼Ø…¬6l_eß+Ç`Qg?·ï_¿¤táµZ ÍÚõ!­K-†úù‰}Ïëå¤ ¿¯Åp?ö½T/'ïU¦­ÚPYb óúõcm(Ð…ïâ}b ~ý•t$$$ó°8])Hž:§aÈÚï[…)á“Ò©a÷íéé'±jQœ:ûéêæá%±¶•s­(¦ÉÜ=Î$‚"çÁ\º5­s…ÝÓгåQˆ\iH§¡$Ë8·Guy‰SÊíºPK)·G“_©A1Qɧ¡lzž|暌¿˜QÚH©aqõw¿—m ÉîÝœ¢=Zê¡3¯1\*ÿF„(Æ\gbÈä ¢™|wkŠÁ²É,öŽbò-Ë7Çø½&¤4rÄÅââ42»tÏú,毬$= npµÜn¢s­ÞuÎV7£s%¼]T7—‘ª cOnùy _‹]VЉ*†¾]C§\A‡eò/ÔÐÉÅt²Õ‚WÖÐ)WÐñ«RC§\A'°ú~PC§\A'¨üA rBµàU5tÊt¸Zðjè”ÛqµÕ?®¡»X¸‚ +º“gñÃ:å +:l©×Ð ’*Ìj–¬”µ-Ÿ/_ $JvÑ€’d¤7­ž¸m×V/•ùÈßN†M‹­_‰à€ÖHïKZ¨í¯›:Þ_Zœ°ñm:…ívÖŠžt¼UK1ØèsÔR ¢÷ø”:SÎÃÒ6>ëS«œÓ<>Qäêr½h'ºçz”d*U"WJ(I•Ì¡±\U4§IÖdD© çÜžë +¨öW¥‚°ùc’É ×‡å‚Æød°Ç«:.ƒòÐn4» 3!¯ bN†9ÿiĘ-v“Û¶zIjÅnòþ©ò†OZf“A®©š’U3*…µu&LÁ"/wlúÔ—Zå£6™ÕË^åôâU)çöö½ò)”W•˜âÚ·ŠÆªCu߈%µ—}²Ç.CgjÃy`# +“À»’I³ßرÊÉš]²U`ȳDûÅ„_*ùÔq ò¢Äz‰J.m¶ìEÌ÷ÒÍ:-õºtÜR¹^NÔ…Ls½P#KtñAuIôçCquç58{'OÅÙ›ä5;{rˆs¿Ñ…ÚÑ(0ϧS5´•Ê}k†Þ uýr4i¤—*qS2Ü(†¤QUšŒwÁöJ5r7*eζ<ñ€”<¹¹p¯ìÈÐî"•ßšÞk 9ogDŽ“? ×…w$\%ÖRR)»:òQ{Imþ {¬ uş׻¬=öY¸.¼#_f'Î ú6¦*‘†‘+!ÏWFd( ê‘)êšð‡JÂŬ®ÅèäÓŠ’rvºzQœJâ³;Ü¢ø/[’ô™"ŽÈü0K ,a£†ˆ ·Ç§Ržc ¹Í?‰ÈðüýâÏ#2ÐU!»ãŠ2´ïDd.ª‘Aeh¢ˆŒ\EªZ}žïªˆŒdœ¿¨¡S>ØIÕ¡>U¤’úï&ˆðÆ,w°ð·*R{úw E¤+R{ú¾–J©ß¯T¤¾~ýNE*êç7*RQ½ØÏ+RQ/¿Q‘ŠúÑv ´È%–Êëà DþÐÔ«“Œl.nö…ËðéÇËPT +'-Ç~»çó+fôüF)œä¼üz)Ü÷ã–BŠ)ûîWø•?(…ãŸA„‹áþ%¥pQ…A)œt|L£ÖQ2 ù¢€~²RáÓT6WUˉðB{,åVq‹´&z¡®üš"ŠȨ3ù“í®´a.¾vsWÞѸ…£t:/ˆr)•w†¢^Ü,®«{•=G¬ŽÑQ õp^¿èÖ8§il–jÇF-}¯eM=úl5¶§:Ë´„!zô’bÙÃB¬P•bÇRn…¬cÅŽE°GT3¯§´G=CU5‘¿ÇêKJ¼}1¤Ô’SÕò©{ßÔ.Ñ:>õ»4]ížÑYj?¸?NûzÉä/"’MwÕzr¤÷;Õtß‹Ã\[M'åïâü½j:çÃü°šN*&(^/?¯¦“ª¥ûnå£|5T,^:Óþ'Õt²pkVòü±UÓIu¥rBÈ7ªé¾©‘¯¬¦“Ú§9éÊ_«¦“ª¥ãûû¿SM'UK§1·çŠj:©Xûñöß«¦“š]éýÕj:)㆟;ú;ÕtRµt2§Íÿ šî¥©AÞRún5”qzcúíj:©ù“Ȇúa5¸+Õ;…¿UM'g[þn5vŠý¤šNÔ•xOü—ªé¾E±««ék¬~­šNº¶ú·«é¤:(¿\M'µ["Êÿ…j:)ñ ô^£šNegä—ªéÔõËoTÓIãlÿV5Z%×ïTÓIÕÒÉÞÇ÷sÐuv÷‹]ut“ü-^——TŠïæÐXøô¥²ØÄ÷­åî²ùþ}u(íÑ.ÏoßW'o]h£ÓÞa¹ŠNg* 2!QM¦ªa¡‘ +2UÏrH‰PÒ* +4Ü.'ܘúJˆb€ÔU×.+¡$H!+aè¤pí²ŒÈDZLèÝ‘ÅÈ#òƒ•‹Í•#s§Û²”.ºûñ5w¼s®4šäß¹æNöv¹’¦Z%×ÜÉUri+¤Ó” ¡œŸ|¾èîgs•ël´Ü2£¥ÒtÍjDæÇ×Üq6ŒòEw?¾æŽ­}S¹èNÛæѦô ç\yïIåIÔ^gQúµ¥Mélr»–†µiåOÙ]tAjî¡¢2:ä<+Fà5ÒiÉh¾Q¯0”OâÐ\_PÒ¯H"CÔ‘ ý 9YÛ [Ù`סCSeÇ,u6”Ü~O®¶üfa—  +˜J%\s6t¥š?¦9 +:Ó–Ñ­œØŒe߯T>þ|+Ý(¨p87ûûÑt·«T/¼Ì®Æo¬@ÜËE%»d¥°z-;îLSa­ÜâÂÚÆê²°¶±ú½SQg¿r‘1æ1ÀV‹0ãë.YR6¥H©zß«RµýrKUâ]fP+zâr9Ô£ÝüW*SN'_oI\vU>üÖ †ð &¿E¬yí?^uQµÜîºxíÇæÛ‹RVçýüÂ)l??½­ší帥N8¼.WõQC!ÃU;¼6‡Ä2li(dÐÿñ wÇúJ¹;î¾± %’+¾{oõu7Ü)U>þ`»áîWnÊS­'ÒvSÞOë‰N7åý|*Üp'¬KÒRòî”î{EwÜ]ÃÖSÍQõÓÏ k_¿ÎfŽœ÷ª¹°:S7sn´:ìÝtß+¬W>ú?Bõ…ÉrèëιÂý|Cn^œúù•zÎ +¡ÍSíG¾VTÄt£v̾.ïšúv©"&þ®(΋e²ªL„†¸ÖñÞ7eLZŠ˜,Ñ®Øåi1-eLÂAªÄNÏ]æE¶Œ)dÕT¡®è¶ŸVeȪeUj)b²DWbãû»~åÓUELrDèîDM{aøÄÕðþàT~‘a(qXâS‡½â7j\SnùSÅÿrítW]÷ˆI)ou~ïhªÞ}û¥׎ìÑT×Û0ýÝU×=ªÜ”çùf+o}žÒ04T=«×¸Jš«ž•j\¹šˆ2# ïhú¡Š·|´™ž“©¤§ØNFÅÆ)}çh4£ë Ÿr5\Ý—}zÍ)KLŸfíòbÇÜ'AÞý]TPwcÚZ?T%¼‡-”zéÈÔÃÙä‹ð¶‡)”É¢2<Â.WûGŒLÝö&W„÷* Æ¢Ïn¼²c%r†çGY –Bß=‘»‡Ívzªä:¸æ§x@…¥i; c>ß#èU9Ú¬w/ ) 7&D`ñs‚2¼ž¸öOÞR¤&”6˜|÷és V\÷®4g¤åæ ÏR@ñ½o¼ ´R ´®t`©%4“yÌ +2»¬=wž>qE˜{Ô#œ}™vÞ!ÛŽ__I|ØC =:Bë}æ¬&aÌŸØè¿rÏæÚªÍçZh‘‚U¡Í•%EuçÍñm‡ìÀÉ´¶†•¨-0}|dú×£ál!¿ª›],)>ë+*>ãÛî_.­}¢µ¤$¿è¢>‘Ù’‚3{+ù¸¢€¥9—V(§×–’'Ç:Ò5²qá³›N)¡"¦ëhèM³DÐIˆZBÅ“Ø”B%I®>ýAu>}m¦y%M‡ Z½„Ï!K·ÈGÍï–êßÕ—Ò1]MÆÆêÝ¡-‡Ïn:>fV­))Yy´š^ˆêRël¸¹yÓɧ¶Ñ¹ü½çÙ£…úMô»RCžÕ¬ÖÏ„\Æ~…¬äv6“5Åƶé\J÷†Ì¥‰ÉšÏ|äXÈ”º,å¡ÄÞƒn]ß –5´^_ü¸nçg­ä„oeqBV²ïhÕ‚%Çå¦ +òë-…V™Ã6ñØÆ]– „,-»Óê—𸾭T`Ö)$Qs‘~'’ïÖ´q•éßWVe‘Ú\v=¶­ÒÜÀŽ‰hã ÇÂ7ò‡¬ª—ŒùBZ]"Ä·–ÑôVò`Z*¤ïŠÌïŠÍïÈuYº«™êƒ>ØÉ°ßgyŠùÚ‹öÌ>lH¬õe†º"¢ì¨´ó +”ñ=£õ= ^nb­7Ñ;šö"÷òJ{™ÎÔûvŸ«ßj]ƒG§~]6Tµ-B‹|ד#( ’?Z´ŒÝÖ‹^è¾Æ[¾zÛY]õ–µ•&/kN— >co,5@–XNÁþ–åG-%HÌSP°eßñC,ÃŽ„¢ecNK®ã'áõ$”ÚÁNýÁ>ë)׺œÜñ‰Sè'>ö$ylkâ$,ß®t¥™ÕÁ‹G‹¬Tþ'=ãûV%Fƒ÷|q%? -›÷îOm°Òül`·y§`‘ì]qq¿ß< SŒZ°Ô8‹’ ¥I7ˆSÚ{aêÑ8ÝX¤VâÉöÞ/©FcË,ð0sÄÜãtÒ«‘¸ü®œê0¶¸0·1½½±Ùœ-Çm"µ3A6qââÔ‡A6°Db#ÙØÄÆ-ÍçÇlâ¼wú}˜rvjñ± °3¶÷‰Ä&JBµ{Ysïsüîµ\ø’àÁÐX›Ëö'æ<ÆX9ð¹±­sÙÙÀ9ïœÇØî¦9Ž±½ç'c)oâhËôdߘ16á0NÏñTn?Û–c³ÛÄÞÆn×ÃÚ“|G'ŸûRÛ‡–SÉÏØL¯ÆÞÓÓßñÖ} Ç2a/ÎÎñjìmjw*3–úa´Lso$Û‡1¹ ö¶ùæ6°÷‰âôO䲋›ðvŸÞeÝÄÑ£³}˜Oä£'š§;ÓìÃéIîO²–Ùrª3qôìŹΖG›ZSxMñ:ÚÜ6õ>L?[móZ?}c>úÅ1 $ëdz§›Ç^—³g[Æü¼éâ˜Í­c>¶¶Y?žÇìÈ9ÿ˜9W ŽÉç–J† 6ÄW·Ôa¸ÖbÏß¿d…wiãñïÒæ 5Þ¥µ Û¸8%ÿÂbÁ£9ßÅúRhýÞæ±5&7-Ôí +d°±ÑX‹n?oØw](]zêÔf±ÐíqÔ.ÀŒ(†] ˜}¤Ñù<‡Wb1¨t¸’†6Ðúõ¡Býãºüe|oùG²£üŸ¬_×jÂ% ÃgIèh¸ÙŒØB‘lYê[L­c×û–Ô—šæÂê"ëN­7þYù'þÞò»/l6m°Êº¶†,9žŸ¿Îø®Híê‡ÉVí[VQ|ä1ÿºSMúàc•+·Ø.º[GiØ¡ñ=ºÃôC>f‹­û‹éÒѶi Wy ª¿³ìuë©åüXŠÊ6ï-¬·?«ö=:WqR¾XWþØƆ›ªJDjy]I„ñŽ|Ý${Fö³{‘YrÉ_9±Ùð>‰ÃVIë[ê·¹Â| +;â«bW¨Ðø%2S÷/-¢Vy2ƒ®»/’“=o&>mÌ0 O›µd›¶Ìüù5ÅŠÝl‹Ukv¬]£Ë'ê*ÂÇ×{ 5ÑPj[Re¶Ô=‘²@¹÷ »ìt¶ÜR´”•Çf´øLCk÷œžYº®Å•‘y¬²*YV<Ç[«Ç]}úƒz]7S+ŸÇê·À¸y•)2¥Ò=˧k“³\9,=´ÚtÐW—$œ°VENÖ[tlÔ2_*ËIYÃà J•úü5¦V÷è*§VÐ3¶µHw©Jå†2"‹->yZfl²âÒ×[‡ -iGfœmÂUJ&óÄÓ— Ä $f€Â¸ž¯R »É㽤¬lûì}¤É܃Ôf•²ƒ°tζijk.'¡|¹å$0·µ~V'NÝ›³)+õ7Ù)0l¼×m2NÂ’q>Òesô•¯oMĤn¶Œƒë¶·¦à+×c “yËõÌg~™ƒ;ÙPšÂÝ®çl’ «Ÿâhœ° Öu.µ}à±C7Á:fÍå0X†qKY|î38ŒúuÅ3Š\˜xW’…ñ’¹Œij!,·ýŒ¥z&¨-qÙt‡11öÀšÅSºô–’¤‡‘⩤KûR¶‹>%´¹Ðì5²H¦Í–ßT67è¿|¼´0IW}œi ÌqŒ’?·1V³¢(±IÇØ”›8T^2×18?·1VÒT0ÉKy5…K§ Ö °ƒ;Æ­.šËÕ`¦d c,ÕM(5¾éo×äÐãl©àKyîK¾‡Š’ŸJº¬jú´WƒÌiïø©öFY_X7·«AUíÔ§’=_¦:ŒÐ²àÌî û°ª¦”ªñ9Ü¡;˦ه– Å¥–'rhEkQýc–M=$ÏípôTa¡ñDžr/¦Ø‡ ¥“ªqû ßûã÷☴zÙœFıeë‹æG#ð“Þâ“îÃÄÙòØÆðFëÇжrëÇõ›ôðÕ•¥ùLQ&º©±}]³Ì{lEÅÆÂƆŠ¶#JÍ–ƒU,â‚[V–' O˜k‹›¯õˆ[#0|ƒ²‡-®ó-ær‹CnÛ‰&ÝÒpvYYcèøR¶æÖ-ü4Œ›-RùòqùÆz_MÖ%1À*T°0gî0ÃœõU7³g}å^<Áìq¶ºÑí0ôÁtÊ\öZwt\Üò윙ºåŠÎÙ'-‹ëÙ%…LšÂç±4%…LšÂFrº’B&M IÔhMCRHád)!‹ä4&…LšB}»iK +™4%„KÚ’B +'K !Ç’¾¤ISB¨E1mI!“¦„»ÒL +¡ËÕ•c0Šý|ÎÒo¤Ú&ýn;±„ŸEÓÉÌìlž¢f‰}žÚSyÄ°õñN/ ¡¦A²f¥eJBKtGJ©¯Xwö­\¿Ô4+.c©©,ƒ&À6˜®É½ÂÜÊ`ñ¸zf€•á’ ndöƒ +Ø,_d”Ø°ŽF¾uNÞP¾”ùä¹!Ì3#ؽ?6@ƒ,• ?ç8_ º»rý#á„Ìc/ç!öìÚª»LÉÜUÌæ.úWt³ã =`BÙiÙvÂ×b¤E^ìÚ°èÑE2õV6V6·z*É2ùf׉ֶ ôV6n>qêLSÍ‘§O´,*õðÿJÈôuõZOiÙOÙÊ•äÃJúmÍÑEùìw=¥žš¦E%žM•‹äÆâM-­gŽµž9ßt¤åiÏ:úUCmM}¸Â³ÎÃÿA#ùzòÉ.•4’ß&?* >ÒÆROñæóçÏÑŸì +îñT>uá|K«‡ÿÝg.ž9zî¼gË®]Óÿ¾õ÷Èá7ÒÝ#ÿkx’¾9±¨mQ‰~p仧ɇ*òæqòÕ“žÒO­gÿÁÏqúû;ù™ ž9wbå$í~¡>Ïî=2yºhŒ†ÝjÈ«zªUqwU¹â”À”P5CL†ÜDC1©…¨ªì­˜•R°þXQ¿[Šš²˜hÈhX“„ä µR†¼Z} I L€)&£ŠG “\O2…I^ó_Ë˃¤tð¨È'·Š*K½!ºÑ*&Mòï£,7' += 0p1©Õ>¤…XêM2%iZ)cUôbá‡ã“&àXpM¨U=¬†…Ĥ))ɯiŠ U{ã¤p6¸e²§JV7“IÝÜÉ̘DU¾'Ç7€SÁM‹ÝA‘çnk)‹IÍ”ä¾-HJ'!//cUm†–Ia#C'D‹œG~:@îÃ~Z5Õ½5ÂÌ”¤…1Ö1ªqäæ8¦˜TÌ峓‰Üœ»KñÅ!)rfâŒ""ÐÕ]5{ˤURê­k‘î Ë0•“ªaWœ£˜4ÙWã![ãöI¤{äx] ‚Xø.&Ó¥$ÍDžX•Àss( )rfX£¢a!–VËdBU²ŒoMa„ 'rzû›ú€f¨¾ù“œÜìÙ~$Ž@J€œws_ .RçœÊ¢ã»—üÅÍ[1"Ý «¡[&kRgØþfŽ’’ÿ­–Ý´#¬”Y +.&;kEÞþfaÄ$ד¼(¥ÊŠœS – «`öRì®õiŠÐWãQç3f2‰¤TŒŒï°ÞŠÑîS¤Š<£vL¡Ñ’½ åæžHžE®)TR" ;`ˆI-ô°rõ¤µÈä,ØË2€´ Z1d½©˜ä–I{õ¤ERÒ¢”ÈÍÈXX{)jŠžam»˜ääuŠ¸ÜE,%@"!&Y‡šô6æž#Í=Ñûæ0Ÿ¼}§ +SLF«\ª‘c»ŒÇX˜š(#¬»7¼Þ™S›©!*#£aû¥ãdVJ½fÒ½2–˜Iª$µL“VIIßT@Rؽ—âö‡Õ 6KN$ëîíÒÊ/ŽÜû ‹I”èÒ ò(ökÅTL”ªîøvñAnÀƒ»¹µ­ÿKSÛßÌ^U²æëî ¯7ÀB"//‹ÉÎÐbÍ,n·>œ…•2VżÞaZAè õ” êÎÓÝÜD’õÕx²QLš’’åæÝ!1Ž +B SL«FÇ™,“¦¤dGáÒ¶?‡¤˜Wäåñ¼•(+2™b’ï¿aeÌôñä, •µT·] ¦‡¬ÌQ4쎲tï7Òë½Ö%^ï’®«þë]þëévÌÿV_ànOàŸš|W¶ íô‡qÈBpóÚ‹'‹Ô+æ˜ÆÜs$×Û±°U¯?.˜%¹Ã‚3s§KRêõÞ+\qäæä&‹‡dòUä‘ÜùzO€ÈÈÛ1ÿ—ŽÌIÅ$³Iê#Ò¨&ë¼xe›@Ä$”D©³Û¥U¾7ŽàI { ‹É0­ D䊊ås#;‡.­–V Ã<`yÙêJëW×›‹GU× *²Ôl¿nuì’îõˆ’Ñ\4êIó½A"&o¨TOþÝ_Oµ»#˜(¥ÂûëöI Àݲ±*º&êF/Å9S3$¥¦ú)ÆTuÈ3‚!Ç{´óFcÃD ú#T@Ò<M¾õß‘¦°ä¶ÇÉx­KÑä_³€IòÔèRôLJÞy-,ha„NÙ¼D/ÅŪËdšU%uXpI‰to€ìÀ¤ñCªûºšO´â *ò š7ûòoǨ€¼Á’²õxHë›I8hdßüøIé£{<A!¢ŒyøêqSUÇáä2†Èáy7ÝhÌn²ìx!â˜2yFaŸ ÿ_¾ð ©ÒõNZfœæÔtù‰†|«?p‹ÇCš.lV@rpJ iõq“×aUþ·ñý;ô€ÉqæˆþÆœÝÂ2fÅrê減Ûv–{ÔÓ½+½qHJ€L“__òkêÚŸ½¯ìº* ikfuŒPwöoúxÈ.i(5#ädb’Lþýã¾¾Wg0‰'Êr¢ +JÏ™KûŸfX&m—^9IõÍ¡’²’Àn¦È1³±šw»Gº ªL+vé957£þ»=òš0BÎJCZÅ$/"ôGiÀdR1IØ_ëQ‰¤d{ˆX) caÞDšâR4æžw=I^{ª5¬§éE19,Ìœš eƉ†ŽR?õP„ö©!¼Óí¿ÓkŒS+¢) “¥fÏLI219¢É?{Zþßû=]J"ûfâ#ƒ– £âÑHˆÉ°‹Œ[ˆÉ“”Q:?,æ'ëM€yDž‘S3q²=A-„׺üLFR¹øF¯ŸÈH* ÍãFHäe¤5`’ˆÉï_”>¸Sè˜0i}^ÐÄØ°Ð]éÒ2|¥ó…ún4涃47§†Z†;6ÿ¯8$%À,—§‡DN¨9ò´HÄ„Œð¨HiD£Í²oÇü·¢Ô&™HÍN“#;•€É_uÈŸ:àé º#É&Ç1Fƒíž¿‰`{ Ó ‹Éª‡õ±j·¬r2ÉdÂz£»Zv¿'Ç7@*à­7’ÅCR•Øéìy}H"ïvSGöM" 5yȪÓ™’˜d“?l“>\'´W¤ú€àn,ý0¡'LW,½[Ñ × b¹­ä矫zý +aÆHúüªKÞªf4V@]Ø,Ï…ÇC¾Õ¸Û ’):½[ÍjH«›™Fåo6IW· í•îT|‚f§ÅhȇµÈ0ðÉs/F/ÅLa؈Q!0Iã!™rHujn„¼¡*ñõžÀý^?‡Ô»ÕtIiO¨™©˜ä½ÿú¤¯»jš€ÉqìfÑh},ÆzÈ•ÂC/´*^b2“ht·¤½YH €“‘ÇÜÙ4itl«škO-Uõ¿¦¨ÛZei˜)ònwàN7ugë22bƒr21Ivï——¤?kôNVar2òh¨¨â‰ÃÎdŒ¡ psg&¹È×wwGG-–PÃLpãkŒ_o.R½×Tñ³@y»›&ÔÜŒúGyN) í6EŽQ’LLŽFå½Ozq·§£Ò™áÑÅ{,jåx"öÃÌ‹°"“襘±Ô¥~X¸¼õ¿Åa¥ ÷ÁŒÉâ!oļtϵˆH´¯y§ÛŸ¨i)i»zœ(&¯³€Éo_ß¿C¸4y¹ò)Ø_C‰Zùï±ó„Ç`3íoB´—"wsƒ™I½#µ»òÍ@n‚öY9q~»Ö·˜ú²#þ!ÞªFõßïõ¿Ù—Ÿˆ‡4dæiÈ„˜d“äÍßžûj\4`rVOjüqÈ XÄ$MúèFi Œ§f2¬·ÖBØ 9Þª†¥Õ$pK]uý’çz§8D­Ž^fœˆ±7zýwºý7¶>dºÄä°&¿Ú)ñˆ/2ÀI냀´*O™8€Ý0G`4De$sgczn•”ðz•0B"©GÛ².~UÍcý²ó‰V¼Æ:ŽjÔ‹}+F£"îìùoU3brD“ú”ôÉ}ÞK•®TÊ•'%kuáÑBÈÄìGÂ2©,æím×H`êL$à³Å)$%™<³IM<É”5¤.áéؼ_öhÔ¿/Ÿ HîN¨Ç,1EŽQ’Œ7£ò¿·ˆØ)tgï 4z,ê™8è‰Ø.?^04$z)f#-’„Èd0 ùR’9êõ~ñ†š?Ô•°4þ¦ß¨iˆÆ¡H†æÔÌÈ,IËiò7Ήýs˜4ɃÓÚÿÏÎ.&ÀpˤVÐWsg9y2þ‹'‹âX¥1ÈË34dݘyé'ê#מrE}Cši-¢‰¤”ï÷åëñ¦2›ä81I”äkò_÷’I{FåÊ'2Ñ1M§\Lö…ÉÒÆ‹ÆÜÙN¾Â%’2Ö[1bbÀN$ZÕ$ðË'þ'mUõÑãÑŠ·cþ»ÝQ–š¥ñ©ˆÉQMþùÓò'÷y;ƒ,ûfn6ÝÙ&oÇ1ç6A·LV¾—ÕGÅòÜ`4Ìû·ºãÈò`¡‘—àXm3Ú±„æÔ°Â>¼ãánÿ-Vf|D ˜®GrÇ9FI²×MþA›üÂ.7¯0™–g®ž©¼'Ž9°|Ôõ*2Úß乩9Ƭ”¤`žÁëC&™jFŸY?Ôå씩;B­Žoöåßë  i6ËæV»Ü3EŽ“,`ò†*ÿÓâ•mÂÜ&­ì­ñ¨!ø¤ÀûœÆY*7Äd®’R +Z•ÇŠ€´ÃŒ‡œ(#Ÿ]rHæËæF¹Û1ÿ[´UM€×‡ÔÍYžS3#19¬ÊäTüÕq/YæwÓöÀÕ·£¸c +uv£ë.° 0ê]S1©í™ì?à|¬TEÐêÿ{’€ô I<äwO.éõuŠ×»¼–ø3<ÞéösSdÂö˜ÓFÈIŤ&ÿê’ÿs‡¼z¹òô%½&bÕʉ#X@$s‡á–IÛ58OäË„nKÒŠH0cäÁjÞ¸eéîeDCrO.Š¬47ͦá!‘9™š=3%É8¢É?l“^Üíé º#ó`½é©¢!ôĦ˜Ô¯Xo&ûe8ߤéÞ +훓‡VŒ¤‚<#rÂŒ1ôô’WÕ‘Žƒª4¨ŠD.Þë ÜeFHš²m•ŽÎ3EŽ“]ôl1ùÍ&éê6gßÌÇôN‹‘} ,L1 £—¢³ÈÒ½]ZJJL8$Çññ¼ëþ×TZQ|¦ÕP $‹‡4Œ¦€t¶†´ŠI~fþö´ØSMS¹ç£°3wv«!7À\,¹Ã‹™À€›ÛA¤^of‹î‰q¤{0´Yö¸xH")o©«n©â5µ`0BÛÞ`¯¯÷Þè¥}iDSCÚ-Þ2<ûæ•éó´\yz&­»Næ~ÂÄ,¹Ã. bÒ‘¤±²54Ý»oËÿ‡•Idä¸tàQÕ5•¯uù‡Ti¨K·7Žh»Ý[±1ñƒvk¶Ìä Q®ü§OIÝãé¨tE”ùJwå v©¡ Ög\S˜GpåÐÖ“¸ÑKÑ™äõŒ(n¾ŒE 8L@²ÇÁøÈkO-'’÷:dJÒÿzOà6K¨Õ i–÷±[°e2i ͈DNæwšÅv +í•ó>«ó¸5ã +cJæ\L¶ì~ea¿°í"—”4–2ìÒÇæÈað:Ãu<;{ÍΠ¨­÷ 'AÕ¬HIC¸Ç 9^c¼nÌ}Oõ w¿ÖE-CÔ)­8ªùï÷ú©Ùˆ‡œ‹’4&ÿë)é{=—æ3`rÜLÞCËG/æÎn`žÀEBGÕbÝ͆˜ÔíÕŠ»#(ÄÑŸ ²yy‰È±å}~= _g•!¯Eü7"´PäͨD£ 5„Ãíú7dô¯±]e5¹Êß»èûà.÷ÇtY<½IMÒxÈA5@}Ö4’:¬ya" ‰’²@ÒœÄC¦EL²rå7TùëçÄZYž/ä£Öp3½'Ž ˜1Ƀ(b +-2ÉÄ$˜„f+F-ì6Gc€IÁªúÔ%¹C_k vù»Dfi¤*ñíü{=QÍ¢»S3/brX•¯uÉ_>î#³hgpAµäoËgoDNi‡ÙJO Q»pÀiÉ‹Gi¬»7&%È °V54r\«uå+틯uå_W©ÃšgÐŒFýoöåߎùLJ€œO19¢É¿h—>}ÀÛ©°rå 9o³"Òbày‚!&#!¿Áp@pZê‚Už8æ%°y¦;û¥1wâ-uÕ͘<ªJ×5‘Æ=v‰ÜÍz»›æÔŒh몭jHI2ŽjòÚä× A!b‡°Ÿ'…O¡Ç"f˜–%-ìÖ &Á™P¤TÜ5èØ ‹ÉkŒU9ÜAsj¨V$J²‹V'êñVŒÖöÖd]@r#$L‘ #&Y¹rròÿ¥Iº²ŠI[fl^y’LÚd˜h嘱´ÁÒ˜Û­*®Xnnpf4êN¸Ÿ®þƒ8B»`ÞÁŒj’m¤×KDË 5p¥`_ï’Þê¼nÆC5Æùl×WŽ"˜$o^>å‹U¹8ûfÜtMUeµ— %L×@zhÌb©^è¥Îœ‰ÜœKQ˜£ ½ÈÓÙÖky¯÷‹Üyy±‰P¼Ûà­j¸nÔã$QcÜ.%iLþò’ÿϽ´\yж§­îQây”˜¨4ÏK䕈ÉhXï{‚³ áC!Ioň˜HXjöØxÈëÍÅ·{¤QæŦ5ÆèÇ»=Ì›šm·šr8̀ɟ>%½¸›Z˜rå“‘ÌÒô5ô‡q$Qis»¼õ¿©aëÈl¿&³t¦RÜQäæÀ¬Ásj&x´ÉŸ6:ìò\W¬O D:ÞŒê!‘z‰H´ªÉ$ò€ÉMþN³øìvaÁÊ•OAæHrT a.ðg½Vþ{jÈÅ+–ƒàÜÉ“¹4ÅÅÓ½Ñ7Räñ×Õ¢ëªt½Sæ¡DŸðF‡D@Z{ŽyfY «LtþWN‹½Õ´÷½vn¥•‚½h0¼HÀ¡‹ÉÊ÷ª¬È¤í"Ì1ò`ïž ²›É‘gö™p| oT•®©,ô1"YòzOà;ü[1¢OQc¦ÈÌ$Ͼy­K~é0 ˜TìwjfÅàj”1Ò.&;™Õ‹I²T±]€9C¾æ„^CRÀ8°>5/U[¿úîÉ%¯ª>^`üZ$`j’7zý„´>$ÏÈŽ °OL³€ÉïõtÝöL&&g…Pˆ˜;tË$B/“vp0÷hzUTÖ7‡ aÀÉà¦Èº±í¼¼ë—<ƒª8¨J<¡†[oFýw»7yÔþ“7¾ÌøkíWÕÀµ.V7ÔE5äë=[1šV3¢hH¤ê¿nɬ³ˆƒì²«ò?<îë«qÑ€I»çáÄ„l¬ô56'£Œ90;äsZ,ü0¯=¥Â2 Î?ym|-$Ä‘î ä0Œ“À,`&pEÙpBcnpáÙÇ +RiåùqD€¹fŠ$Šq\<ä0-ãy•õ:4½Õ·b4§&‘šÝGvN‘¯ˆ˜üA›üẌ¨09‘tQÏr$5”Ýf…DcnÅ£´{TƒN#ra=ÄBð³Y£Æ8TÇV‰U]ƒê8'òV57£´8äm9̺&|Ùv‹0½¤×õ¸üÇsâ•m—}ce­GÏÄÁ Ìf/Åh˜Žðhb´‡šñE^!EÈ3jŒO®d^R½,ÐQ¼®ˆP¼ß—¯'p‹ È!«ä@îf^À¤uÖËN*0N3T#Om2~º«ˆIÐv²¦±t(Æa¢2ôi[—¼UÍ͘ljH¢"F´ÀÛùw»Úœ]йÏA&&G4ùW—¤Ï¤-¹»2,`ÒJ# WÐØô û$:ôº@µ©!U’áÌç £Èssxµ +äæ3rì£v´UÐÖªH…S‰wºý÷ûòoÇtŨ'hÛ­pÀ#Ͼ¹•ÿ³Mú“z*&#\/…ïXŒVFE`fày[Zù#z‘I»< •t™¬¸Úô»7$%`'xH¤Þñ07úþp¸Cå­jºtÃã°&I4äS$ŒÎ#˜ÑäoŸÙ*1iû¤:-¹ƒ2¦,6†=L/ÔÓ¡ry«¹Á ¤ÙŠQ ë+eDò ‡<#¡&>!$R]y#Ró‡"~Vf\$ê‘ðˬ¡&J¦%¸)µ}K=`2"ýíi1v1™±fI+»«è*^+$ŽX# 5p1ÙÍW"¨ f$VŒn-¼X¸˜ß€ùtnL9|I¤-³#´$mk¢ÉoõîðxH£Ì8ˆ‡t<Í€É_wÈŸoô’I,“&ÇÍ·ÜSÉÇ<œÝÀ´àvžîšÅz ülê cÉKëGBz+F»ï ÷`8²Ç®º¼WÚ¿¦ôV5L4Þíö¿Ù—+꧆G‹€„ä4Ë•ÿä)é#{XÀd–2Mel¹ò)c™81Vvz˜ ætªQ1)t£—"˜mä,wL7ª Eüz@¾¡æS§$•ˆ4;û~_>áÍ(SŒÖ–ÙÐ`j4&ö´ü‰½¢$³%`r,]µž‰“O70 ,b’z QÌ^ò©QeñÔc8~ùÄÿ¤= ;ÅA¦‡Xâ —‘¯÷°Ôì.ÄC‚³'˜$bò{}/ìÌè–ÜSÍ«£!ª'yùÓjÝ©,VQÌ~Ƙuýÿœâߺ,¾ýŒ””óú£¤¿6Å¿‚³Û”]ž-?zëŠïÁUñvo€¨D*Ùë­­9µ!Ѫœi¹rV9êëçÄZOÖeߘÔ{,*nôX&ƒ.&óòh/N£î½íCçBšè­¸?sÈûÎU9þ‚?þ~9þLÂwŸõßf’<ñõF‡ªÅ¯ ‚s Ͼ!oþê¸7ÎÊ€I+{Ø:=Ž8" LË$“¼1·í#ÓBMqwTº¾rÆóÛ礷®H¿Á‰¼*½ùŒÄ3k¨‰¦H0M4Ë•ÿê’ÿSû³©Âäd$ +½²2æ0NcÁãêQ콈ÝÃÓH5/»\ëþy‡ø»ç™¤¼ªÓ|OÞ<¸*ò÷ü yÕ¿±üþÌþ•ù¯ŒÿçäwøFÆýóß\Ñ·`ݲ¹뿲þ÷¦üWæž,Ä®fó®ÐJ€ƒ]ò| Ð94&Ð*~¸Nh¯´>œ;­=¡'+¸e’ŠÉ²oÀÜ$‘”íîOò¼qYz›è®g춆É[=è  ¦4`2"jò?>!>³5ûÊ•'™HÙkŒz0õ$G$w&xðƒ¶õ¡b9˜óìRÜßjñýöYzLÊ{}â|k Ð!4&_>å‹Ue}À$'K¬`ÉÝAOcÀ$iAŸY(<&¥ÆŠ?·C¸¦‰ï@R‚Éxÿ2SvK0«iLþ¢]úÜ!/YÆveyÀ¤•ÔÙriå¿GEÀ€ELºúj`™ÁöJ÷KG=o_‰x@n8Žd•1E%8{òr壚üã'¥wgqQ ÉØWãÑx“ˆI€A“ŠKU¸¹Aç0¢¸£Uîoó½ûÍçµ]À€E¢'ouKГàìÈGΰ&û‚øü¡#˜SùfÁX•+Ž‹“í[ÞCFÈ@­G åÚ +'#OÌù`ûV/¼Þ`Þ탞gC09‘¾rZì«v嘘T™ždÆI÷‹'‹L!8¼:¦¸x‘I'A§±£Òõå“ÞL?Àë ê|F"CâˆIpÆ䓯vÊ_<â‹(îÎ +˜ä4=Øšâ¹ú‡øZÃöQ +‚ Ï.Å«rÿ¤Ý÷»çáõ ²‘ðæeT¡g@3ûæ§OIŸØ'ä@¹ò¤4+Àt×ÐJAÈì´rfœ /6‰í˜ZØ}©Òõ§{=wû¤wPŽË›ÝГ`J4Ë•§Y|ÎLŽ™3YÏnÞciÝdeaBØ>JAÐ.vTº¾Ñ$Òr”v 0søàªx§Wº= NÇk,`’ðçÄÞjw‹IUÏÄqEѳ0À‡A¬ÊÅštÃ8 :šA÷å­ž_G$T8M=ùz?ªšƒÓðóq¿Ö)阗O&9ü<5ÝZ} Žž8€e DC.}lØ=JAÐF’ñ©Òõ©ƒ.&!)AÎû¡''˜Õ䟷˟Øë!J2—Ê•''U#¤†Ýöj s ×œ¬õ²úQ¹l™ÁQ(¿ÕŒÄÐÂg¤QT5“Ѭ0ùƒ6ùC»r°\yRFÃT0t…hÙI” â†}’— ÒàìA¶èî +ϳ&Œ¿}V†¤ \‘nõ  +%8žƒ‰€Iß•­4ûÆ Qn€ÒA+„+ ›¥ `7t1Yž§*.ÞªA•Í–í•î¿8îyÀ„¼Þ ¯÷1ý`·€3‡DL«Ôjýåã¾h8Ç&­Ó£ÊzvkÜ8‰àIÀÈÄ!C‚¦h…¡'A0A^/îûïó!1ä¼Yº¡Âå RbòW—üŸ9èÍù€I+YE·¦¸»«=qôX8¸}2äî­q„‰S§Æj}¨Îs«WBF)9àuK…ɶIRO³olŸ¯xnì­Ô°«e÷{L!8|M¡)>•®m¢ ˜$’òå3^¢'ƒ&Œ ¯jn·˜í¥)&¿Ù$]Ý&8$ûf{ªôXLèÎîðâZ4XÁ$ÔXƾ×]áõ ïöÁ8éhòìòæ+§ÅÞ§dߌ#‹œtwWºâ(cÆÉî ¨†” ÁÉÈs>¶Ïso@|€&ŒŽçý&*ìV5 -¤“šüJ‡ôùFoDqPÀä8ÔzÐcH€ rGô"­§#yp|ý ß»Ï"ÑÛé$àB(G³\ùŸ”>º‡V˜ŒØ=)ÙB-¤×Œ†„8œÝ€ééÞþ°Šæ 8i9ÊJ×å­îW"â»Ï¡Â¹£Iôäh zÒYä—ûfTþN³øü¡½ÒþIɶÉ0äî«ñ°YQˆ£L7Òºƒ.s­aû(ÁL&¹MÚ+ÜŸkôÜ¿,ÁëípÞéEUs‘\ë!Õ?¬É_=ãë­v;3`21òJAè‰0˜ +½¾=vƒ` +Œ°Š”ßnaå(í–4 -|‹U5c)ÞNá5VaòÕNù‹G}]˜4IšŠK º¹˜°SÊ™6º‚n4ìÁÔIËQ…çvÃÝâ;0Q:’|¡W5·[ê€óJ=`2*ÿ×SÒ'ö²€IÇ‹IÕ(-¨•o4µàdðàIÕHù·}|‚`±£ÒõÅc¢'ƒr”N%B(sž|±@Ääw/J/ìr;³Âä8rµ »£Uè±PDõ†8¯o= ‚©“Ü/A²sÿèisœÌ;=Ôj»ìçƒ<`ò†*ýœ8PëqxÀdböS¨˜TWghqe'#»?^܃2A 8sjaj¬ø“Ýš0:–®Š¯÷‹ðwç$¯± +“¯uÉ_>î#ò©3w‚L6xµú0N:ºq²Ö«…„¾nœÛ+Üû¸÷Ýç¨ë^oòþB(sƒ]òˆ&ÿ¢]úô/Q’Ⱦ±RcÕª#!oÆIÀ4N†ôœnÜ) 8;šM¹¤´]Þ€ LBB™3ä—rX“ÿ£Uüp½·ƒLâi%ËÞuu²‹¼¿à\0ãäsõñz¤¸S@pÖÔÂî§+ÜŸÜï}c@~¹ÞÎルâ­n„PæiÀ$“ßl’.o¥“¶Ï0ÈZZÆÜPГŽ†Þ' ã$¦‡Åýõ&ï;(Gé<=y·b2HÍ°«=üû\OØ©f»Á3qz‚t` †9¦…DR^ªt}®ÑÃí“°R:Šd1¬AOf+‰˜üéSÒ‹»Y¹r¸í&ŸèxuÁ8"'Ã>Uô±»çN%æha÷¿µú~‡Ä‡ñÁé&ªšg'yÀ$“ÿzA|v»Ð^‰gâTd6(!Êzv#³ÛáàbòJp‘ÊêGáÆÁt‘—£ü£zÖ„^o‡ñv¯ßviΔƒ,`’ðoNy{«éý ÷TSœÅ8G&ŽãÁ ÔQVJ‹Ü8šbÿÁœ¡ÆÊQ~é„÷ÁUñÁX)Ä{ýâÑ›Ì|ò–ÜêüZ§üùFoDÑý ¶Ï!K='쎅¾—Š \y +Œ±^M¡öÉ(Œ“ΆVÎË-ÖX'wÜ> ˜vòÄœ?Þ-Üí—PŽÒQ‰BOfù5e“ïß!\båÊÁTf6]O2!Ìn'à uÐB®~Ô0ÁùdGPø»³^˜(ÅÛ=ðwg:iöê¿¡Ê_;ëë¯qÑ€I»çŠ¬ ?K4çBñr=a§šì¯;ª±ŽöÑ° "Pç‡<×»Ÿ6aô½ûœô&$¥3x¯_´]/SL¾Ú)ÿå1o,Ì*LÚ=Wd ¹OSUtg7*9Ü>©…]ˆœÁù&k¸øðÜ¿,!1Ç!|ó2-v«&p"yö͈&ÿ×SÒ'÷y‰’DÀäÌ&´»¿ÖƒÌn n6X¬õj¨a‚ EòØúçó(Gé’«ŒÊ $WøDL~¿UüP§½Òþ™!»¨öIevëñ“€³¡¡†9.µ°»£ÒõüaPCF§†PBOfy¹òaUþÆ9ß•­BGæ”™Oe,rR¥ d1Ž2æ3M“1@FE7Œ“ ¸P$’²½ÒýÒ/“ðzç<É%~½z2ƒÈ&Éë—{£˜œõ`U͇ì–UÎ$¯0ùëùϽ….â &ç:qzR—Г¢æ$ÚMÞ×ûÎù¨×›Ù²l?à|ðÍËÒ°†Ê…U’ŒDLþäIé#{XÀ$²oÒ1eñnz‘`·–l†^Ãœ&t»‰‚ö’z½ƒî­î_G$Ræ6GcГ (&Ù©&þ_›Åç¶#`2S/CTD•‚œ : Q=©"» í&¹Û+ÝŸ:èyã2 ´ƒ¤Ì=òÊÛ=~èÉ“7TʯžñõÕ¸:‚ëJ'{ªM´ú•pv;–æ=ˆœÁÌ`DqGBîo5ûÞ}å(s–¯÷Óc4ò^19¬É¯vÊ~ħñrå˜Liwæ° QvÒñ`zR -V “5‚¶“–£ +Ïm®G}ðzç*ß¼,Ý@å¼*I#`ògOËŸØë!J“i'ÍÄ =A´Åq:xÑQÕÈÄÁ‚Bêõ®p¿tÔó€i$æä$QÕ|Å$;±DL~ï¢ï…˜œ¯iªŸöX¸ž°WÏv‚'ƒnž‰1 ‚ň⎅õ&Œ(G™“¼Õ ÷|‰É¡ˆ4¤ú¿~V¼\ë!b¸´S é‘QÅ7ªXÎuÐB.slØ>>A4IæjòüPg¤[üí³2$eîñõ>û¥Wî‘gß=ù—G½QLÎ'y”þê÷RIû¤cÁ“åùæ°}d‚ 8Ž<×ûåÓÞ·¯Š¿×;çx@BJN:•¤0ùËKÒ§ö£ÂäüNMš)·8ŽLgƒ›¦£ŠÀMÖ¸ã@03Ù¥IÛý³¹Þ¹GrA‡B™.1Ù%19ªÉßo?\'…˜í7on³»ŠèAS¨žDÏnçB7NnT¡¿Öcû°Ap2Ò\ïJ×'ö ÷ÄW )s4„z2bò:³LþÓâå­dß,yÙIžÕ›=éTè‘“A·ªèVkÛG&‚“1ÂÊýý9ïÿ÷<ôd®ñnôdÄä •žÃ¿>é‹U±€I»ïÙܦéÖÔB´ì$Ĥca^z5ìîEƒEÌx’©›èÉ+ÛÞ„‰99ÃW¤7 &ç $™˜Ñä_´KŸ=è‰(4>br¨×¬öÆáìv0ô†Ý.Þv·f>‰¤|ºÂýéƒ"&ßFÆ¢^ÕÜna–äÙ7£šüŸï“þ¸ÞÓQéŠÀݶ0Óž zsèIgC zw»G&‚©0Â^¿Ý‚Ž99Er)ov#%gæb’±aUþöñùí(W¾päš!vG«hÙIˆIçBÏÄyDåm’ì™ ¦H½ ã÷`T„¤Ì>¸"Ýé•®AOÎPLò€É¿9åí­FÀäB“:»A«¤e'Q)ȱàq³LFQⳊä¡y©ÒõÅc.E )³o=yU¼×/ڮвˆDLkò«òK‡½˜´eb=½\T DZà—^Sh&îAÌ:òr”?xÒ÷îsГ9Âû<„&Êi•¤‘}óã'¥ïõtÝ(W¾ÀÔŒ×hèá8z,:Ü. ÓØþœÝ ˜…ä&Ê?Ù#ÜéCbNŽ\Äј=9­˜$¯£QùßšÅçwA<Âì™xC½ö-ÆIÇ"OoØ‹ ˜Õì Ò&Œï@Of?¹ËûvªPN)&»ä!ÕC•¿~Nì«q‘%a¶œvêÜT¨³‘“Ž…nœ¬"·¡ ÆIÌ^jaª'ÉSõgâïž“PŽ2ÛIôäÝ>û5[Æò ˜$¯qÔ˳Ò4ÿÛD"4Å­iE½Xà<èe' cµíÃÁY“¹ß{·^ï\àý醊Êñä&G4ùçí2˜¤Ù7“ö±fâ\T Ç™ÐÅdÕÃäND™ Ì ¶W¸ÿñ¼—&æØ-‡À9’¬†£Ð“ãÅ$yÖäÿh?°&m¦Ùš9Êz,¢'Žs¡— ÒkÁ> ‚ÙNEQ^Ù&¼ßA9Ê,çƒ+¨j>VL²€ÉaUþúYß3[Ý“ÀnîìVܦ¨vÝëwçéãÁî1 ‚`ZÈs½?}Ðó€ X)³šw{!&b’zÿ#Ò_÷EØÌj{ÐÛ¥ `2#¨±˜mJ¦'9éL˜×]U\1'A0·Ès>¸Ë=Ú#ÃëÕ$×Îá)9<`rD“Ð&ÿq½&3‡šÂŒQaﱈÌn‡‚éÉ…nôÄÁ\$‘”_:á}Àe‰Ýºœ5oÆœ«'ùkò7›¤«Û}“qìe•a Y=éDðvHª9 = ‚¹GÞ„ñ‡OyQŽ2«y·×~]g—˜¼¡R=ùòI_w ˜´ûžMš×"z$Ž2æNÏèתVõ²QöLÓN-Lk½Èš0Âë½|cÀ‰ÆI0©Ê¯tHŸ;äð€I»o(p{˜s³w ʘ;Z¹^Ãœ…Ñâ&Á\fGPø›3Þ·¯Š¿×;;ùæe‰ç5Û®ñHI2Žjòž”>ºÇs©Ò˜ÌHÔz4VÆbҙГáÿ[ ½è‰‚¹ÎΠ»¿Öý‹NñÝg‘ë•$WmÔ1!”ü0G£òwšÅçw `2s ÓzMZ5NÂÙíLðë®…ÖB0N‚`î“—£üÄ>áˬ%$eòNä=ÉË•ßP寞ñõ°€IÛop2öÓ`¹Å/ž¢Š™8N¿èyyZˆ'm .#,7çMÞß=Äœì#YÜës^Oò +“¯vÊ~Ä×…€É &·DÅÂzsžÞ 8 zÃnÅ­²‹¸[AÐ äå(ŸÛ!¼¦Q¯7$e6ñª'õªævK¾ùR’LLŽFåŸ<%}¬V˜DÀd&S32q´Z/0N:¦EZ ÝU‚ +g7:†<×û¥#Þ·ž×;ûH–£ÑÜ4QòƒÑäï^”>°S˜Ä³)ÃIô¤ÆI ÀAà™8娬ì¤íÁ…dD¡Žïoó½‹&ŒYÈ[ÝÒµœÓ“<`’¼ùúY_-&³€¼2ŒJç!1éTpgwTY¬•‚l™ .5V;èCuž‘nñ«"$eñÁUñno®¥äð +“D$ÿåQ¯Æ +à©”Œ1{Ô%Vv2 +=é<ðEÄ tY!ô¢Á":•íî/ð¼ó¬ü”£Ì*¾1 çLJ09¢É¿h—>uÀƒì›l!ÏÄ¡mõ—©-ìT6€ÐËUÑÐÚÀÝîa ‚ -$îžj÷ž¦^o$ædÉʼnæBJ3`ò{¥× 4ûÆî›L‘\óǪhåÉ8ʘ;d$ô×¢L:—¼åG„Û}¾·áõÎ*ÞÌþªæ<`rX•ÿ¥Izf«»åʳTL*îKÊÃqèIG‚—‡Òj–ŒÁ8 ‚Ž'‘”û¸‰9YÄWÅ;½Ùíï&b’»ì_>鋱råðqg5VƼ3L#'‘‰ãLðë /îGƒEtFÙE³¡ïÙ­•CO:FƒEIã 7û‡%‚öR »Ÿ®pöçþejø‚•2+øæe‰Ú÷²ÍåmLþäIéëÑ’;[É“ZÈÕüý8ì“Ž„nœ ´)êÄ‚ h°Kqó‚ï·ÏÊo!×;K8’m!”4`2" kò·/ˆÏnÚ+íöà¬É2»i&z,:¼6”Vûªèa´¶H3¼åÕí˜ô‘”0Qfo÷d“¿›L¾|Ê×S€Éìf73Iu)¾82qœ ®'C.æìvCO‚ heG¥ëó‡®U`¢Ì|Þ믳pDÛµâ4JÒ(Wþj§üÒaog“ÙMríú˜³;O·#a^tUÐ`ÁqÔŒ´ˆïµù~÷<s²€äe¾ždÑä?)}|¯]³šÑS/¦z=qn‘î +Òñ= ‚àD’ÇDG¥ëê…án^ïÌ'¹@ÃZF‡Pr­KÄä¿^Ÿßì›!•aAÛÁÚâ@O:<³›Œ„ÞjˆI'e{¥ûÿœò¼}Uü ¼ÞOB™©z’—+¿¡Êÿ¸¯—LÚ>¶Á9’— â=»¹´€¿ÛiàÆÉΠ¨1=‰À'#oÂø“v*œg>_ï“2SOš“qÔ Ó§xîä¹³›½qÒ¡àéüQDN‚ 8ÉóâR¥ëcû<¯÷‹h˜á¼?`¿t¯$™˜ÕäÿzJúä>š}AöM‘‡!³ÄvôXt"ø×ØòÆISa—âþÚ>DQf8ß|FŽfP¥Y®üû­âÕ!`2ICæ« 8»9U„h‹D§'oÂx¹Öó«. ^ï ç­îLqy›“ß8ç#ƒ“9F½Á¢B›´g7ʘ; z óú€rõ ÁÔHž—*]Ÿ9äáb‰9™ÉW¤»½¡'¯±€Iòúåã^¾±} ƒé¥¦çóº4å=qT +rt=YåÒÂnØ'AL½ £å(3–®Š÷Äëªßv19•yÉÿé(Wž³deÌ…(ËÄqÒiHÔ0¹x‚?îqS$OÌyÿNa(FûzCRf&ï_¶³ +%/WNÄä¾OúpwSÏÄ ÓLG8LOö*²ª¸Ù ‚àLÉ%åKG¼o=CMa¤ÌLތ٣'iÀdDVå9/^®õ û&·Ù_ëÑÂBi8Ž„žÙ­,6 +FÙ? AÌ.Fúúƒ'}ï>‹ÄœÌ#Óù·{l¡ä“äÍË'}Ñ0-WÎ4`îQ3©Pg7Œ“N_A<]ýd L‚³#™:ˆTøPçvŸ„r”È´ªù‚ŠI^arD“Ý!ÿY£7¢°€IˆÉÜ%™x>¯VíåòÂf},,´rV&È2l“ f);ƒî¿9ã¥å(í–OàDÞ¿,ÝX¨J0IÄ䟔>²‡Šàù’ë4z,º¸º€¿ÛY`—û¹ú‡TÅÕWãÁÍ‚à¬ÉË¿ôÕ¸~Ú.¾ûr½3‘# RÕ\˜ÔämŸßŽråŽ ¹ý£Ôø슄„8ĤóÀsù©B¡•‚ 'Aœ É4Ò^áþø>Ï2¼Þ™Æ RÕœlÿ†J+–õŒ¯¯†¦rãÉâÒÌnEﱈ²“Ž‚¥Lã$‚ébg6aü-š0fïöéÎèy“¯tÈ~ÄÇGž,!¹ÐÝ,cœÀœž{¥UIDO¢†9‚i!÷z?³ÕýJ^ïŒãýiHõχ‰Ò ˜ü¯§¤5xȈ \¹chdv»4<ɋƹvÐÂnžÖÁ´7aü\£çM”£Ì0’k1UÍùG5ù»-¾v"`Ò‰ä™ÝýÕïCO: zƒÅ° 1¶Fs†V‘òÛ-ðzgovËéõwÓìÕC•ÿá¬^®Ö §‘õXôhaæ솧Ûi`W<ª°RQa7ô$‚i$/Gùüa¤[|’2“ÈC(Ó0IÞ|é˜WCÀ¤S嶩ʘ;ÜÙ­•o¤´h°‚àüHÊ¿8îy窈r”™Ã7äëéHÉ1Ë•ÿ¢]úÔj–ŒÀ.áTö×x4EÐêqdâ8 <¶!ZõˆQ}ÔþÑ‚`Ž‘L/] +Y±ºÿãIs2‡äB̽ª9Ͼ¹•¿wQúpÐ^iÿxm¡iŽŽ²žÝ¼!à pûdÈÝ[ƒÊ` Îi9ÊJ÷G„[½Ò;HÌÉ ’«p36'=ÉË•hò7Ή˜t6Í‹Õž8ÊN: z™ J/œÝ Î7y®÷WXF*fìVS áÞÙW5'ÿpX•¯uÉ}Ò #`¤zR/; 1é0p= .î«ñØ>AÌyv)ä‰ãþy§¹Þö“Upº×/ÎNOò€ÉŸ·ËŸ9è!—µ &Î0ï±èÖ!ã¤ÃÀ#'{ÈŠRqÁ8 ‚à›(?¹_¸7 ¢e&ðþå‡Pò€ÉQMþÑû¤?ÙͲoPµ4¼œ¼Ç"ì“Ž‚^v’É#rÁb„Y)¿öMÌž´äŒÎ$„’LÞPåoŸßN[rÛ>¢@ÛÉ%­_FEÇA“µ™´ ‚ @òÄ!"äê6á5M„×Ûv>¸"Ýî‘®¥¦'y…ÉÁˆô7§¼=U4`Òöáf5v_“71¦'áìvx óí„¥¡a7‚ Hšë]áþ\£ça"³]V9“o]¡!”wûR*AÉ&_é?ßè `Ëst¢Ç¢Ó`¢ÕœÝ Ú@"H¢a÷¿·Âëm?ß`VÇÉM”<`’ˆÉ?)}¬ÁÓ¤—ÐÊþZOgÈ;Nc¹DÃnj˜ƒ ¸ðÔÂ41ç;iFT8·—DÏD'­Ä¿'bò;Í,`²Òeûà3Ššáåä=QÆÜQà¶hU¸ËLž¼Âù—Ozu¯·Ý²Ê±$çÿfwrû$˜$üÚY_o5]ð094I$-9viµQ…ã¤sÀ®u¯"«awo5œÝ ÚFê6 »ÿó)^o{õäÞ$–Ék,`’¼þùŸÆË•CL‚ÉØS-D•Åq'~¹£Š®$¡'A´‹¼åG°S€¤t8»«MqZΔ$ô¤£Àóq¡·Á“ ÚC.&_ØéùÉ“Òˆ6½˜äöI¢´‹wz“E hò´ŠÏï:‚xš8‘| *+;GE'ÁZ,¨mA´ƒdæé º‰!jdT£Uh¦“¦¤DïE[x@šÝJë8EuII.((N£Þ_¶YâF¶/à0=Y¿;Oå´h³‚àÂ’‹ÉZÏ÷.J7£)Y&­z…(má[cC(­’’\Äï^ôõV»!)HV%f±Vþ{qèI§éÉ–µ †¼Ý(> ‚àÂ’‹I¢=¾Ù$ÎPLrõ2¤úïÃåmou¯ ju|ÿs“.)mcàB²·Fˆò2æðt; zñÉík¬;’¶4‚ èòöÜDuíAc&'Ô-OÑDy»Ç,ï…ç½~1¹žävã¨.)É%þÿÙ{óè6®óîŸÿ¼üÎy缧¿æM_[ –™´Û’âX¶µÀ’\%JdbDZ-ï²­}Ip_ä=mœ¦IÚ:ik7iº$y['qÓ¦Íf'M#ËÖ.qQIÑNãw`–\`ð}Îç p\o˜;s?óÜ{ŸYÊB ¶Øm {QƼƒûäßÿ¢»Ë°Þ È\&É—<-ñeî4d²/VˆR¸\ cl åLJÉöRþÛ³’êƒR +m•¶ ¯øÉË#8‰SxÁ‹™7WØU~& ùI€ñðöÜ„ï=á NÒ—VfRSÚ{…(³Îx§<žq‹ÏR¨Ê÷žt ¥47*£©Ìb'qÔZ—`¹Ad=¸O6ùèÎIš©F~`0\&J,ßyÂq18M{î4R”è½(„+-ÓwÃÔ”²Õt"o üõJibX sö¥ì–ã`D‹OFGnv€ÑX{î¿zÐ>{GÅT—¼Qˆ2«tR¿Þ>WÍù˜R~Jivø•m¦{­õ^(eÁßá –Zƒ±|µð1 07žb"“õ‘IÍ[®¶ÊÝ’xÑ*$ˆÃÌu*ŸnH`{¾¹Õßæ†[kÞmQÝ·Fbk ÓÇd1sß¼hšZôh˜bvŸí\£’LGÅ”R”è½(ò³ÏYž—u"oä=¢Ác ˆ„À8ø®9Z.¦´øKËo KY1é“^kÈMQ +³B\âKŸ±8¬L[ +;ÃüäEKÞÙf¢[ºÒšÔöWr¹ÉQÊ¿yÈŽnŒ¦G6/æs ”¦¸f‹¬Xè0+¼=÷¶X‰Lé-“š± ÷böm§&ŸT¿u¦”ç”?ÿœ ߦJYXÁ|’Xe_w €Ê2“G7Z½ŸvN1B&¹® ÷¢†f®4õ ¨ÊÉ#Ê«u6d)M”²€‚ç'‹bÍ»E=€ùP}T&»«­ÿµO2(3©-y£÷b–gKÞ#Í)œ«âÝOV^ýŒ ÝMWJòùêK#PJóÉö > 0.“ÍåÅ?ÝE›àÌyp#sFšÅ[V¡q­Mš©QδôÄ”òåÍtáS¹Ñ”Çs̼X}C´ò¤4è…ÊJ5³öܺžæž}9U¸_ãrª¬ˆR©Ê¯÷+Ïm´’7(¥¹Ñ” ߦ ŒyØŸèoÏ(-þѳÝ3i°IF}2Ö{Q¸bÉo¡Œ—20þkŸtt£•¼w¨ØÀoj°—ÒäÁ|2à¡çìBä^Æí Ð.“äËwŸ°eØž;å¥&6Ï6—[Ò¼XCL)»ª¬tás©A–ÒÌ—ŸDs€.ðöÜÒâzÜNd²?‹2Ù[òF!Ê,3Ú!§´…R£Ç¯ ‡”Ÿì’šÊèîLCæ{)MÌ'ƒ±â“¸‘™ÃÛsÿõCö>Öh/›2©A{/ŠV¬‚‚n¡œ«ñâì¯?Þáh./Æ·éA–ÒœõIÞÀ]ü0˜¿·øŸ·Ÿ×»£bJ~2Ü„S9Ùf¤YNÓ'Ùç WÊ2(¥ùRš0øzwiq{¥-XŠn€L©/±üÅçl•ìèžÉOˆÊ¢e–¹Ö&¥‹îe¥üÁÓŽ€—¾’@)Í ”ÒLÁ›-îðÙÈm­°a± ´ N‰å‹µ¶“´çN#Ey½³ ø‹äça@þî¶ ËrcV27“J龕ØH¨J™·Á®]½÷µÔÚ‚bæ€ à©L1°£bJ>9VÆ;Å[Vá@~íᦌ.}/óI(eáUJ¯%^Ky<½¬–Y´ªP*[æ>ºÑzì]²ÌBœ$“]£íâ-«p˜è’¯´È^}¢£ý¬ˆè?È¡„bE £v¥Ì·¨­cùI/«Wïò e¸L¶UX~¹×1”ËÜ Z2 bÉ;«_{0”æ)ï„kw1¨\hT¾ñyª”ÂÇ90•wTRæm¼QK¯WÈgÑ.¨ðAÈ#ˆLòöÜÿö¬Ìþ}‚JMÎè$ì½³ÉD—|)ݪAÓ¼¥ô+¯=¥,¸Rbá;Cuóü伶Jî¤ÝòÄdòß·KjÎɤæ$ÃM + +›gÏ'»¥+­º]¾–a>Û |©ÎV_‚Švæ‡+eJ™oÁ}2èµvVÙá“€”àí¹¿ó¸c0We²½E0Ú.ëXǾ‡e)OV¾Xkk€RšYÊ<Œ¢Ø5RK­m´˜¹øÈl±ûsô9+“WÐ{1» ¦Ûxq¦—òÎròSJuÎÍÍÔ½”EPÊvVI(fH•†Ë7·:.é9Üœ:ƒ3•¿2FïÅì1A/:õ}Å qHUÞ;$?¿ÉZ_bRšzâ›öH²Ìé2á->¹Á¢z-hÞ Hžõµlçó@&û´Þ‹(D™EhÕ ½Ç?žó«}ÒÑj(¥ùÑÊb‡<ó"èƘÛÁ¯N˜ ²¢˜9 IˆLþå¶ ¬œKîˤ¦"WZ°ä=Æ;YãE½‡_øþ/¦”Xø67!_qØgUK­ªûÿ‹`É;·ƒ RK-j¬”¨ðñÈqŽ”±Övêˆ<̉&8É{ÈPXB!Êl2N¿‘÷œJù˽rk…¥YJ3Âœ„5õ&2Y늠¯wÎG´ødé-j¬Û‘ðQÈYxÝr"“'+9Õ'y®·£pPö¸ª_Õ ›|’1 *ÿ¾]j./F–Òdp™ Ò’Aó¸«`¥;÷Cu¯¥Ÿ¥Åm8Œ˜2e))~~£õø!Úž;e’ü;´ˆ·¬Âa´CμñâLJÙ§”žb(¥9Pc­ŸÕÒè1Èd^o¶òZÛQÌ0343Yb9ºÑúÎ^z ;ÇKÍâ“Ñ{1‹°Æ‹F½zL£”¢o!\&UÈd¾ÅdñI¯Å‚3Á—¹»ª¬¿ÜKë–ç©Lö¡÷¢Ftj¼8Ë%cò;O8‚¬º>&²ü%zš›²r9ÁžÉ¼ v¥^}b)™,ZP,0¼£b ë¨8Ä–¹ó×'ûxïE¢Ì´ñ"±wC ÿ›÷ÿøXT)…ß2 =ˆLªÞâ€×Ê 2™GÁ/Ö¡ ÅþÒbŸLEe4yß|ë‰g&óZ&¹O^ bÉ;{ŒuÐ%iCwÛ’¿9ñIrY‰Rª>"$âojLBÔRv‡È d2¯"ZÌÜC¯&ŠO¦B¦fâ“ons …r·=wD QÂ*³Âp“áu¥¨R²’õó°½ ¾ó&¶g’†êæ>9¯)ZëIüäõ%–¯ÞÖËN:˜I&5ñ¸ŒÞ‹ÙÂЪAÓ+e£òÕû­GJ0¯å(üºDëL²8<Á…ÈÓˆ­w[à“€xJ,¯=`;ߨ˜R&¹uÃÃþɬ@¼ýRSöRÜ\)OV¾XkƒRæ êäKs…=‚"“f‰W«E/~˜ÄBžG6ù³¶³ tR6¥Lj ÷bÖ¸ÚšÕ-¸dܨQ¥¬/±`vË5b{&o‰`™;ÿCÛò*µÀ'Aöh(±üI­õýC²ée’ö^l/ZÂX§|1»=:¹Rž<¬|a ¾s *“^k½2i’ˆ.v»‹‚¥VÞÞHøDe{&_Þ\LdrÀì2ÙÇreÄ7°ä5ÃÙTtWƒªüj¯|t£•f)Ñà[4“í½Ÿˆ`Ïd>GQQQhJ™P5VúIøHˆ‚f&=ÖîêXGE³Ë¤z/fË-®/WJ2ª¡”ÂÑdãKËo`Ïd~ÑHráZ©•öצ–ZÔØæXრÞQ‘ÈäÛ{¢…k^–d# £÷bÖ¸Þ.¦Ši/kðÍ•’¼4A)Å#µ”[ÉÈÇ ˜…' ÿòFe§¹s9¦ß¹ñ–×d÷‹ê-n­°%œàÆ}xi¢Æ|í¹SõÉþ ½³ÀD—<Ú!g§ñâlJRÈ ü(¥Á¨lgZj¡ß=Åš¢„ŠÐ¤;·"ĵãÿµÖ*½%XUǶ +[ ­??ye….@Ž`ÉI"“d~/X™Ô4c¤½³Áx'Ñ9Ià]>ÎÉ Ô?<UJáw¢¹á+¡­6b&A¯¥±TÒŒ»(…ß6J­üµÌ¢Òý®~¿5no$40•#%ů?l'sk {ðrÞ{q…(³Âåf¹Gèxã£]SJáw¢éѶÛÅ\ôl·¢”°Êì_׎OH¶•’hd¨,ÚI*ä³6—[Ã8¬ ˜‹õ/°k0œd :¯µIHQÍD·D~gá—›nr`JùíGíñ÷cá@¬’÷ã#¨\f¨Ø`ù; Á*Çï4ØS÷ µÔÊLÑ:ZDøùáã™üêýVÈd‚` ÷bvër ,ß7K>¿þyÚà[ø]YP„}äYÑè)†L¦d轘Æ:sh eü JùÎGwµ•¼ˆ ¿… –XUmºN¿{-þX»Æ¢¢"Xez¡ýnO®X¦ÍFYÑò2+•€Yà{&Û+‹!“©ÅH³…ͳÀP8‡%ùWRr×¥$¯c˜gã£%Лb%ЛÊm܈hM!,§ñå˜TZÉŸö*Òsc´ ™I/}»ÿ÷íÒpÈ™ƒ³v΂ދYãJ«øË=ÓQ¥l¯´A)s~î›6÷Ò€šUFŠpT'­ˆ·ÊRK°ÔÂC ¿Ð€œ‚<È$H¿o=ã@Ñòô@ïÅ,0ÚÎäMôµžJ/ÏR†”Û.5•ÑW3(¥àgZ,u.³²}•–ÆRKë¦?+eùD)£…Ü·†<Õ;™ +Æ€ð=“a.“ª’›óuŽÓãW.¡÷¢ñŒwʹZp —1¨*ÿú UJ?”2—ˆíú#ViWÙ¾Jd)ÓmSe[ù'CìX=ùyyÓá +z’¾cB&3s ¿rQUFQˆÒxFšåÜôɾؽÕ’L¯PÊܧ+Ûh¢’nÿ‹À'3‹øZLjyôn.Çò7 +—É€·øÍmŽAÈd†.áW®bÉÛ`&XÕ œõɾX–r8äüîŽF½¹ ”¹/MÉ7Ur‚Of¡ØfTò%DDÝgi)–—úÄ_t@và2IøûGí|‚†Lf$~e8ŒS9FÒI}r´ƒU }¹g ì³?èü‡Çìü}MøÍ^àg/"D„'jBIýB;§S_5OÕBñs +„x™äs_.ç|ò…þ€Œ%o£!Æž›UƒâéeƒaR)Eßï…Ll–nðKð„^QTTôFmlùÛ]õn)Ç9ÌO2iŒE ÷¢±2Ù%OtK—[äÜo(O ݳ/û°ýH‰ø[¾0¡™IÖÒ%Tú¸í„™4,âE]-Çwð–:°JÌJ£·øïLꯪrKÞF2ÑEK3‘q+ür'3.•s ÊkÐßÂïú„ËL &“Xæ6:ŠŠŠ4cWÝÿ“7Xo‰ui„U`2<Ö¯ÞÞÃ&;Ȥ¾þ@—¼qÊÛPˆ®_iɧÑËGʼnÃÊ×Ú ”£B&s)´âçí,!Ú¨‘?G®€<Æï-Öd2_r;y +-DÙ-!EiѪAù3Œi“wUyïüÇ[¬Xø6ŽØin d2‡"nSeS¹-è‹Ö–>Z©BnÞ#%ÅúYÛ9d&³b—šÄ—é å“Oò1Ä”ò•-t/%VýŒ vš endstream endobj 30 0 obj <>stream +øÍd„I"!â[êxi¢² Ëßään­/±¼²¹øøÁ¼9Å× ÷bvi΃#Þ W¹¡òßûåîj+”R÷?G®°s{AœŒ ½.ôôw™…—šç-up;ãi‹Èä{‡h[aÈdv ½[e,yÊõö¼lêľßÞ#uVA)uC“I¿×‰Û³‡ÈÍЊŸ7ù¢·@3ŠŸèIq΀ދFC~ÞüÚB?<†BQ¥lôÐc#ŸymÅbUËl´¿É“ —I[þæÍ}°JrroÖ—X^ª±B&…@{/¢¥¡>™WUƒâéåo!åg»¤æ²b(e†Ä/sC&ó+&‹Ÿoý£v6ŸÝ°Jrr?6x¬•Å¿ÞO§-Àà ~½†üÂùè“}\)ò@PyëGØÇ”RôC#IXæ†LæcÜTü|ƒ#è%—ÕÊ•AX%B¡2Yb!2ùö p„ ƒ_aÉÛ@&b[(ó”¨RªQ¥ô{1u¦ò”ã2Ya£™IȤ ¢¨HÛT.–mÂéoÄA÷L™¬¢2‰en±¶@>‰ð÷.3Ö)ä[Õ ©ƒ„ܧ?|ÆðB)SxÊñsÁAȤ¹B;HE¾¨^z}yM¡ •d•-œuVY™Ìˆ-\j/]æf¤9_—¼µAB>ûƒÎxÔî‡R&ó”cŸt—×ÚRuk2i®¸iùÛg ziŠ²5VüwY€ï™l.+þÙ.i(Ÿ“6¦½f¢[ºÖ& ¿Ð™“~öåïcJ)üa’˨Zm퀙4gÄ?/µBXþ +ðÌd¸¬ø‡O;.ó².Ÿùà—€¢í]&f´]¾˜ÿ©ø^–¢$_þ(åLºÒbâª×R_5/WÆaÊÅr•jå¨,Q‰ÞßJ¼L@&s ^ˆR¸t™™N™üÂ&¨`@³”A'ù|í;|Ïu /õIêu‘•PÝÑ·†¯¢zíj©…×B®}!÷d2g¡KÞAô^4‰nérKÞç'µÑr1¨œmPþâs6rS ¶ä<9I}Òg  N!E(~Se™Ee]uZø¶$óÐVx­8ì+þd2Wá…(‰öW/S2Ñ%_k—hfOô…Ök´ ¨Ê¹åk÷Û¡”SwA¦”„» /Bq ÙÕRkÐkÑ–¿‘« ÈÄkŒ|÷ ™ƒød$|B Ðæzè½h$ä·5SÕÖàûL½üÅ:[}‰e•6µ”¯wÃ' .âO·x•=ªC•!t˜ ]¸L¾õˆ£—u÷3Í|j2øQ‹ëí +NåÇpØ<>ÙËR?$¿²™vMþ´É%,U¶`©5‚“ÝÄ*µ· ?QʘLâå €4Ðd’˜äÅ ©&SóA®Îeô^4’«­ìw}¡õ3ƒªòSJtcÔ ¿C-Ehyõ‰¥Ü+„z "{QÄ*‘—ˆ7j‹¦¦¦ùªwȇ‚B¤L ”Êdd2 n€Þ‹F2Ö!óÃѯµÎÆe)_¬±Ò…o¬èÅvKçÕ¯§õ‚BðI“·GNˆ‘ðÿ°ÃgSËí*yÕòZUŸ%¶·> @jÉåõ‡íd5ßjb®·áHŽ š±†?WÊ·÷HU´*”2X-j­zÐfÑ<¡å ³¼#¨•®ÍÕÓòæÁØ27y¿h«´±ƒ9Hã ë×î·_h¤…hLPv¯@ ½›ÄK—‰¡E_eCFN¼Rz¬®”*ÏAùŠÃl %Jåq°¬#¹‚³œÓo¨øD l=kã+V£¹GêU¶¶ +y³àÇpÔÒÉO@’p™<× `™;¿à¥±äm×ÛM{;L*ee¡+¥ªÉƒýqò/xIÕ]4õEàKËooß`i® åÊU¯…}N^ñf–„l‰kŽ‡ 4™€LæZïEáÞeVÆ:Ù^bÑÚ¨ñÔò_Ÿq„ËØñœÂVʶ +[%ƒr>âW±©ùß¼­ÖºèîGŸ5Pz+ÝéårÕÅp™•8dS¹5ì³&߆C *d2ÿá…(…{—Yï¢; +Ìzkô2ˆ0ÿðéBWJò0l¯´52ŸÄþÉÜ ÍCEE3»'ö.µÒ4Þyj,÷ØRnmáêHׯ§i¤@/Èýu¤¤økígê*öLæ+tÉ[EïE¹ÚjZŸì‹¥¸˜R6•ÑF…9Ï’ÿêÖŠhIóJ‰ŽÚ:ºx=ÓUè¨r„½óB´+â~¥ò¢—Ñ{Ñ:iãÅëíJÐ)ü*:~Èç ª|çq‡ŸU -Ì™·¥œIˆûVª,ðÉœ ZÃÇg {­!¯í~¤¥øù6Èæ2kÛ.ÃH0)“‡LÕQ®`aKÞNåùa‡ÌX5è¦!Ä›aä¿{ÄÎÛ­ +LeŸ&î“ÞODP‚Rhì©ûD¸Ì¢zŠñM´™I†|V¾M2¶„mC r6@&MGÐy­MBïE#˜`UƒL¿!„× + _¾õˆCøcJa^‚r¶P + ¾ÀM”žº¢·¸³ÊÚTFÏÎKÃ2 €8ÈýX_by~“õ݃ty 2izÐ{Ñ8Ÿì–®¶IÂ/qàJÙÿæ!{¡5øf%(‹µ’æ(A)*¢J龕m¤ùÉæòh– @ŽÀe’¼ñ½½GBfÒdðÂ/c8•c £…’ÌçJy¶AùÚýö†BRJ.*ͬ’L%ƒ„†v ç%š¥¼…­h[šÊ&7I¢ÉäÏw3™=mÝ!×ôz/ÆP¸Pj ¥*ç¸Rz +eç>É–¼±Þ->ˆRjUåÉš¨ôF+7Á*­3“ÉAȤI!p©Y¼w™’‰.z‚^ø%ÎæX¢JÙ¨|õ>[,|Oú¤¯X¬J!&£è¦–7¬:E³J¬}eÈM×è)i2 Ÿ4%¼%Ny¯TKÞÚpP•“G”W¶ØŽ”˜¿Î9—“¦8ŸD Ê\ VÏ\û#¿çVVpÒÒRÁÚÜÄ]>€qp™ —ÿx‡2Y\Å’·1Q0{Õ x–òø!ù•Ít·L!(eôˆ7ß< ŸÌ¥ z*šì®öó§ÅÌ›yí œÖÀH¨Lz©L~›c€ULšô^4”ᦂÛ+³”¢”*ÏO¢¤ynïÜÍ¿«Gˆ­€‡|Ñcà#ÐdrP…Lüpîh»xõ2%W[Å_b!ƒŠ<@~½_鮶š^)éY_q—çÿ ¤ynGü¾ÊVÚž›5ÍñѦ™A$*Е€—<‹ßÔd²Öé +Ö{QAas#ëˆ6‘~•³=¨X–ò»¥Î*¦”¢nÆÁWN[×ÿaG¼s>ŠnÞW©z?*µñÓ:¬;½ &«d•É¤ß[ü/OIÈLtÉ;¤ÜÀ©ï” l åä¸b ¾¾[ꪲ6xL{´–× RËlä'ó$ø¾JíðT‹W ±*è!΀)Òb¿§ø[[¼ÕEaNK/z/É•–½¡øQ¾!UùÏRs9=åg™ÚG·áé²é©/㬠+åõö½¡ø2Ç€ªüàiG¸ŒnÏþ¸Ó•mÀSY›¿êåg„ŠŠ´ÞFªoòÜwK9µÊ VÀH.“ßä2YHµò@ºúò@PùÖV‡ßC—E„?ýt¤¹ÜÊ×»#ðIs;Î/¥ê. +øþZj ²z•!´×` +õ%–¯Ýo?ÛPX-áÀLôä‹A,yâ“ÑÆ‹¢/±àÆ”’À•RøPGhCä'ÍoÔF¯fm]QØC_iU½è1p(%Á8™$ +™"©U˜ANÝ|Z§¾j^ˆ?ùøÙ(%0\&»ª­¿L‚äàS< +QêÎxa7^œe¼‘GÓ±ò ›¬ y¨”ü_8ì³ò–‹Ø?YÐ'–´¸—¾e„ˬá2«ð +@&p™ì¨²ýt—„‰ $/D9Ñ- w0“A«‰¾¸9WÊ·÷ÈäaEYy§”¼¡ê¾5‚zæˆZÉJf•·`/%Èkâer(D÷Lb"I‚Þ‹q­M~qs“^Öà›<¬È#«Ñ“7“o¬˜¹E-ùdÅ'Z=¹b9ÿª–Ý¢¢šÈ[È %ÏäI™ôã H~*g”-y㬷ŽŒuÈh¼8Ó#‡ydµUç…Rò&)´3Ž‡žìÆJ7"ÂÔÚ µÌÒèn¤Ìýñ ÀT¸L¶TXÉ“y2 Ò‚ ô^Ô4^œmȱQGYo=#‘ù×ŸÛ G´7­ì$Vº Úõ)+oÄ27ÈC4™üþ6Ç€ +™éCGNlÉèC'=ât½29×Àc{)¿ŸÛJ=ƒ³ñ–Vº ;4“Üsש¥7•4 á2I^íÉÓ¸2 2f¤Å)^ÃÌÅX§<Â’÷lð×PHùÎ㎆K@ôsu*MÌü^[' 8è{ËK“/a_´Ó"Z.‚|‡ Ý€·8 ™úÁ Q +0óq©YîOÎ>ör?ûòÍ­ŽFOqN)e¬[7]éÆî Þ¿[ûCÕ3ï¦6‹¹šQ ¸L’§îwž€LÝÐz/ +031Ñ-]iÅšÄðó+\)¿Å”Røc6K:…ˬ*kÕÍÝBŒÓ E|wEµÌ¦z©C¶W¢µ"0 Vj’Uå7ä—6g/K9¹m²ä“¬t›=´j¢ª{­J›ÈÓýôp“¢ÉädÇC轨3WZÅ_Ù¼ƒ¶åJYc%JiôÏËSÓ/>k2iúкoÓóÚV~õC>'¦¥ÑS ™Ù„oómï`fb´Ò¡‡(eHù¯}RW•áJ-]Îd¥ËMÚ†X?-DwS´TØ“&Fe™É?©µA&A–!Ú3Ò,ÞÁÌÄx§<€ªAéF¶ðýÓ]R[…¥ÑcȤ¯Á ú°mÒäÁe’¼/„X÷íVf’Aä$yá2ùòfÛoÈØɲ ? %o}!ŠŽ9í9¢JÙ^YlRÒm“^+’“…!òúॅ¡„O÷JƒÇú“É!È$È:|Y½õ…üž¸—Ó“L)²Sj*cJéÓíaË7Ω^KØëˆ`Ûd„¶ÞM.ºê-ÖŠ`> “@8dà ‡T Ò‘ÑVŸAô•ÍSzªòým2ûû½ºe)CÑåNÚ¤2Y Q+8*»J L‰Êà¼Xc=™BAïEÝï’‡›pSg0&Ùç@PyS'¥Ô¶M†J-šfÕDöB놣úæ¥ C)‰PYf²£Òö˽ŽáÒƒyˆ½u„ü’ä÷„OfBT)U¦”¾Œ”’ÿ…ÍåVzÂ×}kÉÉ‹I¥ôÞ¢–B)Ià™ÉöÊâŸî’‘™9]ònR„k˜i˜è’¯·+¨”é°dŸƒÊ·µ“gf ]¥TYåê`¬t¹Ö$QPQë§`%(yßvá>@ÚDe²ÂJdr(„V ' ãÈQ ì¢Ô‹ñNyUƒô™}¬4å7·:¸R¦ñÔåÉ(Þ¤[ë“‚(ÄÐŽç°´PJ¿ð@<39Äæø$ÈÈh¼Ü"^ÃL1óKMXòÖgdòæ³D)‰OR|äYõòFï¼öL"âÆ;œeR‚|„>Ó<äM¹ø?wB&AÎÁ‹´ ¥n>I·PB&uœýA'ùòÚöúK²\öÉû*Fb¥­…º "7âf¥ C)A^¡Qüþ6/Z™9Èõvì¢Ô Z5¤u‚g)O‘¿rŸ­Á“Taj5zg^ë¦?ˆà ">¥ùÉM2¤“ dä dÊFïE}ÁJ}Çç ªœ®§JÙè™ûÁË+ †Y œÁA$ÆMJ‰½” HÈLöA&A®Â‹HcÉ[/&XãEá—ÕLôD•Òù¥ÏØêK,3 €êå]uèÿCË܈™"60Km´ §h[`¸L!“ @ïEݹÞ&õã®×®”ÇÈ/n²6x¦qur¥»8Aˆ„à請(ècuôkî €ŽgZÀKë–ÿý£öAÈ$ÈÈE!JïÄJýÑ”ò…é”’üak…Ze%¶M"æ>Bjë ” Gá2Ùè)þÖVo™¹=õ€Þ‹ºB/Š¾¬æƒ8Zs="ÉàJI>£J)Z$ 'Û7>oç=ì “ ¿à/A轨ãòª7\ò ªül—Ô^a%2ôÙ¢r™D¤“J«„«iðX¿zŸíL½ŒÌ$ÈShïÅf,yëÆå4^4l¬ÆZ;ýÇN¹­ÂºÃý¿#XéFd|ðì÷ü/• +B) ˆL~å>Ûézçu‚¼…MÐ +Qê@'m¼x­MÂz·øéçpÈùö~;17j!“ˆŒ‚+eëú?¤Ç»X]J(%È2šLB&Aþƒ%o½íñ‚i ~¹? _ +;¯…æ x+x—hAä}ðʪ÷j¬Ñ”d "“_þ¬í “ÉL ÏAïE}¹Ô$ã±`~™÷±í9,SØ‚ü$B‡à‰n®”XøÙAep^Þ\|â°™æ 7@ qaÉ;cÆÙ’÷l¡4’!ÕI>ƒ‹©á“}"^)‘¥F£²Ìä‹5ÖcdÈ$0轨 ]òµv‰V{}AÍÊHØI~Þ B%>‰Ð/â”Ò³”DC‰…ËäöGsAä…(õb¼SDÕ Ã¸Üäì'VÙ~[‡»z‡êfJYõ¿ƒlá)J ;dP5zŠµÌ$f +`2Èî:Ñ{Q™ì¢KÞ—š°ämd”^mv‘ÏØIø$Bçˆf)+íÁX–V ôBõÑ=“]UÖÿÞO‹c™˜¾8{¥E¼™ƒ«­ô2–¼u‡˜äõg_ÐûQÉa@D•Òãbáè‘ɵ­Âò³]2“Àı=Â’·>Œu Ç1øåñ6W_ÐAñI„‘¡e)±—è‚&“?…L³£õ^.cæ`0Œ'†øåm®^¿DæúwžX(Z:fŽh]J(%ȘD™þ À`h!ʺýO¸Œ™€Ë-I½ ÒJAD){‚¬øäëÈO"Œ¨RzD)y!áfò.“­Ú27¶B€/y£÷¢.\o§>‰ç†žøé.Ú"ÇÏöOÂ'Æ_øn*•T¯¥YJ"ô4·—~ù×gC¬î&P8\k“¢Ì¢å±IFo†C´XPͻ٠>ÒBåÔ +¥É£úhi òùæS^”2 +ô^ÔT ÒZ|2èì . Ó<Š™#²¼Ò©êµ½¨K ’‚×™ 1™¼TPñôTŽª ¥.\m“ðÑ“XñÉ3AkÅÌYŽ¢˜R"K æ‚ ¿wR&ùÜ*þ +@v!ýua´CFãE=ñË£­ó{‚òñà­ÚüŽ@d'ŠÈx+ŠËRB)Á `{&¿÷¤c ˆô p!>9Æ© ¿áªéÊö½ìp7’“ˆìQÊPœR"K ¦…Èd£§ø›[ý±)Uø“!ô².$XòÎœ Z5HFG-½ ÃòÃŽù¼˜y$x‡`·@dhJ(›§–Z¡” "“~oñëÛyIgÈ$—[PØk;]ï„Lz/êÅõv¼®êÃå&g_Ð9ÆùnD®D(N)ƒÔ$­žbNÀKW?'?ù—øïÓý)ò7 ùÒDM›Òt®p¹CƒÇJdòL½s=ј«mÒ„hË{:±…RüòÕfW_Ày>x ›ÀᓈœM)Û*æuUwo´vW[Û*ãÔkZaóM÷§|tÍtÿ:Ë!ÉÁõŇ7ÚýLò áH ý‡¦qf¿7‚¥¨o¼'ü†³ü©tÑŒ1þQãÿG•É/C&˜•¿r©I´Œå?h¼¨ ~ùz ]ìF1sD®Å[Á»èÿùò-=!é¬_>Õ(ýæ°ã§{?ÛcO•·¶;¾û”ã{OÙS⟷ٿõ¨íÚþê¡Ôøë‡l_¹ßöǵÖ?©K™ç6Y[+¬m©CLì àT9Äœ9 ÒvfâŠZÂy*Äm°¼Zg;Û @&˜rw{d…(3æ*«„]”r£žÇ‰`±‘kÁvóŽu:#/9÷œüÛ£ +ùüýóéyAŠ¼(E?SáãÊõZP‚0ÊHêK§|©Eê;.†åT9”N4PN2´ï'núßþùÇ;ûSàíýŽ_püx§ƒËsJ¼ù´ýGlùyÛ×´½Æо$|O€ü©/ÖY_¨±¾8Ĩ¿ôÛ»å!UÁ¡Kf‡(åÕVKÞ2Þ‰ò:p¥ÙÕ`Å̱ØÈ`29Ô5ïF—òñ tÏ9g,»ŒwEÔ)òA7uQâÀ2’ÿBœù#ÎóqŸ L÷§>æÚœ:ä¯åÿÂŒñß?˜òÿ!1ç+mô½>U†[¤¦Ùn– “$Q !ô^Ô4^ÌVy’Ö òËl +‡O"r&˜OÞxŽVW#–%ð!£©ì8ÓËÉÏΤÿTŠdÕ™;ä´g¢xÉL .ϳða·4Ü„g;sÃ{/bÉ;s®´ˆ¿šy +fNè Â'¹±}¼Ð|“ÞìÝâŸ6&f<Žøÿ%áûø”?Ì\ž§å«àAë˜A)˜‹^Ú{Qüc$ßmþ˜Â/h^â—‚JUJø$"§‚ÅÑ£‹È=þñ +ªõ&HQ (D© c2fÂJó“ƒóµIl±{´‹f&Å.vŒ¶Ó¤ ˜¾äÍ{/Žcš˜‘fT JŸá-fÞRØ,ŸDäHС8Þ­D^r + (É@”…(3d‚U Â'mFÂÎ>¿m¶ŸDäB°ääÝ6rƒü<’“ OQ +NãðB”XòNöÓv°ªA¢¯f^â—¯4¹ú‚ÎXÛnø$"âu:'º¥È‹Ø9 ¢`n¸¡e†!FÕ t¡ùIZÌ>‰Èà¯6¯Hã]2»Á„vÐ[ô£€§Ç¯ 7aA'³N·t¹EFåÛ” Ò•îá³?Z|2ŸD·X“¦±îô‹"ó%sB轘äöZ›„Ø”a»’†B‰±Åî‰né£çèIì'SAŠ€Ùá/\¼÷"H›‘f´QH!•þb#AÈ‘ŸDˆ :ü>|Á~£S¦eÌE?L@n‚%sB{/6‹¿[óšëmR_LÎA2ðæÝAÖ¼>‰¬'¿‘±sÌR”Ìz/fÎX'¶P¦Æ%Ö¼{¤®wUø$BP°ÅîwžXHL2ò2Nâ€éG»’†¢DËÚ´Ÿ6¨”´ÙbPŽ¼ˆf‹¡MNÚ'ØI윳ƒ%³ÓËz/âÝ<ˆã9“<—›œýÄ'ùJ7ŠO"DE÷IWäeç.‡ðÇÈqÐ.€ÙAïÅLàK!ä×~óˆ«Í®>?š-"„{ùð¹ä.þýó8‰’KQÌ/D9Ñ-aÅ'=Æ:Q5(9X³Åkͮޠ¬Íé„€`c<ñ>æ2Ù-þ1rô`vˆ …%œÊÉ„‘f,y'óÉÑÖùä·bsú‚¥Q˜Ádò|°h¼[Ž¼€ä$Hì¢`vúY!Jì¢LºäÝ-]eUƒÀ0Ÿì5[|+x—h±@d£=q&:åѤR”ÌyẌދ™‰È~°úùÝ +í] |2c"À´ðB”ä‘+üVÍS°…rFüT¶ =~'Ü_Çz7"‹Û_q£Ëä$ЋË-xà0=|ÉÛÔÓf¤G¼g€3gù[:¯£˜9"‹ñF-[ìîvÝèD™  cèdÀÌô¼÷"6«§ùé„_ÁœåR˜õ[ ÚéⓈ¬ÇX·òûç!“@O.·`%ÓC—¼›ÅߤyÊX'{]}sòžr¹ÉÙtö…ᓈìlAúš Ÿú2ÚAW^ ”L…÷^Ã’wZŒw¢.Ù øåk-´˜y_ðÿ°9>‰ÈZÐÁ6ÞEM‹Ý@_&°Í €Y¹Ö†#9i>[®¶Â'§¡? ¶Î'_Žoe3<|‘Õ ÷æGÏá$Ðì¢`&È}Þ‹éÐI}2ÚŠKôEÌ5ÈoòAÇü>?ëÜÃ݈ìl/-!÷&z,#@Š€™ ÷ÅÅ BÞ¹„ߧùÈX§<„ªASFùdÍ»™Oâp7"kÁÛx·Âç}áÏ`J¢`ZÐ{1Ø»ªÜƒK<¬˜ù@PéçÅ'q‘àÛ*‚EäÆŒ¼‚Ån` ´¥ð'-¹z/¦Çx­µUüÌ-ü4ãÝÇV½ùü.Ö2…lgŇ]ŽñNùwØ< Œ$š¢þ° Ç >I¦þQ,y§*HLePu‘Ï ~Ö¶>‰ÈR°Í“ŽÈKI`8h—À´÷¬‘çD·„Âæi0ƃå&†CÎþ€|ºa~QQ|‘òäd1¹?~«-ÀpF±‹€é 7Å`½Óa‚½¨ +¿‚¹CÐ9¦>y¢aAQQÅ'Ùæ“£I%&¢`:z™\k“p(2 ¢Uƒð`áWšh1ówvQŸ ªðI„ÑÁÆØ«Ö]” Yc ›˜Ž¿2ÒŒ"iщ§Ê$ýùz‹³/à$2I¡˜9Âè`ÉÉqVöCôÄYaµ(˜Ú{QE!Ê4n‚OÆ:¯6»z÷ɺ¢º"(%¸ˆ.z¬û(ÞˆAVA-J¦…Ü×Z±äWÛ$á—/ ¯ê~z§Ç¯ÔÖÖÂ'Æ]¯:Æ»tó$6ƒì‚Z”L½Óf¬SÆJ ++f>¨ºÎÕ++–=ÉR”Ÿ)b!Ú:& ¶Ø=Ñí$/Â(; ²jQ0~*g /ø©3ŽÆ‹?BäËùF'ñI·ÛÍW½á“­èI<»€pЀ©ô¢÷bú⓬9Ή†Ä'ëÔÁ'KNÞè´ßèvDP)»(˜ +/D)üöÌ/øA¿ëíx˜Phs¿|ìÈ‚E ëjkkc)J,y# ˆàšœtq™D; +¤(H½Óf UƒC!ºô×õ Š×nõù|Ä'ùÁø$Bï`#ê¹[‰F¢Ç" ï0-#ÍNœòNƒKMXò¦‡»ÉðO¸‰Onu»ãvQ"E‰Ð5^g=qºì7:å‰nIøí +Ú.µ(¸™è’7v¶§]òî–®¶Â'åKagßÙñÈÊ%OmíJî“,E ŸDè±±Dî¾ÈËHNñ ] ô²'轘×Û•‹ÁÂ.ÁŠOžktÕßwïBw1ÉE ëb)Jø$B¿`ÉÉß>Gï»ßU°sír˜ +/D ŸLZ5(,ôû©_¾D|²aþ¶M%Î{ª×Ö®-^»)J„þÁÒnǺAÞ$À{/âTNªLtKôý´&A'ñÉSõ.·»’øä§}¾»VÖ9Ø©m¥hA˜ è(:,"_> r´Ë Zˆ²M"‚„…¤ä™àƒ…ºäÁþÇCÎõ.Å]u›{Ów–­X^¥¥(á“‚Ž¢±n…öÄ9*þÆ@írH€/yãTNê“ÂÝ’Í:ãŸüùá%ËVÕ¹Ö×Hw–9奄keQJ­phAäwh¯$h°rÔ¢ Þ{q´»(Sƒü\Cá}˜C¸vþøÀâ¥w×Üîó-ßPG|’§(yys¤(?-Î ÞcQô-@¨E @äv¸‚Þ‹©s¥¥€#=JOƒt¡A>D>X:wXê9äø—틉FÞ¹¾š§(ºëø.J¢”¼ý¢h!Aäq¼QË»;íä^ûe'AN‚%ñÛa(¤`É;UÈËi0‡Oå},‘È™zÑ£Q¤HTÈDϤœÞï8µÏqj¯ãÄn;áýÝŽ÷wQÞÛe{§í½¶³û?ß³øäüÕ›W¸«¯ª >©¥(ù.JÑJ‚Èç`ùmò\Š¼‚Ån£ôÆ'¦Àw¶‹¿7ó‘On‰SŒ1Îi:‘fëå õLQNpœÞ/W<±ÇN ŠÈü0ã;ìÓBÿû³=‡'Ž¸jjèÎÉ»=5Ä'—o >Ipø|+–= ŸD¤¬ìäµNÚA›'AnB^vP‹€©Œ4‹¿=óÚxÑ +2.rWìièÒs½<™Q<Ä2Š¤3¨(žÜK¡ÅÝ48“NÂqZ«œ òWõ×KüóŸÙ¸v‰{ó=%U WÖŸä)Jî“HQ"Ò ’“ ?@-Jâá…(±ä*×Ú¤¾@fJɤ‘Ÿ˜î‰%¹(òtâ¶ôÌ3Š§˜(Ò¼"[€¦jÇuqûô–˜’"¦J#ý—ÿóÇWºÜ›>åñ,Z_}›{“+ÄÛåÔÖÖŠöD“ÉŽ."·ʘƒÜµ(AžÒ;åKúÄ2`}ìÐîµ6<ºSƒ¾™í—œæbiÛýÊ……&ÙÒó¹¨(Rh:qÄ-ñ¦Š±Là»Óéâ{léYäŸ~b—£¯Q!cæ?÷-!>¹pUÕüÕ›µå]+ëâÛ/Š¶D¾óɱ.G´æd·ø;€Y@-J7hÖ·ú™ÀÔ¿*Þdâ÷ÔõÄÎ_D?Ù¡]òIy½M:½oRË 2žÉ0vžot~á‰O/YSuûº²ù«7/[U§â)ÊZ¢‘'{õ¸Ñåøísh²ò‰Ë-2|Rwrsv0VãBÍìƒü!5½›­/!Ë=?›`},×ÇOÔF™R†å¦pÛg8C1C…Ã3N;©©ž¯G/ïtè­w++Üñ²dx“{‡¼[ñrIoî¾}ѺMwx*—®«$&éZ_à ñvÞÜ'‘¢D$lœ¼þ?Èmõ1»A^v9iw(5±lrìsz©‹ÿœºÁϯÄv÷Ñe_^iù|¬.Š¯ŽOB¢ïÔ~¶o-am7vÌ!:EîŠ#&W7‘^2Pô¼Ÿª$ŸèB£2Ü„SÞ)@~«ŽJCª\8ùIò_J^ è3“Üã~ùRØùÎE ÝÕn·wÑšóWoVÜ´vЇ§(ÑΑ|Uv§›&ÿ±Ø ò‹‰.ùrÔ¢œõ4ÇÇ:”/Z'™íÂV? =˜«vÂ9w(Úqƒhe_ˆøÉÑc­qÄŸVHaŽËÀúŽÇýM„OÖ"%a¯£ò¾Þ®`™)YØ’÷ÕÇ©½YÊ$ ‡üg’[¸/VóF›ëØaŵªæ.wµË½‰/yŸä§rŠ×nå>‰%"¹ ƒ„ÜS<9‰…_äz»œ¹öÆ:¾é$݄,_‚òE‹Ý ¹>^9¡<²Fô¼jlU—×ÁK{Gß´‚ð ´ ¿3=aÁ{y·ˆ¿+ó‹ñNùÜZò&ŠèËf@¾Úì:Ýàj|`ÝBwõâ å‹Öl\´¾:áTNÌ'‘¢D̼LP·‹¼ÏF^Dsdµ]Nüñt‡y/LYÛåç8•o2Ñ=Æï{Ñ¢ÇSV{'S±µÝL¬ï=-+(zv¯ l|L…±äã,EÙ× æHN–ï>ºyrÝ<©=ÓU׿ó§W¸VÕܹ¦ráª*¢‘ËVÑB”Î{ªÉw‡Ï§ù$R”ˆÙ‚õXÄJ7Èk&zûãyý´:å´ü¦žäåKº¬Iî¤ï±ïÓâØcŸZ¿eê¿ãSéï¦rš#›Ç:@>BÇÆ.Ø|ä“OœòN^5(,Å_Êïï´˜¡û¶qC…<¦´Õ¾82vþ`÷ítÉÛ³…øäÒu•Kï®á½rˆO.ñxâ|)JÄLÁv?oïR"/#9 ò˜Ë-Ô‰ûÇ›fm7ÁñvMsˆ#ñÁ›ÙŽ>¬ö‚¬A%aϤ$רËXòN‘ÑéÔ^û»ÙõÉww8~³#«KþY§ö9öWßhs½spÁb÷–¥«j–¬©ZÄ +Q.^UA|’_òFŠ1m¼¼‹|^gwíª úŽ .5ÑÅå“û¨1¾»ÝU»Y¬oÊâ¯p1 ø ‹Þ8C@/ïT!3ใÙóÉã,3ù«íÒÑûïøÁ“óÏïsß™¥D¥¶yRãJ“ë½#óŸÚ´nþš-ËãNåŸ$ðS9ðIÄl¡•ìtD¾à¼Ñå~G!#Ítù†'*³¿z€È8—"–ýùz;¶0¥ñÉk”“­Kvr·ý—ÏÊ[ÊJv׬>³'z&. ÿhòxLðÉ!Õy¶Áuô¡•Kï©þôú²%k¢KÞ WÖñ%oâ“$©UˆZ%Ę2¼©$ÄU‹"J9Ò,þ®Ì#XÕ 9k/¡ïîp‡ü·§]•¥´êãß<²äÜ^ù'ïïv$–Â`g GÂί?yûb÷–»<[ˆOÒ]”w×(î*~*‡ø$/D ŸDLlHŒu9>~¯±ÀThJIèi ç©a•À¬pIèi”6Å †”XòN…±ùô¾¬õ3rü¿O.())%>YUêýù3ÊéÝ’¡JÉöELñIƵ×ö.]´¦fþš-óc§¼‰Oò]”¼W΢…uðIÄtÁÆCð':¿e'Ù JÿØìiTˆUžØÝ6)ÜÐ ~Â"AzÙÑÝkm +›§Do}–ò“Çv:z÷Kûè’;î­¤%×l<´åž3{È?ÝaÜ‚;Ýq0qódÛ1vþæð‚òåÄ'o+©˜¿n³óžj^Ø\ë½H|rŲ'¡”ˆ)Áʱ²“¿{'» ¡Jߊ:è$s.yœR«D®ÌL~ òo{f:I £ÜðÉä™è–†CRvŽäÊŃò×¾˜ä’µÕäsÙ½Ußغ´g¿)J2TÎß¼/br eÈy¶ÑõØ–u®U5| å÷æEë«]ëk¯ªàKÞÜ'q*1m|Э ì$0ñ{)êœ÷=ÊÙCÔ*ó΀ÑÐÒ ;'¦«š³çs‡å©­6é)ï2†B”I>4XÊk­Ò‰¬l¡<¶Ã1tHùâç—SŸ\SM _ªK=?yF¡YJÎzóÊ“= Ò4>é§-ÆÈçˮ֎äðF9ËVE ݵ2z*'¶‹>‰àÁvN¶ÌïrD^„O33U)µ\%-.´w²Õ p19ÎŽH—8·×ÀG# íNfH:Ñ}qmjÁ% %ú}î áO^™–xcÓgVm[Ìd’Öo¹ûÔnvÌ\ï‡i÷Eh>y1¨W’ÿ»“n¡t­ªY¼jËüu›ç¯Þ¬òÖ–¼y;o(%"¯GOâÜèr|€G 0;Ó+e,‡sî°D­rr•…Ë»lÓÚ…}47õ·.Þ¾iÍ?=¾0›%Ó†–Ù#%ÆIXò~æĽ/ú%£ygqÈçÁÍ«´õîÅké.ÊÛÖVÿÕÖ¥dìé¾êM÷E˜.9ë;¨ºÞ9´`¾›ú䊻7Ÿ\º®’÷ò^¾vÉá½¼Ý,à“ˆh°a@d=q€É‰oE)9çÈäåVYh°jöŽ³{§vKß}bÁþÍ«nsÓÉýéêµÇXº2ÇÇÃÔv' >yQÅ’w²ŒwÊ•FÂ’Ñ êã;'wÛµ]z¼ú^Í'µ/U¥žŸ=#Ÿ2à¬÷´û"4FÂÎÓ ®E««»·,_G}r‰{³vÊ›|Y±¼Êáó­Xöd,E Ÿ,ø`e'?`gp>ÂIP0Ì¡”ì1ˬ2Zƒ.¿=Aªðœ$™Ö{öKÿºÍuh˪{ÖUði/>~õ¡ÛÏî¥çm…ÿ«Î?Œ3‹$ô²%oáw_¾À·PžÞgì{/>ùÓ§•Ú²–™¬Žºèð;²å¾ïB¯§/*u¡a¶wjâ“çÏnqÓÆ‹ëk\îMäß„7ÊY¸²Ž7ò.^»•û$KQA) <Þ¨å'»•ÈKIPÌr½ß«4ìÐýônéü^ÇÛÏ*/=ð©rÖ„ÏãK¦¤‰ˆj±“M·ÿœ$’NtÉ;¨Œ¡°yrð%ï‹~ÉÐ[žX"qÅ7Ÿ\pǽUñãM{©!Ÿ}žŸ±³Þº ?^É|–<6ñIòI†ÊOö/šï®!>¹xÕî“ñ[( šOò¥h§Aˆ vg´Ã½}ºÅß¿d™„Rç³Ã ¡“YV™×°¥C:/÷ì—þk»ôµ‡–m,õL&…ÖT/ºyNçn¹z}ù?=¾ˆ­<æ¢RòÃ8ÜfYï&ŸWZÅßwùÂD·t¹I:±ÛÀûýØZÌü;/LxI~‡kï9­__oÚá}Ÿd¯×[œÇŽ,X´ºšøäBwõÂUUÎ{ª5Ÿ$߉Oj[(ù©ÑNƒ¼'Îã]JäE,vƒe¼S ++É+%y÷4À*ó•ã“Ç·éùš×¶.ý|Åúø‰{êlŸ&Ú¶q-ù˳ÖÖ9µÿ4~gVIàž@¼ðû.ëÏì3pÉ›Œ(ò’ò¬˜ù´>ÉWÀo_[ýGnϼÎÍcó¢Rs“kÍ®3 ®Ç¶¬_pOßBÉ«š/½»†ø$_ò¾y %Nyj°ÅîßvS“DsPȤ¬”1«ä…Ða•y–“<»×qr—ýõG–l«^»Ü]›²g4ÉøYžçWZÖ³_·lú2mû¼é—¼qÊ;i&º¥žÃF½Að#6§vKÏÝÇ,Ã/zÖÛëýù³ÊéÌV½y%ó9wt«mÈy¡ÑùgO~Šøä§ØJÍ'yUó…îɪæZ!JÑfƒÈvh/d&ýè9'šp'¥äVys{ÏMhNr‡›äžœ¿»fß«6íêöÌJ­ßòSýv²éµ]¶ós%4®´ ÷b²ŸReƒª‡ñl!ùÒXw÷\Ã/Ú×û4¯pžÁ?q–¢R“°ýAç›;—-Z]½z½o¡$Éäð%ïxŸÄ’w¡óÉW­äfùøy$'AAÃO|§©”±wùøö:Âíh°ž‰Ô$‰þû6g}íÝŸŽ™$=¾½6)“Œ[y¤JÙüÙ•ÎéFüg-!o7Iסr§r’æZ›Q[(i¶p—ãØNÇŽš5Ó.v'Œ½åîªo9ÞiŸ@ÙIbP¥ ¥©”}ì°¬2wàÅÉOî¶÷ &ÙöÙ;×o(KX@LîŸw¯«øÞ r*E=Œ“ô@½T®·+HQ&ÏÙ†,ygµª~½]úlù†E7 š%Cþ³g”Ói•®âÿ ³ˆ÷Ék-®cõ ?[½n¾»æ¶’ +—{“æ“|É›ɹyÉ[( -xO9òMNŽ3d’¥ä+àUáõj‹†é™d‚R>Q}ï ¶L™#×—6€>¬OrU¸Ì–¼ñðOƒª'$fø«íR™·tQ\1óÙ³”‡·ÜC^gŽ§þÞÊ‹J%ù|ã[(O78_Øz'¹qV¸«–¬©Òº.ò%o¢—Ä' ðÉÂŒ J/÷õ‰y×ʺ›/b e!+;9Þåø°·¸ >Ãf®”Z®’¶×Ùö:Ù€ï(»°Ìû´úÊ}åë—ÆV'}è&)¥d·Ú²’wž•Ò[v4‚$1'ßz2–¼“¢“úäh»|j¯þKÞÜ'¿÷ø^j ™W>˜=žÒms¥ºé‚žJKnó¤öÞ1Þæúáî% WÕ|Ê]±µ³ç]¼]ëk¦õI¤( )è…î{nñx·y'»˜‚ŽJƒµ×Uï™xaÝ-ùíÇ?³qÍÒÉî6sJsÕ›}¶öÎ\蘓d˜©ªp¹Eô½–?ªіë{½ué²µU‹æÚ?™$ß¹i ù;¼ŸÒª÷;­<9W‘ÒøAr¥Ùõ«Có½ÞŠ…«7.]_Ã}rÙª:â“ WÖ%ÉOV°ääNúZúò“LGæ'¾§MW«¿‚'½“|÷á{éÚ_~hYò›.øæIZ Ÿ¤[(¸vÕ­]pOէחñ#ÞÜ' Ü'yÕ ¢”ðÉ +­ìdMNÞèrˆ¿OÈM ÈRr«ìiÎD{LámnNî¶÷ì—þói×á-÷¬^_®Éž9Éi•rǦ5¼ä‹ÀKI1“¨dž¨ +ìs´]ô–ðFÞW[ï뺅’ÿ­ˆO¶Ýwg|Þ;ùáGW½ŸJvÕ›½w¤Ð^–â§û'É—¶­+‰O®^ï[²†v]\zw _òžÁ'Ñ(§‚õĉ]H^µP&€d0B)ûh+p)Ú^Å…R…iIIš“<·×ñ³g”ÐgV–x|ÑIÖ˜ÕíésDkxŽ¨ú[—žß+rÕ›ü çDO¥ª”#͘’…¸÷ÙäBëv·j>¹·fU:#e)wmZsr—=™UïtÞ;Ø  ;¿½c9ñÉejx—Í'—o¨ã]á“…ôpÔ ™ ô<ž3í„îWÎ’µö:ÂU-ÇÑŽo_Ø'ýâåXQYêÕæÖ ¥¢Üèóüj»tÒ˜z×É@Û17¤°).~ø]T±ä4Ýr_ƒž¼5Ÿ|¸rÝ¢äãLõÉ¥k«¾üಠI¬z§ñÞÑË”r8äüÅÁw¸Ë–ÞS½âîhïixÃ' &Øõ Mtº>~^AÙ1’Â`¥Ô¬…ÐgŸyùwÏ~é7Ûöвš²’¸Ta¶M2>EIhw0‡V2ßëèM®3Î4¶ Í_Äße9_òVõ¬BÉ}’ŒþZ”|ëÏ„‘_êõýè)×ÙY÷ñòÍ“é¼wøåK!çûGè‘œÅî-·•T,\U¥ñæ]r¸OòªæðÉÂz}?ê¦e'‡ü$Éc¼Rj…ÐOÁ*§ÌƒÜÓÎí¥kܯ=|ÛÕë´L=t#Â$R”÷n(u0‡ü>§S©d>õ]æRzy'ÅD7ÝByj¯n‰hú.°ËþËge¯§4í×">w׬z—c–}¼éÚê‹ɹàwîø̽ Wo¼Ë]M|’8$?’ûxO瓨Biþ¸Ñ²“¤Œ!'¾g°ÊóGäSûä÷ +¾½;ýê ³äÙ=´Ð7]òTµ[;¾ýÕíÙsD;6­!³yjÅ[tr’³‡¤46Oj¶0€%ïäŸò¹ƒv½–¼ù6à<9ß½¾,í!½8v;üéƒËα}¼Ó>4ø{G:›lÙéñ+ßx–n¡\¾n“‹å$§vñNðI¤(ÍôÊ^m“Æ»‘áw%yG–”2]ºPϬrW¶×á%%Ïî¥)—·žrí®Y}k ¦NÁ9ÉÄ }mtBÿˇoëÙ/e;E¹Ë–Þaœ¨-°Ï«­HQ&ñ`Uƒúu[ò¦#|ã›.ºk]E&¯Hü/,õ–þû6çÙ™Ïz§ùÞᎮï]¼˜Ÿ¬&>É»äpŸLèâ Ÿ4l‰6ì&|x> @údC)cЦûå‚*„Nþ3‰’Ùã8¿Ïñ£m®†Ú{VÞ[¡Í›ºôLÔ_)YŠrsYÉÏžUN§Ø²$ÃßêÄn{OCúëÝ„¿2Ü„I!)ˆO^ +Gd~ùÈ8!ƒüË-[ÎúÎdR.•¿amß´æýéÚÊG7OÖ§?H.79Y°huµk=âMÿ¡ìHÏOò#Þ¼‹7|²@âF—=òvN>ÙËRÆAÛë0{¾UòÄ.GÏ~éÇÛœmŸ½“ï+‹OÂä8÷}š˜ðÔ Ý¸_ìä^G†£‹/hŽvˆ¿¹òòCÚ«Ï’÷ñt¨wÞÿéx'LÓ'ÙݱdíÆ?}V8OH’Óq²'£M¶×š]g]eeôˆ÷Oåüuôˆ÷²UuZ~2¾ë"|ÒÌÁÊNNÐm“ŽŸÇ{(:e¥äVyæ 9Ûë°ÿ"j’çö:~½]zñsŸªðj…€ªks£#|B_½¾üOΟeÍQ÷ßÆIw±{Rø’7¶Ö'ù•ÎÒgÉ›X_ßGcíÝÊdLGé,+õýh›+áh'û™Œ“á³Çï|í©åÄ'ï^ç#>95­B Ÿ,¸à=»HN #ÙVÊh!t嬉Úë°B@´¿ q°ßìp¼öðí5>Ÿ—¬­Î‹œdÜ„N?Ÿ®^{zãx¶R”g¥Sy2Ñ'Ù)oá7T¾0ÐçeáØÇÀAùÙMkØh×eò£a«yž?þ¥æì¡ 6E°.9düp×âÅî-w–TŸ\º®rÙªºÅ«*øz7|² ‚%'Ç[l7:eø$z‘ý…ïÞ¸ïÄ*i®2Ï ¡ßI½«w¿D¾üõ#K(_w[L Ó¨Å'ž¢¼}mõ×¾= s覸]ŽólŠ‹ZD°ä ´jP«œùJÞëÌÇ£¬˜¹N>ÉîµÕ_yðö û¢ÿ†|œd²y’sµÙõËC ­©Ñ|réÝ5Ü'yIóâµ[á“&–œüm‡ã·üN·øû3A”r0”Õ…ïI  …Ð¥“{¤ü²Êã±ãÛçö:Ní–¾ýØâí›Ö,wkÇ·óc{Z¸ßW¾þ×Û¥“»ì†®zóÃ8z <ò÷!š$ünÊ Æ:åÓû2]àÅ'ß~V©-Û°H¿¨X_oß¿msñ£aºŒò—µÎÿÈü5ª­Û´dMñIÞ"'Á'ãÏã@)ÍÑž8¬L’“ÂX‡< H)yÉJj•yR×ÇãÝ·ÿùÉ·¬Ò +Ñâäyk’ tÝwÇ,ÅõòÉÌãÄ ÃPXB!Ê$ékÈ4?IÆÆ™=Ž>åòyKézÜŒg)wÔоÞïE+™ë0BFÂÎ3Ê ÞµÐ]}džr^2ˆø¤tgñÉË«¦ø$R”æ +¶ØýásóntÑü$z,`£•20Y]³Ê,„Îs’Ä$Ïîuüäåð–{Ön(×Òz9UR2´Ž9DŒî˜sæ`F•‚nòÉ-38†%ï$ UƒB™Éáùùï<¾èÞ’ô‹™Oï“ìou­pÎö]Њ÷¶…²§Qù»íˉOÞíóñ.Þñ>©µð†Oš8Æ»\UpvC™¥œj•¹T=¾¤äÏžQ:îûôz6‡.ÊóÕíÙ•rOÍê÷wÚôªU8-äZë;„®´ Èðªæ×Z£•Ò¾väŽèÝOû‡~Šåçõ½ øêy©§ôGO¹ÈMw¶^ÉüÐQÊñ6×ì]J|Òí­â>éZ_Ã}R+iŸ4i°Kùªu¼KF™ ²€x¥ŒÁÚë8„—¬<αÒãû$b’_zpye©w2‘’‡‡n’çZo_[ý·.á«ÞF(:yeèiÔs¤‘q;ÂL1ã±;=êAïî°÷p;bqܘÑqò—šíÕ«ÿ{§£ÿæÓ|iÑÖùÇ/X¹¡|Éšª;h¯z¾>YA/å5¶æ£ç°ycÑ&šQÊ>Ö^çô~G´¸P–M’''ÿÐv|ûË.«-ß0™?Ykžîé't6›×–møå³Ò R”ôÅÝãhÂÐt^o‡RÎu§³å@@:ölùÉŽáÃòQVÌ\Çj‹ccã++ûéÞ…#agO ãüd@¾vžnpùï[K|rÇC4Òµ¾fù†:ø¤ù#ZÆ\ùøE›ìÆ‘sJÉ[7Èg´ö:Y0IVèý¶³ìøö×·.}¸rÝm¼£¯O.Zö²á“±/]÷ÝÑk@í h…j½Lo@iqÒÍQ8˜3ËmÞ)pTi’ÞË Ê(o¶ØXG‹™ë²yrñÍŸ¯ìècwÿw`Ñ¥fº3V‡Ç¯BpþÅ“Ÿ&>¹¡rÑHÅ]E|’— ÄþIó?‰³€ ~œì ËäR&XåncóµÝs{i9å¿lÑÓÕkµB@f]Ýž >¹¯ßPöý§µ>®«R’+x.“ +Õ3ù$=åüdR\o“Îìw¼›Ö­D,ô}v³ìäÅÌ3¾5âM²¼Ü÷å§?}ºiáo*‘—£í²>ëÝL)¯4¹þeçm‹WmáùÉe«ê¸Oâ<Ž™ƒ•ï–?À1D øÄwÂDƒ·×9±[ÿBèdr<¶ÓAÄéänûžš¿·fÕ +wet²3Ññí4fù}›WÖ»©7ù[ÑJ晲˜2TúƒÎkmÒ„èÛ'/è9âH¯‘7­õ´ÛþγÒ#U´˜y&¯Zñ'Ú*Ê}_|jeOóüžsFغäh'ͦòî6ºŒ+Í®·÷/q¹7-]W¹bõfâ“ õ‚âê™Ã'MEÑ“8ÝRä$'Cne)o¶JÛëðãÛ§vK½û¥ms…ëVÞ½®‚Op‹u-„’wð‰~¹»êë[—ž×/EI;žìvè{gR)ýÊH³ Ÿœ¾ä=Lsg,/>ù㧛|%‹ÒºGøÖí/¬®(ý“wõ4/ˆ¼¨üŽ—à&Éÿmõj¸Ð϶P¾_¿àñûÜKÜ›—{½DÙIÄ‘³JÉ‹ ;,ŸÜ#¥}<Ú}c—£ï-ÔúÙ;˽^M¥°IÆÍûôGøLÙ†_m—x¿]|òä^‡AƒŠŸòÃþÉYgU(/7K'÷¤sï÷¯óûÿòäü{7”-J±XùŽ÷ϪŠÒWŸZy6¼ ò’ówG©CŽu:&ý‘&Ö»9Cª³Çï î^â“w­«à-¼gðIôÇÉÿˆ]AšœDÃnÄ‘sÇsf¶ÊTs•üøöÉÝös{ÿ½ÃñÊ+ªK=|‚3eIÉÌ”’~ýܧÎìq×cÕ›ö}> ÿæÉx®·+HQÎ}ƒwÊt eêKÞÄ'{öKÿøø¢;î­\”t± „lyÝ'y&´ ò¢ó÷Ï+£Ô$§?x{µU§ÁŽäþqç"â“·—TsŸ\âñhû'ᓦ +v¬ûƒnš–üèyø$âÉi¥d$¶×™U,yIIb’¿ÙáøúÖ¥›|%Z ½B;t“”0po(ÿÑ6×=R”ô0Îa©_ïÍ“ñƒa¤Yü]“ûLtK½GÒYò>¶Ã~ñ üú#‹“—Éx“,+ó½ºmåù¦ùD##/(äñ2Ö9Û\?Ú¡ÓØ:ûT)ß>°`éºJzguÙ•uðIóFô$j˜;ä¾RrˆUNBOИØwÏ>ZSñ¯Yºµò^mšƒIΦ”ìs×&ÚR9ÃåqÖsLjÃ8“>IœAÅ’÷ÜŸV¥4Z ñæ8_yðöEkæÞ²$nŸdU9Ý'ÙÛLMò£çéºöh—‰\JrA3øð#ÞÃ!ç‰zÅyO5]ævWŸüÿÙ{ïÿ¶Ê»ÿ?¿|ÿ€ÏçÓ»@Hbë,›$ŒBIYa…=K:¡-”rCÈž¶|¼äí F)pÓRZ ƒ•°$l¸» ‰÷eÇ{;aù{½¯ëèX–—dK:çH¯ëñ|è¡Ø±-ùÒ{¼Þóõ¤ÕZkŠ‹ïA}Ú@±úÍ&ØN`#œ")¸zÅ*ÅÚè¿ +KÉÊåÒ+¿™óЗ}ïr¿Ü!ôÀy¼1§~jv”T<¹\ŽR3N rèʇ7ÈÄô(eË\a¹‰ªb™\øÓ çŒ]<É+‡þyÛÍ×=~ßE59©¢N’®'#ê$Ç¢¯HiÎŽØ•§-[«K×~yÛuLFžóÍ¢~rÁE?bzr!_Гq²x²û«g±Ãì+ÌÄÀ68 –2ûâãudshcùR×÷µú‡_<Ô¾ F@“‘”<~{×WþëÁ)MÌa?X±2êÓ“­9ÖŸ5Ž zux{“Úó—RÙÚ;/UOuÜüô¶EOýáÂÊìÙLI~½Q#9Fä8´{”H]vZ²´z]{éÁïŸóƒ; 'ã~‘•A Ä°“”ª²v­üÏ%JƈvÔ@ιÜÈÇAXŽ¹}6ÿü1ƒrÒz²jM‹' =éV3Õ>¤¼C ÉÞ oñÑŒ}¬øý­ ƒô$ï¸úçOn½öÕeó<Ú·›iÎï¸ ?LħCvåË‘¹æ¸•&îfùáš³æ\u«©'g]~Г~æГŽ^|÷m™ÖW$a&¶ÅI’’Ó¨«¾,õ­µçýé¥ÿâ²Å·,Z¸è¦ ¯¼%8Ç…%´åXˆ Óµ‹®{û¾³ª—OÞŽ2ªÍ8†žäyÖŸ,6G¸ Çá‹%Rå2ùÓÔÝpM ž4c’ìÉo½öÅ¥´æ“Œüf“Êd$»hLþESÃ>M]œú±Á<7¹P–mHazrá›Ï]xûÙ‹™ñÉÅ|AO:~‰ÝÅ;x¾,E3öÅY’RŒáͤßnRO–Èÿɘ³{Åùþ~ÁªŸ-üém$/ƒÒvÂRÔ€!÷±Æ7¢kiÝW,“‡o&/œÌëÒb·Ó-?Sl ýõ(+Âp¡fæÞ¯²OsüŸÂÌÓçîÛm]rAG ¸a÷qR’!×IŽÁ‰”«9û%½y©Uiê9?¸cöE?º„û1=9göô$š»¾¸žì-RÑú‹%ëÏ5À¨ð4¢ƒ$%{‘>]ë.0Ô»‡ŠnìR3ø¨Ö˜—òþºs_Z6ï±ß/Xw×åwÞr­9³;XM·ÎÄíßo|þ·¼ôÛ³«W„í$šqbsÌ°¿Ò”©N%,– ôÑàÅÐõäç‘×Ö‘û5v¿¼ãš¢˜äàÃûÈ6ª3ùThɉД]kÏÑêÜêŽûç1=¹àÚkç ôd\-œ¤iÝœ‚°9}N“”Œö\ã•‹;£§ˆìJN•ªƒ[HX2Ø+³g¸áœËÏøw –ýtá•×Þ8ª²bÂRÔ^&š¶þ0?¹ñêÿ<(…Û˜CÍ8«¢è4’Âo+ÖŸ26¥Èp +ÝÕœ}ˆ`zrß½g™‡ÄÏo[ôò²y'òRØ´S%rà¨ÄHAyùµäˆìñãg3=y­_O +³ SOZ-‰°&¿erÛÉ"3qpÎ’””ýÌýƒj/W•‚br¾¥¸åÃÓ™íù)õ¹g}švÎ K.È»ç’_Ýqõ¥×Ü4ÿÊ[‚ÏM$mi¾Ç-?ŸW»2ì*Êê5rÌôd½[mAÊ{¢³˜IµN·l ùCAÕréé_| ‹o¡Ž›f¦$·h_ù{·£ñ:éEæGf¦’(ÂlÏÑŽ®?‹éÉÅ‹)Ù =?Kdº=©}Å +:qp üÞÑÃ$e$܆£­'3Õž‰²Ÿº,4´e?/䦴øfõë”ÂcxsS®þÞ“÷_´î®Ë~Û¢k®»qÞð¬ßÜËúz.ϪKQEyÍ¢ëßýƒVÖÄœ¥Éµëc¸Óyr³'>… Âs *[*½tïÜ­]ÐÎ;n„’œLïv8Dö:Ó—ŸR™–:÷’›Î¿zhx7šqâamÁI:fpâà8ºóåFÝö’2CéÈ #û)Òâ=\aöñÐå©™Ý:¿å}="µ÷ô¹¯.›÷èïl¸ûò_Ýqõå׌ž7EfÜ(L¥9!N̾…1>HØŸ k§' }<úçK“> T=IC¦ÖÈ_—*_n4N“X¼Î¢ˆµä4¸•nV•®®ùÉíâ[o¾ùæázÅ“Î]bÇMë/–ìÀ¡Ø_RÙÏIåãDÕ¥¿ðRéõßC©güamð±¦0<š(¼üãï)z¹ø–Ecöõ\æxc"QEÉÞà¶_ŸâÄjÆY!Åx§‹.oQŽlŸ,•[²ä°Æh~±ÄåÝ ÷G¾Tr,غ–ÈMÉéËO)KK™{ÉM_|«0 +Ô“k"¬I/žì>YÚ_¬Â&çbsIéåF”¦¼C¤c6õ°'”÷kË®Bµ6'õßs^]>¯ô·?xðÇW^uÝL}œÎ…¥#k/ÅÄœ_Ü|å?t•Ó̾ $%“+U«#SÖN÷éÛéÈ|†çÉa¹‰hs[¶<À[¹cñ"iJNd®-ì8U˜z|ýYLOþê¶Û 'ãlõ©§JUd%p4ö—”]ùQ™½¤-O–ÈFèr3ïu¨-ùêÿºçþí 3yÙÝ·_³èú~põÍ£iË[§-¹k^Í +)”¬wÍ:+vº[m÷XjØv׬u…ÞåM!Ê]5k\±tdb'od\Í3”¦'SÏ]xûm·Ý&†ã=‰âI'/¾ãôùýÅä6lù9˜"v–”ìUÅ`¬s_`í¥(¼,U¿Þ¤±Kƒ=a"³>7õÕçý龋Ößuù¯xõ 7Þð½ ¾žË†ªÛ²ðRd½¯¹æº#Ð*—Éã„(…ÔŒ“ùÈ~"K bü!RÞéaÄ'Í(e£;vQ v6EàÚ¢kL”6giŸ¯×äïßðó»æ31 =‹vÜ©âTvÉýz#Š'ˆl+))å©öƶš.ÐñR¨š³süÑ]¨üÛ=wïŠó¿ï¢ô»/»çŽk.»æ¦1ô›Q{iŸ¦P¹+jùx!J&<Ê–¹¼é”òÎP"Uç¯ÁcŽÌöQ¸†¢ìG:=e½cò:#Ð’ãVĸϯ9‡éÉß\ü&&çÌþ‘©'­EX“]¼x²—µÓÑRbýi˜:¶•” <åmÕféÞÚc˜^–Ȇéåc“š ¹©ÿLŸóÚªï‰q?¼ùÚsFSÆDêIñ×ç_qË‹¿9»v¥4Vc9™¯Œusw mÄ+& ·P©\^Ê[d½k×ƨ„²_LÉ™âÁÀõ$ûˆñùº9LOÞ}÷5"8ÉàÁIèI‡.a4Šèì ৤d7£Ö\ë7N Ú’ýó«ä¦Îäå—¥jGÖèI=ž9gçŠó ~}ɽ‹¯ºæº/ºêæs7T¿ì¶sLK¢ØKJÞ˜óË›®übɘsØÉÉܪ.RÞèòö¹¦n­üE˜)oQÌpB—bÓþÐá‰ÀñÐœ¥yÝÚû+ÏÕ.¾uñâ‹ 'ãaqÛÉþµ¿8F‡" –ØPRŠik¶•…—ý¼ð’úz¶ÐãÉê$ê(Ô>Úpö³\˜~÷å÷üðš›oºþWèë¹,¦†êæŸxìîóÇòbz’œÌc8iqØNç-½Æ¥» ·eËÇÃœ¡iŸW¸ºòbÑëÝ] 6øgÜLš–,­Þ­}´î¡'E²{áÂ…(žtê2öÚ´buð±”É™ÂlŽÝ$%{%¾ º+Y¾e&$0-. Õ™¤üR(ÌÍÔ<þõF­:û¬×WŸ÷侟~÷e÷ÞyÕ7\?jiåÜË¢k¨.|n¼îÚÃЪFLÌ9úP2S)ÔŒc‘žû½5®AÓ˜.3}–¥Èz{×K1xy}‘hÉiÍÖ¼)o­˜wö¢E¦žDñ¤ƒNž*LîãS',?‰QÂv’2CiËÕœ%-ú†ä¥ÑÚ# Õ)9¾…›^nQ›ó´»ç¾¶ú¼§ïÿþ†»/ÿÅí×,aId=FܘHRfüxAÅ2ùØðÆádn퀔wèøÒäI„(-Mn¾e¦ä¸•ÎÜ”ú õ¯ÿýýýèò{.ГN:tñdw±4ø(*'ˆsl%)…´pzNÄïJDËÂôò”èŒÊ/» ©¯ç¨>ç­5ç=ñ‡‹–ýôŠ›n¸~Þ·^šÚrîeSÕ–âÇ/¸â–Ý¿›S³bXˆ’‰Ê˜;™J”ÜGã~R°ãªnn!åº*W¹z +¢>ݲ-W‰€žtk[¼€éÉëyñäÂ… ¡'ºx[÷ÀF‰·° °¤ÕtÝñUM7Üô’ Õ¿¡Ë-Ô×ÓUH­=Ç3Ïz™æõ\ü›;¯¾ñ†ë/½æ¦ Îñ€¸ådúz„åÝ7_ùùðÆjÆY+û¬Kv êÝj[ôÝGŽ°ýé-Tj×Ê“èõö¥G=ëÍ>LQOöx4v0ÜrËf]~Ï ò ГÎ^\Oö–¤° >- ØHR2i‘«ÄÌ4/ö iKî»H†ê CuAk¾úþúsŸ}`~î=—þîΫn¿éº‹Föõ„i¨.B”짻k^íJ#D)Š'-lÆ ÜéM™j,ç¹8”>Þ›ÃÎÖêURX’R alÏ•£¢d‚¡§`ªGB_~J]ºzö¢EýˆŠ'ýbÍ8N\|—mŸÆŽoyp2^/é€ l")Ù hÉv|Ê;D†ªó·<À«Ö¿!%ÙYž9çÕç=ûÀ…ž{.ùÍW_ýõcôÝLÐ×c6æ¼w¿*&æåõrW}º-òÝl¿#åâ1#†zW® /ñM±èÕRTG°OìsÁT®!ýù”ï6‹'œtðâÁÉSÌéÇL;HJ”£«Ý —ÝP_ŠI[>–òÍ&ÕçI=š1ûµçþí 3~qÙOnYtá•·Œ*/‡òã#²Þi‹/6†z‹f«•¤©'‘ò.)ÛsåòåaÍitG±1‡ýZöapr:ÝJ[¶V“–2‹©É{._È‚“N]ÓŒNa§fýYˆ-¶”nµÃCR +ù‘!mYHÏyϸ:ø(Íg_iô¤Ö䤾¾ú¼Ç~¿`éO¯¸þ†.¾ú¦ó+̳Íy=—‰‰97¿ôÛ³ëVÊŸ/qU­–-Ov›r‚xHy‡™R†9‡‘>A,÷aŒ‚¤dçl»‡ªa's ðãðDfJõ†Téúë¡'½ø.«|øÿë/V· 8 @‚b¹¤)oÈÁÔµ·ì-RŒ¾žÍê·›T*w/‘» +Õ/ô9;–^Pø›‹ï[|Õm7]·pQð´ñóxùïn½â_KäŠerÕZÅòfœ@IÙ_­Xцíôf]9>öpöQs–¸ê¢3„QÔv²=8Ɉ·››tµ:-…éI¶übΓ\¢‡]¦Šå¯J­?SVa­¤D¨*{Æûý†êBa>L >ÞÜÔ÷x_OÞ¯/¾ÿÇWÞzÓuó’ãþ|^ÍJ©vƒõ22p¿7gÃT$<˜„;‘!…åsÎþss¦¥ewJ—ŽIéÉ&þƒeHOÞûûó '¼t1³[¢à$"$6–KÊÎ<ë7‚S0/yk=²¯|)L/¥¾žŽí¨>çÝuç>¿d~Á¯/þíâ«ï¾åê÷H9‘™b“úÉ—¦Ï¸û„/=ŒQŒb#;Á£á¢0yWs®'ÙceZêœÙ?bzÒßÙ =é´%‚“ÅR?éI|BX))”·Õ[À¹öõˆä8õŒ?¢ >F˜Íy)ÇôÙ Yªåµ²Ãv:ìÈCél8;Úÿ¤!- !¸!Zv”“nÉŸnŽ­#=©g^"Ä$Š'·øŒÅ¾x˜†`’Ò§k±—4Ë[×PB){Æûý³ ¿,U;ó"0s9²û$Y½¹œ…8Mz •ºµ¡Nc¤äøÒä6>„1²éHj<÷LrJNK]j¾X;gÞ÷~oêI«µV˜‹'{6~§¯˜ +o,?;ö¡#O7ú˜ê +þØ…îŒ(`jË>îGÔSHU‹^ÿ6·m¹¸ M&)«W‡¥üb aŒx•2;¢:óÕ†IN\OÊÿX§-\¸zÒ©‹'O•jâ`°ü¤Ø +CRÆVT°?×’ƒPUtÙR&,Ûrù6·M ’2ì]iúœ¯ +ÕAˆý·†4©¿$¯„œ¬&åjÞ–MÃß]~öb¾ìvÞòï/ªœ|§0`b/)Å >¤¼c†­rß^HÊðéã…²©<4SJ´TêȼådZrÜJGN +{3q '¹x²ûdAj?ïD4`Tb,)ÙòéRÞ±¤§@iΚ”ÙKt€Ö£8+BDD)C÷9ÿb‰«f‘õŽÔÝ ˜2 aëI]kÏ¡ødæ¯.eJzÒ¹«·X:UªžŒÚ¤x@kIéV™¢ "ȉXÁ Ûæ öÈ}³×Ð gûð÷ “”­Ùò±¥É!F)›2xcNä^C»'ìÏ n¥5[ñI¿ž„˜tÖûk»b£³0!±””¢ÛrŠ½¬XÒ×?¤Ä‘:%Ê ] +ERŠ!Œ]y‘œëÝ%|!ÂÔ“-YLOj¢ zÒ‹ö—ø`= …˜IJ3å>Á˜!’ž|ÐIÓ¤º*¢+)AÈ°;{cz¨…”µÂÈ~UxŸGtÑœÅ$¨¡')Õ =é¬Å‹'Ù™¯7òÊçH÷yâ’˜IÊz·Úž ß kè-âÞÔ6° +””(ò¶ÅÈç|Â%lÉŒdˆ2¼–1¼›>¿È¦ž´Za…µ¸˜Ì=­¯XⶓÑrËıñ¥$!‘•AÃ`|LÙÖîQ}6(§D”2ì=XD1"ò9_7ñ4ÆÀ!Œùë­¹á| Ñ5¡'ëܪhÞtØÒç’M¥¹ññ.1³:ï.Pq²®|yrŽ‚”Ö"zs˜¤¬Y3qâ;²C;óÂÙ¹nÊ7êj½û,¡'‘ìvÒòﬓ%òࣰùL†$¾™ŠèðXÿN™>{¥™Ïe¶6÷Äw¸IÙ/W­œ`tŽÈz‹!ŒSí=áéI&&iÿ¦¥2%©gBL:jñ™8'Kå>n;iù1p(Ñ–”ˆJÙsŒŽÕ}ß8ÂehtÎÊ j)™à¬^%õDàöq{ü0õ$Ïw#Ùí´et⨘‰˜"Q•”¢Ë;⃆ÁäèÌ—-£#Œ¤pH„—”í!øœ³ïúÒ"õf"V´CÔ“M™*;Ík×KLOîX =éœÅÅdŸ'¹·Øõ-l‚S&Ú’)oûÐS0©z‘–”M”aás|éxí94„q™K aœ¢ág»'Œâê™)ì±V?zÒa‹ëÉn¾ÇQåˆÑ“”"Åiù&"÷m­•$å$`*±YW„nGRV¯–¦è!?ÀÛ¸ÂÕ“5èIG­¡™8Fp¶“€H%IÉîJºÚ‹’9{`6ÂX>F’rrœÈÆ‘”G9ìÿLÅ;HX⇾+Åpœ*=‰ä‰=éÅ÷Ô—¥Él6æ!¢!)Åoc¿ÙòwšÁÚÜ7$exø?”5¤Mõ._îêôHSéõf;%ôcƒôd†V¹N1U +–ïœê-”O•`Š òD×)oÛBctr¸•Eª’r0•X¿~<!ö­ºuÒûèŲžTêó¾G*zÒK´áëóÙA2¸g@Tˆx”’4C&4ƒ}i÷X™û†¤ ‹>^HÙS0±ÏyK–<éÆê(¹%§-[óêråƒÿG(KuVhK$»‹åþbÉn@ôˆFâ»3O‰Ô<8YÈá0_n²nŒ$eXSJ&)«V¥äC¥Iad?ú”¦'})µFdzÒ K8«|`·õ‡4 Ž‰¬¤¬w«­9Ö¿)0Lεd«Võ} IÙI>ç®±|ΙÔl˜ÂÆî5D·ÒŽ­A× ¡?sû/œ,ÑN˃[ 'ÑB´DTR’‹5RÞ¶‡¬„<š/&ƒÝG=H˜€éÎG;Ô%¢ˆåË]£F).q_*Mz#û‘PZrØÑÒ™›â…žtÐâ3x¦»ÃO1¡-W‹`´ª‹gßpù²9]yr£E¹oHÊð>çÙrù£s˜Î¬Z%MîsûDÙÚ”¦'2IONƒ˜tÀ +èÄÁŒE@ !I iQïVÛr­; z +•f‹¬„ )Ã…IÊÖ,y,SÊ/–¸Ó]“¨¢ F­ ¦x‹ïvyRÜÜ,èNèIÛ/œ ÷6€uLQRŠ”÷Çv€3À…Jk߃”vÅ””µëä‘íÞbcW^Øçl¿·Ó¹žô¹eèI',cï°càÛM˜‰°˜©ÔRŠSOõïL‚+rߦ¤DïÀ„ˆôeO\³vSJö•ºuaÛQvx&ØAbØ¢OŸMJÃm½¸MP©ÖW¤~½ Ýë™b{N»Š%ctØŸc:¶#‡ÍÄSJ&¿Éç|x”ò¨˜žewÁ&´í9¤'ëÖ§`ž´ñÒ3ÅLåT)N%€]˜´¤d?Õœ«™ƒ1ÆèĶœRl”¡ÐÇK:=RÅŠà(%û'Ó™bcˆ’²·ˆ¥ÇÕ“¾ ¹V?‹KèIÛ.Ú5Ý<§ŸÏXD´`&')EúcõœN»gHæÅHRòGHÊ!Ÿó¹l„Ï9 aL #ëÍdçxN¤ºÖåIñéJÃƹ¦hÁ²ãⶓ=ÅäN€Ý˜t”²Ý£â²Ó‰}îÛ”¨— ás~|é°Žo1„±='Œåx§¹›Ì'Ùc2æãØsù÷ Û›ƒ 8 °S±:gÿ¿)oç3Àsß͡䃤´f•È'tÉ,ž4C”Õ«ÃÂØ™7v ÚГ²‘醞´çâÁÉþ’¤þéëèÄØ”pM„ؽ©)SÜLa`7b?F’2ô]#ž4¹Éçüèpû F·<¡¥(Å-9c1PêÓS´`Ùqé¢GÂÀn€Í [RR!¦ÇÆy R‰†¤D-eh0YèÝœõ¦!Œž†0Ò”œÌÑÛ¯|ºöeaªÏ­1¹òÙ½³­–MX£-:öPšûÛÍ8ev',IYïV[s¬Í ‚ô('ÆŸ¥‚(¥%ø}Îë×KBìyíW(%”ìÿ´äŒ¹g»<)ì[ƒ¶hÛÅõd± 6A§º¤DÊ;.£U‰(eX0Á_³fÈ”ò('Ä!Œíú ¼ ÜŸäOdÒ-ÈwÛq‰2m H3q0³à”Ô Œ”wüÑÃÜ·8ØØQgù»¶9}¼7‡IÊêÕCQÊ£K\þ!Œc*ÅvæË£œ×nÚÑì±õ“¶]<8y² •]iщp!JJ¦7Úr­µ t¨'be%äåÇÊ'&DŒÎ>çf-%Ó–ÞõØQŠ–œQ]ÍOd¦Ð†ãìX =i¿Å;îûJi?Âvà8B1b÷&Jy‡<÷ 8 £“£6Ä,÷ IBRväJå~Ÿs‘õnÍš ×›íÍQ‹c[³Id¶da8Ž-—°oÚ~#Û¹ƒ[Pp$F)Åw» p•‹g:b8F’2D„Ïy™ßçü(ÂØSÀ¿;öç;öé`d %Ó“ n­)绡'í¶„MP‘«¯HE²à8B·:÷¢ò-ÞaÒ¥+_nŒYî’2äýÒœ©1)6Œ—õfÿ¿=wÄç]ëÌM¡<¸Îûq0lÑn‹W´)ƒã2 p6Âézœ»S&â“qŽ£ÓÂÇè„eR +Imš2ä£CÛÆÂ8À-FÍ´‚[éöhõºÒVp.—/ГvZ<8ùei2û€d7 `7÷±bSìë>]CÊ;àctŒIiJ_ºÑî8„qTK™ž‚mû\OR!´Nþ“¶h¯Åƒ“½%êW<Ó › €Óß Y¤¼á” Иä¾!)'¤ÏïsnŽÎaMcadÿ³iľ(HmàÃqPÊôä-üàÆ‘”ì‹'²ŸLȱPiÎ’c&)C™ÿ’°˜’’|Η¸Œ!Œ¹Üá|ÄvcúDÑ‚¹…}ºv² Õ—AfA0Ÿ´×•“¥³ØÎ…M žKR"å€ÐÜÅxÑ‘”ÍÙ*$åxû‚‹üî|¹z5E)µkÇô6o÷ ;Ù™ÛåIiÐy|òNèIÛ,áA_‰2¸8€xcIÉîSÔ`õ+±$6ct )'D˜RvåÉ+ŒÄw³®ŒšõîÊ—}æ§>i‘æãèÈwÛlñ}1°Q(¢™8¸®âQ%e½[mÉF|2¡1:£¹dCRÆÿè¥b ø._îêÎ¥²·ˆb’Æþâz²)Sõ¹É|Ãqì´øŒÅRíËRÉn@¼2RRzy”)ïÄÄ<¢šû†¤ eGÉdŽ\¶Œ$¥w ;Ê&Sÿ‹áÝìI&¯ŸD|Ò.ËŸì.’¾Fg7 ®ERºÕ‚.ï„Ã/ð:<êPà ’Ò"„¤lÍ–óÑ9­YòÉÒàZÊÖÜ¡ª×æL2 ªËD¾ÛV‹vÄWÅ©ìäúf>¤✠I‰V\Ð] Ž´£¤Œ=LRžÈ SÊÊ•RO}Ê ÜbÂÕ\p"3…T¥Ža‹vZ¢x²X:…L7 1””"å-¼”A¦÷¼Ñô<‡¤œÿ–irËŸ?àjH“úK†ý&ûÍÙ–­Qe:Ob8ŽïìnØ8·¿X|Ý€øG”ô “”nµ3Ïú¬¢ÏÿØîQ}±’”(-¿)eýzéØCÉíb£ÿë½E¼+Ÿ›µ =)â“ГvXÜv²¯˜ì2N•ª8¼‰C`;{‚ èç¾4Q£#$eâác`úœ×®•«VIæ?Åc³p5×µŽœªTÑS¹”ž´ÁâñI¦üÅÐ1@Â!$e½[e‰H è)4tK”ú¾ÙonÊ„¤Ñ›ÓS T¯’Ó‡yµ{xôØ­tyRØÞ T2XV.1‡Ï6Ýh˜A®|ÔvT´EsŒ$å„Û_øœ×®•;DÖ»ˆÚs:óøX« ¥Û£5dh†˜ž´|ñNªœ|ÁI@"bæÑZrÔÖ\¸atæËѳ‚¤Ô2Wö¥Éf»œÑ’ãV:sS|:ô¤=–è¯ìlÒ“›aHPØ=ëd©ÌnëMº",J,IÀ& DyŒ$åÄ» DîÈ•Z³Ü–lw0=Ùœ¥5ꪡg '­]\O +Í?ê¬Lˆ'ú¼ìØEo€«…Þ…ݪÒ¤êÕRõ©1“Æ/væÁŽ¦@k%¾£‘û†¤œ˜"Js‹Mdì ·ÚBz2ÅÐ3ГV.cãK"8‰ÆF@\Ân@B’†äŸÙ?»òåfH+V¸Ž/•¾XBSÞj×÷÷îHÉ„%ûo½âg­~À*Ì›cGž¥Ü7$eH;‹–¶/ÜÊøB+K$»7Q:qñG ŒƒÛºói@pcº«zµÄ4䱇’2¹Äu”S¹Zº¿ó[¼F±}[.éO#›#~¹ÕïÄ¶ë» +ä(Ѥ …>~:wæË4¼Û­4¸µ‰´Vô÷ÓÈõ“Hvâ!#™ìÈ•šu¥~ƒT±B:êWÄCÉÇü0yY—6ÆÞ¯-›² a)Ú,ƒÀØEž¥QÈ}’¼A­\Õ{uÙÔ3XÖ,cãO3:qP&p.ECcÚDF[8×µfQUdÍWùrÊe3˜†< !MØ׫‚“ãÜî빑ò –š0­?±(2Ûsµ†(ŒÑñrTvhḇÞ"¥—Pz31ÇêÅ“Ý]t^¨ßlBg7ÀyP:›?V™'ŸÐ¥ÚµråJ^9®Œ4ÅdÙ2W}šL³ÛB¾é‹ò-– 9ÊÄ„©¾hä¾Å¡I9ÔñíQ½éj­Ñ=iÙÚ±Ø?6Aç`4h4×°ö(äP—.W­”˜2d19,8¹fâàäXyð>J˜ ËÞ*,—-ßP 6ôFgŒ$åø°¿;ŸŸzé<ß =iÙâ3q +Îé/v >ŒN€ðËÈ“\F²ûx§GjÎTê×K+\cUE†"&Ë–»êÓ§brÂË…¥ðb·>l‰£ùÜ7$åø Ñö©_;‹D=iÍ:¤/¤™8þ6œë Ÿ¡ªÈl¹ÑM#ØÊ–ñªÈð5dÕk(Ó‘ø’ן +'¯¡ŠX2Ý =tñŽcHʘñU)/¼·út’5ГÖ,ÚìGõ3©çQ'ö¢/¨³†?ïÊ#¯ÈºuRÕJi¨*r +208ï— ¥žÿZvËcÂîèq;P{øÜ–hHÊNHÊ|½Që.P{ò$Ò5Û¡'­X|³Ÿ,’úáw°¦Qdÿ(U‘4¶¦|yØU‘!R³N ½ grzÀtGoÍ!̾áîèð±Œúø>FîQÊQ·6{üŠ¬³ÕþÜÓLmƒ»å÷hê/Bå$ÀzLy²Ô¨ŠìÊ“[²dïz©‚kÈ£<Š8ÅŒöXÁÉòR”†2 W¹£w¨½¼s"!þˆøHÊQaª’)™öxèlR6ÈzÇrñ­ÝçIî+’0`-Âo¼¿„¢vm¼*²f Y÷6×DVCAÓ£œSXr¥q"Km÷м¸£ÇìóBd­„ÌÄ·åoÍnÏÃZ!&!)c·hS÷¥ôc& †fuM»ÈNtB—ê×KU«¤ã%îo®‰ª†4ƒ“+#?ß$\…`˜Xf“;:S –ï&)D°½%GmˆÜ¡NÙgËßÝ çÃÿ oHÊX,c#³ã\èyÔí¢GPU¤xÂn²í9²/MV 9$&ÙãÒäÚ ±NŽ/,uUD,áŽOtx_äÊ)…4…¤ ¤Ï_4®6Bäè™”Ñ^´…O=2‡müo15úü~ã"bTEfÊuëÈ+òøR¢ñΚ°‚“•«$Ëe䨪²ÁïŽÞɽ†àŽDvŒ$娜*%UÃN™@Áƒ­%Š'‹%dºÑÀœ~HU‘ÅTٞý"×26U‘ŠIöbêÒ¬ã3.¼†DÄ5–Î…Ñ‘#–ø†¤¯7jQJHÊh-ÞÙݤ«¢ª¿X²|×â !#ÙÅ|¨*r¥‘ζ\C'WOfº¢…²1“¼†:áŽîp˜lˆPî’rTx-Ó9ª!{¦ARFaqk¦¾©¿Ä À$èa9ÞÏÃ/mÙäY³ÆU±œÔãçÖ¥³' NNqº¢%Âr˜;z¾Œêw‡Âö]c„rß”#½9ÅÊÉ¢R>è͉Êâz’máG5|¼„‹Ù\cjHöÏ®|UE†¨'«Ö8#89º„ð×X2aÙÊM,ƒÜÑýé¡Ü7$eô·¤(ä£sŒèâÛóËMt @' te$¥³ª"«WKeË\B¤ÅÌçgŠb²l¹ËqÁÉ1…%„e»GÂîèNí¬Öc?BRFƒÁ-ä°ýUq*?‡ôV‹°8Z¢§Èˆ@ˆ˜U‘©9Sñn  Ú¦€ŒÆØš¨êÉêµ²M<‚"£*"–ÍYr{.EŒ1K×)täÑÎHIʶ\ëß‘MÕ LRÒ‰°‰$%¦1Ff‰úg² = ¢¡ç"£Íè)àU‘iTYΫ"mžÎ_L–/—½qœ]T¸ÕzÞNÂÒ£²}gýAÆe ˜†ÔŸÈŠŒ¤d¿¤’Ò¤„™æ9Y¬öj¤‚ )§¾x²ûd‘4» @¢³Æ4ùªŠÌ“OèRÝ:©r¥«l©D~㎕‘Ô¬#kGË…_tU¥?nº£÷ïtË<ÈЩ«JHÊ@„¤|˜¢”ƒ9ß”CX“]ÆÖë÷7=‰- Hd¨$2 ¹†ý³§@iÏåU‘«¤ãK%¦¾¾pr42 +N®¬®kaàŽÞœ wt»Ó‘G{*"JHÊ ¾Ú¨õ«ð=ÕÅ7]!¦~½Q³|·¬E4לä2’ ŒNÔ’){×Sƒ¶Ð]Ž«Š ‘Úõv™®kaéX +wô®|îèö¤»@ÈD)ƒྔ¥ ÐEXa/næÙ_äêçwËw+ –%7EsMOÒʽ"k×ÊåË\b|v\jH{k+m7]ÑBa)¼†(b‰Î;1 rßÜJhŠ±tHÊ N‰ã¼HʾÃ^~gøÞ"tâ@ŒôgtåÉͺ"ÆÖ£ªÈP¨Û`½œ³ÃL,sȪ¯(Z‡"¶/"2F’rEÊ—¥*{”H¦B²Jš9rñ î@1)I²Ä€¸&Èrœ=ï-T:r%áY¾Üulirè2rœp¥ƒ"™4]q•ƒ Ìc ,}ºÆ„e[ÕÐÂÝ&tEbŒj)ƒøŠWýõúߘÆòÚ±X$»UtâǘÁ¥“¥FUdWžÜš%{7ø«"ÍÂH«Õ]¬ÅäCÉÇ—Jui Z9ºê0¬¢%îè–3¡1:"J‰¦~“¯71I©ö)$’PHêâ6A©lÓ >Ì6 dù~DœsMw¾Ü–#7¹åÚµrÙ²¿ñÄ“‘Czr‰«j5‚“áKšµÙ/,ûѹcB2Uß–kÈ©ìÖ–RP–¿){ nVûŠÕSL ”2´¥Ïg=ÅÚ©ŸMp€`‚üÆÅW¨*2Ó¨Š,[FU‘S¦+®œŒ1Þ@a™¥¶å»£ãN±ËˆÿI‡GtîÛ”…Ø5ÄÉ>C°D5Ä$$¥±xp²4¹@·|7ú‡7×ôóŒUG®Ôä–kÖ†*>?‘‚‚“¨œ´o€Yâ0wt3oõɘÛp*ct%%8)j„Ϲ_J%ú⺺7 ‰°!#Ù-µÓ#QUäòŠ4ã‰ì7q(8¹ÊzM"–ì¹ð‚;z4èõÑ™Dî[”¿²ýµÐÏÍph;@RŠ%†Q>‘t²XFg7±f¸W¤€]íÛ²‡ª"¿@:;zb’=.M®]O °–«)H€;ºÚáQ‹ S£Cû’ÒðÝS,$å´„ðÍ ”z +]ýÅ’Ø,€h3²*²Ÿûü4g*uë¤Ê•M?|22úzr‰«r¦áØ3n˜XæAXF’Î|yrct )ù²”Ê3zKü¾VRòd÷@±4øÄ$Ñ%PFŠtvOÒ‘+5ºilMÙR‰)D#c)&/•êÓ '€™÷éšh 2±Dåä 1:“Ê}CRÂ{O¤îBy0±M)¿äSV¿Ý¬bF'Qa¸Œd÷ÁNÔ’%{7H•+ÎTEZ¢'+WCL:Œ!wt¿×P/7±„ª™4ÜvŒoÛð÷$¥Éàf¾ø蜄•”½…‰I«÷ñŠ‘=TÙ˜îª]+—/JgCCZ#&J>¾LªO‡žt*æäÜkÈpGGçÎdéÌ›ÌHÊ!ŠHRö± ~¡DÒ*ñ¦1¶œKa‹;ÙDé¡èXÙ•'7ëTYµÒÅ ª"mÛÕk &ãÓÄ’ ËÖ\£%„}Õâ¦d'£I)·TÞ?<‹V‚™RžÜHï<”J&>ØÆúúÀhÏGýñQ¿;á·úÇý#ÿ9ò§BÿÖ@@›m"`ù9Pa6Ïh‹ªÈòå®cK“!#m…˜®XŸó¸b˜;ºGë)æŽB¼|µæ(áŽÑ’”¸§ˆêÁbup%¾JRö©§DkR‘Ñ,û:;+{ +øc"P@m¶ì¼H:ó”Ò!'ýÄ|žðdÔoõçlû4†“û†¤4ñQ’_pŹ¤làlìó$%‘¥fb¹|&LÛW¬Bp˜–½ÍCEƒ½ÜÄB(ˆžBcŒNèÛ’Rðe)õ(õ¹¸àšç’rË4¶ß{óR-?»ˆ?DoŽåR +ê6XHb +7ÝÑûÑ>œpsß”öñäëZ_±Ô[Ä„ãwÀ7·poà­Ít  F€ˆÂ.ª+‘õ¶š®ˆà$˜£%œ»£3a)Z‡‘س?£IiòÍ&aÌϦ”z&½¯æì³ÜJGN +RÞDœút¹l9ÌÌ-“Ç—JuiøÈ B W’;z¦Úž«¹£'rçÛbŒN(}ߦ¤´üe[Îà­¿XúªTáâ+>%¥Êõ)¤'­>‹ˆCt­vƒÂô $¥…z²r5¦+‚°1 ,™(jÎpGOàΞûnÉ!½º¤ì€¤,¦ßô¤tŽ)½âl‰e“®²»^3ŒƒˆºV½V’7ã(ŸÄûV ÄdÙ2LWS +oɦÉb=ÜÄ2‘…eGȹo!;Û=Ö¿fË|D£ÒÜ‚s˜îÚ±8þ$%Gú|¶»[³¡'ˆ•«Ñ›c Uk0]DCXf(M™jKŽÚ‘§ö&jçη +qŒ$¥AE)icél.½âKRú[¨93ÅÇv:ª(ˆ09=N‚(aº£ aÙ5Â=A 1:¡å¾!)}|À7–]zò`üE)uÊÛMµÇГD ˜œÇžêuÖïwǘ)½Û/,*ÎTbCVB”%"J)j°xYü½<‘äÓ5tå=Ø)“ó˜AÁÉå®ÐM˜˜4Þ€±;'xK¸ˆX&Ž;zˆ¹oHJšÆX¢*,Ž$¥ˆ¸Ö¹µ&QUt &ç1£ÁIs†„e–„ewšîè<÷Ýœ-CR†¾Å¾Ý¤öÉB†‰æèxX\{uÙ§kí9“Dv½…Éy´¡éŠ+%'…aÙ¨«Ü]Å=îàctŒ÷>Þ–á”'yøº¯(î|ëƬš½ˆJ¢ LÎc@Íz¤Z€õ ™Xò±;Šã6ïÄŸ;zW>©hHÊPøz£F±ë"žøž'ÓEÊ»QwùÜJ Œ(ˆ*09&"8iý^ 3΄es¼›XöctÆÛ ü±5GIÌÖx“où4Æ/K]$ÅâCRŠ·°ýFv§ëöhQmMÎAÅä±¥Éuœ6Å4±-áCÂÒjaY˜Fbï®aÂÜ·[’”‰*,Å蜾ä '½9wò”w&]‡uu*W¡7'òz’mUË÷,b¦Â¹‰%–ñ©ó¿‘ÏÄct†IÊDep‹6P¤ôåk$ÆâARÒ[hY?‡)I2§{¢ LÎ#,&J>¾TªOƒžNÂæ(Üѳãͽ»@8÷ IY,Q”²HùJøRnw¶¤œæÏÚ7dÈ'2¹%$%QEטøÉyÄôäWÕjˆIàHM,™°lã^C½ÂÝzµ3%hŒN6£3¶ª„¤ìç£sŠÕþB¥t¸¤!ʦtÚ¹†¤D]«]¯ˆØšåzÌÑ01É”9‚“Àé sGÏR…‰¥pG·\ðL… sß”ýþZÊ®M3I‘9YRŽšúüÆ ¥5 ]9Ĉª5è͉€ž¬^ 1 â +#Î[ÂÛ=ÜÝÉáJöúÇ£IÙç—”ƒE“s²¤˧+mÙ<Ù”7ÑÇ›¡T¬TõžŠ˜,[æªO‡9ˆOLaIK*ZÂEˆåB(ü¹osîù¨ï4Á%e¿‘øvü€oaDÙ¦ŸEÇmf +B”ĘœO +Nâó/ˆkÌ<8ÝÉV;òHžõ;-bÉÔo»Çx;c½M¦9\Rž,‘{™°Cs*)ºrȈ×gbELÎ'ÛbåË' @ÜèŽîPKöšÇ£Ã¾~"KjÙ)Ñ×ÈrªD>Uª”ª¦8³JNiñ|½Ï­ùt¤¼ˆ)09Ÿ5뜉ˆÙ¼Ã´™–Lƒ 8AX²WÈ4póØVB¦¤äC®­Á±ç«Z?õa9XRŠ®œ—OWºr‘ò ¦T®†ÉyPpr¦+‚D‡ Ëz¿× K‡˜XÒ\þúGS•QÊÄäk&)‹•^³–Ò’Ò˜•£+9øÈ@LÉy¸Ô®·~¯`ÌΖ~¯¡~{G,;òÆ´ +ŒRZþ:­@¢ßÅÊ—Å2i3'Rò×Ü¢ÓÞlÏñ'¾1¡.MÉy(°MT±R«Q€DÆì¡6ÝÑí,,{ +”±Æè JùÍ&>à»(…äÙ””<¬Š”7 LΗÂä|"–&×m@7cäŽÞᱯ;:å¾sŒ×ü.k)­~–@¾‹•¯Jg“:sš)¥¨¢¬×iϲO7”Ęª5(¤¶q*WÁÀ€Pq„;z‡G5÷ð‰oå[¥ü²Ä‰ÓéÕvè³ÜZk6>þsÜJå*d½Ç“Ç—IuiN6fKx3XÚ-•Ì„nÓhct )ùèé$ïø>¤/°Z%†¼L#J=¥% ÆAX@}º +“ó±ôdÕjx0yM,™°^C” +·Z51z‹”ælªÿôŽxÍMYjOõ¯Ð2Iù0™ n<“ô™ƒÚstQBéjp#å €èLÎG“Ç—Iõi00 ŒéŽnue›Gó°‘ÕîÕº×DÇ÷`¾ËÔiö_¢„²I§b†6¤¼°]«Y“óázÓˆCîè¼%¼3_¦är‰l¡rëÊ—G侇IJ'ØlFJ|—(~­æ I)^'»n·çP—7|9°˜œ‰Iœô¦#8 @´rGÏ2ÜÑ­NÜJH侇½ÂÄŽRžÓK$CL:BRúÍ}ºfTQb»xVÀäܯ'kÖ¢­€X0䎞5Ì=Æ°?Ú6bŒN‚KÊS%ò7”øvÔ4FÞ˜ãÍÐzòRQB €UÀäü˜ºâXÑÀ莞¥¶{¨#FtîÄRËuæËAVB .)¿,¥7>P¤ª5[/nsTç¦à$Ûq”XEíz‰LÎXR}(¹f¼&°†@wôæ,Y¸£÷ÇÐý¹ 1:’2­Î™¤ì§vx2¥ÌšFËjÉ8îšftå°½Ö›—jùñ @"SÀ&çÆtE'°îè$,…‡O â„bŒN •PF)ÙF`ôò×µb• Klºí%¥QE™BñÉ !J,„iª””bôdíz'°"NîèÙ±sGïÈSsßq/)ýꑬœzy 멦$•o7)ßl¢vïS•S›Ä÷4[*y e9Aµçh>\Ï°ŽÄ49ÁIË7>`TÌ<8Óu-9ÜËSàE6=0"÷-‚¥¶¢G\@öù¤°ýª”Ôãàyp³|²Dî(säÚLù‡äÇ~.gß.]{~òig$Ï“$C·ÙSRú_•OWZ³¹¿¨Õ‡.‰K♜“GÐR‰½kë7>`\ÌÎáŽÞÅM,û£ãŽÎ~sK¶jþEÒ–””}&AÈ~^9ÈäÃ*ƒ H_Žr,Mþ`¥üê}Ò¦Ÿ¸\$]7/y®’$'%¹f%͘‘”4+INNv%%%''ûµ›=•BÒ›-}´J~ù÷ÒwKi7'ß}iÒÕç%«ÉIÿuzÒô3“Î<“4äÌ™$#™ž”’ ˜¤¤'ìqÆ C½ÙLUŠY9ÕkR`D €=H“ó£%Sp2Íú ˜f*üD–Ú–£tçË‘5±àctÌHÅ*m&)}¼þT‰üU©òõF&#ÙWªuJ^ÿõ)ë6×o®H¾sAò%s“å$ß9=éŒé$ ]„¤˜$=&ûŸ' éIâW•§všPq6’”þWÒàVŒÙ‹¨¢ÀRØų<LÎÙ¬Zƒà$ŽgÈ=“„¥0±Œ”fë-äctì!)ÍÒÇnÞ>s’«ÇA{dê‘ýöõŽ|å‹4ùàƒÒ#?“¼ÆuçEÉ ÏM>?e–æJ:팤ÿ{=’€$q˜¤&Ó£PRhÈÉÉ"ýír¹ü:Î6JÞåÝœ®1I #Jì@}š\¶,ž{sÄtEö6ñ€ø ÐýD–*¼†"âŽÎÇèÐ…BüþX&¾# öF¾Ùhd®Ù#S9ò±tùãÕÒö{]·ºî»ÊuÕyÉs”¤Ù2i¿3Ï$õxÆô¤™3’’gqé +[@Ž¥*ÅmÖ,!åì!)ùkØ2)É®Üty`=ºV»^9¶Ôzá==‰à$q‰×¯-Ùsá5DîèSîÜéÌS3Uo4k)ûŠ†Õ@ŠºÐ¯LùˆÊ$e™[þp•¼û¿åÇï’ÖÝäºûR×¼Ô¤Y3I1ÎàˆHö•džÂVÂ@†Ž"•ì9ïþ¶C òP¦èÊ‘EÊ]ÞX®UÅ©É9{SeË]õéèþ ΩpòbÂ2ÏpGŸLÚ19'¬„¢!) ö™‡ÕîBåó ÊÉOÜ-åÜîúïk\7ÍOþþìd&ÿßiI§O§!]"l˜dhÈ( ȱÒß5ƒ*­T•:OygŸÅnaí9ˆO`*WÅa!åч’«× Ó @¢à pGçÂRíle`î›IJ¦Q#%&™’K¹ûR—á9#)ifpÿµår1tU)%‰ð©uæçÆAÝš•cù! t­zmœ˜œSpr…„à$@äŽÞÅM,CQ•\ +¶ä:““”Âó§¯XYy½ëôé<ÛêÇ(aØTΚ¥YUTÉC”>]a’’º¼a€m¨Š“óÚõÖoL€Ý0»lÈ=WëΗûC©±,R:<ŠoR’R˜d~Uª.vÍš)‚{ÖKÁHªJ—KâéïÀA±”ô‡jÖÏhÈÐ os€=ˆ“söâ+V*NÆÂ;\X¶{È¢§Ï45d24Çè´ç†!&ƒ›”gèbzR‰/1)0ÒßÃ%e,T¥ÿO°J%”ºã ì‚®Õ§ÉÇ—9YR.M®Ý€ÊIÀĘ–~a94ÓP˾ Ìu¡Ò’ª¤ìã™îÁÍòëKäï¥$Ç«˜ R•Rr²0û;ê’’‡(ëݲ/³r°ÂäœûíX/ÃNV®‚9 ]uɹNbº" ² ™XêjkŽÒmº£óT8û +“”ƒx„;З¥ªç׌<^gµ´³ +3ý-%'+ŠbªÊëIñ ·Ocz²7/zâ “sö"«Ö 8 ˆ +¦ƒeC‰e‰Ü™OÖCBRŠXå7›”'ï–(47+Aƒ“AªRâÝßRô¦4êó)Dé¿ ä ûQ³N±\+†"&Ë–»àˆ>š×ωl­Ý£v¨]Œ|J|÷SC÷þ¤Ù2Àðb2PUºxúÛ TFt‘:mÖg²Ôí±96Åþ&çìåU¯Ep)4‘BdøC^L«¸å·Ô.yÓ’>·«Ywµf&·g']’üµòåç$OOŒ†îp%¥P•ŠËevGLQòFo¶ƒZ³1{›âu«+í›õ¦éŠËeTNÂÄ)Cˆo1ŘÎcrCZRÆ™{¾âŸ[ÙÿLõfÎñfÍõæ]XWº¨fË­UOýÆû·>õ»;.Nùîé3³ÇŒP•ô$âÃt¸žlÒéFÐÆ$%RÞØ’út¹l™}{sjÖ¡`0*#"·_4¦%sÅ8÷nºoÝé\4* ™³½Ùçx=Ôç]X_xY}ñÂÚGn¯}⮚gî¯~~mÕŽ¬Ê]›*ö?YöÎËÄáe‡w?²¯úã7ö>ÿôÜÙsf9]†ž_U&%ERL›•ÓžƒÛvE˜œ/µ^:Žœ\!¡r€„D›ˆÑ˜–ä[?£a=Ó§ûÖO§2H&=óë .®+]T·ù†ÚÇî¬ýÓÏ«Ÿùï꿯 ÅøjqÅ'Ëßø;“‹Ç?|óø¯ÿðÑùàõ²^;öÞªOÞÜ÷üSß›;gæô3¡'ÇBq¹ØÆ™7o^„õ¤_RÖó®œ&ÌÊÀÆT­‘m54G¼&tœ Ñ‚£‹gºÛ,e¹iC4šjRé’7ç<Š12Ÿåæ&Ÿº§úÙ¥Õϯ®z1§ò•ÂÊ}¬8øtù¡íeï¾zü£7räøÇo½EÒ¯¿`8ûËÞìó?ÙÏ㓯3=yôäØ›…ûœGÞ8H÷wåèJ3få`c¼Jå*õæ°WR±R²|³¦À¸EŒCZ‘ E¦Å?E)£›ÿ¸[©÷\PWr%SŒµÿ¤æÏ÷V?·¦jëúÊWK*wo©ØÿdÅÁ?—¿õBùÛ/–Ù{üýƒÇ?y÷ø§ïÿøS72ÅXöÁA¿>ܨI(¾o<ú90*ÇÞÛ_ýñГã#LΣ"&‡RÞ좔·®y­?¼£SŸ®–/·¤\š\»Áúm˜3Æ8B7*Æ 3)ÍãŠôu·½dŸC1F*eœÏ³Ò‹«ÿç·5}°j[¥¤÷ý©ü¿—¿µ•ä⻯”ÞEÚO䦙nüäãâ¢ñ2öE&&ß?@rñÈÞ é8ŽP èÉ ÛD‰žž4B”^]öé +µä å €±‰É9{•˜®€JOkÁ¢Qt¾pÅè[{†oÝtúSŒ9çQçKÑ¥õ%WÖmº¾nËÍÕÿóªc|aÕ1î}¬âàŸËÞ~IÈ?.ÞRÚ(h|Óˆ1òÜôqÊM ÑÈT⨢qªºzr*zRæmÝQœåÍõdg>éItå`wtÍ&çK“ëÒP9 @ £Õ%ˆ€ÎÑ1-š_Ü’7k.1/¬Ûtmí£?¬}ü'cüËýU[ÓD¯4åo½ÀDãñÞ L4“ˆQÄè¯c,3äâA!áŠ÷¦§£ª¡''-&¥h'ùÚ±˜óvk06ÀXkrŽéŠD”Q㊢?Z²Ö"Ù mèÑ›sn}þ¦ë¹½öÉ_ÔüåÔöÂäâ+¼Žñ‰òן-?´­ìðnR}TÄx$°ˆÑì| ¬]«#ôäÔõ¤|QÕ“ƒwrcótÍ—¡µ +Ûc¡É9MW\æªO“œ LF:1úEc`‹ô†ÜÁ›7¿ðŸòêg‘»NÖ\&ëJ®¨Û|cíw/;2I.x²üµg¨”ñÐŽ²w^);²‡¢ˆ"ÑȤc€h*b–ŽX#ô¤ [ÃårE]Lò¥gò*Ê ­7/³r°?õiª%&çFpb€Qþ;Ã/ýùhŸHF3ÝȾ¨§x³™V<Ÿ²Ò?¨/¾¢nã"ÊJ?uOõßWToÝP¹³¤‚RÒ[ɾûݼí…+À^£ÂE¦I1"ËQÇ8v££E#ôä¤õ¤›à¤X"D™IÇ|S¦ +I €ÝѵnrKIIÁÉå®út$»A2¡}·fŒ–.ÅØŠ1æ~Ï‹›®«}ä¶Ú?ý¬æéßV?»´jkõJïy”bŒ‡¶U-Ž Œ7JsÌ:Æý#ÃŒñ*¡'''&]I´b$& ã J}.;kºrSPE €е굱.¤¬^‹6¯¶H§w¾Ùwk~¡¾iöH)i&)%}CíTûÄÝÕÏ<@YéízåËy•»®8ð?åo>WþÎK¤‚†*1güRF뵜€žGOFËÀ|ì%RÞ¾ ­)S5ÎëÏnÀT®*¤ŒêœÄtEàpF䣇:_‚F½øí»Ý¦}7áÍž[_ti]ñ¤ŸüEõ_—T?·Š·½l®Ø÷xŧH1Ú!²Ò¼ˆñ=^ÄÈÍÉZÇì|+®hÓž;=9–˜”“’’£m4Ê¢¿Õ¤«>·ÜšøÎÀ›®2™›(eÍ:ëß/1n£;Ⱦ{:=/z*ïy9Ï›;¯>o~}É•µÜ^û§Ÿ×<ó@õó«+_ίܵ™z^Þ|¡üíäàÍ#ï|!³n&ΗC"a-ÜuFµïFhz2fzR²@LzrB” +uy»ÌÊÀèZ]ZÔMÎÙ//_!!8 ìĈÓ¢cÚÈJ'‰Æu§ûÖžÁE£F/L.\L~Œ¯­Ûr)Æ?ß[ý÷Ô+½³Týöݤú¸õb€}·øB/¯ñ:FÒ3Ã;¦£nß  'C“IIÊÌ™VèI£Š²!S9‘™Ò¨«Hyà ü&çQÍw×®·úm‚D!ûneØhiÓ¾{ý Š1fŸCŠ±äÊÚ‡o¥OýªæÏ÷Qã6wå«Å•{-ý¯å‡¶3h¤¡Í +F¿}7׊¯´½ð×1Ž2`ºÑr 'Gד<8ižÔ”wƒ›Œ(‹ÀADÏäœýÚŠUÖ¿AGŒˆ+š¢qûnÒ^=¥>Å™büãɾûÙ¥UÛ3ª^ʭܽ¥rÏ#ÿ\þÆßi¨ô‘=ÁEŒæ£'°ï†btГ£ˆÉ¤$mútkÄä Ÿd˧k¹)V_paÀ>–¯ˆ|Ö›bžKypmÝ <z¥‹3Ì"Æ¡”´QÄèæVTzªaß5·¾àdßýØâÚÿùuõ³Q£ô+…ûþTqði*e|kkù;/—ÞIQÄßð}yÛïà(QÄÏ@O¡XV9°¶ó.ï,v^+>ãpõé‘79g¿­r 'ÁXŒÚü¢ùÌÊÖO/<%=×ë¹ >ÿ¢ú¢Kë‹Ö>úÚ'Yý̃4%ð¥ó…äbáe¼íåæÚÇRóä/ªŸ]RÅ{¥«^)äfŒÏ—Þ‚ƒ÷köÝ£8x#%à@Oëɘ{NŽ¾xˆ’}À$#J1žÞúË T"hrNÁÉÕ’åïD‡áöÝúHûîáÞ†+c€ƒw†BöÝ…×mº®î‘ÛŒ¡Ò_YõÂúÊ—ò¨Wzÿ“¯ý…¬uŽìrÔÉhž>nŒz Ôµ‹#;_¬—.À†@Oš(.—ËÏÉÑïÊñéÉìZÑž= €Ãð’Éy$%'—I˜®èpÆ)b”:F³KzÈÁ۴烈­÷\@öÝßjXë<·ªjGVå®{¥#õJo£:F&ÿ˜DüôHÀäjšrb‘‰†ƒ7ˆГ¸b9]qÂÅ%eƒ˜½= €Ó ÞœåS•”ìÇ«Ö@L:‚‘EŒ©ÃóÑæDééd­##µ½ÌñfŸëÍ9¿>ïÂúÂK(+ýØ5¹¿úoË«vdSçË'iÚË[[ËÞ~‘Jì&øÁë$‡Ú¥H#OI‹Î—à"FEU 'âO·°­{äzROõéZsô$΃LΗM¾Ý[LW¬O‡i˜}²ïÖƾ1nEŒ§Ñs·âÍLåÓ^.¬/º¼¾ä*C1>ýÛêg¨Ú®W½œO#þY4¼ˆÖî»øš¿‚ñMÓ˜1°ŽqÔŽiU@Oa“L·¹ø+9ªŸés+9)>„(p~“óIëÉšµ2Ò1aŒV—@Ü#zÏJßG~Œ[Óª^Ì­ÜóhÅþ§Êßz¡üWüihÓ¾Ûh„)fßØùìà Ñlô¤dÏà¤XüÅø2U&&a€C™œÉ9MW\.{œŒ£ßr¯cLOaâÍ5¤["w‹¹#ÉÁûùÕ$_)¬Ø½¥bÿ“äÇxh;¹ë|ðÚ}·¿ˆ‘w¾¼ûn—@O +=é²I[÷ð¥gÒë©Õià)RÞ8¯[­X9™¬wÍ:˜‡ËÈγˆqÄpÀ 3¯°ïê)”•ÎšC®Œž ê6.¢™/OýŠ)F`Ì®Øûo{y–JE£0cûòöð"ÆeGF±aD#ˆW 'Å[¶K[wðâ¯GŸæÍÐZ³)>éµþr ›út9,“s +N®p¾6fÇ´á«“L™è gúÖO§d41Ê ÜŒ‘¬uÈñbš¸ùÆš'î¢:ÆçÖÐÌ—Ý›+öÿÉЊdß½›é@ºQ2}ÈT"Ó†ÇΛÇ?öÝþ"ÆÑt#D#H4 ' ›ŠI¾xWN½®œÈäWK+p"ºV»^9¶441Éiº¢å/ÛB·ïEŒ3D#9xg(Ô+í¹À[° ®tQÝ–›j»³öñŸq?ÆÕÛÒɾ{ïcc|{ÇXÞÝþRF³íÅì|žc_0Ip=©$'»ØI´·žlÖg²K%…(­¿Ú&…®…hrÎþOÅÊx50ׂëƒ:_„w÷0WÆäaöÝfzsΣΗҫë6ßPû§»ªi¨ôÒêçÖT¾˜[ùjqÅÞ?VxªüÐ6š(ýÁëdÃøÉðþC+Ý Ç/e´þf €ÍId=ÉÞ¬Ì%å mŤX\RzÝr_~ +Zrp4šœ‹àdÝë_êmœ´YÄ84ê%Ⱦ›û1?NíÒuÅWÔmº®ö?­}òW4ðeë&+woar‘¾¼õu¾ÙK!Äß¡"ÆaöݦãèÞÃM¼­¿àtYO*\O +Éfk=¹]ÌÊQ|ºfd½Τ>}“sš®¸Ê)ÁÉ¢Ñ(b è|ñO”¦çì+¢í%{®7ç|¯g~}þEuÕ>zgÍ¿¨yæêçWóF釩KšÉÅ·_,{çå²Ã»©@Q˜1Šq¦}7ÃÈGï^Äh¦¤­¿É $¬žïÔÁÉAÃ5hPŸÏ®Ûݸàdt­nƒr|éèíÞ4]q©T—fŸJimD†ÚŸ¤)icƒ°a\wûº—‰Æœó¸µÎeäǸù†Ú‡o­yò—Õ¹¿ê…õU/fSŒñàÓ$‡TßAn½øú}÷Ðhé×üÓ¥E°q/Š°! ­'¹˜´¿ž<¤/`¼EQóe(”8˜±MÎiºâêØLW Á¾;cDnZyÇ4u¾ä~¾”^]ûÈíµÿ¤æéßU?óߤwdVîÚT¹÷fd¢‘©Dc& éàýF€V|-À¾û€¿Žq¬ÓÖß4£’°zRrJpÒX¼„R—½JgnbUQÂ2Ä%L7¢¤éŠË\õéÔ“CAEïÈ"FS+ºv#Ù›}¥¤K®¬#Åø³š¿ÜLJJgU¾œG1Æ}W¼þ×ò7Ÿ/{w'I¾OÞåÍ/b¢´ÑùÂ}u„âàÎMbêIñ6.\8è=ix›³{AKŒ(p<^·Z¾bXÖ›‚“k&1]qŒ"Æ e”þhÑüÂÊ«ŸåÍœÍKÏ#3ÆM×#Ÿ[Uµ=£rçÆŠƒOW¼ö /eÜZþÎ+e‡wÑ]ãÃ7H1ö݇üC¥…hÜ7rœ4T" B‚êÉY³\3g:GLòE/µ1‹î-˜•€ó©OWM“spr¬éŠctL‹‰Ò¦bNŒëgÑH£^„µNþRŒÕþñÇ5Oþ‚Ì·¦Q¯ôžGÊßz¢‹ŒÃ†}7‰Ã^§£ß¾»LÌ|Š4î©!HpPO*.—䈶îàe¼Tviƒ%q€®Õnà&ç\RV¯ãrqdY£íÒ ë§ûÖžFùèÌTRŒ ê‹.­Ût]Ý–›kÿô³ê§~UýìC4óå•‚Ê]›+þ¥üÍç¨@Ñ,\üð² o*e4¼ /b܇"FÀ„$šž´÷tÅ–ÏM³r|:½p8ü®YK…”åKg5lHö¥'ÁÆoÊJ{æÕ]N)éÇ×<ù«êgîç#3*™bܽ™Ï•þkùÛ/QJÚLFû'J0N## lPOºœ+&¹±y5¯®'#JèIœÅÉN¶QW[³5F •MÎiÝr¥oó¢ºGX÷Ä]Õ}Ì_òm/Ÿ¦:ÆCÛËóΦ?}ÏßùXÄxp,ûîïn(F@äI(=i¼;çUNšKQNóêrW.ŒÍpnEø}1%Ù‘“Ò™›BÞ_LUfȵ¹ ŽíÜ|ìÍme‡vÔ}|ÀûÙ›½^öÑe¿]öéáÀHcÙ°"ÆQ¤£å÷@b’hzÒ寜têâ³rštµQçuûv1=Œ†Y—â6ddo^ªO7L{¼nõ„.™'÷žÏš>x}ßÿ¾µû_oïùÏ;»þùNõǯ—¿·¯âýýåœch~Ø•ÄÑ“â­©ÎMv‹ÅSÞ ú9ì–Dñ èIlyyù5${Ií¾ü +N +2Sêõ³Æ9Ë<ÿ?ï¼ú÷÷÷lÿäàKÿ~{»D=²ÿè‘}e,ÿð`´o +0 GO*ÁIëI¶îä’ÒÍÍ¡'° æì*¦![²4F[¶æu«>·æÍÐ(­°!@FN›ÆMe9þ+’®ëçú{/?èÕ¿޵탽ÛÿùÖÎÚõù»{ŽÞË´e¹Õ÷$Aô¤x_³fÍtº˜ܱXÌÊ™ÝA•ü–ßCHtÜ'2S:rR ;/þYÏ«k­zjƒ~NÀmêWž Tø‡¯¾Êôä{»·Ù½•=ùÏ;{>:°ƒ=ùhÿöO_{éŸo½Ê¾òù»{Ùž ËÀ¸%DƒÑ“qœ4â“ÍE—z3x%ô$QÃ+žpßW¦!OdRF{¨z™¾žzÂã +:CÚÈH_s‚T%[ídzò…÷wogbòÓ×_þìõW>ÜOÂòý=Û>Ü·ý“ƒ/~ö….™¼ÚÒò› .‰{=©ÄQåäÈÕ §±yŒƒˆ +>þÈβö­9K>]>]ñºµ†tÍ·nöÐÙ¨‹tvä5äÈ5m´þwwÿíÝ]L[ncbòÃýÛ?:°ãÓ×^þ`ßöûž?²{ëû¶}´‡º«º™qÀäˆ{=Éã,8É~ žÐ%vwc·9Ëo»ÄnÃ{œÉÈnÆ”$ÿ:%»ë¨6rö°ÂH=¤þš(^ +týžaþsÛ¶mïÙz„©J*üßxåo¾úþ^öO£êòý½$/?9ø"ûú¿ßÞmvôfÆ™°,ƒ¶„L|ëÉxjë±èíÕÏ$w»,tå0y(£`<Þäï¯ßåSl”*=iøù7mRý5Q[üú6¬+|pð­]»˜t|oÏö÷÷5–|ñ=®*…°¤ÇÝL^nûøÀ‹Lvþûí]Ÿ¿K=LJkK˜øדÜÀ¢X%%»Ðã ¢1œ H±4„¥©-ùWDGÏg¯¿ÌÇô‘YuY>tCAÕ% J¼êIœœ9sæ`ëÉÁÁCú‚A¿%I ÀpŒiÚ&#Ù'/ê¯1¬~”Zz´Ew›±¬î¯‰ÞbWÂm| }iÛÖûžù´¥‘ûþ÷Û»?}íå÷™ÎäKCaúã–fá%µï#£Ë¼µ“€Ü -Qu @"ÇzÒŸm8A‹Þ]“®ú2äÞ¼T¤¼ üÍ5b vS¦Ù_ÃÇÙ×3¥²ÕçJ|’i|_.†VPçΠð±ävCGö¼ðÉk/ýëÐn¿åP*|¤¶P·8Ó–o¾*B—Gì+ûU—$ñ¤')ÁÍ_¿âr±GMÓã_OúC”:ŸåíFWH`øÁ/†6êjs¦fsaÉÎ_ºÌ>| ?Ñ_Å5Ò ýÈîçßÛóüû{^`Jòß|õÓ×^þhÿŽÀ@åXòRdÆ?Ø·ýã/ŠŽžÿ¼³ûè‘ý–$Õ“B:2¿†tÍš•Û–%ˆ;†Wq°M]ž”QÝA2’ +#‡Í@'EbFFt­ Êõp»¡ç¸AúVnþj€Azxò’êž­b¶¸˜ÿøù»0QÀyÄ@OŠÆÀßO"m}Æô駟~ú}÷»ßù/¦*çsö5—_rÇ×ýú§‹Wüá7ùé«þX˜¹õ‰Mû·>ýÉAºà|úúËŸ¼öÒÇ^d— öùý½Û~E:¼{ëk/=cÕ5ײå¿Ô³{ks&¿óÂ8ÄúÐÁÌì–,/oº©wk¾,é³{gN6wÊÅ }ß ¼…g+]–‡ Ò_EU3Q÷kË÷mg¿Ä4º<þþþQï\0ºÀVD\O]f§LÒŒ³Î<“ý~âL‚ÉșӧÏNÑ.ùþüÞtýo~þ£uÝWè^õxQÖ³ï|öñ7^|†)ÆÚÍ$»°°çTί9GFg맯½üÞÞ­#¯x ±xWŽOŸÝÀÇÆAOç"æ×…‘¼A»Q§ªHŸ[©ÏP}n­)ç\r÷/²8С!cºè;¼ÆòƒƒÛIUúƒ“Ÿ¤‡´6 G˜¨óÜÓ§¼[œÒâC&ê„y³üN +˜¢ž4;e³ÖqæL&)aýÝÓ¦Ÿ~FòÌ™ì?¤*ÊlM›wÎÙ‹^z÷âÛúݯ +ÒW?YšûÒŸÝõìŸ^ßñÌ»;ŸcHÿýÖ.ªôPïîzþ0'ÈJ7øú³gë?ÞÜùþž­ÿ:Àƒ“Ãk~cÑÍô³{g³Û.ºr€#n?üy[6FšÅÀ>]iÒÕ}ö°Cþθš_ãÄ5Ò =ûÀsGv=oWšé{ ƒôñ{ÃÙl¢Îä¥ÈRýçÝ¢£ç8ÏŒ£êË KOÆUîñ8ëÿgï<Àã(Î>>»'[î½w[Õ€Á @€8„ ´PB +%@B„céÜ€ÀGI@À«ºêÔÜdl5wclÓq‘{Ãlíî|3³w§S³ÚI73÷ÿ=ó!ËöÝîþï}çm#:eŠN™þ}û129!þÌ1§wöY—\tÁõW]ñà=·§>öàk/LÊzóŸ‹f¼³xö{KÅGÍòÂlö!Ã\Göá°L 7s½Ç¥ðk¯åbîny~ºøD˨÷ãOoDˆr«7ÎD¹-âîVƒ+Ð_ã~½gRâÑç’D 0÷-·¦$nŸXÇsŽÂHù¨= ½,zYÎô²¼,7â.6)'^3'ŬƊyþnñ–æn,Éÿ´ ­âXX[5üI‘¤®Yñè.æ+½Gæ:öîÕ›ù“Ìu¼ø¼s¯ºôG?¿á§¿»ýO?rÿ‹Þ¿LûçósÞyµ\œÆÅôÎW!_̇\VUžŸézÅ9顱Ç&%DBV¦ûaU’›‘OQ‰ð§¼‡UxÑ•ƒ%õ +ÔcTˆò æF˜š´Jb…—S´i }´E3ás ”žÚåF+æ¾ï?(\4ïTÞÄ2Ëiñ!ê™n·xè Kø–XXm¹‚þ$ó E|røˆ¡¼MÆ­xt<0Ðí³þþ÷μò’ÞvãµÜýëñüáʼnOýï¥g³ßüç¼Ì·x¶úÛ*®Z0‹}º­»Ü1·ù#5v¸+ç1g2£hNfeÑ…;Û<5þØs˜„%ßíØÂÜ;™ïzÄQ¡îÞ'qkJò.ïiÕžç› +#U¥Ö€töuyûÐæ9˜{ÉgQΛ¹rþLœ…æ‚€o™¢ž ]†Qÿ´ší‹¼ýÅÂÒi¹þdÞôÿžš”4°_ÿ`^{tB¸ λ庫øͯS{ð•çRßù×óÌud?Y4ë]æ.2ﱞZÇš®cxüÆú×òÂ¥Nºˆ&…Š”ÛS1ˆKš2ígÿ”¤ÃÏ&W0¯’ÏùáÊ’¶>9,ô)FvÔ^–?=øÎÜ¿‹rVΛYÈ7µpù}Ë€ƒÊþþåÙÁnqwˆúæyḎ„o‰…ÕÂ%tÄýÉy™oýüúk~uÓõO=ü‡¼O¾ûÊÿå¼÷:û&s™0™×.âÆxž¢Ð‘±t®¿Ö±¸MœÆú‚“þJï9oP'i`pPaÆš[íˆ;XQ»ÜÂÈÔx÷Lù½“¿û«x yˆ’ýÊ‹$kzŒYˆFjNíéKò˜¿—.ÜÈLöaÎ\>>Ç’—?…ǦÔnˆA—îÙâ¹›Šó0D +,‹‰ˆ©iý9n?‹›&X^˜Í¶Šl1×q™˜îÈ~«¸fŸu$¼ÇZ‹{¶¢ã0EcOw]ˆ%?uNÌèÃà ¬6]!ÏÛ//Œ<ìoÓndJÜŽ§“j>±^¸‘QHÍéKs§SÞkÍ]½`¶ûñ.âa3%¡fn:?C QwC—ð-±°š½6,ñ­˜7#púU¦ë: QŠÃ^ëîÅœÞÒܬH} ÊŠ8+güˆŠÔøS’àObµÅJñÇ!]Ò]ÛÝI’Þ¤­< ò„ ABóJ‹ßzk©8v§„£L7²±¢pFË›wêv/ƮԢ^ȇ¨ûC—õÌ´Df «Æb{±UógŠ™`é¡Ê’Ù{¬¶|él[š—¹*'G|=©Céž•“·{’ÿ@ºÈûXZ®`7‘m^Nõ—ì27r[Jâ® É_{…>š¼0s~@-D¬²Zeqñìò¼Œ2fŒòü•¼Ùsþ¬Ö³)¡9qžªËÏZ9oÆÚEsÜIDu Q¼ÇŠìÚTœÏ¶`îÄžˆÕ=¶Pøß²Ô?D}Ƈ¼[Ü¢îFÌŒãäG¬(Yî6Šíª˜ +˜V®²')”Î'˜ñ¯s²jøŽ×õ'ɶÔx7툅ÕÒ•Ï‹r³Ç÷MæƒÇň‰Þ¤­) »'®ñfߌÂHÐL¼^oíÏv^]™#•y¢Etn°Æ²¬õ}Ëàõå…3V/œ½n1O‹×ö-±°4^nÓ {ø—f+íIºÎäª<åQž“FáLÖC°Ð}‡7Áö"RÞXÍ[¢*ÒÍhĶ'‡¦&¹mÚì;[½ñ_¯ñðy'bð8îG™(°¬zœØÿ–ä0[VƧYf®Y8gå|ÿ!kÜL´² :–Å9®o™½Jtô¬ÿ gSqÞf QÇÒz­ÿ Øt£°'é~P¬à 8žh=Q±ÑðÐ?+甩‰;'&(Ý•ƒƒ##°RüËÝ’ìÌmÜ@îQÚ{½ÉUO›—ˆç >$hMØV¥zÐrqf&ï×Î d¥Å‰l+ݾ€Ü–Hoœo™< ‡9·ÁŽžu‹s>¾¥»j QGá%–*+´cÃ’Ü•~LqO’8ð Ñ+”Á4uà–}õoOÙžÇJˆOb5fº·˜÷È›CÏ$ù¿™šÄ“ÝÞøÝ >aÞ‰¼¿†‡"hC!™‚àwVåä,Ëq­?y§ú€ô6Z%¹!êÁŽž‚,æ[®/š+†¨çcˆ:–Z+ø|n*ÎS½é¦Æ* w%¹Hp7š,7DÇ|ƒm©HycÕ³B³}ÇÁ©Iîaî3³Å›X½G;ðh¡¿H@í’§r_ó*żŒÖÞ(ß²Öõe"v*&ù>æ=þA—Ÿ¶²K€…ÕìÅžO=šnj/1YÝ?jçà4 +añ÷z“·yãø •SÞXa_îÄ{÷©àùëɉÜÿËö ìww=3²Ž'ÊK’Ú@2¸E¨užEiAb)Š*k HokËê^²—áž-.†¨çn.Áu,¹–ÿ¤›¢¹l/¦™'ÉÛÖ±-çâ”Åù°RqVsü]9XQ¿x+MЇ sÈÅÄȸÝÞ¡ÁLJ粃ƒÇP…ßò³¼ÜÒ^.U›w2jHÄ +Q¾eUGO°[ +‚ëÞ¾Ã4¢Ÿ'Y*¦•ù2JgN«ñAÆ림¹ÿ°w2\Ê(^þš]ùÔñ}“ÝøäÖÔ¸mÞø“ã·>9,øÔðæš,ø@užXìM þOñfGfç¦Ood–%8 ½-+-ëò-ý%—þÐ%ï÷K.?­Þ3ŽY—Xá]îå–^°M îrÒNË´ £&›ÈNnó&BÊ;Ê/€Lñ—Gîð&|ó ?J›}¿"Eœ_ãMâ=ÚÞs‚OŠÛ_7hFíéÌ »=๙UÒƒ>^D}Ë gg¾e°£CÔ±Zi},šn‚ÏaÄ}¿°¯Õ g³_—æ ¡»ù¸í·Û¼¼^n§WíÁAX /w¤OjÕ´ŸƒókDCVÜoÂ×ÞQն㸠ý5@sêΖ8+äÞÉ|ê8ûb{jâVq”öÎ ñÕÜH¯‡$…‘„‰:ËŒK 2–ä sìãžä +1 }ypÜŒ¼=­Û·ôQÏãCÔWÎ÷‡.1D]ãåž™¸fÑœeùYÅZ—JÖX«æÏ*ÉË(ËçÎ$FM†™Àã¶ÔÄ#Ï&WDÜ_ªkm ~›§NMb>ä6Ѹ]!j_wŒ½ýï§UÝÖ,ÂgÇ Õ©Yc¹Ô÷^i^÷ó¸oYžŸÅܳófD|ÖPƒ«ªUÜ¢^èºäÝâÁŽD/•]þ1øÚ7ÝÔ\¾ôÕ f3a–ºj}"R:“å?{ÑKˆ®‰–éÆ$wOJ<ú\s&>s#yadˆÓÈ}È›Ñ 2-~ºÆÿ–䧕Š*WÍŸµ¾(g™;ïNz#^R½£§T ºdæØ=[|SqÍ!êXò/ÿéÛøVf»UµÌÚnùÒ—¹U(ùþ­†™´üª~òøYÌKáxð'#»¼þ[àú»&òªH~̺7Ñ#¹sR|èá5îäž$ÜHd uBíåíÛyî¦Xg,\Ë?j2£&ÛwtÌîI ÛRã÷Mq°ˆûWQ²Búkö’»ô¢ö`[jâ–v/F|zâ¡;x{+”‚û–!5–E9ï/ÏÍòðÉãöNÎéYܱ ø–åù™ÁÐ%O‹—„z5÷¬¢pm,É_»p»/ÑU*Yíùä¥&¥¹YUJ­JÀ?aîÍ> ¢lýåö×TrïäÄÃÏ$òyòbVäŽÔø]â*ž½Ø{~ðþ°¯Ñ_€„x•ŒU99¼y'7“7Üz9¤7f… º,å¹Eî'»ƒ.7,ñÕ9D}Nçiå6ݬ[—Ä>äÚ‰['$TLUóòz1íÐ4˜M¬‘°c&riÎô²\ÿDt1§zVi`:ºÒ³jtô,Ëg¾¥ÿlñà Ë謺tOºY·8gEt7ÝÔ\¾t·Ò¸<Õ’ ºr*¼§lOÁà “º‘"¹kb’™$܉۽ñÛRâvLNªvIƒƒÇáFšM]Ò—Ï|»<Ÿùî|žLž/œáž+'Ìk†Z]á'_Õ†¨çg­˜çïèq]FÉ|K÷m2zå¼ð$k¯•óf–ä¦GD  ü.eüág“QBYÍ qÎL’áDm}vs´öLJä5„‘ö[îCn´iy6Y¸‘IîÄÈããêxû8 üc'Á«B·*'GTTºÁÉô Kò‚Ò#î6´ñªÑÑÃ|Ë•óf0O{Ý✖æn,Éwè ¯Éç“ç³¥Üßtùë ÿZ½pviît÷®]6 $"àJmOIôñ”Zþs´EÔ‘ù»Ea$#ÞDq~MÒoÒ^orÈÛåõâÄIF¢¿ùÄŽeZ‰/»ÌWç€ôôèIˆ»+ØÎ#|ËLv5V‰!êî Ë:Ë&U]º'Ý°ë¼ M7MY+çñQ“«^¢lR Ä Ê^™ä³»Jy‹—ºk"¯Šdn¤ÿ(íÔø­)âÄ¿„LûñŠs´Q ˆvžµË+r3Êò3K}~ï±\ H_¡ï€ôƬàu^u™—¹¬ Ë¢¾þwˆzÍ$ø'¥ugƃǎ»g&.Ç™‰MX™%¢0£4/cq&zpÔAlZ{Ïß–š¨ÀY9þæFz&é€8Ñ&¹Å›¸Ë{Úçö }oâ¤r¸‘PšÒÿÇ›wrýÞN`@zv´*k¬šCÔó2Wf»ƒ.?æ%—ùµm>nL’ÿºa‰M7ÍXÌ™ddQÞ»ΤZxÏa¿lMIäå¸M+÷kûâëÞæFŠ‰‘q)îQÚ _x‡×|G7¡¿¢¾éyþþõä®Y4Ç5ñ2Ë(õ0kQ_&ºÅƒCÔ? ø–®{ùÑÒ\ö»þ?é¯Öâ×Í—Æ.Z¤dZ€8{ñ©¤ +o¼,gå}Z>"ÒŸÔv #+ØJåžäo|Í÷áuk#4Úó™c™Ÿ^ˆXò1‰óüÒKÅ€ô(÷‘B‡¨—Š!ê«æûÓâ̽tÏLt «Ikż™¥Q“8ž[EDy!eNÚÁ©œå-f3rïd^¹{Rb Í·mÂè…‘UƒÇ´„º¤/›3§xs y·Ž{jvÕ€ôHûò,îXè)ÇéÛÍ[¾tÿ!AùiÁ§¨‡Èååg/òÙæ‘p#+į»'òóęǭ?¸Ñ{^µW{ +# ©1 }UÎûž̲<îX–ˆK1ú& soB»ð$›±Üj +æObÔ¤ò¥ÆóCdÚÄÜ–Zu ⮉|êøþ)I¼0Òßb¿Û;4t‡ÂsÙYWÀ6£ö€ôU99Ë|Ùe¹i®°n±oÍB·Æ23 +GYb…e•åòÐwi^VÕSÔExn[SZ÷¬¯{j¶ß“Ü9‘Ÿ_ÃVEJÜöT^¹%%ùË¿&ÔxaÙ7£0"†@zõz¶3ß^æK+ñùg¤¯ÿ 78kŽ%V“Öê…³Ër‘I”MªŽHyï™:°URÞ"Y!~Ý)ȧý¤ÄmKefÜŽ I_{GU½î܆ڱ£âœie|ÜO…¯œ7sõ‚ÙË g”¤Ã·Äªo¹%¸ëç°‡Ä5 gR üž[Ej Ý_cq?« –m+2Ù}/ÉI§ ¤7Âå«ð&}öd!Ê}“y(’OâŽeb…7~kJò¾©ñÕ +#Ýþøª×X–æˆZJ_ZYÈ€ôe®Ùò¥û—¿À¿XQ˜5 t&Ë={1™9ŠÌ]Ü–’ŒF²µwrâ±ç„éN’ô&îðŽÜë=·Úßp­=p#Ôà‰Lw2L€õ¾÷Ês˜Ë‘éz’.×Ê«£ÀÕ_|A_1°ø³ûX–—YžÏVÛ&¬š?kÕ‚YÍe‹ÝÜ‹óË}iU‡{áwùwÄŽTQ )œI·¿f¯˜#Ä@#³oúYµ?çE4@c©áN”ðVßR_š›øÆ€ôÖXu”Uÿ¢Þ«-|Kæ%./Èfkå|>ktµð×-ÎakÃ’ÜMÅùì×Ú3oöçû^ç°Ô÷^í»ôD”>nKM:0%iÿ”¤]yâ{›7nkJ?1”ààq¸‘šNm¿bÅìée¹é%¹inpÕ€táÏÀ·<ù*«ŠV%šk¸‘ey™nqY~»°Ë˜X8ƒ-·œ•]s\Q„…Ó8{õÂÙkÎa_ˆ¿*³šwêK[æK/Éq¿™Æ»wÅìïÎç’¼Œå¹ikŠf®+œöqõšpçpË„üøEæI¦$ìòžV-}B‘ÂL­éïñ©•Ü/â~ ¤û/…˜áÉ—›kΫºìr±ë³¬ ‹]«•ógº!Ä5‹æ¬]4‡9„+æÍ`¾âò‚lן qù ÚÿÍ,a_³¿3/­„ÇŠE\1/£˜g±ÓËó¹‹XœŸÁViNÆò™3Wå¼_£€¡á[ ¢ BöýõŒÐo,öž7@«R{@zéÌi¥¹ï—úÒÜÃwj HgÞNä=½ðøŠé!¾b†ë+–V…³˜C("‡¼w‰]‹xŠù£¥yëç0Òõ´ýÄõ3sý_ÙY%yl¥3G´„ýXNZ™/½8'½¬ ­¤pÆöÇ 2ÊóÞ]9?£Œy}™EEEMºqÌW\õúküOefd +(}‚/L.^Ñ_7@[Qç€ô¢Yÿ+ç-áþˆeÒÛ2n)þ­’j )u¬šÝ+!-Ïì›åy<éÌÖÊù3Ýä2ó™¸þÞº²±¤€¹‹![¦ð6Óª¾ã¯È,a>g>óÙ¤—ñˆåôâ¹ï//xEnKSÌÁQ´øi¶20/1d<p2P òÔ +påþH=àî€ôe"Ûê.eÀ{ )ã¬ê€v‰n,‘9ŠËÅ€M^”ÈóÎÌWœµvÑöR×.âÎÌf_—Õ®odƒ88Æ]¥yénj»,?³Ô—Yœ—Vš7½¤pFQÎû«rrZrQƒŽbU k5ÑÿS´ß@AüCfBž’Üì²üŒ’<îæqÿMd„yóNc¼J_5±ÎÞgîægŠŠDÞ±lTa.¢Û·²B|Ÿ/Q¸Èû#e™ô{›yüó’Ü´’<þý’œLÑmÄÃŒå¹ìoÎ\š;­ÒæÏ*šñîWEo-~ºÑ×ä ÿ¯ÌåË þ«è§Ù·@Bk,S'”ä¾·”XfºCÞ‡²p6÷ßøÔô@ßJH8‘y‰þ¦æy3ØO®^8{í¢9n¢™}áÆËýÓ3«üO_ &éËà%ˆy™"ãœUâËñRöñ bYÎûåyÅ9K +²‹çM_ê{oUNNaá´&½?ž_T¥˜QŽ~ž¨Ñ¼³lÎûbÖ/5,Ò×óŠDߦâ|¶˜»ìn.“·« âîh‰8ZÚŸqÎI/f^b~fy^ZY^zI^ï:ÉÉùX´«4µc%ûKü<´uED?‚ø!@›R{MIn¶‡¬xäÁCqz¸{\xZI^æRþEú²ï®Êá­Íáy)©."u#Š¡ÙgžhF®@bj—–ÌycÕë¯5ío©Çë;Iu"*ôƒ ƒãn‹Ÿæ—ë,G$èU(!¹iç±ë‰'Ò/ý1¹õ(¥ÛÇ@p´6&!¿;L­Jº|ÿÐz0›ö¥_ií!8Z&· BnÔ¡t²p.­ƒ‡t}Ù•¥6uî… ÕðNïq¡¹XtÏ3 •ðïWÉ ní(X8Z^"ömAlšß ‚ 0ÉÈRê„Êkv “|µ«ÉMø–‚ ¬0I]°Å˜¬.¸×!f@Xar»r ­¬£´Ô¢_ÁFLB~u¤ëæ +nAÄL\nGë‘w)ßñ@p„ ^2y¸Ng2¤LE€ðÀä6•ÖkÝ„;~;ô@8ðöÏŸTn\pÛ€–ã!3Bk¸ê‰™¬… %-ÅC:eÔ(*©[p³;ÂÂÐ2LbØ[ýÉž°GJª°éákàQ‚Zÿ¢ûèÞÑ#8>Ôu_øŠJêÀ¢Ÿ‚˜ ÅøžÓ>©°øܨù@fïóþŽ.m16]Ò‚ ÿaèwóß +?aÏÞQãP2¹=`·²Ü¸à¦µ‹–+ +NŠaÆSÛ÷Ç©_OGåƒÑbÞ<¤Ý‹áÏrסtšá¢žÀ~­ó¨qÏ®¨tµf[tû°(ù0ö3Ì%“õ`SçVx”Q ߯ MÉ×<žñ™ÿ©°lña<+JÜI0­MäÆ7ˆ{Ï…à¢Ãô»‹Ãn˜˜½^Ø5DZý (öëÏ¢EnýòÚHn\p«1å< + ì×H§‹ŸÈÙ|P< +LjUÉ^‡n‰Ž.I’ß:5\ubӢ⺂ †'†ÿ§c¿³Êüêþ¨±ýšSó¹x!*ÜI³ªÕŠJê€ýKÏEÅ…žÌ…##/úý´OÜGÀª£d}çò(ð{ “œ¾± ­ŽëýRFÁýÚ+}{¥»aqìº6›. ¿ÛÃûK>m¥ +å“nßú_Ú(Ç0=îGjìyOf¯ÚÏï»eÛõûQ}ZóÆ®È5­[ÃU'6ýd,§1¦[8Óõôß½»~—S­ýZÍGbß´×{ä¯ßÛörãf‹ú@pzâ/ô7žyçëŽ ‘U6ì@UÒS÷M=», ¹ñf¸W §‡1ð¢{^)?áÞj«1Áö#Oèn޸ܜˆÈM\ßñRê„aú ýÛ]øÐK÷Š›ìœlÃV ‹~ ùãà!ž‰­_¡\6=ñs8]ðï×H»¤;_/«÷×j¬ÔüCŽæ¿ÒîÕÖî¿9ýêLÝ=ˆ¨À0c¸PŒžI·þcÅÞãüÞ6b¿Vöãwè.·Nÿm³®:±èŠÁœÒrÙ¤ïY·¾°ä°+‘ubÓ¯õŽŸyÈ€9‘•\VG­/²Ö÷k¾ÿ›¿Íßå×M“œÈ*úš¡³}3IÿmYÃU÷EvèdÍv]qCþŒ‘¿x탯øÍ´íjÅÇM|(ý±ÎŸ¼&SÔ¶5\ubÓã÷Boªá߯‘NC®{aéÖ£üF6y¿VëAXÙW_½&»I¹ñë¼w¶p +aø‘=“¯š´`¿¶Õ.ôo:ïúô{k-Ø;S[—LÖƒE?N€à” ؘÝqìMs*Üûg‡å1rè‘‘˜H¿ÁV‚™íëvD0P‹Îë +ÁIد%ýò…ÜOÅ«jÌn1•Ô×EWûÆ®Ûhex.TËqlú/­#Sêد‘žWMž÷ù1~×*[©›>®«ycr»S"¹‰ÐÔÃh†“ÓmÌî2ø‡ãówá7¬¡Bÿ¦cÑ-ºv‹°wõ—ÈÕpÕ‰M¿» +¥„þ¶É—ý9{»{³êjÌn1©©‡Ãäö”á,w-,ºu,'Á!ã$ñ†§3>vïS}Ù-Å¡•÷êiÞ<$öuéäÆW6‚“ÿ,VBº_ú—™ñüšc7·n¤1Øôó¾ZÚ7“´ÿ_¤k¸êĦo·ÓóN5ùµö=ÏÿÓ¬ÍûøÍ©lTÿZóaB~SË*#“ôM“Rnh†“ñ‘Øaç?ðþ¢Î¿uök5o¾}­Ž÷Þ$ƒE¼d²ljÝA‚Ù#/ûã[ëý7¥• [ðÞ¯ë¥á½7ÉÀE’•ÔM·ÿ[¸ÈZ×ùGO½¿BÄüØËnÄ­×°hÝ0ɹ«å•¿êk5ü”“#Pèßñ{¼¿Ê¤Õ´Æì–âÐo/Òî“–ù +ç~"³ÜDC}®Mñï×Úõ=ãî·>:È“²Íêm-è¡Û}goçŠM2•ÔûLý»~~…¬³Ÿ׿W»ƒ´Úh¿V›þYC¹ý⹊JêÀ¦ô!vµÁÆìÞãî­øqñ[+—݈»þÕ÷4Ó{7¿<$½Üø¥?rf—^:‚û5cÌ=o,Û!.{kæ²Ä¢34+Wg×wüq)Ón5±è¦$í¶Îá?Êìÿ«WWíà ¶ìתãPë>½n9“[ŠœYîÚXtqoX¸VÁ0Ü‘~cnþ[ù!2÷ßÈbÑÏFjeÞLû¼*rãÍpoy ¸0lÌîùý_¿°è {©#©CßÖ*Hf’Žo+#7QØ•¢Õõ4ÁC¡Hò]ÿ^¸U\ã¶Lf7€C+µªå2I§·¹ÕP›~{›N7 ¢ø÷kÄ|Ëß—~΃þ|¿&‰Ô6Ý SòÍCFú„ÑP‹n?W¯ t„0cÄUì1üêg—îs‡ H°_«^H=døb)ÆÞ5‹® +Áµ„`.»ûé×NÌ÷ï×Z:!²Up¨s¡6æÍ0ÉYÅÊÉMt×·×æ&´5UÙ§ýò™œ¯Ü+ÑÛÉ°éBmZ˜Ü.jóƒ¹Ã{6^ÒÈÉhCü!B^÷Œo3w[4d¼õ±ècÚÈÍ ã¾P ¨¤؃r.·¡Í0ÌqÉ:ô¿Ì;ïËCü:¶vcv‹qh….{u&·Ûö¨“¨ŽM^¬É}h ÿÄ‘.q—<1g§(KxáHc¨¤ÙíôpdØGÝíÇT•÷3>Á”óFÌe›£¯}2ó ÷òE¦Ð¿É0G÷=Ƽ2¹Ý{XMgÒÅ¢ {Â¥lˆ`cvß+¼³Ö‹ÛíD¬Ð¿éXtÓ(-Ì» ^…ŠJê€}ôýËÔâ^´B£ûÅOÎÚ N§·Ô0kA,š®Å-6‰©¸ÜDŽþ )ëÈì8𼇲¾§ø†ãP¨6ƦßÞ ƒã!]_U]nânü [¸Ú’Ùæ¨=0m³ÿZÉW8Òlº©»Ÿ¨Òå]õåƽ/0å¼:ÁýZ¯+Ç?A¡ýZuØ«þ? <4C¹ñ÷P:T#< ýcÏ{ø½eûÅ’:—Ýì•_ þíõ„¥ŠU(ׇcÓôXõïH8ðï×Úõ8ý¾w?Ú# +GÔÛ¯ÕÀ¡ËÔA{H|™‚%“uÃÞÆD <ŽâDƒÏ¾ó?ëýCÆ+5¸Ã6}Tõ›kxÈÅ«eYÞ Øù]ÄTûž´>HK¼ûã~÷ïrWkŽbAÿúpèѳOv³{óÃmÚX7ŽM÷‹Ò˜IUcöÙ¿}³d¿"—­Ëݵhf'µÍ{ñ?ÙªrQIØtC4vù…2bóß[ø- ÿ!¾‘…mί¶ycNþGµL†bÓÜ(›rî/ô7ú$þüŸk 'RÊ^Ñ–aÑONSú¾²×~×wšY7*>_&Jߘ&lÌîwö­ÿ·ô;÷hfØüTÒéJ{“&1Ÿ¨ÔOn"Hùˆêq¬Æ2nŽ½çå»Ý7¯Ñ~­:ýöv•?E=ĘBu”÷(ýTå[ÓCÆIÜ/^^ð™x×j'³¢»)ü!ê!^ÔTnâD‡³5Ž™°ýšxð:»áÿJ¶ñÓéuܯU‡½½WvZbHL=j¸êĦôÕSpÆ잣¯™¼è€¸êŽ4›»H]¹yHWMJ&ëƱé4íb&ÁÆì˜3o™ìÛé¾S[wÃæǦk:({C=$nÎrîÇ$…ÝÚ÷kÃoœ«v²û¥ãg®§gXZ粤’¾­d°„=|÷œ •‘¾|m„Méý‘¾âÍ%¶ÏùÍúìºú7‡Zw¨hÞØK¾ÿÛ¨‘›h†{ú÷>à§/¬ñ½jüÔƒµ¾Ój_jÎ Æ|¤€(!8¦·/1½èÜ?dßäûè h‚3Èi»àO=à‚“Û¥4È%¡7  Òïá òËo¡7  ²[8ƒ<†r. ’ïá ò"/†@ä¶py î$Ð ©gZé+@‘Xp‰-Eú è\)gk¡7 Lp)RŽ£4ÉÙ_aÿtæÖC2 +Î$?Fy Л:”PprËQ¤ß€~°M’„‚óߣÛèóÚäs)cÈ$„K€–È(¸òwz"Ò€ÖÀ’Npìµ¼‡t7Ðéöpéêƒ? tŦÎÑÖX(&VŽtЖôøeš˜äÔÐÐöh¿ÑG"‡ÒC.Ü‹tЋ:“ªpÙC®øzzbQú'"“ÜH ù9Â%@O؃ý¨\rcöí~è h s&e“ÛHNÞ€ŽXôÀM’Éé­ÝžRI^'›ÜØËé>zúaÑC×CžD€‹Iú-…Þ€vØô³É'7¦·ŸBo@3‹nKLéäF<äÔÃH¿½pl.7ÏŽ!g Ûè{žW%¥Ü˜?yô´Âqhá`Ù“Aî…Þ€NØ” Óºñtw*ô4‚É-o ¤rcF7æÈ è“ÛÛ½¤”›á†K}ÐÐYÏ¢2LñšúüìƒÐÐ÷œ鬛Ãíyí?>ŒÝЛ:/ÆÊfÝ A}/ÿççÇÙK´ 7  µ‘«BÙ0 þrŽó.ç:s 6  Ž6)3éß³õ¸zê1àÕ¶¡6 =òß Ø.GÙ¤)„ßþŠKQh h{¤÷½™D$p) W[§³Ÿ[{½. n$ÐÇ¢të³ñLp‘Tœ!L[ϳZr”¿¦J´ß]±Ùý}ò(¶‹Séfµ;ŽûSþ±Àë@_ø¾ñáA‘Ùƹÿæ¼yû(ï +ràGÝq¸MYýxnkÚVm\l1£Y²“Š=Ä¢›íãJÕ©½Jƒ´?ûîœ}ß³Ak š¨d¢+½µ+o¨n3LÒë]þo[سhƒ‡*iÁ•íÚrg.¿ý Æ D33VæOI*Žý;C&B‘$ˆJ¸â¾{çÒvE^û‡Îžc‰€hÃaû¸½o~ÏB›Àþv·¯…‰Ñ OzytÛ9•< ÑïÙ½ØÆè„?÷_OMÚlÚ2WÜ…Y”bŽ2ˆF¾›ú"µwÛ¨cš¤Ã­+aâ@”b³}ÜÚ?÷k»s¼Ù6®gjÅQo :±,zâö¶Ó›Ø.ž–a¡`D%µÆm¨7¡8óærŠÜˆ>,zìaÒ¦r#¢íµÿ㻑цE÷ݶožõ;ë­£Øƨ¢ûoˆÌ”þo^[ +¢ˆJ!·È4|ód\—Ç¿DnD Ln×GJn~Å%ÿÇâ@Ta¹¹Š3²‘JX—éïî|)Ú`ЋÜ\§rô«‘þZSI7“@nÄ­–¾t>œJ 1ÝtF›õ4„i.÷}†ÜÐ!7yðà/%îß"ý ´Ä¢ÇFþ,Pxó%‹RÉ­›Tr#¢à¤Ãï6@q@7,åæF*Gýõ(è„#©Üˆ[Å|¾‘J ŽC—J*7"â&ž{>b/LÐf:æõ—Vn®S9äÅýp*8t~?‰åFÜô÷…sáT ph^™ònubš¤Ó-«q$#P›¸´-Æi.ì%œ²éo 6=|“ôæÃ?;ûvq@eØÓû zsç-üj â&@e*é3*ø“©˜º?ÒW €æSI_‘;:ŠÁ>ÎI?NaဢX4«Mo a¦Ç5Ä¿ü‚ŠbÑ"™³Ýƒaº/1vÔ·¤¼ý9ôŦ’¥Õ×Yðµ ûÉžÉZ¹‡¿hÈ (ŠCwž/e€’¹Á—5ø²_·nŸxÁ¶…%P‡~{¹tz3Í÷%µë>øÂûÞX¹õ ›ç®„Ö€âXô6‰܃ôˆðMû~§\ñðŠ÷ùK¸lh è€E‘bÿÆ•ˆ“9ÿ–§Þ^°-ðmRš`Ñg"?Ïã ¼‚®Ý1)cÙñÒÇaJƒÔ€FØôí×'¶Û©w½TøÑÎoÅË‚û´Ä¦½"íPvsÁ/_Xôåaw†¹­m±é†a‘Õ›Az½tÂÿj, $ЇîMŽpBÀ nȶ¹Ø 5 9ì?3Ò ¶}Œ½òÝ#hàÚÃôvU¤÷obîç¬iû¡8 9Lo¿°Ú8\qäÜw+˜W Å}az›ùqÛIÉ÷Ÿý‚âÂ>èŠCߎ‘Ao\qìeœ:i+ÅAT@[º@Ž„7‡·ß$§~Fqž0Л®ïñ€I|×÷áxãM¤¯ áǦû{K¤7w×ëÏ«±:bÓ#’µ(öqï_H‘ÚaóŽSYöoxz ç­K(Ò@3jÝ#Þ1céöóÒc8Š +h{šS#-®:á±ÊWÏ>ŠìÐÇ¡oJ‘ð®høþiæ „N€>Øtž¤zsC'1?yãt¡’®‘VoÄ=Qø{¯çŒ <Ý<@b½‰SÈYo¢”hM·ž.W®&"~ƳŸòÈ ¼J 66=pµÜzó+.iâç¿Åqèñ{d×W{‰I>§H¥aOïxéFš×WÜÀû7P(¨ŒEÿ©„ÞÜæž®¦ð*º§éŠèÍÝÇõ¿·€âP* (ìÁ•ãÆÁ%×í–E‘¾j4›fÊÓàÝxB®Û•Å‘¾n4‹~8H!óÆ1Ú2àß6\J Ýw±Zrã½q‰¾‚Ú€z°‡öb*äMò×Úë¡M‘¾n4Ǧÿ–¹X¹&ܶuøý*^J ó”æ‹z(äM2µu¼q‘xÝ(‡M·ŸªJêM¸’æ}å%@Mlúí/T±n"Ó}ñ;ÇEC:êÁÜIªlÞ¸ûï=(äÊbÓÙ]Ô0o¼RyèË;0« ¨‹E×RBn<(9äé¯1ý(ŒM¿¹R¹ñ[ÿ{7S%Â0Çì1bH¿yãjóü¦ó¹€ÚØô-ùc%âœáŸ-´y^u±èrù«”™Úb.˜kóW €ÂXtÇyÒËYß ßûém :6µ#»Ü˜Ú¾÷â7®$Pf/þ*ûæÍ æŸ÷"½ 4À¦óºÉnÞ×À)Þ@},úÅòË™ßKw"RTǦß^+¿ÜDêí2(Ž{¾¢Ü›7&¸Ë!8 4ŽM³:¨`ވܕß@p@a,úÑ eZL ƒÜmAp@YlzðÊÈM¸½¿­„à€¢°ÍÛýJìÝ°×z/Ô„mÞ^7Ù¼ùà€²X´¨·Zrƒà€²ØtÛ9 +mÞü@p@IZy§jÖÃ÷twÅpú‚‰îš˜$æ¯P ‹Îy#\p(…E7&¨·yóÁµ°éÑŸ*jÝ8P ‡Ò?)0Ž«~LbBp@‡¦©+ Â÷2Å!‹@Z6DaoR`’Î3!8 ì!½JÙXI“ôžÓq€ü°gô i½´éÁùqèSÔ·o~ÁÁ¥’cÓOG¨¾}À°é¢>Zè n.²@nl:£«zc»ÐA+Ð,¤Æ¢ÿŽQ;ûV…‡$ˆ±Ë@f,úœâÙî\ÁEú’P/}@‡ð¤&¸µ‹ÞFÚEZ&á‚2ãPçì›_pš9qè7?ÒJoìÍ$}Ãs€œØôó±z齛킅RbÓ•£4I¿1É¥‹.꧛ވÁ9±hv{mÒo ÈI%}M;ó&N«‚à€„œ ÏkÐýV ~ênH†ãÐ?ižta.åM' 8 µïÖRo|Oú;È…C]§§Þ 8 6­¸XÃx‰‚²aÓOFëª7þ¾~wÅË@,ºf€vé· Lp÷Æ ! -Ö/Ý]E þ †JZ¨­;I¸» æ ȃMßÕؼ™¤sÌöÙÿ¼Öz{ö HƒC­‡õÕ{cÏbä2‡~w§Îzëµî$›¼T_½™ä—H¿‰°éî1úêÍ 3Q^$¦Ûi«7“œ·æ H„E·˜ÚêÍCR!7 6-3tÕ›I”Âá84[ŸÃjC®E2È{_×Uo‰yæ ÈÓÛd]õf’Swü™`ãšê½©ûáN©`ãµzÊ™·ŽeˆN©p¨}Ž¦í8÷ô¤Â¦Öp=§1£ý¼I 6Ý>HOûfa_#: 䦫ûè©7yÑ 6-èª¥Þ Ò·3dØôX-ã“rÅA˜7 6ý›žåÊy»7 6ý³–én“ŒøÉ ŽMïÔrûf’›x-62Áôv…Ž‡¿™¤Ãl˜7 Ì\¬§ÞNûÑ Ý5VÃò¶!MAò H‡M7'i¸3H÷ p'tØtÉ@ õf’ŸŸ€Þ€tXtfWÓ$É7 }Ó£ŸÞLræ×0o@>*µ<¬ÃCž„Ü€„œ ’v‘–G¸1HïÅ(UòáØô·ú¥ßø<Ô–ùp艛µK¿1ÿø%DK€„8tÿÚéÍC·#× $ĦŸŽÕ0ýv/jK€ŒXt]‚nz3I§D'ŒXtI/Ýò¹ø[è ÈH%Ío¯›ÞyÑI %'è{º…K 2èSD'”Øô%Ýôæ!t-2ÂË¿h.1ˆ9µ%@JZyŸfzó w#Z¤Ä¦‡nÐLo™„Ý›îgh¥7“ _óäÄ¢_&™Z¥LòsK€¤XtÓ@S'ûfvÓaÞ€¤TÒ5¦Vz3Éi‡a߀¤X´È4=ú8”ìŒG©2‡¾ãÑKo>‚; $…‚WÚ1½i#8“\s z’Âôöd»SŸ¥A-ÒâÐʻ۵×Go&9ýK$»¬ØôØeíÛǘº8”1äq˜7 -6=rn‡Ø&Î =æÁ¼i±éáa endstream endobj 31 0 obj <>stream +:´ÓÅÀyÈÇ‘ ÒbÓmƒ:wl£G„’½‡¿Á¼yqhqÿ.]Ú·‹ÑBo2j̇æ÷ëÚ¥ƒ&Î w¢¶HŒCßêÓµ[Çؘ "&é0ròÂΗûôèÖIDL"-—c 0H ÓÛ£}{wëÚ±CŒGù&öñ/¸“@bØÃùÛ~}»wíÔ¡½ú)8ƒôþÑI 1Lo¿Ô¿w·.cÛ+ßç!w!ùd†=Ï اgfàbT×›Afc ‡ Ô¯g÷NbÛ)®7·Ñ 56ýzìA½ºwazSÜÀ™$æ ÈM¿½fÄÐþ<%оÒcÍM2ẋZãG È \G^ÔiÑ´“\3q€ä°'tÆÈCú÷ìÚYm‡Ò ±ï¼ٱ釣F Ч3p1 +Ï 2IÜ!$€ìØ´âò‘ÃöíÉ#&ewpìƒâO¨-ÒcÓ£Å< w÷N˜ÞT5piC€ü° Ü+ññCöéÕ¹S¬ºE”&¹ö(ôäÇ¢¹‰ñ#öíÕµs‡e œAÞ„Ü€Øtý¸øQCû‹ˆ‰GQg’ÄÏPª À¦ûnOL6 o÷®]b=Šv xÈÃH¾plš’˜E²(Sä#cÆøõÖ‘—t)±ó1(ˆM_:ã´ø¡úôöëMgŽ8±HHƒ6À¡¹çž’8t@ßÞ½DÀD ½yÈ¥G òѽm¾âÔÄáLo½»Š£…Ð{…S±{2Òàjßzê)#õëЛü%&&¼ÑI # EØo?uôÈ!LoÝ;+¢7ƒÜ€Ú % v?84clRÜ@€R½ÄÄ< )NŽ—C?<7™¡ìÝ£kÇX†˜äLÔ–IiÈÀ9ôÐå§ÄÔ·ww¿ÞäÏÀ=wHŠãØ'}6zâÁSãF r+(…Þä6pé¾ÑI )Lo'õ½˜ÿ5&~Ä`¦7QA)½Þ<ä¶ïàNIáz;©³éâÓùÐ×>=ºvî+¿ÞIƒy²ÂõvRÁÙôó³“Fïß—Ù7^Ñ%¹ÞLræ—0o@V„ÞNö|Útßo’â†짆Þ<äO0o@Zœ† œCí)É Ã÷íÙU½™¤ïbè ÈŠ˜h{rÁÙô½ÑLoýzvíÒ±ƒìzóËщ¤% 7«þgÔ¢ÅcâFîÓKèÇKäœAÌ`÷¤Åñ ®²~̦Ÿ_?jpÿ^ݺtz“ØÀ™dDrÝ@Zz³NÔkzì÷ñqC„Þb%×!÷¡¶ÈK•ÞŽ×û˜Zôùøø!ý{wëÒ9¶½Ôz3H»R¸“@^üz³˜ÞŽ×÷365zäÐ=UÐÛ¸o 7 /UzûîX}ªM×þé­wwéõf’Cn@b‚þ¤Uy’ ÜáGàžÙ!³Þ 2b#’o@füz;iÎÊ¡Œ: o÷®’ÇK<ä~DK€Ô88ÃÕ¦¯<°¯ÈÄÈ«7ƒ´ËÆ< 59NÒ¦œ:d`ßî’ëÍCÎßód¦QµO6Ý{ÎÁ}{úõ&i} {U©Ø½õašüÅA}{vî+±ÞL2t=¢“@}˜Þž< o/¹õfŸ!ZtÀ¡¹ƒôéÕ¥“Äý813!7 6ý4n@Ÿž]:ÆÆH«7“Œ>wè€M÷_ÚOr½ñh ìЇ´?Ó›Äó‚ û!¢“@ ‡¾Ñ¿OÎ̾É:ÐÜ$×cª2Ћ–õëÕ³sÇöü8Iõ6 æ h‚E?¿ W¯Nòê cð€F8ôð\oÒpCþó´Á¦Szõê(­ÞLÒ{ô´¡’¦÷ìÎÇÉ.ñq’@,š?¨«Ð›ŒÛ7ƒ/a÷ô¡’¾ß³«8ßTB¹1wrÈ.˜7 'è¿zöVo„Ü…Ú •ô=ztàã$Ô›AbÂúà8t|·n±ÒêíBÔ–p¨ýP·®±í™Þ"-®:0É¿pHЦ·?vëÛ®)¡Þ Òo ’o@#lºç:ž”Ror'’o@'lºëª®Û·‹‘pûf#cð€NØôë‹;w”sûæ!€y:aÑõ‰;0½ÉgÞ˜}{»7 ]Çï–Po&¸ +É -íÚAV½]ƒÚ •t¾hî–/\bO:äô¢’.bÛ79ÍÛð}p'^8ôbäÌ< wè{žÿ+¥Þ »ÑI üØØ ‹KLrNìšáÐã÷‰£"-¯Z˜ä?[T¢sºC¿»›—H§7“$wh†M_ß^Æ“ø‰Ý0o@3ø§2º“&éUótæûΑPor:q€vØtûP 'O²×ó ÜI ýJƃqL2d ÌЋ~ÖÁ”Oo„ÜÚ -ˆ1¥+ž4ˆ‘¹ýpèlSF½¹Û7 ŽC§™òeßLò¢ÖU JaÏô$Sºl€Aú¯Eò èÓÛÓMo184h {¨’NoÌ»}cð€†0½]+›Üˆ‡œ»Ñ !Lo7H§7“<†ÝЇZc O¤V“ô]ótĦöùôv™ƒh Л.™Þ büÉ7 %6ÝÐȵ3I«ÍóÞ’´Ñ0ÁBbÚVo&ù䢋·qe—IzBo :qlºp@› +ÎC¾1x Za‚ËîІ‚3yž—“•°gÿ¿mXJi’[àN‚è…Ùš¶]e—Aî‚; ¢fmžh+Á1w2æ D56µm£Ê.“œƒReåX”ÞÜ6‚ó¨ wD7Ý][x”²¥Ê ê±è¾‹Û +C~‰N˜à6ŽmuÁ¤ÝÛ0oð ÉæÓ[[p2vÌ”[¸6¨ìzÁI8ŽM µªàLÒ}%ô€Àqhv«N¥4Èe•p'pá•]±­'8ƒi˜¯÷²Ùj‚3HüN¸“ajx¸Õ +MLò’o„`S§µgvEH¾ŠE+ok!yr%Nì :6Ý{-1[Ap&ycð¨M÷_Þ*i¸¤0oÔÄ¢Z¥”òNÈ €ÚØtC+Œí:z ,ZÒ7ìi¸ó¿C2€:plšÓ?Ü‚{9Òï +Iq:«s˜7#Òo +Ya‚{Ù^ÁÝ‚âêI#Ì‚òâ%ÔÓF˜Ïž„j.êæ•…Up?<‡€ú°©sW8K)cç ž €z±èΟ†OpòGDL¨›îþiØb&&¹ ;8êÇ¢Ÿœ¶-œIÞE„€“`Ñ5cÂeáLrù€“`Ñá’g˜2è €“àØtN¯ðX8ƒ{EÄ€“à8tnðX8“$ï‡Þ8Lp¯„çøSq\JN/¥ à<äj8”œ'\|›dP9 'Ǧßþ1,¥”&IAÊ€`‚ K)¥‡\P@Xt÷åaœA<³aàh‹î¼$ [8¹×BÄ€†¨¤ŸÚrÁ¤?Š–h‹®InqÞÛsº`àh‹.oùß¹è[DLhÇCe—Ib>€} ax)eç–—Rþ%€Y¸—RzHbô@#`:ù›Ñ2Á‰ˆ "”4›Ò”VvyÈÕ'`àh =~oËg’¾‹aàh=qGËç!^dh=pY‹¶p&9ýk8‡Ew\Ò¢¬€A²¡7‰E·Œi‰àLò«ãˆ˜ÐH,º:±‚3H· ØÁÐXlºv(‰i¾ÞÈó¨1 ÑX¼”²ÙA“Œ=½ÐX›ÎèÞlÁ™¤“%†Y§7š_Ji’_À¾Ðx˜yzÆl®à<$þ38O‹J) ò"Rp4‹Zw7Wprõax”4‹ž¸‹˜ÍœA:-ÆiÞ4‹¹’˜ÍÚÃyÈãHÁÐ$,ºýǤY&Î q_b@“°éîGº“fÔv1‰¦#B @Ó`’)½²9&Î ×Ùp(hL2Ökcš®8“t_ @q˜h¾|²sS‹M˜<ÿŒˆ MƱ(-»ŒI¨IŠó1(Z 0Á}û¯Q¤I-:‰}Jš7q_Üß½I&.†Ü† ÍÂf®á‚&9•&‰ˆ Í„)îð«qMˆTšä8”4—JJ?°}£Óß&¹d7 Í…;•yã˜àeâØ-@Ñ2͆'ã¾ynT#J“<ì %@óá‘Ê~סQéoƒôß +‡€–ÀWp^cLû·`ßhLp‡þ6¸qƒü¸‚ eðmÜÆ_Å4hâLÒu)JZŠÍT”}!³`'WœA€Þh9LF{¦ôo 7à!cwÁ¡ å8•”n¸-ö¤‘JƒxÞB á€{Š³Ï>©‰‹!7¡Í€°Àã&{'÷=é®_ á'ãJoñÔ?Ö$EÄ€pÁ#•Õ?‡Ù$gí‚ \0wCý1¦Ãù0p„‹JšÙî$Ç ävDL6=péÉ*»LÒï+8ƒEß8é!:â4oØ7ÂM÷œòÞ“\lAp„‡NkàŒ8“tσC @°é¡³:“ÑC~ŒaÀ¦o6xª‡Œù€ãÐݧ7X)ÍÌìܹ“¾Kó˜ÉÌ$÷ÿûYK3™™{Ï9sî9çν¾ƒ“z7 ”à2O!‡@øŠ‹|ëJOÝppá;Q ðœì÷tãEèàÚH98Â'†É·zîÞ@ÆDõrp„OPžÊá{· Ùá8¹'Üól ´·¢ïPŠð‚ļ37êèY{‘ƒC |'_öÒ½ƒs 9&„÷PVSã­¹QJÅ—h@‰@x N¾0Ç›ä$ãߤ÷#ÿ†@x e4 Þ%'W‚”„·¸È§.ñÚ½Ñ+-¿”„wàäÉrÜ08ÊP"Þá"wzúÎxdXÆWÈÁ!Þ€“§ +}MbÀFÃFð‚|Â7÷vón%PÆð‚<«÷Ñܨ¯]±98Âspòñ0߆“ȘÜüá1y2ǧä$ãಾEÂS\ä_£7ÚÞ°—½±zw7$ÀÉ#é¾»7@;šcâ7Ž“„ =·‚œÜæ»wÃ@·ä_ÈÞü‚p¹3N¸ õdpƒ“GS}N–$˜t+Púá{ õÔ†íŸý~ÑÉ/TÐpÆaf4 ô ‚Àg;û÷ßwÇQ=yYýƒû‡€¢P.X!Èc¿†“`@y鳨ç=tdgön]9Ò™‹›~ýΘAAnô#9évpƒÈÞ¼‡¹‘3»7šS](‘JR ‰¨š_~>#P,tàäg‘þ%'i{K=Œ"8/€ùüøSNÍ¥ÀØd£<úwé’òm‡À!.drÁÅ0y¿Þ ( ö;äà<Û÷ï°G†ÑO«‰É*)xþI.«ºÿ“Ó$JŸ.ò@´ßî Dpu§QÆdf”Ù(c{õžªE4¶©žv)mƒ—7þæ‚åPþ$8À©èÍŸZ€[?°ÙhÒòŒ0µµSÏ\_t´*ÉôC Êa [÷/¡Rx0à"?‰dÃÞ(nC%s‚ÓsâñÎôyTwIÏekn“ƒn.²ò—é3 XNäPòû);æ&ÅâN¢ŒÉ´Àíôá‡U€Þ’y2KAˆ'[X~/S +ç»%?ÀÉ}sYÈ–`ôJËO#ÿ6%LIûÛ7¶­\@wÕ¤üÈ ]K§O°ùu|p†ŽB9±B ®“ cƒ×€”“ p˜\<¾ëËh<¾<Þ˜o]ÙôÀ§ð¬¨£ÅN¾{KÑXiùc4 pûm–t‘dæmz“ƒ6·|í}GÇœ!&pÒÎÎh£g¨lBÊ1ÀüÈÐáß4Æ\HõÌómú>ËóU §F±œÈp‘¯_Á–{ë¡%Ì÷žŠy ƒ½Èœ‰ ˜œl‰õÿâ´“C.(Yõ²PêQ,|9Ìw£ø‡`b¶ÃÏÿ¢@m„­16æt=‚9–JŸˆùò|öÜppÎ_¦"Iòóß93Ãiëð)?2ÌIÚ·¦/Šb9@ëXto c’ðiHGpÝû¡íõq dó¤¤í+ÚÍÉâ:.‰¦5 œü‹Œµl ÔìþÎPÂüÈwÞU|Åy;ù‘ ër³"VýñsúýðÐíz1@gKÙ57ÊÁYþ’Gpvãá=·äÉ¡%pnl4Lé|qÇÎ$JŸœ|Àï×L'J»ðг78áŸ$ÿù{g&ýz '!Ûô¯¦ê~àx7Èä„N~Ëf²„=†]bsLÜù‘O·4«Á(Ò¯’¶ÏýΔ›Q)\°dÛ攪¡do0?rfÿ­–¥ ” + ¨c›Ðõt,§¬ì+ð@±œÀp‘ÏÎfßÞ$Øy…Ê€’€ù‘/_¹9ûbÐöäGfè|X +_l}â8rrÂ'¿_Áj-€AŠU‡‚oiƒf~´óštØn=Û˜R¸¢û‘á]†€,Ä%‡_q"p)vÕ›ÁîàÜù‘÷înYN+y`ó#3ÀÜL¼)…£ô‰ÀÉCËØM¤Ø¦ žÓ—B&‡ßý™IÚ;õê#ü”Âã„¥ð þ ê‘×Ír)À 3 ZçGöÞ44–ÏüÈ Àô‰¢ñGHÖANŽOpr·œ÷FY±ìÉ tpà%m µ>ù£hÚÊ„èÙÆ”Âã~ò'0°Do…óN™927ààºñ K™¸C¶¿ÝÓM·R ù‘`b¹tçã_ÁV›\DÕé·±=³dŒŒ±+ƒlÒ²{«¨·6”,ØuÇ9ê<ö‘HÀƒõ‚ôö?~ÚàB&hœÜΙ{vü« z+æGð¯9Ò‚Ö…‰ÇÔÜÀå†äqÏ Z„JáÅEþe¥·ñbú3A’1ù‘áƒOõ*ÏM ãì)Å10– S >÷/•ÂŠ‹|/†Ks£<ço½1ÅbâÍíít»„ž™¸¦¦¹fççtëÐÀ2 ¸È£ÉœšPv‰}Ò²{íð—nª]J·Iù‘sÃÔ奙½ ‡#“ãœüºŒ³T ƒ S})f{cò#gž_— B6©LDé‘™€±ÜEÛS'@Q)œ[pÒÕÎ]jÒ-Sì¼_‰6C ó#C‡žê^6‹‰‹5d›8­9\Ù÷*…s Õµ×qnnÀÁU‹r@ɬ;þÃ[·-„ :cƒ0Óšc¯ÙuˆD¥pΠºõn w•€¤ØÂ=¢spî­´_ø¯ºË`+‚ d›¸½¦u<†JáA¸È‡Ã`nÀÁÝ ® %³•ö¿Ÿvä-À¸]WK8ÀRøùZ;S +GUV!prׂ€˜u‘Œ/Åcp0?rö讵±`2ïïz³+y,*…³‹|WÉm%` ö„H”ÐØNì´~a­!dl4L)\9ø,˜ÖŒœ[¸ÈƒêÀx7 8¸µgŸ1!˜¥ÀO¼tçÊ9£ªz¸Ká?ÞfŸ ÒÙ'VpŸ™t#Á.øÞT„{+í' /¥o9¨Ó#3[/ÉèA¥pVÀIb-¸$u¡ÍB. 0Ævä¡5)—`ôT­P66,…ÏÖô½|ô *…ûÕwŽÞF‘bég„jo8µÿ¾ê+À,äÊœX +Ÿ¼áµoHËù5 ¿ Xðb=-Ä%ß=þâæÊÙô}†hÈ6-ËeßüP—s¡XΨ>{ 0…·1rÃlB³7÷VÚŸïø±ùBúC:d›X +?¿àºgO‚îB±œ—P涋ÅmL=C†) +ÉàÜëŽ~КÂõVQ¢GKá—f þytŠå¼ÁE¾¯TámTd¶E8ëÁY¹?ìß^±˜­­´ƒËÍMºöÕ“$šÖì8ùqJ ½\¥02&ÌVQG_»Ó<˜26O‹G„¥Ý´‡‰åø¥ÀÉoÊX &÷9&Lz„<ôäõ9p«(dl^Káý†çÀ„/År3á"]«0^ò2ì§ü–àÜ‹Ø|°%›°Ö èÊõ?~îЛÈäÎN-¼"Å–Οƒcò#®ÿÇ¢ºýê#üKáóS¯~™69”>™êQtG` oc„„aà+C ÃûoÞ¾5oðlahé/pnixÒ ¯‚%*…O A÷^À“¹ƒ+ãc¥e‚ •áðŸnÐÑÁG ¶Òz˜iÍYÿŒJáSƒ“Ï/âÍܨ _ü÷;8wÈöñ}ô= M$°>+ÿÚgèWTQ,7ùÞÒ€ÞÆHÃn dÆÄ]ÒÞ·ye<¸¾¨Ö îR¸np7S +G&Ç€“Òx47¡L:0{ƒ[iŸxãgy‹èªrlœKás4?yx9År4.òÛ|þ“)6;0¸î8yèé it• •´¹–Âei7½ b¹aää(s;SÃOám¶šs{s¿ŽüþCëÔôEƒ{]-áà.…ßðâi„r¡ms8IôóTx#Lõ>§7²/Û ô¾l¨¤H˜Rø¼·ì¡¥±Õð[y77`p›¹+y3뎟ú릜%]!â½½¡‡„^ák¡aãßh‘„è´fªÕ¿>ŸßàF†YNpãà`Èæúâùk—ËÁ•‚oÝqÑç¤Îɽí}°'Áp(¦O\äî‹xMM2H°°Ýì;8fò™ýÿ×£¢/ƒ<ÏÀXîBÓ¯ƒå†B®>L¾~¥Ì (¯f¹Ǭ¼=´÷®š(x dl€ œ/±Üö"+¥ô‰‹üD- s£œâ(‹Jf_¶3þIþbLl[i;8ýd¡é¦½P CdZ³‹<®ˆ¹ŒÍ}lù7˜q}óDX1RŒ[i=pZóe¹›öEõ\¡>ÁÉÓ5üg&ÝH0Á†ÁÁÉZ§¯¨Š»NÝûB*¼A‚Ùf˜câÞJûÈ ‹/¡¿‚ò#A S +ŸWÏ´ÜE›>!pr»@ͺ«Ë¿<‡ƒs¯«uäÑÞ,°o=zI;¨a¤»¤ö¿÷ÑÒç´fùøE57¸7ÕtÏ1f§£ƒ÷6ŃGÑ«l¡¾,µÜñ |Ær.rOÀ·Tô–3õ[p0?rbßÝ—ƒ×òѺZ¡ËIÝ{̱—“s‘û„knÔÍiÒ€’)i±û–¢pú dl¡ËÍ©ºïí!ʉÅÍáä‘\›0¸þqöæ^WëÓÇsfPÈ’0b_Øp×[P‘Eáæpòt­ ÍP.ÿçˆÁ¹ó#oY•¶ŠB%íP†)…+*~q€VáÇr”Ûø^Ùu&$Øvf7o¸òÉ÷7›Ñ!›Àoà´æ+ ·þCÀ¥p@¸Ëu–.¼ \keXÓˆØè®<ôêMº‹è¿¢ ¥ð¹¥¿y_¥p‚Cs ™¼U"ìÑ$sÞ Ï‚›ýp‡# îˆ<b LúäÒúm<” ÆÀp°.;ÎÛøëŸ=õÝGûß{~×37μ¹ŒÉ&êžÿ¾uuø*i#¦€ÑŠÅ)…3æÜ—kÛþöŸŸí}æ¹m·ß9ØÞ^^lJŒSÍ™=KðƒI€KÚý‹B½« +²5Ä´0¥ðâÛ9)…»ƒ0×ðÙɯˆÃÃC§øè•7vlÝv]gOYVvbtô•óæOx¡T$A„Yw\w‹àw)ü×L)Üßå¦FmlxÂG'O÷ù?øè¯>r×Õ×®1®H^°èÒ‹/¹P6á–dç…Éd2©T\ ž¢’6Â#Ü¥ð•Ûßò*”#FÀÆI]çúôõ½/îØùà¦?ªª³ÄÇ/œú0i˜mläÙž3R +¿óMÚ¦ñr#ÆårM7AåÔ±cïî}å÷m߸᧫›Vê2’ÌŸò’ (…&C†@°S +_Zv׿€ÝàîXnt€8<]¢ã³÷>xö‘G~~݆Õåå9ééË_uÁø!¢Ôd~Z‰@º.]Zóèazÿ1ƒM †‡8ñýñ/¾xs×3÷þìçݵ ¹1qK]17|ö„s…‰|€ˆ@X +¿ÜúØG#¡ØÐñã_îÿðo/½òä–-m5YQ³Âg…M±£„ ÙáÌÒ£KÛïfç–ÿ½}]¿Õ\”{Õ’‹§>X"¥ LŠÆˆ„0éùyÿÎ0‰ñpsDB»9z|(1/¾ï b‚ÝÀ”JS_›Ñê´Êë‹äJCqZ3õï•V‡Ó6 /“+›Õ†§±³ÕÙÙßg¸F¡ª/-©)6*tŠ˜ë5¶fMsRs¬"Kc(NÒ4S_ >U$P‡&)Ô+mÖE <£‚úLQ>ÐÙÞÙGý±ªÕÚcƒÇeQÿÉk¦¹\~'ü]¡6Tg¤m­ým6ðÅÔ¼¾^Wc5g*còÓbµE ©¦Ä†x‡®:)µ>n %Ó¶ZפmЬ7g袲ìYí¥ÉÙzGíº¨sWö`êº.£#¥-·¤É˜¸ÒîŒ7+­¹F‹¾kmj}|¶ÙØÖ›™#W‚?Ôªkó´ñŽ¬øî¦õFCAQ]÷rCF˺öøüÚ¼ôx}A´Ý`©ëlN6ªŒ}[—M“bˆ[fLQe•©5E«•»®&;Ųܬ.]Ñ—§±9ÛŒš¢æMñÙµm%re|vç`-ø½ÃÔ¢j-È2›œêRéæ¨¾Ü +C—2·Ül27kÔʲ¾B]_ÌzuEkFV\L6Ú QçêÒÁwµæ¸Ú³>Ûj0˜#ŒÝ½Ë´5EZúÌr%}n­³Ä\bj©¶¤ç÷è{Rè¿éuæD§9¯ÄÞ3rx üáüîG^‚r0&ϤꯣþfΡ»@Ý—Ñ®Óh úó ÝÝr¥fENMݘS€î¶T4›¢Ó +ÜmI±ªûT:µ¾V©QíÊÄ +}Vow•ºÃ¶^5Ý”è{c£¨sŸ"ÓfjéÕ™ZôÊL}w­Qc¨ê‰0›2c;Õý‘ÑÓ§>¿R‘lŽ±[’)qW®6ýš´–Žµz]½®ÕPš¸"™’~Œ½Ë`´Ûûsò+•[EbZBDQníèSMºCçÚÒ(½Î‘X™ßœ‘:Ø[—š›dë2ô™cÖ£Ûsb“mù–֖ ߥ,Ïým³¡j0Q•o±™Ó’×X3@§ggT­ïµ*ò+óµéö²± ªkk§ÑæêÊ›u9…ú¬jg¤¡¬½Ð8^négÙ2R'ö ¼•§)¥UUÒŸÑ•nHoëÉÉoí.šp¸¨ù4¾$G£MªÎ ¿FŸh2§s\^m–“ê1êÈe†êÌ^ý¸²#<è·ÀtN£ÚZ–`ŽTi¦ÕmYP‰G> t ~ÔTP:ùÛ-J éÔ“Á‘ ï+¨\e¨6Z“¨êUÀ®*“–ëSSè»ÑuÔ·víÑÑË)«‹ª6Z,EI¦„þ²}v^ª’Ò±©/Ðœ˜ß•C4îöÆ0åw»#¨d«Ì*­¹]×Ñ¢n•+ Ú¢We»O1éó‚6U’eŠFÆê³V—ôkµ]UùÝ¥+Õ“ïfì!rå؃&Ü™sÍš”5«ÖGPŸF[ÀSRBŒY¯.µÄ¤kìYý-I­mÙe)«UöšÝí&¥92ͨn.6µ¨W-3”[Z’cu ž¶ÙZßm¬kðæ´IF[\e¡£'¦y’‚P'•+©ÓRBÔÕÙÚõé©å…†²Žîh½ &+Ù¸¬^Ÿ­Z–Ò¥±5e)ÊÆv}JS¶T£íÈ­œôµÉçv÷ƒ9Q®ÌNhlêN‹X»Æ©¯]Ö¸² 3R›a6%ÙSŒöJ‡][i[žM9ef×úòBJwìÙùÅ•Jà +š´•Ö"³±'9ÂhÏ,¬ÿd¨Ó÷ØRóL­QZJ“Ó”jcIAǪ|»Ù˜Ö˜¬ÑÚ£íc€¹IiÕ)-¦¬2êIUV:þ<­£ÇQ÷ÝA©}Ue—!}Õú&êk ¶‘‡#5` ” ­ÑÔ\S<¹GãÔ¦iv½U­­)_Õe´e¯¡L³³dÀÛ0S舰FŒ¹TsVS¼®sÍŠ¶üeži¬ƒÏ†5mQúVŠnPêºNc5ýlO†(ízM^1u{ëó€¿Ö÷mšê¡7íIÏ1ÿè2Ó&^žƒ«œ³-‘·ßŸ«LÿÃÿËû×cžªWr¯–>—*àq[üº< =æ +p*—àEú©€wmñõòlõعU€{¹àOúì«€mñáò¬öØ´*0¹L1˜ôYU_{̻˳/—©T °VÉ­ +xÐTÀ¯ãs4>… +ððLæLö˜—*Àº\øƒÿq¬3¶…ð§ÇQ´ØÎþ›ÂÑÑ5ø õ÷áJ¥©Ü,ÿÕ(óI endstream endobj 15 0 obj [/ICCBased 19 0 R] endobj 6 0 obj [5 0 R] endobj 32 0 obj <> endobj xref 0 33 0000000000 65535 f +0000000016 00000 n +0000000144 00000 n +0000047649 00000 n +0000000000 00000 f +0000163121 00000 n +0000593503 00000 n +0000047700 00000 n +0000048109 00000 n +0000048283 00000 n +0000163420 00000 n +0000139682 00000 n +0000163307 00000 n +0000049181 00000 n +0000048344 00000 n +0000593468 00000 n +0000048620 00000 n +0000048668 00000 n +0000139717 00000 n +0000160473 00000 n +0000163191 00000 n +0000163222 00000 n +0000163494 00000 n +0000163800 00000 n +0000165099 00000 n +0000187851 00000 n +0000253439 00000 n +0000319027 00000 n +0000384615 00000 n +0000450203 00000 n +0000515791 00000 n +0000581379 00000 n +0000593526 00000 n +trailer <]>> startxref 593722 %%EOF \ No newline at end of file diff --git a/old-ui/design/chromeStorePics/promo1400560.png b/old-ui/design/chromeStorePics/promo1400560.png new file mode 100644 index 000000000..d3637ecc8 Binary files /dev/null and b/old-ui/design/chromeStorePics/promo1400560.png differ diff --git a/old-ui/design/chromeStorePics/promo440280.png b/old-ui/design/chromeStorePics/promo440280.png new file mode 100644 index 000000000..c1f92b1c0 Binary files /dev/null and b/old-ui/design/chromeStorePics/promo440280.png differ diff --git a/old-ui/design/chromeStorePics/promo920680.png b/old-ui/design/chromeStorePics/promo920680.png new file mode 100644 index 000000000..726bd810a Binary files /dev/null and b/old-ui/design/chromeStorePics/promo920680.png differ diff --git a/old-ui/design/chromeStorePics/screen_dao_accounts.png b/old-ui/design/chromeStorePics/screen_dao_accounts.png new file mode 100644 index 000000000..1a2e8052c Binary files /dev/null and b/old-ui/design/chromeStorePics/screen_dao_accounts.png differ diff --git a/old-ui/design/chromeStorePics/screen_dao_locked.png b/old-ui/design/chromeStorePics/screen_dao_locked.png new file mode 100644 index 000000000..6592c17e4 Binary files /dev/null and b/old-ui/design/chromeStorePics/screen_dao_locked.png differ diff --git a/old-ui/design/chromeStorePics/screen_dao_notification.png b/old-ui/design/chromeStorePics/screen_dao_notification.png new file mode 100644 index 000000000..baeb2ec39 Binary files /dev/null and b/old-ui/design/chromeStorePics/screen_dao_notification.png differ diff --git a/old-ui/design/chromeStorePics/screen_wei_account.png b/old-ui/design/chromeStorePics/screen_wei_account.png new file mode 100644 index 000000000..23301e4bf Binary files /dev/null and b/old-ui/design/chromeStorePics/screen_wei_account.png differ diff --git a/old-ui/design/chromeStorePics/screen_wei_notification.png b/old-ui/design/chromeStorePics/screen_wei_notification.png new file mode 100644 index 000000000..7a763e5df Binary files /dev/null and b/old-ui/design/chromeStorePics/screen_wei_notification.png differ diff --git a/old-ui/design/metamask-logo-eyes.png b/old-ui/design/metamask-logo-eyes.png new file mode 100644 index 000000000..c29331b28 Binary files /dev/null and b/old-ui/design/metamask-logo-eyes.png differ diff --git a/old-ui/design/wireframes/1st_time_use.png b/old-ui/design/wireframes/1st_time_use.png new file mode 100644 index 000000000..c18ced5e2 Binary files /dev/null and b/old-ui/design/wireframes/1st_time_use.png differ diff --git a/old-ui/design/wireframes/metamask_wfs_jan_13.pdf b/old-ui/design/wireframes/metamask_wfs_jan_13.pdf new file mode 100644 index 000000000..c77c9274a Binary files /dev/null and b/old-ui/design/wireframes/metamask_wfs_jan_13.pdf differ diff --git a/old-ui/design/wireframes/metamask_wfs_jan_13.png b/old-ui/design/wireframes/metamask_wfs_jan_13.png new file mode 100644 index 000000000..d71d7bdb4 Binary files /dev/null and b/old-ui/design/wireframes/metamask_wfs_jan_13.png differ diff --git a/old-ui/design/wireframes/metamask_wfs_jan_18.pdf b/old-ui/design/wireframes/metamask_wfs_jan_18.pdf new file mode 100644 index 000000000..592ba8532 Binary files /dev/null and b/old-ui/design/wireframes/metamask_wfs_jan_18.pdf differ diff --git a/old-ui/example.js b/old-ui/example.js new file mode 100644 index 000000000..4627c0e9c --- /dev/null +++ b/old-ui/example.js @@ -0,0 +1,123 @@ +const injectCss = require('inject-css') +const MetaMaskUi = require('./index.js') +const MetaMaskUiCss = require('./css.js') +const EventEmitter = require('events').EventEmitter + +// account management + +var identities = { + '0x1113462427bcc9133bb46e88bcbe39cd7ef0e111': { + name: 'Walrus', + img: 'QmW6hcwYzXrNkuHrpvo58YeZvbZxUddv69ATSHY3BHpPdd', + address: '0x1113462427bcc9133bb46e88bcbe39cd7ef0e111', + balance: 220, + txCount: 4, + }, + '0x222462427bcc9133bb46e88bcbe39cd7ef0e7222': { + name: 'Tardus', + img: 'QmQYaRdrf2EhRhJWaHnts8Meu1mZiXrNib5W1P6cYmXWRL', + address: '0x222462427bcc9133bb46e88bcbe39cd7ef0e7222', + balance: 10.005, + txCount: 16, + }, + '0x333462427bcc9133bb46e88bcbe39cd7ef0e7333': { + name: 'Gambler', + img: 'QmW6hcwYzXrNkuHrpvo58YeZvbZxUddv69ATSHY3BHpPdd', + address: '0x333462427bcc9133bb46e88bcbe39cd7ef0e7333', + balance: 0.000001, + txCount: 1, + }, +} + +var unapprovedTxs = {} +addUnconfTx({ + from: '0x222462427bcc9133bb46e88bcbe39cd7ef0e7222', + to: '0x1113462427bcc9133bb46e88bcbe39cd7ef0e111', + value: '0x123', +}) +addUnconfTx({ + from: '0x1113462427bcc9133bb46e88bcbe39cd7ef0e111', + to: '0x333462427bcc9133bb46e88bcbe39cd7ef0e7333', + value: '0x0000', + data: '0x000462427bcc9133bb46e88bcbe39cd7ef0e7000', +}) + +function addUnconfTx (txParams) { + var time = (new Date()).getTime() + var id = createRandomId() + unapprovedTxs[id] = { + id: id, + txParams: txParams, + time: time, + } +} + +var isUnlocked = false +var selectedAccount = null + +function getState () { + return { + isUnlocked: isUnlocked, + identities: isUnlocked ? identities : {}, + unapprovedTxs: isUnlocked ? unapprovedTxs : {}, + selectedAccount: selectedAccount, + } +} + +var accountManager = new EventEmitter() + +accountManager.getState = function (cb) { + cb(null, getState()) +} + +accountManager.setLocked = function () { + isUnlocked = false + this._didUpdate() +} + +accountManager.submitPassword = function (password, cb) { + if (password === 'test') { + isUnlocked = true + cb(null, getState()) + this._didUpdate() + } else { + cb(new Error('Bad password -- try "test"')) + } +} + +accountManager.setSelectedAccount = function (address, cb) { + selectedAccount = address + cb(null, getState()) + this._didUpdate() +} + +accountManager.signTransaction = function (txParams, cb) { + alert('signing tx....') +} + +accountManager._didUpdate = function () { + this.emit('update', getState()) +} + +// start app + +var container = document.getElementById('app-content') + +var css = MetaMaskUiCss() +injectCss(css) + +MetaMaskUi({ + container: container, + accountManager: accountManager, +}) + +// util + +function createRandomId () { + // 13 time digits + var datePart = new Date().getTime() * Math.pow(10, 3) + // 3 random digits + var extraPart = Math.floor(Math.random() * Math.pow(10, 3)) + // 16 digits + return datePart + extraPart +} diff --git a/old-ui/lib/contract-namer.js b/old-ui/lib/contract-namer.js new file mode 100644 index 000000000..f05e770cc --- /dev/null +++ b/old-ui/lib/contract-namer.js @@ -0,0 +1,33 @@ +/* CONTRACT NAMER + * + * Takes an address, + * Returns a nicname if we have one stored, + * otherwise returns null. + */ + +const contractMap = require('eth-contract-metadata') +const ethUtil = require('ethereumjs-util') + +module.exports = function (addr, identities = {}) { + const checksummed = ethUtil.toChecksumAddress(addr) + if (contractMap[checksummed] && contractMap[checksummed].name) { + return contractMap[checksummed].name + } + + const address = addr.toLowerCase() + const ids = hashFromIdentities(identities) + return addrFromHash(address, ids) +} + +function hashFromIdentities (identities) { + const result = {} + for (const key in identities) { + result[key] = identities[key].name + } + return result +} + +function addrFromHash (addr, hash) { + const address = addr.toLowerCase() + return hash[address] || null +} diff --git a/old-ui/lib/etherscan-prefix-for-network.js b/old-ui/lib/etherscan-prefix-for-network.js new file mode 100644 index 000000000..2c1904f1c --- /dev/null +++ b/old-ui/lib/etherscan-prefix-for-network.js @@ -0,0 +1,21 @@ +module.exports = function (network) { + const net = parseInt(network) + let prefix + switch (net) { + case 1: // main net + prefix = '' + break + case 3: // ropsten test net + prefix = 'ropsten.' + break + case 4: // rinkeby test net + prefix = 'rinkeby.' + break + case 42: // kovan test net + prefix = 'kovan.' + break + default: + prefix = '' + } + return prefix +} diff --git a/old-ui/lib/icon-factory.js b/old-ui/lib/icon-factory.js new file mode 100644 index 000000000..27a74de66 --- /dev/null +++ b/old-ui/lib/icon-factory.js @@ -0,0 +1,65 @@ +var iconFactory +const isValidAddress = require('ethereumjs-util').isValidAddress +const toChecksumAddress = require('ethereumjs-util').toChecksumAddress +const contractMap = require('eth-contract-metadata') + +module.exports = function (jazzicon) { + if (!iconFactory) { + iconFactory = new IconFactory(jazzicon) + } + return iconFactory +} + +function IconFactory (jazzicon) { + this.jazzicon = jazzicon + this.cache = {} +} + +IconFactory.prototype.iconForAddress = function (address, diameter) { + const addr = toChecksumAddress(address) + if (iconExistsFor(addr)) { + return imageElFor(addr) + } + + return this.generateIdenticonSvg(address, diameter) +} + +// returns svg dom element +IconFactory.prototype.generateIdenticonSvg = function (address, diameter) { + var cacheId = `${address}:${diameter}` + // check cache, lazily generate and populate cache + var identicon = this.cache[cacheId] || (this.cache[cacheId] = this.generateNewIdenticon(address, diameter)) + // create a clean copy so you can modify it + var cleanCopy = identicon.cloneNode(true) + return cleanCopy +} + +// creates a new identicon +IconFactory.prototype.generateNewIdenticon = function (address, diameter) { + var numericRepresentation = jsNumberForAddress(address) + var identicon = this.jazzicon(diameter, numericRepresentation) + return identicon +} + +// util + +function iconExistsFor (address) { + return contractMap[address] && isValidAddress(address) && contractMap[address].logo +} + +function imageElFor (address) { + const contract = contractMap[address] + const fileName = contract.logo + const path = `images/contract/${fileName}` + const img = document.createElement('img') + img.src = path + img.style.width = '75%' + return img +} + +function jsNumberForAddress (address) { + var addr = address.slice(2, 10) + var seed = parseInt(addr, 16) + return seed +} + diff --git a/old-ui/lib/lost-accounts-notice.js b/old-ui/lib/lost-accounts-notice.js new file mode 100644 index 000000000..948b13db6 --- /dev/null +++ b/old-ui/lib/lost-accounts-notice.js @@ -0,0 +1,23 @@ +const summary = require('../app/util').addressSummary + +module.exports = function (lostAccounts) { + return { + date: new Date().toDateString(), + title: 'Account Problem Caught', + body: `MetaMask has fixed a bug where some accounts were previously mis-generated. This was a rare issue, but you were affected! + +We have successfully imported the accounts that were mis-generated, but they will no longer be recovered with your normal seed phrase. + +We have marked the affected accounts as "Loose", and recommend you transfer ether and tokens away from those accounts, or export & back them up elsewhere. + +Your affected accounts are: +${lostAccounts.map(acct => ` - ${summary(acct)}`).join('\n')} + +These accounts have been marked as "Loose" so they will be easy to recognize in the account list. + +For more information, please read [our blog post.][1] + +[1]: https://medium.com/metamask/metamask-3-migration-guide-914b79533cdd#.7d8ktj4h3 + `, + } +} diff --git a/old-ui/lib/persistent-form.js b/old-ui/lib/persistent-form.js new file mode 100644 index 000000000..d4dc20b03 --- /dev/null +++ b/old-ui/lib/persistent-form.js @@ -0,0 +1,61 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const defaultKey = 'persistent-form-default' +const eventName = 'keyup' + +module.exports = PersistentForm + +function PersistentForm () { + Component.call(this) +} + +inherits(PersistentForm, Component) + +PersistentForm.prototype.componentDidMount = function () { + const fields = document.querySelectorAll('[data-persistent-formid]') + const store = this.getPersistentStore() + + for (var i = 0; i < fields.length; i++) { + const field = fields[i] + const key = field.getAttribute('data-persistent-formid') + const cached = store[key] + if (cached !== undefined) { + field.value = cached + } + + field.addEventListener(eventName, this.persistentFieldDidUpdate.bind(this)) + } +} + +PersistentForm.prototype.getPersistentStore = function () { + let store = window.localStorage[this.persistentFormParentId || defaultKey] + if (store && store !== 'null') { + store = JSON.parse(store) + } else { + store = {} + } + return store +} + +PersistentForm.prototype.setPersistentStore = function (newStore) { + window.localStorage[this.persistentFormParentId || defaultKey] = JSON.stringify(newStore) +} + +PersistentForm.prototype.persistentFieldDidUpdate = function (event) { + const field = event.target + const store = this.getPersistentStore() + const key = field.getAttribute('data-persistent-formid') + const val = field.value + store[key] = val + this.setPersistentStore(store) +} + +PersistentForm.prototype.componentWillUnmount = function () { + const fields = document.querySelectorAll('[data-persistent-formid]') + for (var i = 0; i < fields.length; i++) { + const field = fields[i] + field.removeEventListener(eventName, this.persistentFieldDidUpdate.bind(this)) + } + this.setPersistentStore({}) +} + diff --git a/old-ui/lib/tx-helper.js b/old-ui/lib/tx-helper.js new file mode 100644 index 000000000..de3f00d2d --- /dev/null +++ b/old-ui/lib/tx-helper.js @@ -0,0 +1,27 @@ +const valuesFor = require('../app/util').valuesFor + +module.exports = function (unapprovedTxs, unapprovedMsgs, personalMsgs, typedMessages, network) { + log.debug('tx-helper called with params:') + log.debug({ unapprovedTxs, unapprovedMsgs, personalMsgs, typedMessages, network }) + + const txValues = network ? valuesFor(unapprovedTxs).filter(txMeta => txMeta.metamaskNetworkId === network) : valuesFor(unapprovedTxs) + log.debug(`tx helper found ${txValues.length} unapproved txs`) + + const msgValues = valuesFor(unapprovedMsgs) + log.debug(`tx helper found ${msgValues.length} unsigned messages`) + let allValues = txValues.concat(msgValues) + + const personalValues = valuesFor(personalMsgs) + log.debug(`tx helper found ${personalValues.length} unsigned personal messages`) + allValues = allValues.concat(personalValues) + + const typedValues = valuesFor(typedMessages) + log.debug(`tx helper found ${typedValues.length} unsigned typed messages`) + allValues = allValues.concat(typedValues) + + allValues = allValues.sort((a, b) => { + return a.time > b.time + }) + + return allValues +} diff --git a/package.json b/package.json index fae0881b8..1b68c9716 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "dist": "npm run dist:clear && npm install && gulp dist", "dist:clear": "rm -rf node_modules/eth-contract-metadata && rm -rf node_modules/eth-phishing-detect", "test": "npm run lint && npm run test:coverage && npm run test:integration", - "test:unit": "METAMASK_ENV=test mocha --compilers js:babel-core/register --require test/helper.js --recursive \"test/unit/**/*.js\"", + "test:unit": "METAMASK_ENV=test mocha --exit --compilers js:babel-core/register --require test/helper.js --recursive \"test/unit/**/*.js\"", "test:single": "METAMASK_ENV=test mocha --require test/helper.js", "test:integration": "gulp build:scss && npm run test:flat && npm run test:mascara", "test:coverage": "nyc npm run test:unit && npm run test:coveralls-upload", @@ -52,11 +52,11 @@ ] }, "dependencies": { - "abi-decoder": "^1.0.8", + "abi-decoder": "^1.0.9", "async": "^2.5.0", "await-semaphore": "^0.1.1", "babel-runtime": "^6.23.0", - "bignumber.js": "^4.0.4", + "bignumber.js": "^4.1.0", "bip39": "^2.2.0", "bluebird": "^3.5.0", "bn.js": "^4.11.7", @@ -77,9 +77,10 @@ "eslint-plugin-react": "^7.4.0", "eth-bin-to-ops": "^1.0.1", "eth-block-tracker": "^2.2.0", - "eth-hd-keyring": "^1.2.1", "eth-contract-metadata": "^1.1.5", + "eth-hd-keyring": "^1.2.1", "eth-json-rpc-filters": "^1.2.4", + "eth-json-rpc-infura": "^1.0.2", "eth-keyring-controller": "^2.1.2", "eth-phishing-detect": "^1.1.4", "eth-query": "^2.1.2", @@ -94,15 +95,15 @@ "ethjs": "^0.2.8", "ethjs-contract": "^0.1.9", "ethjs-ens": "^2.0.0", - "ethjs-query": "^0.2.9", + "ethjs-query": "^0.3.1", "express": "^4.15.5", "extension-link-enabler": "^1.0.0", "extensionizer": "^1.0.0", "fast-json-patch": "^2.0.4", "fast-levenshtein": "^2.0.6", - "fuse.js": "^3.1.0", - "gulp": "github:gulpjs/gulp#4.0", + "fuse.js": "^3.2.0", "gulp-autoprefixer": "^4.0.0", + "gulp": "github:gulpjs/gulp#4.0", "gulp-eslint": "^4.0.0", "gulp-sass": "^3.1.0", "hat": "0.0.3", @@ -118,6 +119,7 @@ "lodash.debounce": "^4.0.8", "lodash.memoize": "^4.1.2", "lodash.shuffle": "^4.2.0", + "lodash.uniqby": "^4.7.0", "loglevel": "^1.4.1", "metamascara": "^1.3.1", "metamask-logo": "^2.1.2", @@ -126,7 +128,7 @@ "multiplex": "^6.7.0", "number-to-bn": "^1.7.0", "obj-multiplex": "^1.0.0", - "obs-store": "^2.3.1", + "obs-store": "^3.0.0", "once": "^1.3.3", "ping-pong-stream": "^1.0.0", "pojo-migrator": "^2.1.0", @@ -138,18 +140,19 @@ "pumpify": "^1.3.4", "qrcode-npm": "0.0.3", "ramda": "^0.24.1", - "react": "^15.0.2", + "react": "^15.6.2", "react-addons-css-transition-group": "^15.6.0", - "react-dom": "^15.5.4", + "react-dom": "^15.6.2", "react-hyperscript": "^3.0.0", - "react-markdown": "^2.3.0", + "react-markdown": "^3.0.0", "react-redux": "^5.0.5", - "react-select": "^1.0.0-rc.2", + "react-select": "^1.0.0", "react-simple-file-input": "^2.0.0", + "react-toggle-button": "^2.2.0", "react-tooltip-component": "^0.3.0", - "react-transition-group": "^2.2.0", - "reactify": "^1.1.1", + "react-transition-group": "^2.2.1", "react-trigger-change": "^1.0.2", + "reactify": "^1.1.1", "readable-stream": "^2.3.3", "recompose": "^0.25.0", "redux": "^3.0.5", @@ -159,13 +162,14 @@ "sandwich-expando": "^1.1.3", "semaphore": "^1.0.5", "shallow-copy": "0.0.1", + "semver": "^5.4.1", "sw-stream": "^2.0.0", "textarea-caret": "^3.0.1", "through2": "^2.0.3", "valid-url": "^1.0.9", "vreme": "^3.0.2", "web3": "^0.20.1", - "web3-provider-engine": "^13.3.2", + "web3-provider-engine": "^13.4.0", "web3-stream-provider": "^3.0.1", "xtend": "^4.0.1" }, @@ -178,7 +182,7 @@ "babel-preset-react": "^6.24.1", "babel-preset-stage-0": "^6.24.1", "babel-register": "^6.7.2", - "babelify": "^7.2.0", + "babelify": "^8.0.0", "beefy": "^2.1.5", "brfs": "^1.4.3", "browserify": "^14.4.0", @@ -187,7 +191,8 @@ "deep-freeze-strict": "^1.1.1", "del": "^3.0.0", "envify": "^4.0.0", - "enzyme": "^2.8.2", + "enzyme": "^3.2.0", + "enzyme-adapter-react-15": "^1.0.5", "eslint-plugin-chai": "0.0.1", "eslint-plugin-mocha": "^4.9.0", "eslint-plugin-react": "^7.4.0", @@ -223,9 +228,9 @@ "open": "0.0.5", "prompt": "^1.0.0", "qs": "^6.2.0", - "qunit": "^1.0.0", + "qunitjs": "^2.4.1", "react-addons-test-utils": "^15.5.1", - "react-test-renderer": "^15.5.4", + "react-test-renderer": "^15.6.2", "react-testutils-additions": "^15.2.0", "redux-test-utils": "^0.1.3", "sinon": "^4.0.0", diff --git a/test/base.conf.js b/test/base.conf.js index 122392822..82b9d8eec 100644 --- a/test/base.conf.js +++ b/test/base.conf.js @@ -54,6 +54,8 @@ module.exports = function(config) { // Concurrency level // how many browser should be started simultaneous - concurrency: Infinity + concurrency: 1, + + nocache: true, } } diff --git a/test/helper.js b/test/helper.js index 1c5934a89..a3abbebf2 100644 --- a/test/helper.js +++ b/test/helper.js @@ -1,3 +1,7 @@ +import Enzyme from 'enzyme' +import Adapter from 'enzyme-adapter-react-15' + +Enzyme.configure({ adapter: new Adapter() }) // disallow promises from swallowing errors enableFailureOnUnhandledPromiseRejection() diff --git a/test/integration/lib/mascara-first-time.js b/test/integration/lib/mascara-first-time.js index 398ecea0e..515c7f383 100644 --- a/test/integration/lib/mascara-first-time.js +++ b/test/integration/lib/mascara-first-time.js @@ -6,23 +6,7 @@ async function runFirstTimeUsageTest (assert, done) { const app = $('#app-content') - // recurse notices - while (true) { - const button = app.find('button') - if (button.html() === 'Accept') { - // still notices to accept - const termsPage = app.find('.markdown')[0] - termsPage.scrollTop = termsPage.scrollHeight - await timeout() - console.log('Clearing notice') - button.click() - await timeout() - } else { - // exit loop - console.log('No more notices...') - break - } - } + await skipNotices(app) await timeout() @@ -51,28 +35,13 @@ async function runFirstTimeUsageTest (assert, done) { assert.equal(created.textContent, 'Your unique account image', 'unique image screen') // Agree button - const button = app.find('button')[0] + let button = app.find('button')[0] assert.ok(button, 'button present') button.click() await timeout(1000) - // Privacy Screen - const detail = app.find('.tou__title')[0] - assert.equal(detail.textContent, 'Privacy Notice', 'privacy notice screen') - app.find('button').click() - - await timeout(1000) - - - // terms of service screen - const tou = app.find('.tou__title')[0] - assert.equal(tou.textContent, 'Terms of Use', 'terms of use screen') - app.find('.tou__body').scrollTop(100000) - await timeout(1000) - - app.find('.first-time-flow__button').click() - await timeout(1000) + await skipNotices(app) // secret backup phrase const seedTitle = app.find('.backup-phrase__title')[0] @@ -156,4 +125,24 @@ function timeout (time) { return new Promise((resolve, reject) => { setTimeout(resolve, time || 1500) }) -} \ No newline at end of file +} + +async function skipNotices (app) { + while (true) { + const button = app.find('button') + if (button && button.html() === 'Accept') { + // still notices to accept + const termsPage = app.find('.markdown')[0] + if (!termsPage) { + break + } + termsPage.scrollTop = termsPage.scrollHeight + await timeout() + button.click() + await timeout() + } else { + console.log('No more notices...') + break + } + } +} diff --git a/test/lib/shallow-with-store.js b/test/lib/shallow-with-store.js index 411aa0455..2a66adb17 100644 --- a/test/lib/shallow-with-store.js +++ b/test/lib/shallow-with-store.js @@ -1,11 +1,16 @@ -const shallow = require('enzyme').shallow +const { shallow, mount } = require('enzyme') -module.exports = shallowWithStore - -function shallowWithStore (component, store) { +exports.shallowWithStore = function shallowWithStore (component, store) { const context = { store, } return shallow(component, { context }) -}; +} + +exports.mountWithStore = function mountWithStore (component, store) { + const context = { + store, + } + return mount(component, { context }) +} diff --git a/test/unit/actions/tx_test.js b/test/unit/actions/tx_test.js index ea6dfda6a..b6a691860 100644 --- a/test/unit/actions/tx_test.js +++ b/test/unit/actions/tx_test.js @@ -51,9 +51,8 @@ describe('tx confirmation screen', function () { actions.cancelTx({value: firstTxId})((action) => { result = reducers(initialState, action) - done() }) - + done() }) it('should transition to the account detail view', function () { diff --git a/test/unit/components/balance-component-test.js b/test/unit/components/balance-component-test.js index a5fededc8..9b1e82acf 100644 --- a/test/unit/components/balance-component-test.js +++ b/test/unit/components/balance-component-test.js @@ -1,7 +1,7 @@ const assert = require('assert') const h = require('react-hyperscript') const { createMockStore } = require('redux-test-utils') -const shallowWithStore = require('../../lib/shallow-with-store') +const { shallowWithStore } = require('../../lib/shallow-with-store') const BalanceComponent = require('../../../ui/app/components/balance-component') const mockState = { metamask: { diff --git a/test/unit/components/pending-tx-test.js b/test/unit/components/pending-tx-test.js index 97cac3216..c6c588e1c 100644 --- a/test/unit/components/pending-tx-test.js +++ b/test/unit/components/pending-tx-test.js @@ -4,7 +4,7 @@ const PendingTx = require('../../../ui/app/components/pending-tx') const ethUtil = require('ethereumjs-util') const { createMockStore } = require('redux-test-utils') -const shallowWithStore = require('../../lib/shallow-with-store') +const { shallowWithStore } = require('../../lib/shallow-with-store') const identities = { abc: {}, def: {} } const mockState = { diff --git a/test/unit/metamask-controller-test.js b/test/unit/metamask-controller-test.js index ef6cae758..fd420a70f 100644 --- a/test/unit/metamask-controller-test.js +++ b/test/unit/metamask-controller-test.js @@ -11,6 +11,15 @@ describe('MetaMaskController', function () { unlockAccountMessage: noop, showUnapprovedTx: noop, platform: {}, + encryptor: { + encrypt: function(password, object) { + this.object = object + return Promise.resolve() + }, + decrypt: function () { + return Promise.resolve(this.object) + } + }, // initial state initState: clone(firstTimeState), }) @@ -27,6 +36,30 @@ describe('MetaMaskController', function () { describe('Metamask Controller', function () { assert(metamaskController) + + beforeEach(function () { + sinon.spy(metamaskController.keyringController, 'createNewVaultAndKeychain') + }) + + afterEach(function () { + metamaskController.keyringController.createNewVaultAndKeychain.restore() + }) + + describe('#createNewVaultAndKeychain', function () { + it('can only create new vault on keyringController once', async function () { + + const selectStub = sinon.stub(metamaskController, 'selectFirstIdentity') + + const password = 'a-fake-password' + + const first = await metamaskController.createNewVaultAndKeychain(password) + const second = await metamaskController.createNewVaultAndKeychain(password) + + assert(metamaskController.keyringController.createNewVaultAndKeychain.calledOnce) + + selectStub.reset() + }) + }) }) }) diff --git a/test/unit/pending-tx-test.js b/test/unit/pending-tx-test.js index 32117a194..961fa6baf 100644 --- a/test/unit/pending-tx-test.js +++ b/test/unit/pending-tx-test.js @@ -207,6 +207,7 @@ describe('PendingTransactionTracker', function () { }) describe('#resubmitPendingTxs', function () { + const blockStub = { number: '0x0' }; beforeEach(function () { const txMeta2 = txMeta3 = txMeta txList = [txMeta, txMeta2, txMeta3].map((tx) => { @@ -224,7 +225,7 @@ describe('PendingTransactionTracker', function () { Promise.all(txList.map((tx) => tx.processed)) .then((txCompletedList) => done()) .catch(done) - pendingTxTracker.resubmitPendingTxs() + pendingTxTracker.resubmitPendingTxs(blockStub) }) it('should not emit \'tx:failed\' if the txMeta throws a known txError', function (done) { knownErrors =[ @@ -251,7 +252,7 @@ describe('PendingTransactionTracker', function () { .then((txCompletedList) => done()) .catch(done) - pendingTxTracker.resubmitPendingTxs() + pendingTxTracker.resubmitPendingTxs(blockStub) }) it('should emit \'tx:warning\' if it encountered a real error', function (done) { pendingTxTracker.once('tx:warning', (txMeta, err) => { @@ -269,28 +270,74 @@ describe('PendingTransactionTracker', function () { .then((txCompletedList) => done()) .catch(done) - pendingTxTracker.resubmitPendingTxs() + pendingTxTracker.resubmitPendingTxs(blockStub) }) }) describe('#_resubmitTx', function () { - it('should publishing the transaction', function (done) { - const enoughBalance = '0x100000' - pendingTxTracker.getBalance = (address) => { - assert.equal(address, txMeta.txParams.from, 'Should pass the address') - return enoughBalance - } - pendingTxTracker.publishTransaction = async (rawTx) => { - assert.equal(rawTx, txMeta.rawTx, 'Should pass the rawTx') - } + const mockFirstRetryBlockNumber = '0x1' + let txMetaToTestExponentialBackoff - // Stubbing out current account state: - // Adding the fake tx: - pendingTxTracker._resubmitTx(txMeta) - .then(() => done()) - .catch((err) => { - assert.ifError(err, 'should not throw an error') - done(err) + beforeEach(() => { + pendingTxTracker.getBalance = (address) => { + assert.equal(address, txMeta.txParams.from, 'Should pass the address') + return enoughBalance + } + pendingTxTracker.publishTransaction = async (rawTx) => { + assert.equal(rawTx, txMeta.rawTx, 'Should pass the rawTx') + } + sinon.spy(pendingTxTracker, 'publishTransaction') + + txMetaToTestExponentialBackoff = Object.assign({}, txMeta, { + retryCount: 4, + firstRetryBlockNumber: mockFirstRetryBlockNumber, + }) + }) + + afterEach(() => { + pendingTxTracker.publishTransaction.reset() + }) + + it('should publish the transaction', function (done) { + const enoughBalance = '0x100000' + + // Stubbing out current account state: + // Adding the fake tx: + pendingTxTracker._resubmitTx(txMeta) + .then(() => done()) + .catch((err) => { + assert.ifError(err, 'should not throw an error') + done(err) + }) + + assert.equal(pendingTxTracker.publishTransaction.callCount, 1, 'Should call publish transaction') + }) + + it('should not publish the transaction if the limit of retries has been exceeded', function (done) { + const enoughBalance = '0x100000' + const mockLatestBlockNumber = '0x5' + + pendingTxTracker._resubmitTx(txMetaToTestExponentialBackoff, mockLatestBlockNumber) + .then(() => done()) + .catch((err) => { + assert.ifError(err, 'should not throw an error') + done(err) + }) + + assert.equal(pendingTxTracker.publishTransaction.callCount, 0, 'Should NOT call publish transaction') + }) + + it('should publish the transaction if the number of blocks since last retry exceeds the last set limit', function (done) { + const enoughBalance = '0x100000' + const mockLatestBlockNumber = '0x11' + + pendingTxTracker._resubmitTx(txMetaToTestExponentialBackoff, mockLatestBlockNumber) + .then(() => done()) + .catch((err) => { + assert.ifError(err, 'should not throw an error') + done(err) + }) + + assert.equal(pendingTxTracker.publishTransaction.callCount, 1, 'Should call publish transaction') }) - }) }) }) diff --git a/test/unit/preferences-controller-test.js b/test/unit/preferences-controller-test.js new file mode 100644 index 000000000..9fb5e4251 --- /dev/null +++ b/test/unit/preferences-controller-test.js @@ -0,0 +1,48 @@ +const assert = require('assert') +const PreferencesController = require('../../app/scripts/controllers/preferences') + +describe('preferences controller', function () { + let preferencesController + + before(() => { + preferencesController = new PreferencesController() + }) + + describe('addToken', function () { + it('should add that token to its state', async function () { + const address = '0xabcdef1234567' + const symbol = 'ABBR' + const decimals = 5 + + await preferencesController.addToken(address, symbol, decimals) + + const tokens = preferencesController.getTokens() + assert.equal(tokens.length, 1, 'one token added') + + const added = tokens[0] + assert.equal(added.address, address, 'set address correctly') + assert.equal(added.symbol, symbol, 'set symbol correctly') + assert.equal(added.decimals, decimals, 'set decimals correctly') + }) + + it('should allow updating a token value', async function () { + const address = '0xabcdef1234567' + const symbol = 'ABBR' + const decimals = 5 + + await preferencesController.addToken(address, symbol, decimals) + + const newDecimals = 6 + await preferencesController.addToken(address, symbol, newDecimals) + + const tokens = preferencesController.getTokens() + assert.equal(tokens.length, 1, 'one token added') + + const added = tokens[0] + assert.equal(added.address, address, 'set address correctly') + assert.equal(added.symbol, symbol, 'set symbol correctly') + assert.equal(added.decimals, newDecimals, 'updated decimals correctly') + }) + }) +}) + diff --git a/test/unit/responsive/components/dropdown-test.js b/test/unit/responsive/components/dropdown-test.js index 932b6c752..982d8c6ec 100644 --- a/test/unit/responsive/components/dropdown-test.js +++ b/test/unit/responsive/components/dropdown-test.js @@ -6,7 +6,7 @@ const path = require('path'); const Dropdown = require(path.join(__dirname, '..', '..', '..', '..', 'ui', 'app', 'components', 'dropdowns', 'index.js')).Dropdown; const { createMockStore } = require('redux-test-utils') -const shallowWithStore = require('../../../lib/shallow-with-store') +const { mountWithStore } = require('../../../lib/shallow-with-store') const mockState = { metamask: { @@ -39,7 +39,7 @@ describe('Dropdown components', function () { onClick = sinon.spy(); store = createMockStore(mockState) - component = shallowWithStore(h( + component = mountWithStore(h( Dropdown, dropdownComponentProps, [ @@ -57,7 +57,7 @@ describe('Dropdown components', function () { }, 'Item 2'), ] ), store) - dropdownComponent = component.dive() + dropdownComponent = component }) it('can render two items', function () { diff --git a/ui/app/actions.js b/ui/app/actions.js index 2ca62c41f..bd3aab45a 100644 --- a/ui/app/actions.js +++ b/ui/app/actions.js @@ -125,6 +125,7 @@ var actions = { sendTx: sendTx, signTx: signTx, signTokenTx: signTokenTx, + updateTransaction, updateAndApproveTx, cancelTx: cancelTx, completedTx: completedTx, @@ -149,6 +150,7 @@ var actions = { UPDATE_SEND_AMOUNT: 'UPDATE_SEND_AMOUNT', UPDATE_SEND_MEMO: 'UPDATE_SEND_MEMO', UPDATE_SEND_ERRORS: 'UPDATE_SEND_ERRORS', + UPDATE_MAX_MODE: 'UPDATE_MAX_MODE', UPDATE_SEND: 'UPDATE_SEND', CLEAR_SEND: 'CLEAR_SEND', updateGasLimit, @@ -160,6 +162,7 @@ var actions = { updateSendAmount, updateSendMemo, updateSendErrors, + setMaxModeTo, updateSend, clearSend, setSelectedAddress, @@ -234,6 +237,21 @@ var actions = { toggleAccountMenu, useEtherscanProvider, + + SET_USE_BLOCKIE: 'SET_USE_BLOCKIE', + setUseBlockie, + + // Feature Flags + setFeatureFlag, + updateFeatureFlags, + UPDATE_FEATURE_FLAGS: 'UPDATE_FEATURE_FLAGS', + + // Network + setNetworkEndpoints, + updateNetworkEndpointType, + UPDATE_NETWORK_ENDPOINT_TYPE: 'UPDATE_NETWORK_ENDPOINT_TYPE', + + retryTransaction, } module.exports = actions @@ -634,6 +652,13 @@ function updateSendErrors (error) { } } +function setMaxModeTo (bool) { + return { + type: actions.UPDATE_MAX_MODE, + value: bool, + } +} + function updateSend (newSend) { return { type: actions.UPDATE_SEND, @@ -675,6 +700,23 @@ function signTokenTx (tokenAddress, toAddress, amount, txData) { } } +function updateTransaction (txData) { + log.info('actions: updateTx: ' + JSON.stringify(txData)) + return (dispatch) => { + log.debug(`actions calling background.updateTx`) + background.updateTransaction(txData, (err) => { + dispatch(actions.hideLoadingIndication()) + dispatch(actions.updateTransactionParams(txData.id, txData.txParams)) + if (err) { + dispatch(actions.txError(err)) + dispatch(actions.goHome()) + return log.error(err.message) + } + dispatch(actions.showConfTxPage({ id: txData.id })) + }) + } +} + function updateAndApproveTx (txData) { log.info('actions: updateAndApproveTx: ' + JSON.stringify(txData)) return (dispatch) => { @@ -737,6 +779,7 @@ function cancelTx (txData) { return (dispatch) => { log.debug(`background.cancelTransaction`) background.cancelTransaction(txData.id, () => { + dispatch(actions.clearSend()) dispatch(actions.completedTx(txData.id)) }) } @@ -985,9 +1028,10 @@ function showConfigPage (transitionForward = true) { } } -function showAddTokenPage () { +function showAddTokenPage (transitionForward = true) { return { type: actions.SHOW_ADD_TOKEN_PAGE, + value: transitionForward, } } @@ -1101,6 +1145,19 @@ function markAccountsFound () { return callBackgroundThenUpdate(background.markAccountsFound) } +function retryTransaction (txId) { + log.debug(`background.retryTransaction`) + return (dispatch) => { + background.retryTransaction(txId, (err, newState) => { + if (err) { + return dispatch(actions.displayWarning(err.message)) + } + dispatch(actions.updateMetamaskState(newState)) + dispatch(actions.viewPendingTx(txId)) + }) + } +} + // // config // @@ -1269,7 +1326,8 @@ function exportAccount (password, address) { return reject(err) } - dispatch(self.exportAccountComplete()) + // dispatch(self.exportAccountComplete()) + dispatch(self.showPrivateKey(result)) return resolve(result) }) @@ -1444,10 +1502,11 @@ function reshowQrCode (data, coin) { ] dispatch(actions.hideLoadingIndication()) - return dispatch(actions.showModal({ - name: 'SHAPESHIFT_DEPOSIT_TX', - Qr: { data, message }, - })) + return dispatch(actions.showQrView(data, message)) + // return dispatch(actions.showModal({ + // name: 'SHAPESHIFT_DEPOSIT_TX', + // Qr: { data, message }, + // })) }) } } @@ -1503,6 +1562,31 @@ function updateTokenExchangeRate (token = '') { } } +function setFeatureFlag (feature, activated, notificationType) { + return (dispatch) => { + dispatch(actions.showLoadingIndication()) + return new Promise((resolve, reject) => { + background.setFeatureFlag(feature, activated, (err, updatedFeatureFlags) => { + dispatch(actions.hideLoadingIndication()) + if (err) { + dispatch(actions.displayWarning(err.message)) + return reject(err) + } + dispatch(actions.updateFeatureFlags(updatedFeatureFlags)) + notificationType && dispatch(actions.showModal({ name: notificationType })) + resolve(updatedFeatureFlags) + }) + }) + } +} + +function updateFeatureFlags (updatedFeatureFlags) { + return { + type: actions.UPDATE_FEATURE_FLAGS, + value: updatedFeatureFlags, + } +} + // Call Background Then Update // // A function generator for a common pattern wherein: @@ -1550,3 +1634,44 @@ function toggleAccountMenu () { type: actions.TOGGLE_ACCOUNT_MENU, } } + +function setUseBlockie (val) { + return (dispatch) => { + dispatch(actions.showLoadingIndication()) + log.debug(`background.setUseBlockie`) + background.setUseBlockie(val, (err) => { + dispatch(actions.hideLoadingIndication()) + if (err) { + return dispatch(actions.displayWarning(err.message)) + } + }) + dispatch({ + type: actions.SET_USE_BLOCKIE, + value: val, + }) + } +} + +function setNetworkEndpoints (networkEndpointType) { + return dispatch => { + log.debug('background.setNetworkEndpoints') + return new Promise((resolve, reject) => { + background.setNetworkEndpoints(networkEndpointType, err => { + if (err) { + dispatch(actions.displayWarning(err.message)) + return reject(err) + } + + dispatch(actions.updateNetworkEndpointType(networkEndpointType)) + resolve(networkEndpointType) + }) + }) + } +} + +function updateNetworkEndpointType (networkEndpointType) { + return { + type: actions.UPDATE_NETWORK_ENDPOINT_TYPE, + value: networkEndpointType, + } +} diff --git a/ui/app/app.js b/ui/app/app.js index e90c3e98e..1f40eccbe 100644 --- a/ui/app/app.js +++ b/ui/app/app.js @@ -116,7 +116,6 @@ App.prototype.render = function () { log.debug('Main ui render function') return ( - h('.flex-column.full-height', { style: { overflowX: 'hidden', diff --git a/ui/app/components/account-menu/index.js b/ui/app/components/account-menu/index.js index a9f075ec7..286a3b587 100644 --- a/ui/app/components/account-menu/index.js +++ b/ui/app/components/account-menu/index.js @@ -28,27 +28,33 @@ function mapDispatchToProps (dispatch) { toggleAccountMenu: () => dispatch(actions.toggleAccountMenu()), showAccountDetail: address => { dispatch(actions.showAccountDetail(address)) + dispatch(actions.hideSidebar()) dispatch(actions.toggleAccountMenu()) }, lockMetamask: () => { dispatch(actions.lockMetamask()) dispatch(actions.displayWarning(null)) + dispatch(actions.hideSidebar()) dispatch(actions.toggleAccountMenu()) }, showConfigPage: () => { dispatch(actions.showConfigPage()) + dispatch(actions.hideSidebar()) dispatch(actions.toggleAccountMenu()) }, showNewAccountModal: () => { dispatch(actions.showModal({ name: 'NEW_ACCOUNT' })) + dispatch(actions.hideSidebar()) dispatch(actions.toggleAccountMenu()) }, showImportPage: () => { dispatch(actions.showImportPage()) + dispatch(actions.hideSidebar()) dispatch(actions.toggleAccountMenu()) }, showInfoPage: () => { dispatch(actions.showInfoPage()) + dispatch(actions.hideSidebar()) dispatch(actions.toggleAccountMenu()) }, } diff --git a/ui/app/components/balance-component.js b/ui/app/components/balance-component.js index d14aa675f..50007ce14 100644 --- a/ui/app/components/balance-component.js +++ b/ui/app/components/balance-component.js @@ -94,7 +94,8 @@ BalanceComponent.prototype.renderFiatValue = function (formattedBalance) { } BalanceComponent.prototype.renderFiatAmount = function (fiatDisplayNumber, fiatSuffix, fiatPrefix) { - if (fiatDisplayNumber === 'N/A') return null + const shouldNotRenderFiat = fiatDisplayNumber === 'N/A' || Number(fiatDisplayNumber) === 0 + if (shouldNotRenderFiat) return null return h('div.fiat-amount', { style: {}, diff --git a/ui/app/components/coinbase-form.js b/ui/app/components/coinbase-form.js index f44d86045..f70208625 100644 --- a/ui/app/components/coinbase-form.js +++ b/ui/app/components/coinbase-form.js @@ -40,7 +40,7 @@ CoinbaseForm.prototype.render = function () { }, 'Continue to Coinbase'), h('button.btn-red', { - onClick: () => props.dispatch(actions.backTobuyView(props.accounts.address)), + onClick: () => props.dispatch(actions.goHome()), }, 'Cancel'), ]), ]) diff --git a/ui/app/components/customize-gas-modal/index.js b/ui/app/components/customize-gas-modal/index.js index 485dacf90..826d2cd4b 100644 --- a/ui/app/components/customize-gas-modal/index.js +++ b/ui/app/components/customize-gas-modal/index.js @@ -5,6 +5,8 @@ const connect = require('react-redux').connect const actions = require('../../actions') const GasModalCard = require('./gas-modal-card') +const ethUtil = require('ethereumjs-util') + const { MIN_GAS_PRICE_DEC, MIN_GAS_LIMIT_DEC, @@ -19,6 +21,7 @@ const { conversionUtil, multiplyCurrencies, conversionGreaterThan, + subtractCurrencies, } = require('../../conversion-util') const { @@ -30,6 +33,7 @@ const { getSendFrom, getCurrentAccountWithSendEtherInfo, getSelectedTokenToFiatRate, + getSendMaxModeState, } = require('../../selectors') function mapStateToProps (state) { @@ -42,6 +46,7 @@ function mapStateToProps (state) { gasLimit: getGasLimit(state), conversionRate, amount: getSendAmount(state), + maxModeOn: getSendMaxModeState(state), balance: currentAccount.balance, primaryCurrency: selectedToken && selectedToken.symbol, selectedToken, @@ -55,6 +60,7 @@ function mapDispatchToProps (dispatch) { updateGasPrice: newGasPrice => dispatch(actions.updateGasPrice(newGasPrice)), updateGasLimit: newGasLimit => dispatch(actions.updateGasLimit(newGasLimit)), updateGasTotal: newGasTotal => dispatch(actions.updateGasTotal(newGasTotal)), + updateSendAmount: newAmount => dispatch(actions.updateSendAmount(newAmount)), } } @@ -93,8 +99,21 @@ CustomizeGasModal.prototype.save = function (gasPrice, gasLimit, gasTotal) { updateGasLimit, hideModal, updateGasTotal, + maxModeOn, + selectedToken, + balance, + updateSendAmount, } = this.props + if (maxModeOn && !selectedToken) { + const maxAmount = subtractCurrencies( + ethUtil.addHexPrefix(balance), + ethUtil.addHexPrefix(gasTotal), + { toNumericBase: 'hex' } + ) + updateSendAmount(maxAmount) + } + updateGasPrice(gasPrice) updateGasLimit(gasLimit) updateGasTotal(gasTotal) @@ -112,12 +131,13 @@ CustomizeGasModal.prototype.validate = function ({ gasTotal, gasLimit }) { selectedToken, amountConversionRate, conversionRate, + maxModeOn, } = this.props let error = null const balanceIsSufficient = isBalanceSufficient({ - amount: selectedToken ? '0' : amount, + amount: selectedToken || maxModeOn ? '0' : amount, gasTotal, balance, selectedToken, diff --git a/ui/app/components/dropdowns/network-dropdown.js b/ui/app/components/dropdowns/network-dropdown.js index 0908faf01..dfaa6b22c 100644 --- a/ui/app/components/dropdowns/network-dropdown.js +++ b/ui/app/components/dropdowns/network-dropdown.js @@ -6,6 +6,16 @@ const actions = require('../../actions') const Dropdown = require('./components/dropdown').Dropdown const DropdownMenuItem = require('./components/dropdown').DropdownMenuItem const NetworkDropdownIcon = require('./components/network-dropdown-icon') +const R = require('ramda') + +// classes from nodes of the toggle element. +const notToggleElementClassnames = [ + 'menu-icon', + 'network-name', + 'network-indicator', + 'network-caret', + 'network-component', +] function mapStateToProps (state) { return { @@ -32,8 +42,8 @@ function mapDispatchToProps (dispatch) { showConfigPage: () => { dispatch(actions.showConfigPage()) }, - showNetworkDropdown: () => { dispatch(actions.showNetworkDropdown()) }, - hideNetworkDropdown: () => { dispatch(actions.hideNetworkDropdown()) }, + showNetworkDropdown: () => dispatch(actions.showNetworkDropdown()), + hideNetworkDropdown: () => dispatch(actions.hideNetworkDropdown()), } } @@ -59,18 +69,13 @@ NetworkDropdown.prototype.render = function () { } return h(Dropdown, { - useCssTransition: true, isOpen, onClickOutside: (event) => { const { classList } = event.target - const isNotToggleElement = [ - classList.contains('menu-icon'), - classList.contains('network-name'), - classList.contains('network-indicator'), - ].filter(bool => bool).length === 0 - // classes from three constituent nodes of the toggle element - - if (isNotToggleElement) { + const isInClassList = className => classList.contains(className) + const notToggleElementIndex = R.findIndex(isInClassList)(notToggleElementClassnames) + + if (notToggleElementIndex === -1) { this.props.hideNetworkDropdown() } }, diff --git a/ui/app/components/identicon.js b/ui/app/components/identicon.js index d30b7cd56..b803b7ceb 100644 --- a/ui/app/components/identicon.js +++ b/ui/app/components/identicon.js @@ -1,13 +1,15 @@ const Component = require('react').Component const h = require('react-hyperscript') const inherits = require('util').inherits +const connect = require('react-redux').connect const isNode = require('detect-node') const findDOMNode = require('react-dom').findDOMNode const jazzicon = require('jazzicon') const iconFactoryGen = require('../../lib/icon-factory') const iconFactory = iconFactoryGen(jazzicon) +const { toDataUrl } = require('../../lib/blockies') -module.exports = IdenticonComponent +module.exports = connect(mapStateToProps)(IdenticonComponent) inherits(IdenticonComponent, Component) function IdenticonComponent () { @@ -16,6 +18,12 @@ function IdenticonComponent () { this.defaultDiameter = 46 } +function mapStateToProps (state) { + return { + useBlockie: state.metamask.useBlockie, + } +} + IdenticonComponent.prototype.render = function () { var props = this.props const { className = '', address } = props @@ -51,38 +59,59 @@ IdenticonComponent.prototype.render = function () { IdenticonComponent.prototype.componentDidMount = function () { var props = this.props - const { address } = props + const { address, useBlockie } = props if (!address) return - // eslint-disable-next-line react/no-find-dom-node - var container = findDOMNode(this) - - var diameter = props.diameter || this.defaultDiameter if (!isNode) { - var img = iconFactory.iconForAddress(address, diameter) - container.appendChild(img) + // eslint-disable-next-line react/no-find-dom-node + var container = findDOMNode(this) + + const diameter = props.diameter || this.defaultDiameter + + if (useBlockie) { + _generateBlockie(container, address, diameter) + } else { + _generateJazzicon(container, address, diameter) + } } } IdenticonComponent.prototype.componentDidUpdate = function () { var props = this.props - const { address } = props + const { address, useBlockie } = props if (!address) return - // eslint-disable-next-line react/no-find-dom-node - var container = findDOMNode(this) + if (!isNode) { + // eslint-disable-next-line react/no-find-dom-node + var container = findDOMNode(this) - var children = container.children - for (var i = 0; i < children.length; i++) { - container.removeChild(children[i]) - } + var children = container.children + for (var i = 0; i < children.length; i++) { + container.removeChild(children[i]) + } - var diameter = props.diameter || this.defaultDiameter - if (!isNode) { - var img = iconFactory.iconForAddress(address, diameter) - container.appendChild(img) + const diameter = props.diameter || this.defaultDiameter + + if (useBlockie) { + _generateBlockie(container, address, diameter) + } else { + _generateJazzicon(container, address, diameter) + } } } +function _generateBlockie (container, address, diameter) { + const img = new Image() + img.src = toDataUrl(address) + const dia = !diameter || diameter < 50 ? 50 : diameter + img.height = dia * 1.25 + img.width = dia * 1.25 + container.appendChild(img) +} + +function _generateJazzicon (container, address, diameter) { + const img = iconFactory.iconForAddress(address, diameter) + container.appendChild(img) +} diff --git a/ui/app/components/modals/modal.js b/ui/app/components/modals/modal.js index f2909f3c3..2ff6accaa 100644 --- a/ui/app/components/modals/modal.js +++ b/ui/app/components/modals/modal.js @@ -16,6 +16,7 @@ const NewAccountModal = require('./new-account-modal') const ShapeshiftDepositTxModal = require('./shapeshift-deposit-tx-modal.js') const HideTokenConfirmationModal = require('./hide-token-confirmation-modal') const CustomizeGasModal = require('../customize-gas-modal') +const NotifcationModal = require('./notification-modal') const accountModalStyle = { mobileModalStyle: { @@ -133,6 +134,42 @@ const MODALS = { }, }, + BETA_UI_NOTIFICATION_MODAL: { + contents: [ + h(NotifcationModal, { + header: 'Welcome to the New UI (Beta)', + message: `You are now using the new Metamask UI. Take a look around, try out new features like sending tokens, + and let us know if you have any issues.`, + }), + ], + mobileModalStyle: { + width: '95%', + top: isPopupOrNotification() === 'popup' ? '52vh' : '36.5vh', + }, + laptopModalStyle: { + width: '449px', + top: 'calc(33% + 45px)', + }, + }, + + OLD_UI_NOTIFICATION_MODAL: { + contents: [ + h(NotifcationModal, { + header: 'Old UI', + message: `You have returned to the old UI. You can switch back to the New UI through the option in the top + right dropdown menu.`, + }), + ], + mobileModalStyle: { + width: '95%', + top: isPopupOrNotification() === 'popup' ? '52vh' : '36.5vh', + }, + laptopModalStyle: { + width: '449px', + top: 'calc(33% + 45px)', + }, + }, + NEW_ACCOUNT: { contents: [ h(NewAccountModal, {}, []), diff --git a/ui/app/components/modals/notification-modal.js b/ui/app/components/modals/notification-modal.js new file mode 100644 index 000000000..239144b0c --- /dev/null +++ b/ui/app/components/modals/notification-modal.js @@ -0,0 +1,51 @@ +const { Component } = require('react') +const PropTypes = require('prop-types') +const h = require('react-hyperscript') +const { connect } = require('react-redux') +const actions = require('../../actions') + +class NotificationModal extends Component { + render () { + const { + header, + message, + } = this.props + + return h('div', [ + h('div.notification-modal-wrapper', { + }, [ + + h('div.notification-modal-header', {}, [ + header, + ]), + + h('div.notification-modal-message-wrapper', {}, [ + h('div.notification-modal-message', {}, [ + message, + ]), + ]), + + h('div.modal-close-x', { + onClick: this.props.hideModal, + }), + + ]), + ]) + } +} + +NotificationModal.propTypes = { + hideModal: PropTypes.func, + header: PropTypes.string, + message: PropTypes.string, +} + +const mapDispatchToProps = dispatch => { + return { + hideModal: () => { + dispatch(actions.hideModal()) + }, + } +} + +module.exports = connect(null, mapDispatchToProps)(NotificationModal) diff --git a/ui/app/components/network.js b/ui/app/components/network.js index 915818009..5a8d0763d 100644 --- a/ui/app/components/network.js +++ b/ui/app/components/network.js @@ -39,7 +39,7 @@ Network.prototype.render = function () { }, src: 'images/loading.svg', }), - h('i.fa.fa-caret-down'), + h('i.fa.fa-caret-down.network-caret'), ]) } else if (providerName === 'mainnet') { hoverText = 'Main Ethereum Network' @@ -63,7 +63,7 @@ Network.prototype.render = function () { return ( h('div.network-component.pointer', { - className: classnames('network-component pointer', { + className: classnames({ 'network-component--disabled': this.props.disabled, 'ethereum-network': providerName === 'mainnet', 'ropsten-test-network': providerName === 'ropsten' || parseInt(networkNumber) === 3, @@ -90,7 +90,7 @@ Network.prototype.render = function () { color: '#039396', }}, 'Main Network'), - h('i.fa.fa-caret-down.fa-lg'), + h('i.fa.fa-caret-down.fa-lg.network-caret'), ]) case 'ropsten-test-network': return h('.network-indicator', [ @@ -103,7 +103,7 @@ Network.prototype.render = function () { color: '#ff6666', }}, 'Ropsten Test Net'), - h('i.fa.fa-caret-down.fa-lg'), + h('i.fa.fa-caret-down.fa-lg.network-caret'), ]) case 'kovan-test-network': return h('.network-indicator', [ @@ -116,7 +116,7 @@ Network.prototype.render = function () { color: '#690496', }}, 'Kovan Test Net'), - h('i.fa.fa-caret-down.fa-lg'), + h('i.fa.fa-caret-down.fa-lg.network-caret'), ]) case 'rinkeby-test-network': return h('.network-indicator', [ @@ -129,7 +129,7 @@ Network.prototype.render = function () { color: '#e7a218', }}, 'Rinkeby Test Net'), - h('i.fa.fa-caret-down.fa-lg'), + h('i.fa.fa-caret-down.fa-lg.network-caret'), ]) default: return h('.network-indicator', [ @@ -145,7 +145,7 @@ Network.prototype.render = function () { color: '#AEAEAE', }}, 'Private Network'), - h('i.fa.fa-caret-down.fa-lg'), + h('i.fa.fa-caret-down.fa-lg.network-caret'), ]) } })(), diff --git a/ui/app/components/pending-tx/confirm-send-ether.js b/ui/app/components/pending-tx/confirm-send-ether.js index 1264da153..566224864 100644 --- a/ui/app/components/pending-tx/confirm-send-ether.js +++ b/ui/app/components/pending-tx/confirm-send-ether.js @@ -421,7 +421,9 @@ ConfirmSendEther.prototype.onSubmit = function (event) { ConfirmSendEther.prototype.cancel = function (event, txMeta) { event.preventDefault() - this.props.cancelTransaction(txMeta) + const { cancelTransaction } = this.props + + cancelTransaction(txMeta) } ConfirmSendEther.prototype.checkValidity = function () { @@ -445,26 +447,6 @@ ConfirmSendEther.prototype.gatherTxMeta = function () { const state = this.state const txData = clone(state.txData) || clone(props.txData) - if (props.send.editingTransactionId) { - const { - send: { - memo, - amount: value, - gasLimit: gas, - gasPrice, - }, - } = props - const { txParams: { from, to } } = txData - txData.txParams = { - from: ethUtil.addHexPrefix(from), - to: ethUtil.addHexPrefix(to), - memo: memo && ethUtil.addHexPrefix(memo), - value: ethUtil.addHexPrefix(value), - gas: ethUtil.addHexPrefix(gas), - gasPrice: ethUtil.addHexPrefix(gasPrice), - } - } - // log.debug(`UI has defaulted to tx meta ${JSON.stringify(txData)}`) return txData } diff --git a/ui/app/components/pending-tx/confirm-send-token.js b/ui/app/components/pending-tx/confirm-send-token.js index cc2df8299..aa4f29fb0 100644 --- a/ui/app/components/pending-tx/confirm-send-token.js +++ b/ui/app/components/pending-tx/confirm-send-token.js @@ -2,7 +2,6 @@ const Component = require('react').Component const { connect } = require('react-redux') const h = require('react-hyperscript') const inherits = require('util').inherits -const ethAbi = require('ethereumjs-abi') const tokenAbi = require('human-standard-token-abi') const abiDecoder = require('abi-decoder') abiDecoder.addABI(tokenAbi) @@ -67,15 +66,15 @@ function mapDispatchToProps (dispatch, ownProps) { const { txParams, id } = txMeta const tokenData = txParams.data && abiDecoder.decodeMethod(txParams.data) const { params = [] } = tokenData - const { value } = params[1] || {} - const amount = conversionUtil(value, { + const { value: to } = params[0] || {} + const { value: tokenAmountInDec } = params[1] || {} + const tokenAmountInHex = conversionUtil(tokenAmountInDec, { fromNumericBase: 'dec', toNumericBase: 'hex', }) const { gas: gasLimit, gasPrice, - to, } = txParams dispatch(actions.setSelectedToken(address)) dispatch(actions.updateSend({ @@ -83,7 +82,7 @@ function mapDispatchToProps (dispatch, ownProps) { gasPrice, gasTotal: null, to, - amount, + amount: tokenAmountInHex, errors: { to: null, amount: null }, editingTransactionId: id, })) @@ -415,7 +414,9 @@ ConfirmSendToken.prototype.onSubmit = function (event) { ConfirmSendToken.prototype.cancel = function (event, txMeta) { event.preventDefault() - this.props.cancelTransaction(txMeta) + const { cancelTransaction } = this.props + + cancelTransaction(txMeta) } ConfirmSendToken.prototype.checkValidity = function () { @@ -439,38 +440,6 @@ ConfirmSendToken.prototype.gatherTxMeta = function () { const state = this.state const txData = clone(state.txData) || clone(props.txData) - if (props.send.editingTransactionId) { - const { - send: { - memo, - amount, - gasLimit: gas, - gasPrice, - }, - } = props - - const { txParams: { from, to } } = txData - - const tokenParams = { - from: ethUtil.addHexPrefix(from), - value: '0', - gas: ethUtil.addHexPrefix(gas), - gasPrice: ethUtil.addHexPrefix(gasPrice), - } - - const data = '0xa9059cbb' + Array.prototype.map.call( - ethAbi.rawEncode(['address', 'uint256'], [to, ethUtil.addHexPrefix(amount)]), - x => ('00' + x.toString(16)).slice(-2) - ).join('') - - txData.txParams = { - ...tokenParams, - to: ethUtil.addHexPrefix(to), - memo: memo && ethUtil.addHexPrefix(memo), - data, - } - } - // log.debug(`UI has defaulted to tx meta ${JSON.stringify(txData)}`) return txData } diff --git a/ui/app/components/send/send-constants.js b/ui/app/components/send/send-constants.js index a961ffcd8..b3ee0899a 100644 --- a/ui/app/components/send/send-constants.js +++ b/ui/app/components/send/send-constants.js @@ -3,8 +3,8 @@ const { conversionUtil, multiplyCurrencies } = require('../../conversion-util') const MIN_GAS_PRICE_HEX = (100000000).toString(16) const MIN_GAS_PRICE_DEC = '100000000' -const MIN_GAS_LIMIT_HEX = (21000).toString(16) -const MIN_GAS_LIMIT_DEC = 21000 +const MIN_GAS_LIMIT_DEC = '21000' +const MIN_GAS_LIMIT_HEX = (parseInt(MIN_GAS_LIMIT_DEC)).toString(16) const MIN_GAS_PRICE_GWEI = ethUtil.addHexPrefix(conversionUtil(MIN_GAS_PRICE_HEX, { fromDenomination: 'WEI', @@ -20,6 +20,8 @@ const MIN_GAS_TOTAL = multiplyCurrencies(MIN_GAS_LIMIT_HEX, MIN_GAS_PRICE_HEX, { multiplierBase: 16, }) +const TOKEN_TRANSFER_FUNCTION_SIGNATURE = '0xa9059cbb' + module.exports = { MIN_GAS_PRICE_GWEI, MIN_GAS_PRICE_HEX, @@ -27,4 +29,5 @@ module.exports = { MIN_GAS_LIMIT_HEX, MIN_GAS_LIMIT_DEC, MIN_GAS_TOTAL, + TOKEN_TRANSFER_FUNCTION_SIGNATURE, } diff --git a/ui/app/components/send/send-v2-container.js b/ui/app/components/send/send-v2-container.js index 4451a6113..2d2ed4546 100644 --- a/ui/app/components/send/send-v2-container.js +++ b/ui/app/components/send/send-v2-container.js @@ -50,6 +50,7 @@ function mapStateToProps (state) { data, amountConversionRate: selectedToken ? tokenToFiatRate : conversionRate, tokenContract: getSelectedTokenContract(state), + unapprovedTxs: state.metamask.unapprovedTxs, } } @@ -64,6 +65,7 @@ function mapDispatchToProps (dispatch) { ), signTx: txParams => dispatch(actions.signTx(txParams)), updateAndApproveTx: txParams => dispatch(actions.updateAndApproveTx(txParams)), + updateTx: txData => dispatch(actions.updateTransaction(txData)), setSelectedAddress: address => dispatch(actions.setSelectedAddress(address)), addToAddressBook: address => dispatch(actions.addToAddressBook(address)), updateGasTotal: newTotal => dispatch(actions.updateGasTotal(newTotal)), @@ -77,6 +79,6 @@ function mapDispatchToProps (dispatch) { updateSendErrors: newError => dispatch(actions.updateSendErrors(newError)), goHome: () => dispatch(actions.goHome()), clearSend: () => dispatch(actions.clearSend()), - backToConfirmScreen: editingTransactionId => dispatch(actions.showConfTxPage({ id: editingTransactionId })), + setMaxModeTo: bool => dispatch(actions.setMaxModeTo(bool)), } } diff --git a/ui/app/components/token-cell.js b/ui/app/components/token-cell.js index b40c0ec0d..677b66830 100644 --- a/ui/app/components/token-cell.js +++ b/ui/app/components/token-cell.js @@ -86,7 +86,9 @@ TokenCell.prototype.render = function () { numberOfDecimals: 2, conversionRate: currentTokenToFiatRate, }) - formattedFiat = `${currentTokenInFiat} ${currentCurrency.toUpperCase()}` + formattedFiat = currentTokenInFiat.toString() === '0' + ? '' + : `${currentTokenInFiat} ${currentCurrency.toUpperCase()}` } const showFiat = Boolean(currentTokenInFiat) && currentCurrency.toUpperCase() !== symbol diff --git a/ui/app/components/transaction-list-item.js b/ui/app/components/transaction-list-item.js index 255f0e5eb..4e3d2cb93 100644 --- a/ui/app/components/transaction-list-item.js +++ b/ui/app/components/transaction-list-item.js @@ -1,6 +1,7 @@ const Component = require('react').Component const h = require('react-hyperscript') const inherits = require('util').inherits +const connect = require('react-redux').connect const EthBalance = require('./eth-balance') const addressSummary = require('../util').addressSummary @@ -9,18 +10,33 @@ const CopyButton = require('./copyButton') const vreme = new (require('vreme'))() const Tooltip = require('./tooltip') const numberToBN = require('number-to-bn') +const actions = require('../actions') const TransactionIcon = require('./transaction-list-item-icon') const ShiftListItem = require('./shift-list-item') -module.exports = TransactionListItem + +const mapDispatchToProps = dispatch => { + return { + retryTransaction: transactionId => dispatch(actions.retryTransaction(transactionId)), + } +} + +module.exports = connect(null, mapDispatchToProps)(TransactionListItem) inherits(TransactionListItem, Component) function TransactionListItem () { Component.call(this) } +TransactionListItem.prototype.showRetryButton = function () { + const { transaction = {} } = this.props + const { status, time } = transaction + return status === 'submitted' && Date.now() - time > 30000 +} + TransactionListItem.prototype.render = function () { const { transaction, network, conversionRate, currentCurrency } = this.props + const { status } = transaction if (transaction.key === 'shapeshift') { if (network === '1') return h(ShiftListItem, transaction) } @@ -32,7 +48,7 @@ TransactionListItem.prototype.render = function () { var isMsg = ('msgParams' in transaction) var isTx = ('txParams' in transaction) - var isPending = transaction.status === 'unapproved' + var isPending = status === 'unapproved' let txParams if (isTx) { txParams = transaction.txParams @@ -44,7 +60,7 @@ TransactionListItem.prototype.render = function () { const isClickable = ('hash' in transaction && isLinkable) || isPending return ( - h(`.transaction-list-item.flex-row.flex-space-between${isClickable ? '.pointer' : ''}`, { + h('.transaction-list-item.flex-column', { onClick: (event) => { if (isPending) { this.props.showTx(transaction.id) @@ -56,51 +72,92 @@ TransactionListItem.prototype.render = function () { }, style: { padding: '20px 0', + alignItems: 'center', }, }, [ - - h('.identicon-wrapper.flex-column.flex-center.select-none', [ - h(TransactionIcon, { txParams, transaction, isTx, isMsg }), + h(`.flex-row.flex-space-between${isClickable ? '.pointer' : ''}`, { + style: { + width: '100%', + }, + }, [ + h('.identicon-wrapper.flex-column.flex-center.select-none', [ + h(TransactionIcon, { txParams, transaction, isTx, isMsg }), + ]), + + h(Tooltip, { + title: 'Transaction Number', + position: 'right', + }, [ + h('span', { + style: { + display: 'flex', + cursor: 'normal', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + padding: '10px', + }, + }, nonce), + ]), + + h('.flex-column', {style: {width: '200px', overflow: 'hidden'}}, [ + domainField(txParams), + h('div', date), + recipientField(txParams, transaction, isTx, isMsg), + ]), + + // Places a copy button if tx is successful, else places a placeholder empty div. + transaction.hash ? h(CopyButton, { value: transaction.hash }) : h('div', {style: { display: 'flex', alignItems: 'center', width: '26px' }}), + + isTx ? h(EthBalance, { + value: txParams.value, + conversionRate, + currentCurrency, + width: '55px', + shorten: true, + showFiat: false, + style: {fontSize: '15px'}, + }) : h('.flex-column'), ]), - h(Tooltip, { - title: 'Transaction Number', - position: 'right', + this.showRetryButton() && h('.transition-list-item__retry.grow-on-hover', { + onClick: event => { + event.stopPropagation() + this.resubmit() + }, + style: { + height: '22px', + borderRadius: '22px', + color: '#F9881B', + padding: '0 20px', + backgroundColor: '#FFE3C9', + display: 'flex', + justifyContent: 'center', + alignItems: 'center', + fontSize: '8px', + cursor: 'pointer', + }, }, [ - h('span', { + h('div', { style: { - display: 'flex', - cursor: 'normal', - flexDirection: 'column', - alignItems: 'center', - justifyContent: 'center', - padding: '10px', + paddingRight: '2px', }, - }, nonce), - ]), - - h('.flex-column', {style: {width: '200px', overflow: 'hidden'}}, [ - domainField(txParams), - h('div', date), - recipientField(txParams, transaction, isTx, isMsg), + }, 'Taking too long?'), + h('div', { + style: { + textDecoration: 'underline', + }, + }, 'Retry with a higher gas price here'), ]), - - // Places a copy button if tx is successful, else places a placeholder empty div. - transaction.hash ? h(CopyButton, { value: transaction.hash }) : h('div', {style: { display: 'flex', alignItems: 'center', width: '26px' }}), - - isTx ? h(EthBalance, { - value: txParams.value, - conversionRate, - currentCurrency, - width: '55px', - shorten: true, - showFiat: false, - style: {fontSize: '15px'}, - }) : h('.flex-column'), ]) ) } +TransactionListItem.prototype.resubmit = function () { + const { transaction } = this.props + this.props.retryTransaction(transaction.id) +} + function domainField (txParams) { return h('div', { style: { diff --git a/ui/app/components/tx-list-item.js b/ui/app/components/tx-list-item.js index 4e76147a1..8a9253d4d 100644 --- a/ui/app/components/tx-list-item.js +++ b/ui/app/components/tx-list-item.js @@ -170,6 +170,7 @@ TxListItem.prototype.getSendTokenTotal = async function () { TxListItem.prototype.render = function () { const { transactionStatus, + transactionAmount, onClick, transActionId, dateString, @@ -177,6 +178,7 @@ TxListItem.prototype.render = function () { className, } = this.props const { total, fiatTotal } = this.state + const showFiatTotal = transactionAmount !== '0x0' && fiatTotal return h(`div${className || ''}`, { key: transActionId, @@ -238,7 +240,7 @@ TxListItem.prototype.render = function () { }), }, total), - fiatTotal && h('span.tx-list-fiat-value', fiatTotal), + showFiatTotal && h('span.tx-list-fiat-value', fiatTotal), ]), ]), diff --git a/ui/app/components/tx-view.js b/ui/app/components/tx-view.js index ebef22680..e42a20c85 100644 --- a/ui/app/components/tx-view.js +++ b/ui/app/components/tx-view.js @@ -14,6 +14,7 @@ module.exports = connect(mapStateToProps, mapDispatchToProps)(TxView) function mapStateToProps (state) { const sidebarOpen = state.appState.sidebarOpen + const isMascara = state.appState.isMascara const identities = state.metamask.identities const accounts = state.metamask.accounts @@ -31,6 +32,7 @@ function mapStateToProps (state) { selectedToken: selectors.getSelectedToken(state), identity, network, + isMascara, } } @@ -98,7 +100,7 @@ TxView.prototype.renderButtons = function () { } TxView.prototype.render = function () { - const { selectedAddress, identity, network } = this.props + const { selectedAddress, identity, network, isMascara } = this.props return h('div.tx-view.flex-column', { style: {}, @@ -107,6 +109,7 @@ TxView.prototype.render = function () { h('div.flex-row.phone-visible', { style: { margin: '1em 0.9em', + justifyContent: 'space-between', alignItems: 'center', }, }, [ @@ -139,6 +142,10 @@ TxView.prototype.render = function () { identity.name, ]), + !isMascara && h('div.open-in-browser', { + onClick: () => global.platform.openExtensionInBrowser(), + }, [h('img', { src: 'images/open.svg' })]), + ]), this.renderHeroBalance(), diff --git a/ui/app/css/index.scss b/ui/app/css/index.scss index 01899ccad..445c819ff 100644 --- a/ui/app/css/index.scss +++ b/ui/app/css/index.scss @@ -4,6 +4,7 @@ http://www.creativebloq.com/web-design/manage-large-css-projects-itcss-101517528 https://www.xfive.co/blog/itcss-scalable-maintainable-css-architecture/ */ + @import './itcss/settings/index.scss'; @import './itcss/tools/index.scss'; @import './itcss/generic/index.scss'; diff --git a/ui/app/css/itcss/components/account-menu.scss b/ui/app/css/itcss/components/account-menu.scss index e40e5a8c0..e16d2e024 100644 --- a/ui/app/css/itcss/components/account-menu.scss +++ b/ui/app/css/itcss/components/account-menu.scss @@ -40,7 +40,7 @@ font-size: 12px; line-height: 23px; padding: 0 24px; - font-weight: 200; + font-weight: 300; } img { @@ -113,7 +113,7 @@ &__name { color: $white; font-size: 18px; - font-weight: 200; + font-weight: 300; line-height: 16px; } @@ -126,7 +126,7 @@ &__action { font-size: 16px; line-height: 18px; - font-weight: 200; + font-weight: 300; cursor: pointer; } } diff --git a/ui/app/css/itcss/components/menu.scss b/ui/app/css/itcss/components/menu.scss index 17e24de98..eb92a1b70 100644 --- a/ui/app/css/itcss/components/menu.scss +++ b/ui/app/css/itcss/components/menu.scss @@ -11,8 +11,8 @@ flex-flow: row nowrap; align-items: center; position: relative; - z-index: 200; - font-weight: 200; + font-weight: 300; + z-index: 201; @media screen and (max-width: 575px) { padding: 14px; diff --git a/ui/app/css/itcss/components/modal.scss b/ui/app/css/itcss/components/modal.scss index b69bd5c7e..9b64564d6 100644 --- a/ui/app/css/itcss/components/modal.scss +++ b/ui/app/css/itcss/components/modal.scss @@ -563,3 +563,39 @@ } } } + +//Notification Modal + +.notification-modal-wrapper { + display: flex; + flex-direction: column; + justify-content: flex-start; + align-items: center; + position: relative; + border: 1px solid $alto; + box-shadow: 0 0 2px 2px $alto; + font-family: Roboto; +} + +.notification-modal-header { + background: $wild-sand; + width: 100%; + display: flex; + justify-content: center; + padding: 30px; + font-size: 22px; + color: $nile-blue; + height: 79px; +} + +.notification-modal-message { + padding: 20px; +} + +.notification-modal-message { + width: 100%; + display: flex; + justify-content: center; + font-size: 17px; + color: $nile-blue; +} \ No newline at end of file diff --git a/ui/app/css/itcss/components/newui-sections.scss b/ui/app/css/itcss/components/newui-sections.scss index 244de2ba0..61dfbd176 100644 --- a/ui/app/css/itcss/components/newui-sections.scss +++ b/ui/app/css/itcss/components/newui-sections.scss @@ -38,6 +38,10 @@ $wallet-view-bg: $wild-sand; } } +.open-in-browser { + cursor: pointer; +} + // wallet view and sidebar .wallet-view { @@ -248,7 +252,7 @@ $wallet-view-bg: $wild-sand; // wallet view .account-name { font-size: 24px; - font-weight: 200; + font-weight: 300; line-height: 20px; color: $scorpion; margin-top: 8px; diff --git a/ui/app/css/itcss/components/settings.scss b/ui/app/css/itcss/components/settings.scss index 2f29d8017..d60ebd934 100644 --- a/ui/app/css/itcss/components/settings.scss +++ b/ui/app/css/itcss/components/settings.scss @@ -145,6 +145,11 @@ color: $monzo; } +.settings__clear-button--orange { + border: 1px solid rgba(247, 134, 28, 1); + color: rgba(247, 134, 28, 1); +} + .settings__info-logo-wrapper { height: 80px; margin-bottom: 20px; diff --git a/ui/app/first-time/init-menu.js b/ui/app/first-time/init-menu.js index cc7c51bd3..b4587f1ee 100644 --- a/ui/app/first-time/init-menu.js +++ b/ui/app/first-time/init-menu.js @@ -8,6 +8,8 @@ const actions = require('../actions') const Tooltip = require('../components/tooltip') const getCaretCoordinates = require('textarea-caret') +let isSubmitting = false + module.exports = connect(mapStateToProps)(InitializeMenuScreen) inherits(InitializeMenuScreen, Component) @@ -164,7 +166,10 @@ InitializeMenuScreen.prototype.createNewVaultAndKeychain = function () { return } - this.props.dispatch(actions.createNewVaultAndKeychain(password)) + if (!isSubmitting) { + isSubmitting = true + this.props.dispatch(actions.createNewVaultAndKeychain(password)) + } } InitializeMenuScreen.prototype.inputChanged = function (event) { diff --git a/ui/app/reducers/metamask.js b/ui/app/reducers/metamask.js index 83161320e..294c29948 100644 --- a/ui/app/reducers/metamask.js +++ b/ui/app/reducers/metamask.js @@ -1,6 +1,7 @@ const extend = require('xtend') const actions = require('../actions') const MetamascaraPlatform = require('../../../app/scripts/platforms/window') +const { OLD_UI_NETWORK_TYPE } = require('../../../app/scripts/config').enums module.exports = reduceMetamask @@ -33,9 +34,13 @@ function reduceMetamask (state, action) { amount: '0x0', memo: '', errors: {}, + maxModeOn: false, editingTransactionId: null, }, coinOptions: {}, + useBlockie: false, + featureFlags: {}, + networkEndpointType: OLD_UI_NETWORK_TYPE, }, state.metamask) switch (action.type) { @@ -257,6 +262,14 @@ function reduceMetamask (state, action) { }, }) + case actions.UPDATE_MAX_MODE: + return extend(metamaskState, { + send: { + ...metamaskState.send, + maxModeOn: action.value, + }, + }) + case actions.UPDATE_SEND: return extend(metamaskState, { send: { @@ -309,11 +322,26 @@ function reduceMetamask (state, action) { return extend(metamaskState, { tokenExchangeRates: { ...metamaskState.tokenExchangeRates, - [marketinfo.pair]: ssMarketInfo, + [ssMarketInfo.pair]: ssMarketInfo, }, coinOptions, }) + case actions.SET_USE_BLOCKIE: + return extend(metamaskState, { + useBlockie: action.value, + }) + + case actions.UPDATE_FEATURE_FLAGS: + return extend(metamaskState, { + featureFlags: action.value, + }) + + case actions.UPDATE_NETWORK_ENDPOINT_TYPE: + return extend(metamaskState, { + networkEndpointType: action.value, + }) + default: return metamaskState diff --git a/ui/app/root.js b/ui/app/root.js index 9e7314b20..21d6d1829 100644 --- a/ui/app/root.js +++ b/ui/app/root.js @@ -2,7 +2,7 @@ const inherits = require('util').inherits const Component = require('react').Component const Provider = require('react-redux').Provider const h = require('react-hyperscript') -const App = require('./app') +const SelectedApp = require('./select-app') module.exports = Root @@ -15,7 +15,7 @@ Root.prototype.render = function () { h(Provider, { store: this.props.store, }, [ - h(App), + h(SelectedApp), ]) ) diff --git a/ui/app/select-app.js b/ui/app/select-app.js new file mode 100644 index 000000000..ac6867aeb --- /dev/null +++ b/ui/app/select-app.js @@ -0,0 +1,61 @@ +const inherits = require('util').inherits +const Component = require('react').Component +const connect = require('react-redux').connect +const h = require('react-hyperscript') +const App = require('./app') +const OldApp = require('../../old-ui/app/app') +const { autoAddToBetaUI } = require('./selectors') +const { setFeatureFlag, setNetworkEndpoints } = require('./actions') +const { BETA_UI_NETWORK_TYPE } = require('../../app/scripts/config').enums + +function mapStateToProps (state) { + return { + betaUI: state.metamask.featureFlags.betaUI, + autoAdd: autoAddToBetaUI(state), + isUnlocked: state.metamask.isUnlocked, + isMascara: state.metamask.isMascara, + firstTime: Object.keys(state.metamask.identities).length === 0, + } +} + +function mapDispatchToProps (dispatch) { + return { + setFeatureFlagWithModal: () => { + return dispatch(setFeatureFlag('betaUI', true, 'BETA_UI_NOTIFICATION_MODAL')) + .then(() => dispatch(setNetworkEndpoints(BETA_UI_NETWORK_TYPE))) + }, + setFeatureFlagWithoutModal: () => { + return dispatch(setFeatureFlag('betaUI', true)) + .then(() => dispatch(setNetworkEndpoints(BETA_UI_NETWORK_TYPE))) + }, + } +} +module.exports = connect(mapStateToProps, mapDispatchToProps)(SelectedApp) + +inherits(SelectedApp, Component) +function SelectedApp () { + Component.call(this) +} + +SelectedApp.prototype.componentWillReceiveProps = function (nextProps) { + const { + isUnlocked, + setFeatureFlagWithModal, + setFeatureFlagWithoutModal, + isMascara, + firstTime, + } = this.props + + if (isMascara || firstTime) { + setFeatureFlagWithoutModal() + } else if (!isUnlocked && nextProps.isUnlocked && (nextProps.autoAdd)) { + setFeatureFlagWithModal() + } +} + +SelectedApp.prototype.render = function () { + const { betaUI, isMascara, firstTime } = this.props + + const Selected = betaUI || isMascara || firstTime ? App : OldApp + return h(Selected) +} diff --git a/ui/app/selectors.js b/ui/app/selectors.js index a5f9a75d8..22ef439c4 100644 --- a/ui/app/selectors.js +++ b/ui/app/selectors.js @@ -24,6 +24,8 @@ const selectors = { getSendAmount, getSelectedTokenToFiatRate, getSelectedTokenContract, + autoAddToBetaUI, + getSendMaxModeState, } module.exports = selectors @@ -135,6 +137,10 @@ function getSendAmount (state) { return state.metamask.send.amount } +function getSendMaxModeState (state) { + return state.metamask.send.maxModeOn +} + function getCurrentCurrency (state) { return state.metamask.currentCurrency } @@ -158,3 +164,20 @@ function getSelectedTokenContract (state) { ? global.eth.contract(abi).at(selectedToken.address) : null } + +function autoAddToBetaUI (state) { + const autoAddTransactionThreshold = 12 + const autoAddAccountsThreshold = 2 + const autoAddTokensThreshold = 1 + + const numberOfTransactions = state.metamask.selectedAddressTxList.length + const numberOfAccounts = Object.keys(state.metamask.accounts).length + const numberOfTokensAdded = state.metamask.tokens.length + + const userPassesThreshold = (numberOfTransactions > autoAddTransactionThreshold) && + (numberOfAccounts > autoAddAccountsThreshold) && + (numberOfTokensAdded > autoAddTokensThreshold) + const userIsNotInBeta = !state.metamask.featureFlags.betaUI + + return userIsNotInBeta && userPassesThreshold +} \ No newline at end of file diff --git a/ui/app/send-v2.js b/ui/app/send-v2.js index 788ae87b4..7c9b6dbc6 100644 --- a/ui/app/send-v2.js +++ b/ui/app/send-v2.js @@ -2,6 +2,7 @@ const { inherits } = require('util') const PersistentForm = require('../lib/persistent-form') const h = require('react-hyperscript') +const ethAbi = require('ethereumjs-abi') const ethUtil = require('ethereumjs-util') const Identicon = require('./components/identicon') @@ -13,8 +14,7 @@ const GasFeeDisplay = require('./components/send/gas-fee-display-v2') const { MIN_GAS_TOTAL, - MIN_GAS_PRICE_HEX, - MIN_GAS_LIMIT_HEX, + TOKEN_TRANSFER_FUNCTION_SIGNATURE, } = require('./components/send/send-constants') const { @@ -313,8 +313,9 @@ SendTransactionScreen.prototype.renderToRow = function () { SendTransactionScreen.prototype.handleAmountChange = function (value) { const amount = value - const { updateSendAmount } = this.props + const { updateSendAmount, setMaxModeTo } = this.props + setMaxModeTo(false) this.validateAmount(amount) updateSendAmount(amount) } @@ -324,11 +325,9 @@ SendTransactionScreen.prototype.setAmountToMax = function () { from: { balance }, updateSendAmount, updateSendErrors, - updateGasPrice, - updateGasLimit, - updateGasTotal, tokenBalance, selectedToken, + gasTotal, } = this.props const { decimals } = selectedToken || {} const multiplier = Math.pow(10, Number(decimals || 0)) @@ -337,16 +336,12 @@ SendTransactionScreen.prototype.setAmountToMax = function () { ? multiplyCurrencies(tokenBalance, multiplier, {toNumericBase: 'hex'}) : subtractCurrencies( ethUtil.addHexPrefix(balance), - ethUtil.addHexPrefix(MIN_GAS_TOTAL), + ethUtil.addHexPrefix(gasTotal), { toNumericBase: 'hex' } ) updateSendErrors({ amount: null }) - if (!selectedToken) { - updateGasPrice(MIN_GAS_PRICE_HEX) - updateGasLimit(MIN_GAS_LIMIT_HEX) - updateGasTotal(MIN_GAS_TOTAL) - } + updateSendAmount(maxAmount) } @@ -407,19 +402,22 @@ SendTransactionScreen.prototype.renderAmountRow = function () { amountConversionRate, errors, amount, + setMaxModeTo, + maxModeOn, } = this.props return h('div.send-v2__form-row', [ - h('div.send-v2__form-label', [ + h('div.send-v2__form-label', [ 'Amount:', this.renderErrorMessage('amount'), !errors.amount && h('div.send-v2__amount-max', { onClick: (event) => { event.preventDefault() + setMaxModeTo(true) this.setAmountToMax() }, - }, [ 'Max' ]), + }, [ !maxModeOn ? 'Max' : '' ]), ]), h('div.send-v2__form-field', [ @@ -556,6 +554,48 @@ SendTransactionScreen.prototype.addToAddressBookIfNew = function (newAddress) { } } +SendTransactionScreen.prototype.getEditedTx = function () { + const { + from: {address: from}, + to, + amount, + gasLimit: gas, + gasPrice, + selectedToken, + editingTransactionId, + unapprovedTxs, + } = this.props + + const editingTx = { + ...unapprovedTxs[editingTransactionId], + txParams: { + from: ethUtil.addHexPrefix(from), + gas: ethUtil.addHexPrefix(gas), + gasPrice: ethUtil.addHexPrefix(gasPrice), + }, + } + + if (selectedToken) { + const data = TOKEN_TRANSFER_FUNCTION_SIGNATURE + Array.prototype.map.call( + ethAbi.rawEncode(['address', 'uint256'], [to, ethUtil.addHexPrefix(amount)]), + x => ('00' + x.toString(16)).slice(-2) + ).join('') + + Object.assign(editingTx.txParams, { + value: ethUtil.addHexPrefix('0'), + to: ethUtil.addHexPrefix(selectedToken.address), + data, + }) + } else { + Object.assign(editingTx.txParams, { + value: ethUtil.addHexPrefix(amount), + to: ethUtil.addHexPrefix(to), + }) + } + + return editingTx +} + SendTransactionScreen.prototype.onSubmit = function (event) { event.preventDefault() const { @@ -566,10 +606,10 @@ SendTransactionScreen.prototype.onSubmit = function (event) { gasPrice, signTokenTx, signTx, + updateTx, selectedToken, editingTransactionId, errors: { amount: amountError, to: toError }, - backToConfirmScreen, } = this.props const noErrors = !amountError && toError === null @@ -581,23 +621,25 @@ SendTransactionScreen.prototype.onSubmit = function (event) { this.addToAddressBookIfNew(to) if (editingTransactionId) { - backToConfirmScreen(editingTransactionId) - return - } + const editedTx = this.getEditedTx() - const txParams = { - from, - value: '0', - gas, - gasPrice, - } + updateTx(editedTx) + } else { - if (!selectedToken) { - txParams.value = amount - txParams.to = to - } + const txParams = { + from, + value: '0', + gas, + gasPrice, + } + + if (!selectedToken) { + txParams.value = amount + txParams.to = to + } - selectedToken - ? signTokenTx(selectedToken.address, to, amount, txParams) - : signTx(txParams) + selectedToken + ? signTokenTx(selectedToken.address, to, amount, txParams) + : signTx(txParams) + } } diff --git a/ui/app/settings.js b/ui/app/settings.js index 786a70e7e..a3dd65f14 100644 --- a/ui/app/settings.js +++ b/ui/app/settings.js @@ -8,6 +8,8 @@ const validUrl = require('valid-url') const { exportAsFile } = require('./util') const TabBar = require('./components/tab-bar') const SimpleDropdown = require('./components/dropdowns/simple-dropdown') +const ToggleButton = require('react-toggle-button') +const { OLD_UI_NETWORK_TYPE } = require('../../app/scripts/config').enums const getInfuraCurrencyOptions = () => { const sortedCurrencies = infuraCurrencies.objects.sort((a, b) => { @@ -51,6 +53,26 @@ class Settings extends Component { ]) } + renderBlockieOptIn () { + const { metamask: { useBlockie }, setUseBlockie } = this.props + + return h('div.settings__content-row', [ + h('div.settings__content-item', [ + h('span', 'Use Blockies Identicon'), + ]), + h('div.settings__content-item', [ + h('div.settings__content-item-col', [ + h(ToggleButton, { + value: useBlockie, + onToggle: (value) => setUseBlockie(!value), + activeLabel: '', + inactiveLabel: '', + }), + ]), + ]), + ]) + } + renderCurrentConversion () { const { metamask: { currentCurrency, conversionDate }, setCurrentCurrency } = this.props @@ -208,17 +230,39 @@ class Settings extends Component { ) } + renderOldUI () { + const { setFeatureFlagToBeta } = this.props + + return ( + h('div.settings__content-row', [ + h('div.settings__content-item', 'Use old UI'), + h('div.settings__content-item', [ + h('div.settings__content-item-col', [ + h('button.settings__clear-button.settings__clear-button--orange', { + onClick (event) { + event.preventDefault() + setFeatureFlagToBeta() + }, + }, 'Use old UI'), + ]), + ]), + ]) + ) + } + renderSettingsContent () { - const { warning } = this.props + const { warning, isMascara } = this.props return ( h('div.settings__content', [ warning && h('div.settings__error', warning), + this.renderBlockieOptIn(), this.renderCurrentConversion(), // this.renderCurrentProvider(), this.renderNewRpcUrl(), this.renderStateLogs(), this.renderSeedWords(), + !isMascara && this.renderOldUI(), ]) ) } @@ -335,18 +379,22 @@ class Settings extends Component { Settings.propTypes = { tab: PropTypes.string, metamask: PropTypes.object, + setUseBlockie: PropTypes.func, setCurrentCurrency: PropTypes.func, setRpcTarget: PropTypes.func, displayWarning: PropTypes.func, revealSeedConfirmation: PropTypes.func, + setFeatureFlagToBeta: PropTypes.func, warning: PropTypes.string, goHome: PropTypes.func, + isMascara: PropTypes.bool, } const mapStateToProps = state => { return { metamask: state.metamask, warning: state.appState.warning, + isMascara: state.metamask.isMascara, } } @@ -357,6 +405,11 @@ const mapDispatchToProps = dispatch => { setRpcTarget: newRpc => dispatch(actions.setRpcTarget(newRpc)), displayWarning: warning => dispatch(actions.displayWarning(warning)), revealSeedConfirmation: () => dispatch(actions.revealSeedConfirmation()), + setUseBlockie: value => dispatch(actions.setUseBlockie(value)), + setFeatureFlagToBeta: () => { + return dispatch(actions.setFeatureFlag('betaUI', false, 'OLD_UI_NOTIFICATION_MODAL')) + .then(() => dispatch(actions.setNetworkEndpoints(OLD_UI_NETWORK_TYPE))) + }, } } diff --git a/ui/index.js b/ui/index.js index fff677471..bc3676c1f 100644 --- a/ui/index.js +++ b/ui/index.js @@ -4,11 +4,12 @@ const Root = require('./app/root') const actions = require('./app/actions') const configureStore = require('./app/store') const txHelper = require('./lib/tx-helper') +const { OLD_UI_NETWORK_TYPE, BETA_UI_NETWORK_TYPE } = require('../app/scripts/config').enums + global.log = require('loglevel') module.exports = launchMetamaskUi - log.setLevel(global.METAMASK_DEBUG ? 'debug' : 'warn') function launchMetamaskUi (opts, cb) { @@ -36,6 +37,10 @@ function startApp (metamaskState, accountManager, opts) { networkVersion: opts.networkVersion, }) + const useBetaUi = metamaskState.featureFlags.betaUI + const networkEndpointType = useBetaUi ? BETA_UI_NETWORK_TYPE : OLD_UI_NETWORK_TYPE + store.dispatch(actions.setNetworkEndpoints(networkEndpointType)) + // if unconfirmed txs, start on txConf page const unapprovedTxsAll = txHelper(metamaskState.unapprovedTxs, metamaskState.unapprovedMsgs, metamaskState.unapprovedPersonalMsgs, metamaskState.unapprovedTypedMessages, metamaskState.network) const numberOfUnapprivedTx = unapprovedTxsAll.length diff --git a/ui/lib/blockies.js b/ui/lib/blockies.js new file mode 100644 index 000000000..ee5a2a5ca --- /dev/null +++ b/ui/lib/blockies.js @@ -0,0 +1,364 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (factory((global.blockies = {}))); +}(this, (function (exports) { 'use strict'; + + /** + * A handy class to calculate color values. + * + * @version 1.0 + * @author Robert Eisele + * @copyright Copyright (c) 2010, Robert Eisele + * @link http://www.xarg.org/2010/03/generate-client-side-png-files-using-javascript/ + * @license http://www.opensource.org/licenses/bsd-license.php BSD License + * + */ + + +// helper functions for that ctx + function write(buffer, offs) { + for (var i = 2; i < arguments.length; i++) { + for (var j = 0; j < arguments[i].length; j++) { + buffer[offs++] = arguments[i].charAt(j); + } + } + } + + function byte2(w) { + return String.fromCharCode((w >> 8) & 255, w & 255); + } + + function byte4(w) { + return String.fromCharCode((w >> 24) & 255, (w >> 16) & 255, (w >> 8) & 255, w & 255); + } + + function byte2lsb(w) { + return String.fromCharCode(w & 255, (w >> 8) & 255); + } + + var PNG = function(width,height,depth) { + + this.width = width; + this.height = height; + this.depth = depth; + + // pixel data and row filter identifier size + this.pix_size = height * (width + 1); + + // deflate header, pix_size, block headers, adler32 checksum + this.data_size = 2 + this.pix_size + 5 * Math.floor((0xfffe + this.pix_size) / 0xffff) + 4; + + // offsets and sizes of Png chunks + this.ihdr_offs = 0; // IHDR offset and size + this.ihdr_size = 4 + 4 + 13 + 4; + this.plte_offs = this.ihdr_offs + this.ihdr_size; // PLTE offset and size + this.plte_size = 4 + 4 + 3 * depth + 4; + this.trns_offs = this.plte_offs + this.plte_size; // tRNS offset and size + this.trns_size = 4 + 4 + depth + 4; + this.idat_offs = this.trns_offs + this.trns_size; // IDAT offset and size + this.idat_size = 4 + 4 + this.data_size + 4; + this.iend_offs = this.idat_offs + this.idat_size; // IEND offset and size + this.iend_size = 4 + 4 + 4; + this.buffer_size = this.iend_offs + this.iend_size; // total PNG size + + this.buffer = new Array(); + this.palette = new Object(); + this.pindex = 0; + + var _crc32 = new Array(); + + // initialize buffer with zero bytes + for (var i = 0; i < this.buffer_size; i++) { + this.buffer[i] = "\x00"; + } + + // initialize non-zero elements + write(this.buffer, this.ihdr_offs, byte4(this.ihdr_size - 12), 'IHDR', byte4(width), byte4(height), "\x08\x03"); + write(this.buffer, this.plte_offs, byte4(this.plte_size - 12), 'PLTE'); + write(this.buffer, this.trns_offs, byte4(this.trns_size - 12), 'tRNS'); + write(this.buffer, this.idat_offs, byte4(this.idat_size - 12), 'IDAT'); + write(this.buffer, this.iend_offs, byte4(this.iend_size - 12), 'IEND'); + + // initialize deflate header + var header = ((8 + (7 << 4)) << 8) | (3 << 6); + header+= 31 - (header % 31); + + write(this.buffer, this.idat_offs + 8, byte2(header)); + + // initialize deflate block headers + for (var i = 0; (i << 16) - 1 < this.pix_size; i++) { + var size, bits; + if (i + 0xffff < this.pix_size) { + size = 0xffff; + bits = "\x00"; + } else { + size = this.pix_size - (i << 16) - i; + bits = "\x01"; + } + write(this.buffer, this.idat_offs + 8 + 2 + (i << 16) + (i << 2), bits, byte2lsb(size), byte2lsb(~size)); + } + + /* Create crc32 lookup table */ + for (var i = 0; i < 256; i++) { + var c = i; + for (var j = 0; j < 8; j++) { + if (c & 1) { + c = -306674912 ^ ((c >> 1) & 0x7fffffff); + } else { + c = (c >> 1) & 0x7fffffff; + } + } + _crc32[i] = c; + } + + // compute the index into a png for a given pixel + this.index = function(x,y) { + var i = y * (this.width + 1) + x + 1; + var j = this.idat_offs + 8 + 2 + 5 * Math.floor((i / 0xffff) + 1) + i; + return j; + }; + + // convert a color and build up the palette + this.color = function(red, green, blue, alpha) { + + alpha = alpha >= 0 ? alpha : 255; + var color = (((((alpha << 8) | red) << 8) | green) << 8) | blue; + + if (typeof this.palette[color] == "undefined") { + if (this.pindex == this.depth) return "\x00"; + + var ndx = this.plte_offs + 8 + 3 * this.pindex; + + this.buffer[ndx + 0] = String.fromCharCode(red); + this.buffer[ndx + 1] = String.fromCharCode(green); + this.buffer[ndx + 2] = String.fromCharCode(blue); + this.buffer[this.trns_offs+8+this.pindex] = String.fromCharCode(alpha); + + this.palette[color] = String.fromCharCode(this.pindex++); + } + return this.palette[color]; + }; + + // output a PNG string, Base64 encoded + this.getBase64 = function() { + + var s = this.getDump(); + + var ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + var c1, c2, c3, e1, e2, e3, e4; + var l = s.length; + var i = 0; + var r = ""; + + do { + c1 = s.charCodeAt(i); + e1 = c1 >> 2; + c2 = s.charCodeAt(i+1); + e2 = ((c1 & 3) << 4) | (c2 >> 4); + c3 = s.charCodeAt(i+2); + if (l < i+2) { e3 = 64; } else { e3 = ((c2 & 0xf) << 2) | (c3 >> 6); } + if (l < i+3) { e4 = 64; } else { e4 = c3 & 0x3f; } + r+= ch.charAt(e1) + ch.charAt(e2) + ch.charAt(e3) + ch.charAt(e4); + } while ((i+= 3) < l); + return r; + }; + + // output a PNG string + this.getDump = function() { + + // compute adler32 of output pixels + row filter bytes + var BASE = 65521; /* largest prime smaller than 65536 */ + var NMAX = 5552; /* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */ + var s1 = 1; + var s2 = 0; + var n = NMAX; + + for (var y = 0; y < this.height; y++) { + for (var x = -1; x < this.width; x++) { + s1+= this.buffer[this.index(x, y)].charCodeAt(0); + s2+= s1; + if ((n-= 1) == 0) { + s1%= BASE; + s2%= BASE; + n = NMAX; + } + } + } + s1%= BASE; + s2%= BASE; + write(this.buffer, this.idat_offs + this.idat_size - 8, byte4((s2 << 16) | s1)); + + // compute crc32 of the PNG chunks + function crc32(png, offs, size) { + var crc = -1; + for (var i = 4; i < size-4; i += 1) { + crc = _crc32[(crc ^ png[offs+i].charCodeAt(0)) & 0xff] ^ ((crc >> 8) & 0x00ffffff); + } + write(png, offs+size-4, byte4(crc ^ -1)); + } + + crc32(this.buffer, this.ihdr_offs, this.ihdr_size); + crc32(this.buffer, this.plte_offs, this.plte_size); + crc32(this.buffer, this.trns_offs, this.trns_size); + crc32(this.buffer, this.idat_offs, this.idat_size); + crc32(this.buffer, this.iend_offs, this.iend_size); + + // convert PNG to string + return "\x89PNG\r\n\x1A\n"+this.buffer.join(''); + }; + + this.fillRect = function (x, y, w, h, color) { + for(var i = 0; i < w; i++) { + for (var j = 0; j < h; j++) { + this.buffer[this.index(x+i, y+j)] = color; + } + } + }; + }; + +// https://stackoverflow.com/questions/2353211/hsl-to-rgb-color-conversion + /** + * Converts an HSL color value to RGB. Conversion formula + * adapted from http://en.wikipedia.org/wiki/HSL_color_space. + * Assumes h, s, and l are contained in the set [0, 1] and + * returns r, g, and b in the set [0, 255]. + * + * @param {number} h The hue + * @param {number} s The saturation + * @param {number} l The lightness + * @return {Array} The RGB representation + */ + + function hue2rgb(p, q, t) { + if(t < 0) t += 1; + if(t > 1) t -= 1; + if(t < 1/6) return p + (q - p) * 6 * t; + if(t < 1/2) return q; + if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; + return p; + } + + function hsl2rgb(h, s, l){ + var r, g, b; + + if(s == 0){ + r = g = b = l; // achromatic + }else{ + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hue2rgb(p, q, h + 1/3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1/3); + } + + return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), 255]; + } + +// The random number is a js implementation of the Xorshift PRNG + var randseed = new Array(4); // Xorshift: [x, y, z, w] 32 bit values + + function seedrand(seed) { + for (var i = 0; i < randseed.length; i++) { + randseed[i] = 0; + } + for (var i = 0; i < seed.length; i++) { + randseed[i % 4] = (randseed[i % 4] << 5) - randseed[i % 4] + seed.charCodeAt(i); + } + } + + function rand() { + // based on Java's String.hashCode(), expanded to 4 32bit values + var t = randseed[0] ^ (randseed[0] << 11); + + randseed[0] = randseed[1]; + randseed[1] = randseed[2]; + randseed[2] = randseed[3]; + randseed[3] = randseed[3] ^ (randseed[3] >> 19) ^ t ^ (t >> 8); + + return (randseed[3] >>> 0) / (1 << 31 >>> 0); + } + + function createColor() { + //saturation is the whole color spectrum + var h = Math.floor(rand() * 360); + //saturation goes from 40 to 100, it avoids greyish colors + var s = rand() * 60 + 40; + //lightness can be anything from 0 to 100, but probabilities are a bell curve around 50% + var l = (rand() + rand() + rand() + rand()) * 25; + + return [h / 360,s / 100,l / 100]; + } + + function createImageData(size) { + var width = size; // Only support square icons for now + var height = size; + + var dataWidth = Math.ceil(width / 2); + var mirrorWidth = width - dataWidth; + + var data = []; + for (var y = 0; y < height; y++) { + var row = []; + for (var x = 0; x < dataWidth; x++) { + // this makes foreground and background color to have a 43% (1/2.3) probability + // spot color has 13% chance + row[x] = Math.floor(rand() * 2.3); + } + var r = row.slice(0, mirrorWidth); + r.reverse(); + row = row.concat(r); + + for (var i = 0; i < row.length; i++) { + data.push(row[i]); + } + } + + return data; + } + + function buildOpts(opts) { + if (!opts.seed) { + throw 'No seed provided' + } + + seedrand(opts.seed); + + return Object.assign({ + size: 8, + scale: 16, + color: createColor(), + bgcolor: createColor(), + spotcolor: createColor(), + }, opts) + } + + function toDataUrl(address) { + const opts = buildOpts({seed: address.toLowerCase()}); + + const imageData = createImageData(opts.size); + const width = Math.sqrt(imageData.length); + + const p = new PNG(opts.size*opts.scale, opts.size*opts.scale, 3); + const bgcolor = p.color(...hsl2rgb(...opts.bgcolor)); + const color = p.color(...hsl2rgb(...opts.color)); + const spotcolor = p.color(...hsl2rgb(...opts.spotcolor)); + + for (var i = 0; i < imageData.length; i++) { + var row = Math.floor(i / width); + var col = i % width; + // if data is 0, leave the background + if (imageData[i]) { + // if data is 2, choose spot color, if 1 choose foreground + const pngColor = imageData[i] == 1 ? color : spotcolor; + p.fillRect(col * opts.scale, row * opts.scale, opts.scale, opts.scale, pngColor); + } + } + return `data:image/png;base64,${p.getBase64()}`; + } + + exports.toDataUrl = toDataUrl; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}))); diff --git a/yarn.lock b/yarn.lock index f8bd06cab..9a455caa7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19,6 +19,10 @@ normalize-path "^2.0.1" through2 "^2.0.3" +"@types/node@*": + version "8.0.58" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.58.tgz#5b3881c0be3a646874803fee3197ea7f1ed6df90" + "@types/node@^6.0.46": version "6.0.88" resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.88.tgz#f618f11a944f6a18d92b5c472028728a3e3d4b66" @@ -45,13 +49,9 @@ abbrev@1: version "1.1.0" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" -abbrev@1.0.x: +abi-decoder@^1.0.9: version "1.0.9" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" - -abi-decoder@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/abi-decoder/-/abi-decoder-1.0.8.tgz#7794d864c4b3fd8bab600bdd445ceb01d333ea43" + resolved "https://registry.yarnpkg.com/abi-decoder/-/abi-decoder-1.0.9.tgz#6bcfd86f7f63fbec8573d9778b3a4f92bb92e01f" dependencies: babel-core "^6.23.1" babel-loader "^6.3.2" @@ -59,7 +59,6 @@ abi-decoder@^1.0.8: babel-plugin-transform-es2015-modules-amd "^6.22.0" babel-preset-es2015 "^6.22.0" chai "^3.5.0" - mocha "^3.2.0" web3 "^0.18.4" webpack "^2.2.1" @@ -239,10 +238,6 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -argsparser@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/argsparser/-/argsparser-0.0.7.tgz#41c85e0c3de757b350f12e6ed0e490b1e82dbe06" - arr-diff@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" @@ -424,7 +419,7 @@ async-settle@^1.0.0: dependencies: async-done "^1.2.2" -async@1.x, async@^1.4.0, async@^1.4.2: +async@^1.4.0, async@^1.4.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -1284,13 +1279,17 @@ babel-types@^6.18.0, babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26 lodash "^4.17.4" to-fast-properties "^1.0.3" -babelify@^7.2.0, babelify@^7.3.0: +babelify@^7.3.0: version "7.3.0" resolved "https://registry.yarnpkg.com/babelify/-/babelify-7.3.0.tgz#aa56aede7067fd7bd549666ee16dc285087e88e5" dependencies: babel-core "^6.0.14" object-assign "^4.0.0" +babelify@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/babelify/-/babelify-8.0.0.tgz#6f60f5f062bfe7695754ef2403b842014a580ed3" + babylon@7.0.0-beta.22: version "7.0.0-beta.22" resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.22.tgz#74f0ad82ed7c7c3cfeab74cf684f815104161b65" @@ -1323,6 +1322,10 @@ backo2@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" +bail@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.2.tgz#f7d6c1731630a9f9f0d4d35ed1f962e2074a1764" + balanced-match@^0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" @@ -1402,9 +1405,9 @@ big.js@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978" -bignumber.js@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-4.0.4.tgz#7c40f5abcd2d6623ab7b99682ee7db81b11889a4" +bignumber.js@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-4.1.0.tgz#db6f14067c140bd46624815a7916c92d9b6c24b1" "bignumber.js@git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2": version "2.0.7" @@ -1948,6 +1951,18 @@ change-emitter@^0.1.2: version "0.1.6" resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515" +character-entities-legacy@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.1.tgz#f40779df1a101872bb510a3d295e1fccf147202f" + +character-entities@^1.0.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.1.tgz#f76871be5ef66ddb7f8f8e3478ecc374c27d6dca" + +character-reference-invalid@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.1.tgz#942835f750e4ec61a308e60c2ef8cc1011202efc" + charm@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/charm/-/charm-1.0.2.tgz#8add367153a6d9a581331052c4090991da995e35" @@ -1964,26 +1979,31 @@ checkpoint-store@^1.1.0: dependencies: functional-red-black-tree "^1.0.1" -cheerio@^0.22.0: - version "0.22.0" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.22.0.tgz#a9baa860a3f9b595a6b81b1a86873121ed3a269e" +cheerio@^1.0.0-rc.2: + version "1.0.0-rc.2" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.2.tgz#4b9f53a81b27e4d5dac31c0ffd0cfa03cc6830db" dependencies: css-select "~1.2.0" dom-serializer "~0.1.0" entities "~1.1.1" htmlparser2 "^3.9.1" - lodash.assignin "^4.0.9" - lodash.bind "^4.1.4" - lodash.defaults "^4.0.1" - lodash.filter "^4.4.0" - lodash.flatten "^4.2.0" - lodash.foreach "^4.3.0" - lodash.map "^4.4.0" - lodash.merge "^4.4.0" - lodash.pick "^4.2.1" - lodash.reduce "^4.4.0" - lodash.reject "^4.4.0" - lodash.some "^4.4.0" + lodash "^4.15.0" + parse5 "^3.0.1" + +chokidar@1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" chokidar@^1.0.0, chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.1, chokidar@^1.7.0: version "1.7.0" @@ -2025,12 +2045,6 @@ cli-cursor@^2.1.0: dependencies: restore-cursor "^2.0.0" -cli-table@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" - dependencies: - colors "1.0.3" - cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" @@ -2093,6 +2107,10 @@ coinstring@^2.0.0: bs58 "^2.0.1" create-hash "^1.1.1" +collapse-white-space@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.3.tgz#4b906f670e5a963a87b76b0e1689643341b6023c" + collection-map@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" @@ -2144,7 +2162,11 @@ colorguard@^1.2.0: text-table "^0.2.0" yargs "^1.2.6" -colors@1.0.3, colors@1.0.x: +colors@0.5.x: + version "0.5.1" + resolved "https://registry.yarnpkg.com/colors/-/colors-0.5.1.tgz#7d0023eaeb154e8ee9fce75dcb923d0ed1667774" + +colors@1.0.x: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" @@ -2205,24 +2227,6 @@ commoner@^0.10.0: q "^1.1.2" recast "^0.11.17" -commonmark-react-renderer@^4.2.4: - version "4.3.3" - resolved "https://registry.yarnpkg.com/commonmark-react-renderer/-/commonmark-react-renderer-4.3.3.tgz#9c4bca138bc83287bae792ccf133738be9cbc6fa" - dependencies: - in-publish "^2.0.0" - lodash.assign "^4.2.0" - lodash.isplainobject "^4.0.6" - pascalcase "^0.1.1" - xss-filters "^1.2.6" - -commonmark@^0.24.0: - version "0.24.0" - resolved "https://registry.yarnpkg.com/commonmark/-/commonmark-0.24.0.tgz#b80de0182c546355643aa15db12bfb282368278f" - dependencies: - entities "~ 1.1.1" - mdurl "~ 1.0.1" - string.prototype.repeat "^0.2.0" - component-bind@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" @@ -2403,7 +2407,7 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: safe-buffer "^5.0.1" sha.js "^2.4.8" -create-react-class@^15.5.2, create-react-class@^15.6.0: +create-react-class@^15.6.0: version "15.6.0" resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.6.0.tgz#ab448497c26566e1e29413e883207d57cfe7bed4" dependencies: @@ -2805,10 +2809,6 @@ di@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" -diff@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" - diff@3.3.1, diff@^3.1.0: version "3.3.1" resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" @@ -2840,6 +2840,10 @@ disc@^1.3.2: through "^2.3.4" uniq "^1.0.0" +discontinuous-range@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/discontinuous-range/-/discontinuous-range-1.0.0.tgz#e38331f0844bba49b9a9cb71c771585aab1bc65a" + dnode-protocol@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/dnode-protocol/-/dnode-protocol-0.2.2.tgz#51151d16fc3b5f84815ee0b9497a1061d0d1949d" @@ -3129,11 +3133,15 @@ ensnare@^1.0.0: dependencies: tape "^4.6.0" +ensure-posix-path@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ensure-posix-path/-/ensure-posix-path-1.0.2.tgz#a65b3e42d0b71cfc585eb774f9943c8d9b91b0c2" + ent@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" -entities@^1.1.1, "entities@~ 1.1.1", entities@~1.1.1: +entities@^1.1.1, entities@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" @@ -3144,20 +3152,39 @@ envify@^4.0.0: esprima "^4.0.0" through "~2.3.4" -enzyme@^2.8.2: - version "2.9.1" - resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-2.9.1.tgz#07d5ce691241240fb817bf2c4b18d6e530240df6" +enzyme-adapter-react-15@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/enzyme-adapter-react-15/-/enzyme-adapter-react-15-1.0.5.tgz#99f9a03ff2c2303e517342935798a6bdfbb75fac" + dependencies: + enzyme-adapter-utils "^1.1.0" + lodash "^4.17.4" + object.assign "^4.0.4" + object.values "^1.0.4" + prop-types "^15.5.10" + +enzyme-adapter-utils@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.2.0.tgz#7f4471ee0a70b91169ec8860d2bf0a6b551664b2" dependencies: - cheerio "^0.22.0" - function.prototype.name "^1.0.0" + lodash "^4.17.4" + object.assign "^4.0.4" + prop-types "^15.5.10" + +enzyme@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/enzyme/-/enzyme-3.2.0.tgz#998bdcda0fc71b8764a0017f7cc692c943f54a7a" + dependencies: + cheerio "^1.0.0-rc.2" + function.prototype.name "^1.0.3" + has "^1.0.1" is-subset "^0.1.1" lodash "^4.17.4" object-is "^1.0.1" object.assign "^4.0.4" object.entries "^1.0.4" object.values "^1.0.4" - prop-types "^15.5.10" - uuid "^3.0.1" + raf "^3.4.0" + rst-selector-parser "^2.2.3" errno@^0.1.3, errno@~0.1.1: version "0.1.4" @@ -3249,17 +3276,6 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.0, escape-string-regexp@^1 version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -escodegen@1.8.x: - version "1.8.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" - dependencies: - esprima "^2.7.1" - estraverse "^1.9.1" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.2.0" - escodegen@^1.6.1: version "1.9.0" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.0.tgz#9811a2f265dc1cd3894420ee3717064b632b8852" @@ -3382,10 +3398,6 @@ esprima-fb@3001.1.0-dev-harmony-fb: version "3001.1.0-dev-harmony-fb" resolved "https://registry.yarnpkg.com/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz#b77d37abcd38ea0b77426bb8bc2922ce6b426411" -esprima@2.7.x, esprima@^2.7.1: - version "2.7.3" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" - esprima@^3.1.3, esprima@~3.1.0: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" @@ -3415,10 +3427,6 @@ esrecurse@^4.1.0: estraverse "^4.1.0" object-assign "^4.0.1" -estraverse@^1.9.1: - version "1.9.3" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" - estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" @@ -3773,6 +3781,17 @@ ethjs-format@0.2.2: number-to-bn "1.7.0" strip-hex-prefix "1.0.0" +ethjs-format@0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/ethjs-format/-/ethjs-format-0.2.4.tgz#5bbbc44a5ad24e68ab393312ff9039a73b65bf81" + dependencies: + bn.js "4.11.6" + ethjs-schema "^0.1.9" + ethjs-util "0.1.3" + is-hex-prefixed "1.0.0" + number-to-bn "1.7.0" + strip-hex-prefix "1.0.0" + ethjs-provider-http@0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-provider-http/-/ethjs-provider-http-0.1.6.tgz#1ec5d9b4be257ef1d56a500b22a741985e889420" @@ -3793,14 +3812,29 @@ ethjs-query@^0.2.4, ethjs-query@^0.2.6, ethjs-query@^0.2.9: ethjs-format "0.2.2" ethjs-rpc "0.1.5" +ethjs-query@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/ethjs-query/-/ethjs-query-0.3.2.tgz#f488a48ce1994cd4c77eccb7b52902c6f29cfd85" + dependencies: + ethjs-format "0.2.4" + ethjs-rpc "0.1.8" + ethjs-rpc@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/ethjs-rpc/-/ethjs-rpc-0.1.5.tgz#099e22f27dc4c18b6978a485fc36b1b0f7969080" +ethjs-rpc@0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/ethjs-rpc/-/ethjs-rpc-0.1.8.tgz#1676740e41c7228196a71189d33f15c9c85b599d" + ethjs-schema@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/ethjs-schema/-/ethjs-schema-0.1.5.tgz#59740e3b3977bcdbb9b11bc3068201e8aceabb0d" +ethjs-schema@^0.1.9: + version "0.1.9" + resolved "https://registry.yarnpkg.com/ethjs-schema/-/ethjs-schema-0.1.9.tgz#858c2a5da706ae04812b4ce8b1eb4b4921e33092" + ethjs-unit@0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" @@ -3897,6 +3931,10 @@ execall@^1.0.0: dependencies: clone-regexp "^1.0.0" +exists-stat@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/exists-stat/-/exists-stat-1.0.0.tgz#0660e3525a2e89d9e446129440c272edfa24b529" + expand-braces@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" @@ -4224,7 +4262,7 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" -findup-sync@^0.4.2: +findup-sync@0.4.3, findup-sync@^0.4.2: version "0.4.3" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12" dependencies: @@ -4447,7 +4485,7 @@ function-bind@^1.0.2, function-bind@^1.1.0, function-bind@^1.1.1, function-bind@ version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" -function.prototype.name@^1.0.0: +function.prototype.name@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.0.3.tgz#0099ae5572e9dd6f03c97d023fd92bcc5e639eac" dependencies: @@ -4459,9 +4497,9 @@ functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" -fuse.js@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-3.1.0.tgz#9062146c471552189b0f678b4f5a155731ae3b3c" +fuse.js@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-3.2.0.tgz#f0448e8069855bf2a3e683cdc1d320e7e2a07ef4" gather-stream@^1.0.0: version "1.0.0" @@ -4577,17 +4615,6 @@ glob-watcher@^3.0.0: lodash.debounce "^4.0.6" object.defaults "^1.0.0" -glob@7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - glob@7.1.2, glob@^7.0.0, glob@^7.0.3, glob@^7.0.4, glob@^7.0.5, glob@^7.0.6, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1, glob@~7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" @@ -4691,10 +4718,6 @@ growl@1.10.3: version "1.10.3" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" -growl@1.9.2: - version "1.9.2" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" - growly@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" @@ -4904,7 +4927,7 @@ gulplog@^1.0.0: dependencies: glogg "^1.0.0" -handlebars@^4.0.1, handlebars@^4.0.3: +handlebars@^4.0.3: version "4.0.10" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.10.tgz#3d30c718b09a3d96f23ea4cc1f403c4d3ba9ff4f" dependencies: @@ -5322,6 +5345,17 @@ is-absolute@^0.2.3: is-relative "^0.2.1" is-windows "^0.2.0" +is-alphabetical@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.1.tgz#c77079cc91d4efac775be1034bf2d243f95e6f08" + +is-alphanumerical@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.1.tgz#dfb4aa4d1085e33bdb61c2dee9c80e9c6c19f53b" + dependencies: + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" @@ -5336,6 +5370,10 @@ is-buffer@^1.1.0, is-buffer@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" +is-buffer@^1.1.4: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + is-builtin-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" @@ -5350,6 +5388,10 @@ is-date-object@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" +is-decimal@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.1.tgz#f5fb6a94996ad9e8e3761fbfbd091f1fca8c4e82" + is-directory@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" @@ -5416,6 +5458,10 @@ is-hex-prefixed@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" +is-hexadecimal@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.1.tgz#6e084bbc92061fbb0971ec58b6ce6d404e24da69" + is-number@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" @@ -5448,6 +5494,10 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + is-plain-object@^2.0.1, is-plain-object@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -5528,10 +5578,18 @@ is-valid-glob@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-0.3.0.tgz#d4b55c69f51886f9b65c70d6c2622d37e29f48fe" +is-whitespace-character@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.1.tgz#9ae0176f3282b65457a1992cdb084f8a5f833e3b" + is-windows@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" +is-word-character@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.1.tgz#5a03fa1ea91ace8a6eb0c7cd770eb86d65c8befb" + isarray@0.0.1, isarray@~0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" @@ -5616,25 +5674,6 @@ istanbul-reports@^1.1.1: dependencies: handlebars "^4.0.3" -istanbul@0.4.5: - version "0.4.5" - resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b" - dependencies: - abbrev "1.0.x" - async "1.x" - escodegen "1.8.x" - esprima "2.7.x" - glob "^5.0.15" - handlebars "^4.0.1" - js-yaml "3.x" - mkdirp "0.5.x" - nopt "3.x" - once "1.x" - resolve "1.1.x" - supports-color "^3.1.0" - which "^1.1.1" - wordwrap "^1.0.0" - istextorbinary@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-1.0.2.tgz#ace19354d1a9a0173efeb1084ce0f87b0ad7decf" @@ -5662,6 +5701,10 @@ js-beautify@~1.5.4: mkdirp "~0.5.0" nopt "~3.0.1" +js-reporters@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/js-reporters/-/js-reporters-1.2.0.tgz#7cf2cb698196684790350d0c4ca07f4aed9ec17e" + js-sha3@0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.5.tgz#baf0c0e8c54ad5903447df96ade7a4a1bca79a4a" @@ -5678,7 +5721,7 @@ js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" -js-yaml@3.x, js-yaml@^3.2.5, js-yaml@^3.2.7, js-yaml@^3.4.3, js-yaml@^3.6.1, js-yaml@^3.9.1: +js-yaml@^3.2.5, js-yaml@^3.2.7, js-yaml@^3.4.3, js-yaml@^3.6.1, js-yaml@^3.9.1: version "3.10.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.10.0.tgz#2e78441646bd4682e963f22b6e92823c309c62dc" dependencies: @@ -6150,10 +6193,6 @@ lodash._basecopy@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" -lodash._basecreate@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" - lodash._baseflatten@^3.0.0: version "3.1.4" resolved "https://registry.yarnpkg.com/lodash._baseflatten/-/lodash._baseflatten-3.1.4.tgz#0770ff80131af6e34f3b511796a7ba5214e65ff7" @@ -6217,26 +6256,14 @@ lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" -lodash.assignin@^4.0.9, lodash.assignin@^4.1.0: +lodash.assignin@^4.1.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assignin/-/lodash.assignin-4.2.0.tgz#ba8df5fb841eb0a3e8044232b0e263a8dc6a28a2" -lodash.bind@^4.1.4: - version "4.2.1" - resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-4.2.1.tgz#7ae3017e939622ac31b7d7d7dcb1b34db1690d35" - lodash.clonedeep@^4.3.2, lodash.clonedeep@^4.4.1: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" -lodash.create@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" - dependencies: - lodash._baseassign "^3.0.0" - lodash._basecreate "^3.0.0" - lodash._isiterateecall "^3.0.0" - lodash.debounce@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-3.1.1.tgz#812211c378a94cc29d5aa4e3346cf0bfce3a7df5" @@ -6247,20 +6274,12 @@ lodash.debounce@^4.0.6, lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" -lodash.defaults@^4.0.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - lodash.escape@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" dependencies: lodash._root "^3.0.0" -lodash.filter@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.filter/-/lodash.filter-4.6.0.tgz#668b1d4981603ae1cc5a6fa760143e480b4c4ace" - lodash.find@^4.5.1: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.find/-/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1" @@ -6276,13 +6295,9 @@ lodash.flatten@^3.0.2: lodash._baseflatten "^3.0.0" lodash._isiterateecall "^3.0.0" -lodash.flatten@^4.2.0: +lodash.flattendeep@^4.4.0: version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - -lodash.foreach@^4.3.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.foreach/-/lodash.foreach-4.5.0.tgz#1a6a35eace401280c7f06dddec35165ab27e3e53" + resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" lodash.get@^4.4.2: version "4.4.2" @@ -6304,7 +6319,7 @@ lodash.isfunction@^3.0.8: version "3.0.8" resolved "https://registry.yarnpkg.com/lodash.isfunction/-/lodash.isfunction-3.0.8.tgz#4db709fc81bc4a8fd7127a458a5346c5cdce2c6b" -lodash.isplainobject@^4.0.4, lodash.isplainobject@^4.0.6: +lodash.isplainobject@^4.0.4: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" @@ -6320,10 +6335,6 @@ lodash.keys@^3.0.0: lodash.isarguments "^3.0.0" lodash.isarray "^3.0.0" -lodash.map@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.map/-/lodash.map-4.6.0.tgz#771ec7839e3473d9c4cde28b19394c3562f4f6d3" - lodash.mapvalues@^4.4.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" @@ -6336,26 +6347,10 @@ lodash.memoize@~3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" -lodash.merge@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.0.tgz#69884ba144ac33fe699737a6086deffadd0f89c5" - lodash.mergewith@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz#150cf0a16791f5903b8891eab154609274bdea55" -lodash.pick@^4.2.1: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" - -lodash.reduce@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.reduce/-/lodash.reduce-4.6.0.tgz#f1ab6b839299ad48f784abbf476596f03b914d3b" - -lodash.reject@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.reject/-/lodash.reject-4.6.0.tgz#80d6492dc1470864bbf583533b651f42a9f52415" - lodash.restparam@^3.0.0: version "3.6.1" resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" @@ -6364,10 +6359,6 @@ lodash.shuffle@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.shuffle/-/lodash.shuffle-4.2.0.tgz#145b5053cf875f6f5c2a33f48b6e9948c6ec7b4b" -lodash.some@^4.4.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.some/-/lodash.some-4.6.0.tgz#1bb9f314ef6b8baded13b549169b2a945eb68e4d" - lodash.sortby@^4.5.0, lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" @@ -6401,7 +6392,7 @@ lodash@^3.8.0: version "3.10.1" resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" -lodash@^4.0.0, lodash@^4.1.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.0, lodash@~4.17.2, lodash@~4.17.4: +lodash@^4.0.0, lodash@^4.1.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.4, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.0, lodash@~4.17.2, lodash@~4.17.4: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" @@ -6506,6 +6497,10 @@ map-stream@~0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.1.0.tgz#e56aa94c4c8055a16404a0674b78f215f7c8e194" +markdown-escapes@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.1.tgz#1994df2d3af4811de59a6714934c2b2292734518" + matchdep@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-1.0.1.tgz#a57a33804491fbae208aba8f68380437abc2dca5" @@ -6515,6 +6510,12 @@ matchdep@^1.0.0: resolve "~1.1.6" stack-trace "0.0.9" +matcher-collection@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/matcher-collection/-/matcher-collection-1.0.5.tgz#2ee095438372cb8884f058234138c05c644ec339" + dependencies: + minimatch "^3.0.2" + mathml-tag-names@^2.0.0, mathml-tag-names@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/mathml-tag-names/-/mathml-tag-names-2.0.1.tgz#8d41268168bf86d1102b98109e28e531e7a34578" @@ -6536,10 +6537,6 @@ md5.js@^1.3.4: hash-base "^3.0.0" inherits "^2.0.1" -"mdurl@~ 1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" @@ -6780,7 +6777,7 @@ mkdirp@0.0.x: version "0.0.7" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.0.7.tgz#d89b4f0e4c3e5e5ca54235931675e094fe1a5072" -mkdirp@0.5.1, mkdirp@0.5.x, mkdirp@0.x.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: +mkdirp@0.5.1, mkdirp@0.x.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@~0.5.0: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -6803,23 +6800,6 @@ mocha-sinon@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/mocha-sinon/-/mocha-sinon-2.0.0.tgz#723a9310e7d737d7b77c7a66821237425b032d48" -mocha@^3.2.0: - version "3.5.3" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d" - dependencies: - browser-stdout "1.3.0" - commander "2.9.0" - debug "2.6.8" - diff "3.2.0" - escape-string-regexp "1.0.5" - glob "7.1.1" - growl "1.9.2" - he "1.1.1" - json3 "3.3.2" - lodash.create "3.1.1" - mkdirp "0.5.1" - supports-color "3.1.2" - mocha@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/mocha/-/mocha-4.0.1.tgz#0aee5a95cf69a4618820f5e51fa31717117daf1b" @@ -6928,6 +6908,14 @@ ncp@1.0.x: version "1.0.1" resolved "https://registry.yarnpkg.com/ncp/-/ncp-1.0.1.tgz#d15367e5cb87432ba117d2bf80fdf45aecfb4246" +nearley@^2.7.10: + version "2.11.0" + resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.11.0.tgz#5e626c79a6cd2f6ab9e7e5d5805e7668967757ae" + dependencies: + nomnom "~1.6.2" + railroad-diagrams "^1.0.0" + randexp "^0.4.2" + negotiator@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" @@ -7064,11 +7052,18 @@ node-sass@^4.2.0: sass-graph "^2.1.1" stdout-stream "^1.4.0" +nomnom@~1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.6.2.tgz#84a66a260174408fc5b77a18f888eccc44fb6971" + dependencies: + colors "0.5.x" + underscore "~1.4.4" + noop-logger@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" -"nopt@2 || 3", nopt@3.x, nopt@~3.0.1: +"nopt@2 || 3", nopt@~3.0.1: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" dependencies: @@ -7289,7 +7284,7 @@ object.values@^1.0.4: function-bind "^1.1.0" has "^1.0.1" -obs-store@^2.3.1, obs-store@^2.4.1: +obs-store@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/obs-store/-/obs-store-2.4.1.tgz#5425b85dabaf08d913464000ba65aaf25296492f" dependencies: @@ -7299,13 +7294,23 @@ obs-store@^2.3.1, obs-store@^2.4.1: through2 "^2.0.3" xtend "^4.0.1" +obs-store@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/obs-store/-/obs-store-3.0.0.tgz#f44aa9ad73c65ceeeaa00476d434d4e5c3f0a9e8" + dependencies: + babel-preset-es2015 "^6.22.0" + babelify "^7.3.0" + readable-stream "^2.2.2" + through2 "^2.0.3" + xtend "^4.0.1" + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" dependencies: ee-first "1.1.1" -once@1.x, once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.3.3, once@^1.4.0: +once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.3.3, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: @@ -7451,6 +7456,17 @@ parse-asn1@^5.0.0: evp_bytestokey "^1.0.0" pbkdf2 "^3.0.3" +parse-entities@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.1.1.tgz#8112d88471319f27abae4d64964b122fe4e1b890" + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + parse-filepath@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.1.tgz#159d6155d43904d16c10ef698911da1e91969b73" @@ -7485,6 +7501,12 @@ parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" +parse5@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" + dependencies: + "@types/node" "*" + parse5@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.2.tgz#05eff57f0ef4577fb144a79f8b9a967a6cc44510" @@ -7513,10 +7535,6 @@ parseurl@~1.3.0, parseurl@~1.3.1, parseurl@~1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.2.tgz#fc289d4ed8993119460c156253262cdc8de65bf3" -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - path-browserify@0.0.0, path-browserify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" @@ -7613,6 +7631,10 @@ performance-now@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -7890,14 +7912,14 @@ prompt@^1.0.0: utile "0.3.x" winston "2.1.x" -prop-types@^15.5.1, prop-types@^15.5.10, prop-types@^15.5.6, prop-types@^15.5.8: +prop-types@^15.5.10, prop-types@^15.5.6, prop-types@^15.5.8: version "15.5.10" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz#2797dfc3126182e3a95e3dfbb2e893ddd7456154" dependencies: fbjs "^0.8.9" loose-envify "^1.3.1" -prop-types@^15.5.7: +prop-types@^15.5.7, prop-types@^15.6.0: version "15.6.0" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.6.0.tgz#ceaf083022fc46b4a35f69e13ef75aed0d639856" dependencies: @@ -8016,22 +8038,17 @@ querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" -qunit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/qunit/-/qunit-1.0.0.tgz#1d3dcfbfaec81979cb4bdaee45450bb5e5914f8c" +qunitjs@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/qunitjs/-/qunitjs-2.4.1.tgz#88aba055a9e2ec3dbebfaad02471b2cb002c530b" dependencies: - argsparser "^0.0.7" - cli-table "^0.3.0" - co "^4.6.0" - qunitjs "2.1.1" - tracejs "^0.1.8" - underscore "^1.6.0" - optionalDependencies: - istanbul "0.4.5" - -qunitjs@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/qunitjs/-/qunitjs-2.1.1.tgz#c3087c864d9a9443103bdbdecc0ef359c7a82281" + chokidar "1.6.1" + commander "2.9.0" + exists-stat "1.0.0" + findup-sync "0.4.3" + js-reporters "1.2.0" + resolve "1.3.2" + walk-sync "0.3.1" quote-stream@^1.0.1: version "1.0.2" @@ -8048,10 +8065,27 @@ quote-stream@~0.0.0: minimist "0.0.8" through2 "~0.4.1" +raf@^3.1.0, raf@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.0.tgz#a28876881b4bc2ca9117d4138163ddb80f781575" + dependencies: + performance-now "^2.1.0" + +railroad-diagrams@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz#eb7e6267548ddedfb899c1b90e57374559cddb7e" + ramda@^0.24.1: version "0.24.1" resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.24.1.tgz#c3b7755197f35b8dc3502228262c4c91ddb6b857" +randexp@^0.4.2: + version "0.4.6" + resolved "https://registry.yarnpkg.com/randexp/-/randexp-0.4.6.tgz#e986ad5e5e31dae13ddd6f7b3019aa7c87f60ca3" + dependencies: + discontinuous-range "1.0.0" + ret "~0.1.10" + randomatic@^1.1.3: version "1.1.7" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c" @@ -8111,7 +8145,7 @@ react-addons-test-utils@^15.5.1: version "15.6.0" resolved "https://registry.yarnpkg.com/react-addons-test-utils/-/react-addons-test-utils-15.6.0.tgz#062d36117fe8d18f3ba5e06eb33383b0b85ea5b9" -react-dom@^15.0.2, react-dom@^15.5.4: +react-dom@^15.0.2: version "15.6.1" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.6.1.tgz#2cb0ed4191038e53c209eb3a79a23e2a4cf99470" dependencies: @@ -8120,6 +8154,15 @@ react-dom@^15.0.2, react-dom@^15.5.4: object-assign "^4.1.0" prop-types "^15.5.10" +react-dom@^15.6.2: + version "15.6.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-15.6.2.tgz#41cfadf693b757faf2708443a1d1fd5a02bef730" + dependencies: + fbjs "^0.8.9" + loose-envify "^1.1.0" + object-assign "^4.1.0" + prop-types "^15.5.10" + react-hyperscript@^2.4.0: version "2.4.2" resolved "https://registry.yarnpkg.com/react-hyperscript/-/react-hyperscript-2.4.2.tgz#c19b1f5a161ca2df10bcce6dd2299e8547a982fe" @@ -8130,21 +8173,29 @@ react-hyperscript@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/react-hyperscript/-/react-hyperscript-3.0.0.tgz#3c16010b33175de6bc01fd1ebad0a16a9a6dc9ab" -react-input-autosize@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-2.0.1.tgz#e92190497b4026c2780ad0f2fd703c835ba03e33" +react-input-autosize@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-2.1.2.tgz#a3dc11a5517c434db25229925541309de3f7a8f5" dependencies: - create-react-class "^15.5.2" prop-types "^15.5.8" -react-markdown@^2.3.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-2.5.0.tgz#b1c61904fee5895886803bd9df7db23c3dc3a89e" +react-markdown@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-3.1.1.tgz#8edc42ee958e6a33f6fddc21f24d26ac96faa005" dependencies: - commonmark "^0.24.0" - commonmark-react-renderer "^4.2.4" - in-publish "^2.0.0" - prop-types "^15.5.1" + prop-types "^15.6.0" + remark-parse "^4.0.0" + unified "^6.1.5" + unist-util-visit "^1.1.3" + xtend "^4.0.1" + +react-motion@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/react-motion/-/react-motion-0.5.2.tgz#0dd3a69e411316567927917c6626551ba0607316" + dependencies: + performance-now "^0.2.0" + prop-types "^15.5.8" + raf "^3.1.0" react-redux@^5.0.5: version "5.0.6" @@ -8157,13 +8208,13 @@ react-redux@^5.0.5: loose-envify "^1.1.0" prop-types "^15.5.10" -react-select@^1.0.0-rc.2: - version "1.0.0-rc.10" - resolved "https://registry.yarnpkg.com/react-select/-/react-select-1.0.0-rc.10.tgz#f137346250f9255c979fbfa21860899928772350" +react-select@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-1.1.0.tgz#626a2de839fdea2ade74dd1b143a9bde34be6c82" dependencies: classnames "^2.2.4" prop-types "^15.5.8" - react-input-autosize "^2.0.1" + react-input-autosize "^2.1.0" react-simple-file-input@^2.0.0: version "2.0.0" @@ -8171,9 +8222,9 @@ react-simple-file-input@^2.0.0: dependencies: prop-types "^15.5.7" -react-test-renderer@^15.5.4: - version "15.6.1" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-15.6.1.tgz#026f4a5bb5552661fd2cc4bbcd0d4bc8a35ebf7e" +react-test-renderer@^15.6.2: + version "15.6.2" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-15.6.2.tgz#d0333434fc2c438092696ca770da5ed48037efa8" dependencies: fbjs "^0.8.9" object-assign "^4.1.0" @@ -8185,6 +8236,13 @@ react-testutils-additions@^15.2.0: object-assign "3.0.0" sizzle "2.3.3" +react-toggle-button@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/react-toggle-button/-/react-toggle-button-2.2.0.tgz#a1b92143aa0df414642fcb141f0879f545bc5a89" + dependencies: + prop-types "^15.6.0" + react-motion "^0.5.2" + react-tools@~0.13.0: version "0.13.3" resolved "https://registry.yarnpkg.com/react-tools/-/react-tools-0.13.3.tgz#da6ac7d4d7777a59a5e951cf46e72fd4b6b40a2c" @@ -8206,9 +8264,9 @@ react-transition-group@^1.2.0: prop-types "^15.5.6" warning "^3.0.0" -react-transition-group@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.2.0.tgz#793bf8cb15bfe91b3101b24bce1c1d2891659575" +react-transition-group@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.2.1.tgz#e9fb677b79e6455fd391b03823afe84849df4a10" dependencies: chain-function "^1.0.0" classnames "^2.2.5" @@ -8231,6 +8289,16 @@ react-trigger-change@^1.0.2: object-assign "^4.1.0" prop-types "^15.5.10" +react@^15.6.2: + version "15.6.2" + resolved "https://registry.yarnpkg.com/react/-/react-15.6.2.tgz#dba0434ab439cfe82f108f0f511663908179aa72" + dependencies: + create-react-class "^15.6.0" + fbjs "^0.8.9" + loose-envify "^1.1.0" + object-assign "^4.1.0" + prop-types "^15.5.10" + reactify@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/reactify/-/reactify-1.1.1.tgz#a8f119596273c0d4bfb1abea0c14c2601ea03bba" @@ -8440,6 +8508,26 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" +remark-parse@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-4.0.0.tgz#99f1f049afac80382366e2e0d0bd55429dd45d8b" + dependencies: + collapse-white-space "^1.0.2" + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + is-whitespace-character "^1.0.0" + is-word-character "^1.0.0" + markdown-escapes "^1.0.0" + parse-entities "^1.0.2" + repeat-string "^1.5.4" + state-toggle "^1.0.0" + trim "0.0.1" + trim-trailing-lines "^1.0.0" + unherit "^1.0.4" + unist-util-remove-position "^1.0.0" + vfile-location "^2.0.0" + xtend "^4.0.1" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -8452,7 +8540,7 @@ repeat-string@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" -repeat-string@^1.5.2: +repeat-string@^1.5.2, repeat-string@^1.5.4: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" @@ -8472,6 +8560,10 @@ replace-ext@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" +replace-ext@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" + replaceall@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/replaceall/-/replaceall-0.1.6.tgz#81d81ac7aeb72d7f5c4942adf2697a3220688d8e" @@ -8580,10 +8672,16 @@ resolve-url@~0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" -resolve@1.1.7, resolve@1.1.x, resolve@~1.1.6: +resolve@1.1.7, resolve@~1.1.6: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" +resolve@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235" + dependencies: + path-parse "^1.0.5" + resolve@^0.6.1: version "0.6.3" resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.6.3.tgz#dd957982e7e736debdf53b58a4dd91754575dd46" @@ -8611,6 +8709,10 @@ resumer@~0.0.0: dependencies: through "~2.3.4" +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + revalidator@0.1.x: version "0.1.8" resolved "https://registry.yarnpkg.com/revalidator/-/revalidator-0.1.8.tgz#fece61bfa0c1b52a206bd6b18198184bdd523a3b" @@ -8638,6 +8740,13 @@ rlp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.0.0.tgz#9db384ff4b89a8f61563d92395d8625b18f3afb0" +rst-selector-parser@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/rst-selector-parser/-/rst-selector-parser-2.2.3.tgz#81b230ea2fcc6066c89e3472de794285d9b03d91" + dependencies: + lodash.flattendeep "^4.4.0" + nearley "^2.7.10" + run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" @@ -8743,7 +8852,7 @@ semver-greatest-satisfied-range@^1.0.0: dependencies: sver-compat "^1.5.0" -"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0, semver@~5.4.1: +"semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0, semver@^5.4.1, semver@~5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" @@ -9055,12 +9164,6 @@ source-map@^0.4.2, source-map@^0.4.4: dependencies: amdefine ">=0.0.4" -source-map@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" - dependencies: - amdefine ">=0.0.4" - sparkles@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" @@ -9136,6 +9239,10 @@ stack-trace@0.0.x: version "0.0.10" resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" +state-toggle@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.0.tgz#d20f9a616bb4f0c3b98b91922d25b640aa2bc425" + static-eval@~0.2.0: version "0.2.4" resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-0.2.4.tgz#b7d34d838937b969f9641ca07d48f8ede263ea7b" @@ -9267,10 +9374,6 @@ string-width@^2.0.0, string-width@^2.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string.prototype.repeat@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/string.prototype.repeat/-/string.prototype.repeat-0.2.0.tgz#aba36de08dcee6a5a337d49b2ea1da1b28fc0ecf" - string.prototype.trim@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz#d04de2c89e137f4d7d206f086b5ed2fae6be8cea" @@ -9522,12 +9625,6 @@ sugarss@^1.0.0: dependencies: postcss "^6.0.0" -supports-color@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" - dependencies: - has-flag "^1.0.0" - supports-color@4.4.0, supports-color@^4.0.0, supports-color@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" @@ -9886,10 +9983,6 @@ tr46@^1.0.0: dependencies: punycode "^2.1.0" -tracejs@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/tracejs/-/tracejs-0.1.8.tgz#6c26787b1853f1371634622c1c80bc44026c5d70" - traverse@~0.6.3: version "0.6.6" resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.6.6.tgz#cbdf560fd7b9af632502fed40f918c157ea97137" @@ -9902,10 +9995,18 @@ trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" +trim-trailing-lines@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.0.tgz#7aefbb7808df9d669f6da2e438cac8c46ada7684" + trim@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" +trough@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.1.tgz#a9fd8b0394b0ae8fff82e0633a0a36ccad5b5f86" + trumpet@^1.7.1: version "1.7.2" resolved "https://registry.yarnpkg.com/trumpet/-/trumpet-1.7.2.tgz#b02c69e465d171f55e44924bf9b5bdd20974c830" @@ -10014,10 +10115,14 @@ unc-path-regex@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" -underscore@>=1.8.3, underscore@^1.6.0: +underscore@>=1.8.3: version "1.8.3" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.8.3.tgz#4f3fb53b106e6097fcf9cb4109f2a5e9bdfa5022" +underscore@~1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.4.4.tgz#61a6a32010622afa07963bf325203cf12239d604" + undertaker-registry@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/undertaker-registry/-/undertaker-registry-1.0.0.tgz#2da716c765999d8c94b9f9ed2c006df4923b052b" @@ -10036,6 +10141,25 @@ undertaker@^1.0.0: object.reduce "^1.0.0" undertaker-registry "^1.0.0" +unherit@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.0.tgz#6b9aaedfbf73df1756ad9e316dd981885840cd7d" + dependencies: + inherits "^2.0.1" + xtend "^4.0.1" + +unified@^6.1.5: + version "6.1.6" + resolved "https://registry.yarnpkg.com/unified/-/unified-6.1.6.tgz#5ea7f807a0898f1f8acdeefe5f25faa010cc42b1" + dependencies: + bail "^1.0.0" + extend "^3.0.0" + is-plain-obj "^1.1.0" + trough "^1.0.0" + vfile "^2.0.0" + x-is-function "^1.0.4" + x-is-string "^0.1.0" + uniq@^1.0.0, uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" @@ -10047,6 +10171,26 @@ unique-stream@^2.0.2: json-stable-stringify "^1.0.0" through2-filter "^2.0.0" +unist-util-is@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.1.1.tgz#0c312629e3f960c66e931e812d3d80e77010947b" + +unist-util-remove-position@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.1.tgz#5a85c1555fc1ba0c101b86707d15e50fa4c871bb" + dependencies: + unist-util-visit "^1.1.0" + +unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.1.tgz#3ccbdc53679eed6ecf3777dd7f5e3229c1b6aa3c" + +unist-util-visit@^1.1.0, unist-util-visit@^1.1.3: + version "1.3.0" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.3.0.tgz#41ca7c82981fd1ce6c762aac397fc24e35711444" + dependencies: + unist-util-is "^2.1.1" + unorm@^1.3.3: version "1.4.1" resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.4.1.tgz#364200d5f13646ca8bcd44490271335614792300" @@ -10118,7 +10262,7 @@ uuid@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" -uuid@^3.0.0, uuid@^3.0.1: +uuid@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" @@ -10163,6 +10307,25 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +vfile-location@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.2.tgz#d3675c59c877498e492b4756ff65e4af1a752255" + +vfile-message@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.0.0.tgz#a6adb0474ea400fa25d929f1d673abea6a17e359" + dependencies: + unist-util-stringify-position "^1.1.1" + +vfile@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a" + dependencies: + is-buffer "^1.1.4" + replace-ext "1.0.0" + unist-util-stringify-position "^1.0.0" + vfile-message "^1.0.0" + vinyl-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/vinyl-buffer/-/vinyl-buffer-1.0.0.tgz#ca067ea08431d507722b1de5083f602616ebc234" @@ -10253,6 +10416,13 @@ vreme@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/vreme/-/vreme-3.0.2.tgz#4721376b449457fefde8a849d3340933b90b5686" +walk-sync@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/walk-sync/-/walk-sync-0.3.1.tgz#558a16aeac8c0db59c028b73c66f397684ece465" + dependencies: + ensure-posix-path "^1.0.0" + matcher-collection "^1.0.0" + warning@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/warning/-/warning-3.0.0.tgz#32e5377cb572de4ab04753bdf8821c01ed605b7c" @@ -10410,7 +10580,7 @@ which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@1, which@^1.0.5, which@^1.1.1, which@^1.2.1, which@^1.2.12, which@^1.2.4, which@^1.2.9: +which@1, which@^1.0.5, which@^1.2.1, which@^1.2.12, which@^1.2.4, which@^1.2.9: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" dependencies: @@ -10454,14 +10624,14 @@ wordwrap@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" -wordwrap@^1.0.0, wordwrap@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" - wordwrap@~0.0.2: version "0.0.3" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" +wordwrap@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" @@ -10516,6 +10686,14 @@ wtf-8@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" +x-is-function@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/x-is-function/-/x-is-function-1.0.4.tgz#5d294dc3d268cbdd062580e0c5df77a391d1fa1e" + +x-is-string@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" + xhr2@*: version "0.1.4" resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.1.4.tgz#7f87658847716db5026323812f818cadab387a5f" @@ -10549,10 +10727,6 @@ xmlhttprequest@*: version "1.8.0" resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" -xss-filters@^1.2.6: - version "1.2.7" - resolved "https://registry.yarnpkg.com/xss-filters/-/xss-filters-1.2.7.tgz#59fa1de201f36f2f3470dcac5f58ccc2830b0a9a" - xtend@4.0.1, "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"