diff --git a/src/scriptlets/scriptlets-list.js b/src/scriptlets/scriptlets-list.js index cba47c6b..3ed85283 100644 --- a/src/scriptlets/scriptlets-list.js +++ b/src/scriptlets/scriptlets-list.js @@ -47,3 +47,4 @@ export * from './close-window'; export * from './prevent-refresh'; export * from './prevent-element-src-loading'; export * from './no-topics'; +export * from './xml-prune'; diff --git a/src/scriptlets/xml-prune.js b/src/scriptlets/xml-prune.js new file mode 100644 index 00000000..458ea098 --- /dev/null +++ b/src/scriptlets/xml-prune.js @@ -0,0 +1,152 @@ +import { + hit, + toRegExp, +} from '../helpers/index'; + +/* eslint-disable max-len */ +/** + * @scriptlet xml-prune + * + * @description + * Removes an element from the specified XML. + * + * + * **Syntax** + * ``` + * example.org#%#//scriptlet('xml-prune'[, propsToMatch[, optionalProp[, urlToMatch]]]) + * ``` + * + * - `propsToMatch` - required, selector of elements which will be removed from XML + * - `optionalProp` - optional, selector of elements that must occur in XML document + * - `urlToMatch` - optional, string or regular expression for matching the request's URL + * + * **Examples** + * 1. Removes `Period` tag which `id` contains `-ad-` from all requests + * ``` + * example.org#%#//scriptlet('xml-prune', 'Period[id*="-ad-"]') + * ``` + * + * 2. Removes `Period` tag which `id` contains `-ad-`, only if XML contains `SegmentTemplate` + * ``` + * example.org#%#//scriptlet('xml-prune', 'Period[id*="-ad-"]', 'SegmentTemplate') + * ``` + * + * 3. Removes `Period` tag which `id` contains `-ad-`, only if request's URL contains `.mpd` + * ``` + * example.org#%#//scriptlet('xml-prune', 'Period[id*="-ad-"]', '', '.mpd') + * ``` + */ +/* eslint-disable max-len */ + +export function xmlPrune(source, propsToRemove, optionalProp = '', urlToMatch) { + // do nothing if browser does not support fetch or Proxy (e.g. Internet Explorer) + // https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy + if (typeof fetch === 'undefined' + || typeof Proxy === 'undefined' + || typeof Response === 'undefined') { + return; + } + + if (typeof propsToRemove === 'undefined') { + return; + } + + urlToMatch = toRegExp(urlToMatch); + + const prunerXML = (text) => { + if ((/^\s*\s*$/.test(text)) === false) { + return text; + } + try { + const xmlParser = new DOMParser(); + const xmlDoc = xmlParser.parseFromString(text, 'text/xml'); + if (optionalProp !== '' && xmlDoc.querySelector(optionalProp) === null) { + return text; + } + const elems = xmlDoc.querySelectorAll(propsToRemove); + if (elems.length !== 0) { + elems.forEach((elem) => { + elem.remove(); + }); + const serializer = new XMLSerializer(); + text = serializer.serializeToString(xmlDoc); + } + } catch (ex) { + // eslint-disable-next-line no-console + console.log(ex); + } + return text; + }; + + const xhrWrapper = (target, thisArg, args) => { + const xhrURL = args[1]; + if (typeof xhrURL !== 'string' || xhrURL.length === 0) { + return Reflect.apply(target, thisArg, args); + } + if (urlToMatch.test(xhrURL)) { + thisArg.addEventListener('readystatechange', () => { + if (thisArg.readyState === 4) { + const { response } = thisArg; + const prunedResponseContent = prunerXML(response); + Object.defineProperty(thisArg, 'response', { + value: prunedResponseContent, + }); + Object.defineProperty(thisArg, 'responseText', { + value: prunedResponseContent, + }); + hit(source); + } + }); + } + hit(source); + return Reflect.apply(target, thisArg, args); + }; + + const xhrHandler = { + apply: xhrWrapper, + }; + window.XMLHttpRequest.prototype.open = new Proxy(window.XMLHttpRequest.prototype.open, xhrHandler); + + // eslint-disable-next-line compat/compat + const realFetch = window.fetch; + + const fetchWrapper = (target, thisArg, args) => { + const fetchURL = args[0]; + if (typeof fetchURL !== 'string' || fetchURL.length === 0) { + hit(source); + return Reflect.apply(target, thisArg, args); + } + if (urlToMatch.test(fetchURL)) { + hit(source); + return realFetch.apply(this, args).then((response) => { + return response.text().then((text) => { + return new Response(prunerXML(text), { + status: response.status, + statusText: response.statusText, + headers: response.headers, + }); + }); + }); + } + hit(source); + return Reflect.apply(target, thisArg, args); + }; + + const fetchHandler = { + apply: fetchWrapper, + }; + // eslint-disable-next-line compat/compat + window.fetch = new Proxy(window.fetch, fetchHandler); +} + +xmlPrune.names = [ + 'xml-prune', + // aliases are needed for matching the related scriptlet converted into our syntax + 'xml-prune.js', +]; + +xmlPrune.injections = [ + hit, + toRegExp, +]; diff --git a/tests/scriptlets/index.test.js b/tests/scriptlets/index.test.js index 0be3c1cb..31956122 100644 --- a/tests/scriptlets/index.test.js +++ b/tests/scriptlets/index.test.js @@ -44,3 +44,4 @@ import './close-window.test'; import './prevent-refresh.test'; import './prevent-element-src-loading.test'; import './no-topics.test'; +import './xml-prune.test'; diff --git a/tests/scriptlets/test-files/manifestMPD.mpd b/tests/scriptlets/test-files/manifestMPD.mpd new file mode 100644 index 00000000..5058b746 --- /dev/null +++ b/tests/scriptlets/test-files/manifestMPD.mpd @@ -0,0 +1,2149 @@ + + + https://vod-gcs-cedexis.cbsaavideo.com/intl_vms/2017/02/17/879659075884/609941_cenc_precon_dash/ + + https://dai.google.com/segments/redirect/c/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQuj6Ww7eLSCyWS2zwGZ1XsSIgU1pCSl9ycVhxSExXOXh3R2o2bWoyZXZnM0dLQlFCN1g= + + + AAADqHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA4iIAwAAAQABAH4DPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADUAWQArAHUAbwB1ADMATABFAGkAVwBTADIAegB3AEcAWgAxAFgAcwBRAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBjAGIAcwBpAC4AbABpAHYAZQAuAG8AdAB0AC4AaQByAGQAZQB0AG8ALgBjAG8AbQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPwBDAHIAbQBJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBBAGMAYwBvAHUAbgB0AEkAZAA9AGMAYgBzAGkAJgBhAG0AcAA7AEMAbwBuAHQAZQBuAHQASQBkAD0AUwBaAEIASgBfAHIAcQBYAHEASABMAFcAOQB4AHcARwBqADYAbQBqADIAZQB2AGcAMwBHAEsAQgBRAEIANwBYADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4ARABmAEMAbQBCAFgAdwBLAGEARQB5AFQAbAA3ADgAcgBRAEkAOQB1AHEAUQA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AbgBzAFoATgBzAHYAbAAxAEQAMgBBAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A + iAMAAAEAAQB+AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AdwA1AFkAKwB1AG8AdQAzAEwARQBpAFcAUwAyAHoAdwBHAFoAMQBYAHMAUQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AYwBiAHMAaQAuAGwAaQB2AGUALgBvAHQAdAAuAGkAcgBkAGUAdABvAC4AYwBvAG0ALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AQwByAG0ASQBkAD0AYwBiAHMAaQAmAGEAbQBwADsAQQBjAGMAbwB1AG4AdABJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBDAG8AbgB0AGUAbgB0AEkAZAA9AFMAWgBCAEoAXwByAHEAWABxAEgATABXADkAeAB3AEcAagA2AG0AagAyAGUAdgBnADMARwBLAEIAUQBCADcAWAA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AEQAZgBDAG0AQgBYAHcASwBhAEUAeQBUAGwANwA4AHIAUQBJADkAdQBxAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AG4AcwBaAE4AcwB2AGwAMQBEADIAQQA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQuj6Ww7eLSCyWS2zwGZ1XsSIgU1pCSl9ycVhxSExXOXh3R2o2bWoyZXZnM0dLQlFCN1g= + + + AAADqHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA4iIAwAAAQABAH4DPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADUAWQArAHUAbwB1ADMATABFAGkAVwBTADIAegB3AEcAWgAxAFgAcwBRAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBjAGIAcwBpAC4AbABpAHYAZQAuAG8AdAB0AC4AaQByAGQAZQB0AG8ALgBjAG8AbQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPwBDAHIAbQBJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBBAGMAYwBvAHUAbgB0AEkAZAA9AGMAYgBzAGkAJgBhAG0AcAA7AEMAbwBuAHQAZQBuAHQASQBkAD0AUwBaAEIASgBfAHIAcQBYAHEASABMAFcAOQB4AHcARwBqADYAbQBqADIAZQB2AGcAMwBHAEsAQgBRAEIANwBYADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4ARABmAEMAbQBCAFgAdwBLAGEARQB5AFQAbAA3ADgAcgBRAEkAOQB1AHEAUQA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AbgBzAFoATgBzAHYAbAAxAEQAMgBBAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A + iAMAAAEAAQB+AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AdwA1AFkAKwB1AG8AdQAzAEwARQBpAFcAUwAyAHoAdwBHAFoAMQBYAHMAUQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AYwBiAHMAaQAuAGwAaQB2AGUALgBvAHQAdAAuAGkAcgBkAGUAdABvAC4AYwBvAG0ALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AQwByAG0ASQBkAD0AYwBiAHMAaQAmAGEAbQBwADsAQQBjAGMAbwB1AG4AdABJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBDAG8AbgB0AGUAbgB0AEkAZAA9AFMAWgBCAEoAXwByAHEAWABxAEgATABXADkAeAB3AEcAagA2AG0AagAyAGUAdgBnADMARwBLAEIAUQBCADcAWAA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AEQAZgBDAG0AQgBYAHcASwBhAEUAeQBUAGwANwA4AHIAUQBJADkAdQBxAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AG4AcwBaAE4AcwB2AGwAMQBEADIAQQA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQuj6Ww7eLSCyWS2zwGZ1XsSIgU1pCSl9ycVhxSExXOXh3R2o2bWoyZXZnM0dLQlFCN1g= + + + AAADqHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA4iIAwAAAQABAH4DPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADUAWQArAHUAbwB1ADMATABFAGkAVwBTADIAegB3AEcAWgAxAFgAcwBRAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBjAGIAcwBpAC4AbABpAHYAZQAuAG8AdAB0AC4AaQByAGQAZQB0AG8ALgBjAG8AbQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPwBDAHIAbQBJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBBAGMAYwBvAHUAbgB0AEkAZAA9AGMAYgBzAGkAJgBhAG0AcAA7AEMAbwBuAHQAZQBuAHQASQBkAD0AUwBaAEIASgBfAHIAcQBYAHEASABMAFcAOQB4AHcARwBqADYAbQBqADIAZQB2AGcAMwBHAEsAQgBRAEIANwBYADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4ARABmAEMAbQBCAFgAdwBLAGEARQB5AFQAbAA3ADgAcgBRAEkAOQB1AHEAUQA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AbgBzAFoATgBzAHYAbAAxAEQAMgBBAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A + iAMAAAEAAQB+AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AdwA1AFkAKwB1AG8AdQAzAEwARQBpAFcAUwAyAHoAdwBHAFoAMQBYAHMAUQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AYwBiAHMAaQAuAGwAaQB2AGUALgBvAHQAdAAuAGkAcgBkAGUAdABvAC4AYwBvAG0ALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AQwByAG0ASQBkAD0AYwBiAHMAaQAmAGEAbQBwADsAQQBjAGMAbwB1AG4AdABJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBDAG8AbgB0AGUAbgB0AEkAZAA9AFMAWgBCAEoAXwByAHEAWABxAEgATABXADkAeAB3AEcAagA2AG0AagAyAGUAdgBnADMARwBLAEIAUQBCADcAWAA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AEQAZgBDAG0AQgBYAHcASwBhAEUAeQBUAGwANwA4AHIAUQBJADkAdQBxAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AG4AcwBaAE4AcwB2AGwAMQBEADIAQQA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQuj6Ww7eLSCyWS2zwGZ1XsSIgU1pCSl9ycVhxSExXOXh3R2o2bWoyZXZnM0dLQlFCN1g= + + + AAADqHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA4iIAwAAAQABAH4DPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADUAWQArAHUAbwB1ADMATABFAGkAVwBTADIAegB3AEcAWgAxAFgAcwBRAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBjAGIAcwBpAC4AbABpAHYAZQAuAG8AdAB0AC4AaQByAGQAZQB0AG8ALgBjAG8AbQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPwBDAHIAbQBJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBBAGMAYwBvAHUAbgB0AEkAZAA9AGMAYgBzAGkAJgBhAG0AcAA7AEMAbwBuAHQAZQBuAHQASQBkAD0AUwBaAEIASgBfAHIAcQBYAHEASABMAFcAOQB4AHcARwBqADYAbQBqADIAZQB2AGcAMwBHAEsAQgBRAEIANwBYADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4ARABmAEMAbQBCAFgAdwBLAGEARQB5AFQAbAA3ADgAcgBRAEkAOQB1AHEAUQA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AbgBzAFoATgBzAHYAbAAxAEQAMgBBAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A + iAMAAAEAAQB+AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AdwA1AFkAKwB1AG8AdQAzAEwARQBpAFcAUwAyAHoAdwBHAFoAMQBYAHMAUQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AYwBiAHMAaQAuAGwAaQB2AGUALgBvAHQAdAAuAGkAcgBkAGUAdABvAC4AYwBvAG0ALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AQwByAG0ASQBkAD0AYwBiAHMAaQAmAGEAbQBwADsAQQBjAGMAbwB1AG4AdABJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBDAG8AbgB0AGUAbgB0AEkAZAA9AFMAWgBCAEoAXwByAHEAWABxAEgATABXADkAeAB3AEcAagA2AG0AagAyAGUAdgBnADMARwBLAEIAUQBCADcAWAA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AEQAZgBDAG0AQgBYAHcASwBhAEUAeQBUAGwANwA4AHIAUQBJADkAdQBxAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AG4AcwBaAE4AcwB2AGwAMQBEADIAQQA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQuj6Ww7eLSCyWS2zwGZ1XsSIgU1pCSl9ycVhxSExXOXh3R2o2bWoyZXZnM0dLQlFCN1g= + + + AAADqHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA4iIAwAAAQABAH4DPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADUAWQArAHUAbwB1ADMATABFAGkAVwBTADIAegB3AEcAWgAxAFgAcwBRAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBjAGIAcwBpAC4AbABpAHYAZQAuAG8AdAB0AC4AaQByAGQAZQB0AG8ALgBjAG8AbQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPwBDAHIAbQBJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBBAGMAYwBvAHUAbgB0AEkAZAA9AGMAYgBzAGkAJgBhAG0AcAA7AEMAbwBuAHQAZQBuAHQASQBkAD0AUwBaAEIASgBfAHIAcQBYAHEASABMAFcAOQB4AHcARwBqADYAbQBqADIAZQB2AGcAMwBHAEsAQgBRAEIANwBYADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4ARABmAEMAbQBCAFgAdwBLAGEARQB5AFQAbAA3ADgAcgBRAEkAOQB1AHEAUQA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AbgBzAFoATgBzAHYAbAAxAEQAMgBBAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A + iAMAAAEAAQB+AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AdwA1AFkAKwB1AG8AdQAzAEwARQBpAFcAUwAyAHoAdwBHAFoAMQBYAHMAUQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AYwBiAHMAaQAuAGwAaQB2AGUALgBvAHQAdAAuAGkAcgBkAGUAdABvAC4AYwBvAG0ALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AQwByAG0ASQBkAD0AYwBiAHMAaQAmAGEAbQBwADsAQQBjAGMAbwB1AG4AdABJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBDAG8AbgB0AGUAbgB0AEkAZAA9AFMAWgBCAEoAXwByAHEAWABxAEgATABXADkAeAB3AEcAagA2AG0AagAyAGUAdgBnADMARwBLAEIAUQBCADcAWAA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AEQAZgBDAG0AQgBYAHcASwBhAEUAeQBUAGwANwA4AHIAUQBJADkAdQBxAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AG4AcwBaAE4AcwB2AGwAMQBEADIAQQA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQuj6Ww7eLSCyWS2zwGZ1XsSIgU1pCSl9ycVhxSExXOXh3R2o2bWoyZXZnM0dLQlFCN1g= + + + AAADqHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA4iIAwAAAQABAH4DPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADUAWQArAHUAbwB1ADMATABFAGkAVwBTADIAegB3AEcAWgAxAFgAcwBRAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBjAGIAcwBpAC4AbABpAHYAZQAuAG8AdAB0AC4AaQByAGQAZQB0AG8ALgBjAG8AbQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPwBDAHIAbQBJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBBAGMAYwBvAHUAbgB0AEkAZAA9AGMAYgBzAGkAJgBhAG0AcAA7AEMAbwBuAHQAZQBuAHQASQBkAD0AUwBaAEIASgBfAHIAcQBYAHEASABMAFcAOQB4AHcARwBqADYAbQBqADIAZQB2AGcAMwBHAEsAQgBRAEIANwBYADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4ARABmAEMAbQBCAFgAdwBLAGEARQB5AFQAbAA3ADgAcgBRAEkAOQB1AHEAUQA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AbgBzAFoATgBzAHYAbAAxAEQAMgBBAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A + iAMAAAEAAQB+AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AdwA1AFkAKwB1AG8AdQAzAEwARQBpAFcAUwAyAHoAdwBHAFoAMQBYAHMAUQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AYwBiAHMAaQAuAGwAaQB2AGUALgBvAHQAdAAuAGkAcgBkAGUAdABvAC4AYwBvAG0ALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AQwByAG0ASQBkAD0AYwBiAHMAaQAmAGEAbQBwADsAQQBjAGMAbwB1AG4AdABJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBDAG8AbgB0AGUAbgB0AEkAZAA9AFMAWgBCAEoAXwByAHEAWABxAEgATABXADkAeAB3AEcAagA2AG0AagAyAGUAdgBnADMARwBLAEIAUQBCADcAWAA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AEQAZgBDAG0AQgBYAHcASwBhAEUAeQBUAGwANwA4AHIAUQBJADkAdQBxAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AG4AcwBaAE4AcwB2AGwAMQBEADIAQQA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQuj6Ww7eLSCyWS2zwGZ1XsSIgU1pCSl9ycVhxSExXOXh3R2o2bWoyZXZnM0dLQlFCN1g= + + + AAADqHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA4iIAwAAAQABAH4DPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADUAWQArAHUAbwB1ADMATABFAGkAVwBTADIAegB3AEcAWgAxAFgAcwBRAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBjAGIAcwBpAC4AbABpAHYAZQAuAG8AdAB0AC4AaQByAGQAZQB0AG8ALgBjAG8AbQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPwBDAHIAbQBJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBBAGMAYwBvAHUAbgB0AEkAZAA9AGMAYgBzAGkAJgBhAG0AcAA7AEMAbwBuAHQAZQBuAHQASQBkAD0AUwBaAEIASgBfAHIAcQBYAHEASABMAFcAOQB4AHcARwBqADYAbQBqADIAZQB2AGcAMwBHAEsAQgBRAEIANwBYADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4ARABmAEMAbQBCAFgAdwBLAGEARQB5AFQAbAA3ADgAcgBRAEkAOQB1AHEAUQA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AbgBzAFoATgBzAHYAbAAxAEQAMgBBAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A + iAMAAAEAAQB+AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AdwA1AFkAKwB1AG8AdQAzAEwARQBpAFcAUwAyAHoAdwBHAFoAMQBYAHMAUQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AYwBiAHMAaQAuAGwAaQB2AGUALgBvAHQAdAAuAGkAcgBkAGUAdABvAC4AYwBvAG0ALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AQwByAG0ASQBkAD0AYwBiAHMAaQAmAGEAbQBwADsAQQBjAGMAbwB1AG4AdABJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBDAG8AbgB0AGUAbgB0AEkAZAA9AFMAWgBCAEoAXwByAHEAWABxAEgATABXADkAeAB3AEcAagA2AG0AagAyAGUAdgBnADMARwBLAEIAUQBCADcAWAA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AEQAZgBDAG0AQgBYAHcASwBhAEUAeQBUAGwANwA4AHIAUQBJADkAdQBxAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AG4AcwBaAE4AcwB2AGwAMQBEADIAQQA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQuj6Ww7eLSCyWS2zwGZ1XsSIgU1pCSl9ycVhxSExXOXh3R2o2bWoyZXZnM0dLQlFCN1g= + + + AAADqHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA4iIAwAAAQABAH4DPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADUAWQArAHUAbwB1ADMATABFAGkAVwBTADIAegB3AEcAWgAxAFgAcwBRAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBjAGIAcwBpAC4AbABpAHYAZQAuAG8AdAB0AC4AaQByAGQAZQB0AG8ALgBjAG8AbQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPwBDAHIAbQBJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBBAGMAYwBvAHUAbgB0AEkAZAA9AGMAYgBzAGkAJgBhAG0AcAA7AEMAbwBuAHQAZQBuAHQASQBkAD0AUwBaAEIASgBfAHIAcQBYAHEASABMAFcAOQB4AHcARwBqADYAbQBqADIAZQB2AGcAMwBHAEsAQgBRAEIANwBYADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4ARABmAEMAbQBCAFgAdwBLAGEARQB5AFQAbAA3ADgAcgBRAEkAOQB1AHEAUQA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AbgBzAFoATgBzAHYAbAAxAEQAMgBBAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A + iAMAAAEAAQB+AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AdwA1AFkAKwB1AG8AdQAzAEwARQBpAFcAUwAyAHoAdwBHAFoAMQBYAHMAUQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AYwBiAHMAaQAuAGwAaQB2AGUALgBvAHQAdAAuAGkAcgBkAGUAdABvAC4AYwBvAG0ALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AQwByAG0ASQBkAD0AYwBiAHMAaQAmAGEAbQBwADsAQQBjAGMAbwB1AG4AdABJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBDAG8AbgB0AGUAbgB0AEkAZAA9AFMAWgBCAEoAXwByAHEAWABxAEgATABXADkAeAB3AEcAagA2AG0AagAyAGUAdgBnADMARwBLAEIAUQBCADcAWAA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AEQAZgBDAG0AQgBYAHcASwBhAEUAeQBUAGwANwA4AHIAUQBJADkAdQBxAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AG4AcwBaAE4AcwB2AGwAMQBEADIAQQA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQuj6Ww7eLSCyWS2zwGZ1XsSIgU1pCSl9ycVhxSExXOXh3R2o2bWoyZXZnM0dLQlFCN1g= + + + AAADqHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA4iIAwAAAQABAH4DPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADUAWQArAHUAbwB1ADMATABFAGkAVwBTADIAegB3AEcAWgAxAFgAcwBRAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBjAGIAcwBpAC4AbABpAHYAZQAuAG8AdAB0AC4AaQByAGQAZQB0AG8ALgBjAG8AbQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPwBDAHIAbQBJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBBAGMAYwBvAHUAbgB0AEkAZAA9AGMAYgBzAGkAJgBhAG0AcAA7AEMAbwBuAHQAZQBuAHQASQBkAD0AUwBaAEIASgBfAHIAcQBYAHEASABMAFcAOQB4AHcARwBqADYAbQBqADIAZQB2AGcAMwBHAEsAQgBRAEIANwBYADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4ARABmAEMAbQBCAFgAdwBLAGEARQB5AFQAbAA3ADgAcgBRAEkAOQB1AHEAUQA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AbgBzAFoATgBzAHYAbAAxAEQAMgBBAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A + iAMAAAEAAQB+AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AdwA1AFkAKwB1AG8AdQAzAEwARQBpAFcAUwAyAHoAdwBHAFoAMQBYAHMAUQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AYwBiAHMAaQAuAGwAaQB2AGUALgBvAHQAdAAuAGkAcgBkAGUAdABvAC4AYwBvAG0ALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AQwByAG0ASQBkAD0AYwBiAHMAaQAmAGEAbQBwADsAQQBjAGMAbwB1AG4AdABJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBDAG8AbgB0AGUAbgB0AEkAZAA9AFMAWgBCAEoAXwByAHEAWABxAEgATABXADkAeAB3AEcAagA2AG0AagAyAGUAdgBnADMARwBLAEIAUQBCADcAWAA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AEQAZgBDAG0AQgBYAHcASwBhAEUAeQBUAGwANwA4AHIAUQBJADkAdQBxAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AG4AcwBaAE4AcwB2AGwAMQBEADIAQQA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQuj6Ww7eLSCyWS2zwGZ1XsSIgU1pCSl9ycVhxSExXOXh3R2o2bWoyZXZnM0dLQlFCN1g= + + + AAADqHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA4iIAwAAAQABAH4DPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADUAWQArAHUAbwB1ADMATABFAGkAVwBTADIAegB3AEcAWgAxAFgAcwBRAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBjAGIAcwBpAC4AbABpAHYAZQAuAG8AdAB0AC4AaQByAGQAZQB0AG8ALgBjAG8AbQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPwBDAHIAbQBJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBBAGMAYwBvAHUAbgB0AEkAZAA9AGMAYgBzAGkAJgBhAG0AcAA7AEMAbwBuAHQAZQBuAHQASQBkAD0AUwBaAEIASgBfAHIAcQBYAHEASABMAFcAOQB4AHcARwBqADYAbQBqADIAZQB2AGcAMwBHAEsAQgBRAEIANwBYADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4ARABmAEMAbQBCAFgAdwBLAGEARQB5AFQAbAA3ADgAcgBRAEkAOQB1AHEAUQA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AbgBzAFoATgBzAHYAbAAxAEQAMgBBAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A + iAMAAAEAAQB+AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AdwA1AFkAKwB1AG8AdQAzAEwARQBpAFcAUwAyAHoAdwBHAFoAMQBYAHMAUQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AYwBiAHMAaQAuAGwAaQB2AGUALgBvAHQAdAAuAGkAcgBkAGUAdABvAC4AYwBvAG0ALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AQwByAG0ASQBkAD0AYwBiAHMAaQAmAGEAbQBwADsAQQBjAGMAbwB1AG4AdABJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBDAG8AbgB0AGUAbgB0AEkAZAA9AFMAWgBCAEoAXwByAHEAWABxAEgATABXADkAeAB3AEcAagA2AG0AagAyAGUAdgBnADMARwBLAEIAUQBCADcAWAA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AEQAZgBDAG0AQgBYAHcASwBhAEUAeQBUAGwANwA4AHIAUQBJADkAdQBxAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AG4AcwBaAE4AcwB2AGwAMQBEADIAQQA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQuj6Ww7eLSCyWS2zwGZ1XsSIgU1pCSl9ycVhxSExXOXh3R2o2bWoyZXZnM0dLQlFCN1g= + + + AAADqHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA4iIAwAAAQABAH4DPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADUAWQArAHUAbwB1ADMATABFAGkAVwBTADIAegB3AEcAWgAxAFgAcwBRAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBjAGIAcwBpAC4AbABpAHYAZQAuAG8AdAB0AC4AaQByAGQAZQB0AG8ALgBjAG8AbQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPwBDAHIAbQBJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBBAGMAYwBvAHUAbgB0AEkAZAA9AGMAYgBzAGkAJgBhAG0AcAA7AEMAbwBuAHQAZQBuAHQASQBkAD0AUwBaAEIASgBfAHIAcQBYAHEASABMAFcAOQB4AHcARwBqADYAbQBqADIAZQB2AGcAMwBHAEsAQgBRAEIANwBYADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4ARABmAEMAbQBCAFgAdwBLAGEARQB5AFQAbAA3ADgAcgBRAEkAOQB1AHEAUQA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AbgBzAFoATgBzAHYAbAAxAEQAMgBBAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A + iAMAAAEAAQB+AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AdwA1AFkAKwB1AG8AdQAzAEwARQBpAFcAUwAyAHoAdwBHAFoAMQBYAHMAUQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AYwBiAHMAaQAuAGwAaQB2AGUALgBvAHQAdAAuAGkAcgBkAGUAdABvAC4AYwBvAG0ALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AQwByAG0ASQBkAD0AYwBiAHMAaQAmAGEAbQBwADsAQQBjAGMAbwB1AG4AdABJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBDAG8AbgB0AGUAbgB0AEkAZAA9AFMAWgBCAEoAXwByAHEAWABxAEgATABXADkAeAB3AEcAagA2AG0AagAyAGUAdgBnADMARwBLAEIAUQBCADcAWAA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AEQAZgBDAG0AQgBYAHcASwBhAEUAeQBUAGwANwA4AHIAUQBJADkAdQBxAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AG4AcwBaAE4AcwB2AGwAMQBEADIAQQA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQuj6Ww7eLSCyWS2zwGZ1XsSIgU1pCSl9ycVhxSExXOXh3R2o2bWoyZXZnM0dLQlFCN1g= + + + AAADqHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA4iIAwAAAQABAH4DPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADUAWQArAHUAbwB1ADMATABFAGkAVwBTADIAegB3AEcAWgAxAFgAcwBRAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBjAGIAcwBpAC4AbABpAHYAZQAuAG8AdAB0AC4AaQByAGQAZQB0AG8ALgBjAG8AbQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPwBDAHIAbQBJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBBAGMAYwBvAHUAbgB0AEkAZAA9AGMAYgBzAGkAJgBhAG0AcAA7AEMAbwBuAHQAZQBuAHQASQBkAD0AUwBaAEIASgBfAHIAcQBYAHEASABMAFcAOQB4AHcARwBqADYAbQBqADIAZQB2AGcAMwBHAEsAQgBRAEIANwBYADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4ARABmAEMAbQBCAFgAdwBLAGEARQB5AFQAbAA3ADgAcgBRAEkAOQB1AHEAUQA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AbgBzAFoATgBzAHYAbAAxAEQAMgBBAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A + iAMAAAEAAQB+AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AdwA1AFkAKwB1AG8AdQAzAEwARQBpAFcAUwAyAHoAdwBHAFoAMQBYAHMAUQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AYwBiAHMAaQAuAGwAaQB2AGUALgBvAHQAdAAuAGkAcgBkAGUAdABvAC4AYwBvAG0ALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AQwByAG0ASQBkAD0AYwBiAHMAaQAmAGEAbQBwADsAQQBjAGMAbwB1AG4AdABJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBDAG8AbgB0AGUAbgB0AEkAZAA9AFMAWgBCAEoAXwByAHEAWABxAEgATABXADkAeAB3AEcAagA2AG0AagAyAGUAdgBnADMARwBLAEIAUQBCADcAWAA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AEQAZgBDAG0AQgBYAHcASwBhAEUAeQBUAGwANwA4AHIAUQBJADkAdQBxAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AG4AcwBaAE4AcwB2AGwAMQBEADIAQQA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQuj6Ww7eLSCyWS2zwGZ1XsSIgU1pCSl9ycVhxSExXOXh3R2o2bWoyZXZnM0dLQlFCN1g= + + + AAADqHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA4iIAwAAAQABAH4DPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADUAWQArAHUAbwB1ADMATABFAGkAVwBTADIAegB3AEcAWgAxAFgAcwBRAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBjAGIAcwBpAC4AbABpAHYAZQAuAG8AdAB0AC4AaQByAGQAZQB0AG8ALgBjAG8AbQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPwBDAHIAbQBJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBBAGMAYwBvAHUAbgB0AEkAZAA9AGMAYgBzAGkAJgBhAG0AcAA7AEMAbwBuAHQAZQBuAHQASQBkAD0AUwBaAEIASgBfAHIAcQBYAHEASABMAFcAOQB4AHcARwBqADYAbQBqADIAZQB2AGcAMwBHAEsAQgBRAEIANwBYADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4ARABmAEMAbQBCAFgAdwBLAGEARQB5AFQAbAA3ADgAcgBRAEkAOQB1AHEAUQA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AbgBzAFoATgBzAHYAbAAxAEQAMgBBAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A + iAMAAAEAAQB+AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AdwA1AFkAKwB1AG8AdQAzAEwARQBpAFcAUwAyAHoAdwBHAFoAMQBYAHMAUQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AYwBiAHMAaQAuAGwAaQB2AGUALgBvAHQAdAAuAGkAcgBkAGUAdABvAC4AYwBvAG0ALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AQwByAG0ASQBkAD0AYwBiAHMAaQAmAGEAbQBwADsAQQBjAGMAbwB1AG4AdABJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBDAG8AbgB0AGUAbgB0AEkAZAA9AFMAWgBCAEoAXwByAHEAWABxAEgATABXADkAeAB3AEcAagA2AG0AagAyAGUAdgBnADMARwBLAEIAUQBCADcAWAA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AEQAZgBDAG0AQgBYAHcASwBhAEUAeQBUAGwANwA4AHIAUQBJADkAdQBxAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AG4AcwBaAE4AcwB2AGwAMQBEADIAQQA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQuj6Ww7eLSCyWS2zwGZ1XsSIgU1pCSl9ycVhxSExXOXh3R2o2bWoyZXZnM0dLQlFCN1g= + + + AAADqHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA4iIAwAAAQABAH4DPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADUAWQArAHUAbwB1ADMATABFAGkAVwBTADIAegB3AEcAWgAxAFgAcwBRAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBjAGIAcwBpAC4AbABpAHYAZQAuAG8AdAB0AC4AaQByAGQAZQB0AG8ALgBjAG8AbQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPwBDAHIAbQBJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBBAGMAYwBvAHUAbgB0AEkAZAA9AGMAYgBzAGkAJgBhAG0AcAA7AEMAbwBuAHQAZQBuAHQASQBkAD0AUwBaAEIASgBfAHIAcQBYAHEASABMAFcAOQB4AHcARwBqADYAbQBqADIAZQB2AGcAMwBHAEsAQgBRAEIANwBYADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4ARABmAEMAbQBCAFgAdwBLAGEARQB5AFQAbAA3ADgAcgBRAEkAOQB1AHEAUQA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AbgBzAFoATgBzAHYAbAAxAEQAMgBBAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A + iAMAAAEAAQB+AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AdwA1AFkAKwB1AG8AdQAzAEwARQBpAFcAUwAyAHoAdwBHAFoAMQBYAHMAUQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AYwBiAHMAaQAuAGwAaQB2AGUALgBvAHQAdAAuAGkAcgBkAGUAdABvAC4AYwBvAG0ALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AQwByAG0ASQBkAD0AYwBiAHMAaQAmAGEAbQBwADsAQQBjAGMAbwB1AG4AdABJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBDAG8AbgB0AGUAbgB0AEkAZAA9AFMAWgBCAEoAXwByAHEAWABxAEgATABXADkAeAB3AEcAagA2AG0AagAyAGUAdgBnADMARwBLAEIAUQBCADcAWAA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AEQAZgBDAG0AQgBYAHcASwBhAEUAeQBUAGwANwA4AHIAUQBJADkAdQBxAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AG4AcwBaAE4AcwB2AGwAMQBEADIAQQA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQuj6Ww7eLSCyWS2zwGZ1XsSIgU1pCSl9ycVhxSExXOXh3R2o2bWoyZXZnM0dLQlFCN1g= + + + AAADqHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA4iIAwAAAQABAH4DPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADUAWQArAHUAbwB1ADMATABFAGkAVwBTADIAegB3AEcAWgAxAFgAcwBRAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBjAGIAcwBpAC4AbABpAHYAZQAuAG8AdAB0AC4AaQByAGQAZQB0AG8ALgBjAG8AbQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPwBDAHIAbQBJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBBAGMAYwBvAHUAbgB0AEkAZAA9AGMAYgBzAGkAJgBhAG0AcAA7AEMAbwBuAHQAZQBuAHQASQBkAD0AUwBaAEIASgBfAHIAcQBYAHEASABMAFcAOQB4AHcARwBqADYAbQBqADIAZQB2AGcAMwBHAEsAQgBRAEIANwBYADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4ARABmAEMAbQBCAFgAdwBLAGEARQB5AFQAbAA3ADgAcgBRAEkAOQB1AHEAUQA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AbgBzAFoATgBzAHYAbAAxAEQAMgBBAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A + iAMAAAEAAQB+AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AdwA1AFkAKwB1AG8AdQAzAEwARQBpAFcAUwAyAHoAdwBHAFoAMQBYAHMAUQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AYwBiAHMAaQAuAGwAaQB2AGUALgBvAHQAdAAuAGkAcgBkAGUAdABvAC4AYwBvAG0ALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AQwByAG0ASQBkAD0AYwBiAHMAaQAmAGEAbQBwADsAQQBjAGMAbwB1AG4AdABJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBDAG8AbgB0AGUAbgB0AEkAZAA9AFMAWgBCAEoAXwByAHEAWABxAEgATABXADkAeAB3AEcAagA2AG0AagAyAGUAdgBnADMARwBLAEIAUQBCADcAWAA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AEQAZgBDAG0AQgBYAHcASwBhAEUAeQBUAGwANwA4AHIAUQBJADkAdQBxAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AG4AcwBaAE4AcwB2AGwAMQBEADIAQQA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQuj6Ww7eLSCyWS2zwGZ1XsSIgU1pCSl9ycVhxSExXOXh3R2o2bWoyZXZnM0dLQlFCN1g= + + + AAADqHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA4iIAwAAAQABAH4DPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADUAWQArAHUAbwB1ADMATABFAGkAVwBTADIAegB3AEcAWgAxAFgAcwBRAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBjAGIAcwBpAC4AbABpAHYAZQAuAG8AdAB0AC4AaQByAGQAZQB0AG8ALgBjAG8AbQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPwBDAHIAbQBJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBBAGMAYwBvAHUAbgB0AEkAZAA9AGMAYgBzAGkAJgBhAG0AcAA7AEMAbwBuAHQAZQBuAHQASQBkAD0AUwBaAEIASgBfAHIAcQBYAHEASABMAFcAOQB4AHcARwBqADYAbQBqADIAZQB2AGcAMwBHAEsAQgBRAEIANwBYADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4ARABmAEMAbQBCAFgAdwBLAGEARQB5AFQAbAA3ADgAcgBRAEkAOQB1AHEAUQA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AbgBzAFoATgBzAHYAbAAxAEQAMgBBAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A + iAMAAAEAAQB+AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AdwA1AFkAKwB1AG8AdQAzAEwARQBpAFcAUwAyAHoAdwBHAFoAMQBYAHMAUQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AYwBiAHMAaQAuAGwAaQB2AGUALgBvAHQAdAAuAGkAcgBkAGUAdABvAC4AYwBvAG0ALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AQwByAG0ASQBkAD0AYwBiAHMAaQAmAGEAbQBwADsAQQBjAGMAbwB1AG4AdABJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBDAG8AbgB0AGUAbgB0AEkAZAA9AFMAWgBCAEoAXwByAHEAWABxAEgATABXADkAeAB3AEcAagA2AG0AagAyAGUAdgBnADMARwBLAEIAUQBCADcAWAA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AEQAZgBDAG0AQgBYAHcASwBhAEUAeQBUAGwANwA4AHIAUQBJADkAdQBxAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AG4AcwBaAE4AcwB2AGwAMQBEADIAQQA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQuj6Ww7eLSCyWS2zwGZ1XsSIgU1pCSl9ycVhxSExXOXh3R2o2bWoyZXZnM0dLQlFCN1g= + + + AAADqHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA4iIAwAAAQABAH4DPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADUAWQArAHUAbwB1ADMATABFAGkAVwBTADIAegB3AEcAWgAxAFgAcwBRAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBjAGIAcwBpAC4AbABpAHYAZQAuAG8AdAB0AC4AaQByAGQAZQB0AG8ALgBjAG8AbQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPwBDAHIAbQBJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBBAGMAYwBvAHUAbgB0AEkAZAA9AGMAYgBzAGkAJgBhAG0AcAA7AEMAbwBuAHQAZQBuAHQASQBkAD0AUwBaAEIASgBfAHIAcQBYAHEASABMAFcAOQB4AHcARwBqADYAbQBqADIAZQB2AGcAMwBHAEsAQgBRAEIANwBYADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4ARABmAEMAbQBCAFgAdwBLAGEARQB5AFQAbAA3ADgAcgBRAEkAOQB1AHEAUQA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AbgBzAFoATgBzAHYAbAAxAEQAMgBBAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A + iAMAAAEAAQB+AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AdwA1AFkAKwB1AG8AdQAzAEwARQBpAFcAUwAyAHoAdwBHAFoAMQBYAHMAUQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AYwBiAHMAaQAuAGwAaQB2AGUALgBvAHQAdAAuAGkAcgBkAGUAdABvAC4AYwBvAG0ALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AQwByAG0ASQBkAD0AYwBiAHMAaQAmAGEAbQBwADsAQQBjAGMAbwB1AG4AdABJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBDAG8AbgB0AGUAbgB0AEkAZAA9AFMAWgBCAEoAXwByAHEAWABxAEgATABXADkAeAB3AEcAagA2AG0AagAyAGUAdgBnADMARwBLAEIAUQBCADcAWAA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AEQAZgBDAG0AQgBYAHcASwBhAEUAeQBUAGwANwA4AHIAUQBJADkAdQBxAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AG4AcwBaAE4AcwB2AGwAMQBEADIAQQA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA== + + + + + + + + + + + + + + + + + + + + + + AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQuj6Ww7eLSCyWS2zwGZ1XsSIgU1pCSl9ycVhxSExXOXh3R2o2bWoyZXZnM0dLQlFCN1g= + + + AAADqHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA4iIAwAAAQABAH4DPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADUAWQArAHUAbwB1ADMATABFAGkAVwBTADIAegB3AEcAWgAxAFgAcwBRAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBjAGIAcwBpAC4AbABpAHYAZQAuAG8AdAB0AC4AaQByAGQAZQB0AG8ALgBjAG8AbQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPwBDAHIAbQBJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBBAGMAYwBvAHUAbgB0AEkAZAA9AGMAYgBzAGkAJgBhAG0AcAA7AEMAbwBuAHQAZQBuAHQASQBkAD0AUwBaAEIASgBfAHIAcQBYAHEASABMAFcAOQB4AHcARwBqADYAbQBqADIAZQB2AGcAMwBHAEsAQgBRAEIANwBYADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4ARABmAEMAbQBCAFgAdwBLAGEARQB5AFQAbAA3ADgAcgBRAEkAOQB1AHEAUQA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AbgBzAFoATgBzAHYAbAAxAEQAMgBBAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A + iAMAAAEAAQB+AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AdwA1AFkAKwB1AG8AdQAzAEwARQBpAFcAUwAyAHoAdwBHAFoAMQBYAHMAUQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AYwBiAHMAaQAuAGwAaQB2AGUALgBvAHQAdAAuAGkAcgBkAGUAdABvAC4AYwBvAG0ALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AQwByAG0ASQBkAD0AYwBiAHMAaQAmAGEAbQBwADsAQQBjAGMAbwB1AG4AdABJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBDAG8AbgB0AGUAbgB0AEkAZAA9AFMAWgBCAEoAXwByAHEAWABxAEgATABXADkAeAB3AEcAagA2AG0AagAyAGUAdgBnADMARwBLAEIAUQBCADcAWAA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AEQAZgBDAG0AQgBYAHcASwBhAEUAeQBUAGwANwA4AHIAUQBJADkAdQBxAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AG4AcwBaAE4AcwB2AGwAMQBEADIAQQA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA== + + + + + + + + + + + + + + + + + + + + + + AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQuj6Ww7eLSCyWS2zwGZ1XsSIgU1pCSl9ycVhxSExXOXh3R2o2bWoyZXZnM0dLQlFCN1g= + + + AAADqHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA4iIAwAAAQABAH4DPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADUAWQArAHUAbwB1ADMATABFAGkAVwBTADIAegB3AEcAWgAxAFgAcwBRAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBjAGIAcwBpAC4AbABpAHYAZQAuAG8AdAB0AC4AaQByAGQAZQB0AG8ALgBjAG8AbQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPwBDAHIAbQBJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBBAGMAYwBvAHUAbgB0AEkAZAA9AGMAYgBzAGkAJgBhAG0AcAA7AEMAbwBuAHQAZQBuAHQASQBkAD0AUwBaAEIASgBfAHIAcQBYAHEASABMAFcAOQB4AHcARwBqADYAbQBqADIAZQB2AGcAMwBHAEsAQgBRAEIANwBYADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4ARABmAEMAbQBCAFgAdwBLAGEARQB5AFQAbAA3ADgAcgBRAEkAOQB1AHEAUQA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AbgBzAFoATgBzAHYAbAAxAEQAMgBBAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A + iAMAAAEAAQB+AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AdwA1AFkAKwB1AG8AdQAzAEwARQBpAFcAUwAyAHoAdwBHAFoAMQBYAHMAUQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AYwBiAHMAaQAuAGwAaQB2AGUALgBvAHQAdAAuAGkAcgBkAGUAdABvAC4AYwBvAG0ALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AQwByAG0ASQBkAD0AYwBiAHMAaQAmAGEAbQBwADsAQQBjAGMAbwB1AG4AdABJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBDAG8AbgB0AGUAbgB0AEkAZAA9AFMAWgBCAEoAXwByAHEAWABxAEgATABXADkAeAB3AEcAagA2AG0AagAyAGUAdgBnADMARwBLAEIAUQBCADcAWAA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AEQAZgBDAG0AQgBYAHcASwBhAEUAeQBUAGwANwA4AHIAUQBJADkAdQBxAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AG4AcwBaAE4AcwB2AGwAMQBEADIAQQA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA== + + + + + + + + + + + + + + + + + + AAAAVnBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADYIARIQuj6Ww7eLSCyWS2zwGZ1XsSIgU1pCSl9ycVhxSExXOXh3R2o2bWoyZXZnM0dLQlFCN1g= + + + AAADqHBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA4iIAwAAAQABAH4DPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgB3ADUAWQArAHUAbwB1ADMATABFAGkAVwBTADIAegB3AEcAWgAxAFgAcwBRAD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcAA6AC8ALwBjAGIAcwBpAC4AbABpAHYAZQAuAG8AdAB0AC4AaQByAGQAZQB0AG8ALgBjAG8AbQAvAHAAbABhAHkAcgBlAGEAZAB5AC8AcgBpAGcAaAB0AHMAbQBhAG4AYQBnAGUAcgAuAGEAcwBtAHgAPwBDAHIAbQBJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBBAGMAYwBvAHUAbgB0AEkAZAA9AGMAYgBzAGkAJgBhAG0AcAA7AEMAbwBuAHQAZQBuAHQASQBkAD0AUwBaAEIASgBfAHIAcQBYAHEASABMAFcAOQB4AHcARwBqADYAbQBqADIAZQB2AGcAMwBHAEsAQgBRAEIANwBYADwALwBMAEEAXwBVAFIATAA+ADwARABTAF8ASQBEAD4ARABmAEMAbQBCAFgAdwBLAGEARQB5AFQAbAA3ADgAcgBRAEkAOQB1AHEAUQA9AD0APAAvAEQAUwBfAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AbgBzAFoATgBzAHYAbAAxAEQAMgBBAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A + iAMAAAEAAQB+AzwAVwBSAE0ASABFAEEARABFAFIAIAB4AG0AbABuAHMAPQAiAGgAdAB0AHAAOgAvAC8AcwBjAGgAZQBtAGEAcwAuAG0AaQBjAHIAbwBzAG8AZgB0AC4AYwBvAG0ALwBEAFIATQAvADIAMAAwADcALwAwADMALwBQAGwAYQB5AFIAZQBhAGQAeQBIAGUAYQBkAGUAcgAiACAAdgBlAHIAcwBpAG8AbgA9ACIANAAuADAALgAwAC4AMAAiAD4APABEAEEAVABBAD4APABQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsARQBZAEwARQBOAD4AMQA2ADwALwBLAEUAWQBMAEUATgA+ADwAQQBMAEcASQBEAD4AQQBFAFMAQwBUAFIAPAAvAEEATABHAEkARAA+ADwALwBQAFIATwBUAEUAQwBUAEkATgBGAE8APgA8AEsASQBEAD4AdwA1AFkAKwB1AG8AdQAzAEwARQBpAFcAUwAyAHoAdwBHAFoAMQBYAHMAUQA9AD0APAAvAEsASQBEAD4APABMAEEAXwBVAFIATAA+AGgAdAB0AHAAOgAvAC8AYwBiAHMAaQAuAGwAaQB2AGUALgBvAHQAdAAuAGkAcgBkAGUAdABvAC4AYwBvAG0ALwBwAGwAYQB5AHIAZQBhAGQAeQAvAHIAaQBnAGgAdABzAG0AYQBuAGEAZwBlAHIALgBhAHMAbQB4AD8AQwByAG0ASQBkAD0AYwBiAHMAaQAmAGEAbQBwADsAQQBjAGMAbwB1AG4AdABJAGQAPQBjAGIAcwBpACYAYQBtAHAAOwBDAG8AbgB0AGUAbgB0AEkAZAA9AFMAWgBCAEoAXwByAHEAWABxAEgATABXADkAeAB3AEcAagA2AG0AagAyAGUAdgBnADMARwBLAEIAUQBCADcAWAA8AC8ATABBAF8AVQBSAEwAPgA8AEQAUwBfAEkARAA+AEQAZgBDAG0AQgBYAHcASwBhAEUAeQBUAGwANwA4AHIAUQBJADkAdQBxAFEAPQA9ADwALwBEAFMAXwBJAEQAPgA8AEMASABFAEMASwBTAFUATQA+AG4AcwBaAE4AcwB2AGwAMQBEADIAQQA9ADwALwBDAEgARQBDAEsAUwBVAE0APgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA== + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/tests/scriptlets/xml-prune.test.js b/tests/scriptlets/xml-prune.test.js new file mode 100644 index 00000000..b75fd761 --- /dev/null +++ b/tests/scriptlets/xml-prune.test.js @@ -0,0 +1,322 @@ +/* eslint-disable no-underscore-dangle, no-console */ +import { runScriptlet, clearGlobalProps } from '../helpers'; + +const { test, module } = QUnit; +const name = 'xml-prune'; + +const MPD_OBJECTS_PATH = './test-files/manifestMPD.mpd'; +const nativeFetch = fetch; +const nativeXhrOpen = XMLHttpRequest.prototype.open; +const nativeConsole = console.log; + +const beforeEach = () => { + window.__debug = () => { + window.hit = 'FIRED'; + }; +}; + +const afterEach = () => { + clearGlobalProps('hit', '__debug'); + fetch = nativeFetch; // eslint-disable-line no-global-assign + console.log = nativeConsole; + XMLHttpRequest.prototype.open = nativeXhrOpen; +}; + +module(name, { beforeEach, afterEach }); + +const isSupported = typeof fetch !== 'undefined' && typeof Proxy !== 'undefined' && typeof Response !== 'undefined'; + +if (!isSupported) { + test('unsupported', (assert) => { + assert.ok(true, 'Browser does not support it'); + }); +} else { + test('Checking if alias name works', (assert) => { + const adgParams = { + name, + engine: 'test', + verbose: true, + }; + const uboParams = { + name: 'xml-prune.js', + engine: 'test', + verbose: true, + }; + + const codeByAdgParams = window.scriptlets.invoke(adgParams); + const codeByUboParams = window.scriptlets.invoke(uboParams); + + assert.strictEqual(codeByAdgParams, codeByUboParams, 'ubo name - ok'); + }); + + test('fetch - no prune', async (assert) => { + const MPD_PATH = `${MPD_OBJECTS_PATH}`; + const done = assert.async(); + + runScriptlet(name); + + const response = await fetch(MPD_PATH); + const responseMPD = await response.text(); + + assert.ok(responseMPD.includes('pre-roll-1-ad-1')); + assert.strictEqual(window.hit, undefined, 'should not hit'); + done(); + }); + + test('fetch URL does not match - no prune', async (assert) => { + const MPD_PATH = `${MPD_OBJECTS_PATH}`; + const MATCH_DATA = "Period[id*='-ad-']"; + const OPTIONAL_MATCH = ''; + const MATCH_URL = 'noPrune'; + const scriptletArgs = [MATCH_DATA, OPTIONAL_MATCH, MATCH_URL]; + + runScriptlet(name, scriptletArgs); + + const done = assert.async(); + + const response = await fetch(MPD_PATH); + const responseMPD = await response.text(); + + assert.ok(responseMPD.includes('pre-roll-1-ad-1')); + assert.strictEqual(window.hit, 'FIRED', 'hit function fired'); + done(); + }); + + test('fetch match URL, element to remove does not match - no prune', async (assert) => { + const MPD_PATH = `${MPD_OBJECTS_PATH}`; + const MATCH_DATA = "Period[id*='do-no-match']"; + const OPTIONAL_MATCH = ''; + const MATCH_URL = '.mpd'; + const scriptletArgs = [MATCH_DATA, OPTIONAL_MATCH, MATCH_URL]; + + runScriptlet(name, scriptletArgs); + + const done = assert.async(); + + const response = await fetch(MPD_PATH); + const responseMPD = await response.text(); + + assert.ok(responseMPD.includes('pre-roll-1-ad-1')); + assert.strictEqual(window.hit, 'FIRED', 'hit function fired'); + done(); + }); + + test('fetch match URL, optional argument does not match - no prune', async (assert) => { + const MPD_PATH = `${MPD_OBJECTS_PATH}`; + const MATCH_DATA = "Period[id*='-ad-']"; + const OPTIONAL_MATCH = 'DO_NOT_MATCH'; + const MATCH_URL = '.mpd'; + const scriptletArgs = [MATCH_DATA, OPTIONAL_MATCH, MATCH_URL]; + + runScriptlet(name, scriptletArgs); + + const done = assert.async(); + + const response = await fetch(MPD_PATH); + const responseMPD = await response.text(); + + assert.ok(responseMPD.includes('pre-roll-1-ad-1')); + assert.strictEqual(window.hit, 'FIRED', 'hit function fired'); + done(); + }); + + test('fetch - remove ads', async (assert) => { + const MPD_PATH = `${MPD_OBJECTS_PATH}`; + const MATCH_DATA = ["Period[id*='-ad-']"]; + + runScriptlet(name, MATCH_DATA); + + const done = assert.async(); + + const response = await fetch(MPD_PATH); + const responseMPD = await response.text(); + + assert.ok(!responseMPD.includes('pre-roll-1-ad-1')); + assert.strictEqual(window.hit, 'FIRED', 'hit function fired'); + done(); + }); + + test('fetch match URL - remove ads', async (assert) => { + const MPD_PATH = `${MPD_OBJECTS_PATH}`; + const MATCH_DATA = "Period[id*='-ad-']"; + const OPTIONAL_MATCH = ''; + const MATCH_URL = '.mpd'; + const scriptletArgs = [MATCH_DATA, OPTIONAL_MATCH, MATCH_URL]; + + runScriptlet(name, scriptletArgs); + + const done = assert.async(); + + const response = await fetch(MPD_PATH); + const responseMPD = await response.text(); + + assert.ok(!responseMPD.includes('pre-roll-1-ad-1')); + assert.strictEqual(window.hit, 'FIRED', 'hit function fired'); + done(); + }); + + test('fetch match URL, match optional argument - remove ads', async (assert) => { + const MPD_PATH = `${MPD_OBJECTS_PATH}`; + const MATCH_DATA = "Period[id*='-ad-']"; + const OPTIONAL_MATCH = 'SegmentTemplate'; + const MATCH_URL = '.mpd'; + const scriptletArgs = [MATCH_DATA, OPTIONAL_MATCH, MATCH_URL]; + + runScriptlet(name, scriptletArgs); + + const done = assert.async(); + + const response = await fetch(MPD_PATH); + const responseMPD = await response.text(); + + assert.ok(!responseMPD.includes('pre-roll-1-ad-1')); + assert.strictEqual(window.hit, 'FIRED', 'hit function fired'); + done(); + }); + + test('xhr - no prune', async (assert) => { + const METHOD = 'GET'; + const MPD_PATH = `${MPD_OBJECTS_PATH}`; + const done = assert.async(); + + runScriptlet(name); + + const xhr = new XMLHttpRequest(); + xhr.open(METHOD, MPD_PATH); + xhr.onload = () => { + assert.ok(xhr.responseText.includes('pre-roll-1-ad-1')); + assert.strictEqual(window.hit, undefined, 'should not hit'); + done(); + }; + xhr.send(); + }); + + test('xhr URL does not match - no prune', async (assert) => { + const METHOD = 'GET'; + const MPD_PATH = `${MPD_OBJECTS_PATH}`; + const MATCH_DATA = "Period[id*='do-no-match']"; + const OPTIONAL_MATCH = ''; + const MATCH_URL = '.mpd'; + const scriptletArgs = [MATCH_DATA, OPTIONAL_MATCH, MATCH_URL]; + + runScriptlet(name, scriptletArgs); + + const done = assert.async(); + + const xhr = new XMLHttpRequest(); + xhr.open(METHOD, MPD_PATH); + xhr.onload = () => { + assert.ok(xhr.responseText.includes('pre-roll-1-ad-1')); + assert.strictEqual(window.hit, 'FIRED', 'hit function fired'); + done(); + }; + xhr.send(); + }); + + test('xhr match URL, element to remove does not match - no prune', async (assert) => { + const METHOD = 'GET'; + const MPD_PATH = `${MPD_OBJECTS_PATH}`; + const MATCH_DATA = "Period[id*='do-no-match']"; + const OPTIONAL_MATCH = ''; + const MATCH_URL = '.mpd'; + const scriptletArgs = [MATCH_DATA, OPTIONAL_MATCH, MATCH_URL]; + + runScriptlet(name, scriptletArgs); + + const done = assert.async(); + + const xhr = new XMLHttpRequest(); + xhr.open(METHOD, MPD_PATH); + xhr.onload = () => { + assert.ok(xhr.responseText.includes('pre-roll-1-ad-1')); + assert.strictEqual(window.hit, 'FIRED', 'hit function fired'); + done(); + }; + xhr.send(); + }); + + test('xhr match URL, optional argument does not match - no prune', async (assert) => { + const METHOD = 'GET'; + const MPD_PATH = `${MPD_OBJECTS_PATH}`; + const MATCH_DATA = "Period[id*='-ad-']"; + const OPTIONAL_MATCH = 'DO_NOT_MATCH'; + const MATCH_URL = '.mpd'; + const scriptletArgs = [MATCH_DATA, OPTIONAL_MATCH, MATCH_URL]; + + runScriptlet(name, scriptletArgs); + + const done = assert.async(); + + const xhr = new XMLHttpRequest(); + xhr.open(METHOD, MPD_PATH); + xhr.onload = () => { + assert.ok(xhr.responseText.includes('pre-roll-1-ad-1')); + assert.strictEqual(window.hit, 'FIRED', 'hit function fired'); + done(); + }; + xhr.send(); + }); + + test('xhr - remove ads', async (assert) => { + const METHOD = 'GET'; + const MPD_PATH = `${MPD_OBJECTS_PATH}`; + const MATCH_DATA = ["Period[id*='-ad-']"]; + + runScriptlet(name, MATCH_DATA); + + const done = assert.async(); + + const xhr = new XMLHttpRequest(); + xhr.open(METHOD, MPD_PATH); + xhr.onload = () => { + assert.ok(!xhr.responseText.includes('pre-roll-1-ad-1')); + assert.strictEqual(window.hit, 'FIRED', 'hit function fired'); + done(); + }; + xhr.send(); + }); + + test('xhr match URL - remove ads', async (assert) => { + const METHOD = 'GET'; + const MPD_PATH = `${MPD_OBJECTS_PATH}`; + const MATCH_DATA = "Period[id*='-ad-']"; + const OPTIONAL_MATCH = ''; + const MATCH_URL = '.mpd'; + const scriptletArgs = [MATCH_DATA, OPTIONAL_MATCH, MATCH_URL]; + + runScriptlet(name, scriptletArgs); + + const done = assert.async(); + + const xhr = new XMLHttpRequest(); + xhr.open(METHOD, MPD_PATH); + xhr.onload = () => { + assert.ok(!xhr.responseText.includes('pre-roll-1-ad-1')); + assert.strictEqual(window.hit, 'FIRED', 'hit function fired'); + done(); + }; + xhr.send(); + }); + + test('xhr match URL, match optional argument - remove ads', async (assert) => { + const METHOD = 'GET'; + const MPD_PATH = `${MPD_OBJECTS_PATH}`; + const MATCH_DATA = "Period[id*='-ad-']"; + const OPTIONAL_MATCH = 'SegmentTemplate'; + const MATCH_URL = '.mpd'; + const scriptletArgs = [MATCH_DATA, OPTIONAL_MATCH, MATCH_URL]; + + runScriptlet(name, scriptletArgs); + + const done = assert.async(); + + const xhr = new XMLHttpRequest(); + xhr.open(METHOD, MPD_PATH); + xhr.onload = () => { + assert.ok(!xhr.responseText.includes('pre-roll-1-ad-1')); + assert.strictEqual(window.hit, 'FIRED', 'hit function fired'); + done(); + }; + xhr.send(); + }); +} diff --git a/wiki/about-scriptlets.md b/wiki/about-scriptlets.md index 847dad79..43e3aa80 100644 --- a/wiki/about-scriptlets.md +++ b/wiki/about-scriptlets.md @@ -45,6 +45,7 @@ * [set-local-storage-item](#set-local-storage-item) * [set-popads-dummy](#set-popads-dummy) * [set-session-storage-item](#set-session-storage-item) +* [xml-prune](#xml-prune) * * * ### ⚡️ abort-current-inline-script @@ -1493,6 +1494,8 @@ Creates a constant property and assigns it one of the values from the predefined > Actually, it's not a constant. Please note, that it can be rewritten with a value of a different type. +> If empty object is present in chain it will be trapped until chain leftovers appear. + Related UBO scriptlet: https://github.com/gorhill/uBlock/wiki/Resources-Library#set-constantjs- @@ -1692,3 +1695,36 @@ example.org#%#//scriptlet('set-session-storage-item', 'exit-intent-marketing', ' [Scriptlet source](../src/scriptlets/set-session-storage-item.js) * * * +### ⚡️ xml-prune + +Removes an element from the specified XML. + + +**Syntax** +``` +example.org#%#//scriptlet('xml-prune'[, propsToMatch[, optionalProp[, urlToMatch]]]) +``` + +- `propsToMatch` - required, selector of elements which will be removed from XML +- `optionalProp` - optional, selector of elements that must occur in XML document +- `urlToMatch` - optional, string or regular expression for matching the request's URL + +**Examples** +1. Removes `Period` tag which `id` contains `-ad-` from all requests + ``` + example.org#%#//scriptlet('xml-prune', 'Period[id*="-ad-"]') + ``` + +2. Removes `Period` tag which `id` contains `-ad-`, only if XML contains `SegmentTemplate` + ``` + example.org#%#//scriptlet('xml-prune', 'Period[id*="-ad-"]', 'SegmentTemplate') + ``` + +3. Removes `Period` tag which `id` contains `-ad-`, only if request's URL contains `.mpd` + ``` + example.org#%#//scriptlet('xml-prune', 'Period[id*="-ad-"]', '', '.mpd') + ``` + +[Scriptlet source](../src/scriptlets/xml-prune.js) +* * * +