From cfc8286d354f5bf3b9a4c814ea5a9d78051538fa Mon Sep 17 00:00:00 2001
From: Dave Conway-Jones ' + (def.title || "") + ' ';
-
- columns.push(column);
- }
- });
-
- //build body rows
-
- data.forEach(function (rowData) {
-
- var row = "";
-
- columns.forEach(function (column) {
-
- var value = column.getFieldValue(rowData);
-
- if (typeof value === "undefined" || value === null) {
-
- value = ":";
- }
-
- row += '' + value + ' ';
- });
-
- body += '' + row + ' ';
- });
-
- //build table
-
- table = '\n\n\t\t\t\n\n\t\t\t
';
-
- return table;
- };
-
RowManager.prototype.getComponents = function (active) {
var self = this,
@@ -3539,7 +3590,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
RowManager.prototype.getDataCount = function (active) {
- return active ? this.rows.length : this.activeRows.length;
+ return active ? this.activeRows.length : this.rows.length;
};
RowManager.prototype._genRemoteRequest = function () {
@@ -3943,6 +3994,54 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
}
};
+ RowManager.prototype.getVisibleRows = function (viewable) {
+
+ var topEdge = this.element.scrollTop,
+ bottomEdge = this.element.clientHeight + topEdge,
+ topFound = false,
+ topRow = 0,
+ bottomRow = 0,
+ rows = this.getDisplayRows();
+
+ if (viewable) {
+
+ this.getDisplayRows();
+
+ for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
+
+ if (rows[i]) {
+
+ if (!topFound) {
+
+ if (topEdge - rows[i].getElement().offsetTop >= 0) {
+
+ topRow = i;
+ } else {
+
+ topFound = true;
+ }
+ } else {
+
+ if (bottomEdge - rows[i].getElement().offsetTop >= 0) {
+
+ bottomRow = i;
+ } else {
+
+ break;
+ }
+ }
+ }
+ }
+ } else {
+
+ topRow = this.vDomTop;
+
+ bottomRow = this.vDomBottom;
+ }
+
+ return rows.slice(topRow, bottomRow + 1);
+ };
+
//repeat action accross display rows
RowManager.prototype.displayRowIterator = function (callback) {
@@ -4670,13 +4769,15 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
this.adjustTableSize();
+ this.table.tableWidth = this.table.element.clientWidth;
+
if (!force) {
- if (self.renderMode == "classic") {
+ if (this.renderMode == "classic") {
- if (self.table.options.groupBy) {
+ if (this.table.options.groupBy) {
- self.refreshActiveData("group", false, false);
+ this.refreshActiveData("group", false, false);
} else {
this._simpleRender();
@@ -5074,7 +5175,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
self.element.addEventListener("touchstart", function (e) {
tap = true;
- });
+ }, { passive: true });
self.element.addEventListener("touchend", function (e) {
@@ -5130,7 +5231,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
self.table.options.rowTapHold(e, self.getComponent());
}, 1000);
- });
+ }, { passive: true });
self.element.addEventListener("touchend", function (e) {
@@ -5963,6 +6064,31 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
self.table.options.cellDblClick.call(self.table, e, component);
}
});
+ } else {
+
+ element.addEventListener("dblclick", function (e) {
+
+ e.preventDefault();
+
+ if (document.selection) {
+ // IE
+
+ var range = document.body.createTextRange();
+
+ range.moveToElementText(self.element);
+
+ range.select();
+ } else if (window.getSelection) {
+
+ var range = document.createRange();
+
+ range.selectNode(self.element);
+
+ window.getSelection().removeAllRanges();
+
+ window.getSelection().addRange(range);
+ }
+ });
}
if (cellEvents.cellContext || this.table.options.cellContext) {
@@ -6095,7 +6221,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
element.addEventListener("touchstart", function (e) {
tap = true;
- });
+ }, { passive: true });
element.addEventListener("touchend", function (e) {
@@ -6181,7 +6307,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
self.table.options.cellTapHold.call(self.table, e, component);
}
}, 1000);
- });
+ }, { passive: true });
element.addEventListener("touchend", function (e) {
@@ -6355,7 +6481,15 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
if (this.table.options.groupBy && this.table.modExists("groupRows")) {
- this.table.modules.columnCalcs.recalcRowGroup(this.row);
+ if (this.table.options.columnCalcs == "table" || this.table.options.columnCalcs == "both") {
+
+ this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+ }
+
+ if (this.table.options.columnCalcs != "table") {
+
+ this.table.modules.columnCalcs.recalcRowGroup(this.row);
+ }
} else {
this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
@@ -6847,6 +6981,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
sortOrderReverse: false, //reverse internal sort ordering
+ headerSort: true, //set default global header sort
+
+ headerSortTristate: false, //set default tristate header sorting
+
+
footerElement: false, //hold footer element
@@ -6856,6 +6995,12 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
keybindings: [], //array for keybindings
+ tabEndNewRow: false, //create new row when tab to end of table
+
+
+ invalidOptionWarnings: true, //allow toggling of invalid option warnings
+
+
clipboard: false, //enable clipboard
clipboardCopyStyled: true, //formatted table data
@@ -6910,6 +7055,21 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
dataTreeRowCollapsed: function dataTreeRowCollapsed() {}, //row has been collapsed
+ printAsHtml: false, //enable print as html
+
+ printFormatter: false, //printing page formatter
+
+ printHeader: false, //page header contents
+
+ printFooter: false, //page footer contents
+
+ printCopyStyle: true, //enable print as html styling
+
+ printVisibleRows: true, //restrict print to visible rows only
+
+ printConfig: {}, //print config options
+
+
addRowPos: "bottom", //position to insert blank rows, top|bottom
@@ -6929,6 +7089,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
headerFilterPlaceholder: false, //placeholder text to display in header filters
+ headerVisible: true, //hide header
+
+
history: false, //enable edit history
@@ -7016,6 +7179,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
groupHeader: false, //header generation function
+ htmlOutputConfig: false, //html outypu config
+
+
movableColumns: false, //enable movable columns
@@ -7231,6 +7397,21 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
Tabulator.prototype.initializeOptions = function (options) {
+ //warn user if option is not available
+
+ if (options.invalidOptionWarnings !== false) {
+
+ for (var key in options) {
+
+ if (typeof this.defaultOptions[key] === "undefined") {
+
+ console.warn("Invalid table constructor option:", key);
+ }
+ }
+ }
+
+ //assign options to table
+
for (var key in this.defaultOptions) {
if (key in options) {
@@ -7254,7 +7435,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
Tabulator.prototype.initializeElement = function (element) {
- if (element instanceof HTMLElement) {
+ if (typeof HTMLElement !== "undefined" && element instanceof HTMLElement) {
this.element = element;
@@ -7284,6 +7465,30 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
Tabulator.prototype._mapDepricatedFunctionality = function () {};
+ Tabulator.prototype._clearSelection = function () {
+
+ this.element.classList.add("tabulator-block-select");
+
+ if (window.getSelection) {
+
+ if (window.getSelection().empty) {
+ // Chrome
+
+ window.getSelection().empty();
+ } else if (window.getSelection().removeAllRanges) {
+ // Firefox
+
+ window.getSelection().removeAllRanges();
+ }
+ } else if (document.selection) {
+ // IE?
+
+ document.selection.empty();
+ }
+
+ this.element.classList.remove("tabulator-block-select");
+ };
+
//concreate table
Tabulator.prototype._create = function () {
@@ -7540,6 +7745,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
mod.clipboard.initialize();
}
+ if (options.printAsHtml && this.modExists("print")) {
+
+ mod.print.initialize();
+ }
+
options.tableBuilt.call(this);
};
@@ -7858,9 +8068,22 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
//get table html
- Tabulator.prototype.getHtml = function (active) {
+ Tabulator.prototype.getHtml = function (visible, style, config) {
+
+ if (this.modExists("htmlTableExport", true)) {
+
+ return this.modules.htmlTableExport.getHtml(visible, style, config);
+ }
+ };
+
+ //get print html
+
+ Tabulator.prototype.print = function (visible, style, config) {
+
+ if (this.modExists("print", true)) {
- return this.rowManager.getHtml(active);
+ return this.modules.print.printFullscreen(visible, style, config);
+ }
};
//retrieve Ajax URL
@@ -8416,6 +8639,27 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
}
};
+ Tabulator.prototype.moveColumn = function (from, to, after) {
+
+ var fromColumn = this.columnManager.findColumn(from);
+
+ var toColumn = this.columnManager.findColumn(to);
+
+ if (fromColumn) {
+
+ if (toColumn) {
+
+ this.columnManager.moveColumn(fromColumn, toColumn, after);
+ } else {
+
+ console.warn("Move Error - No matching column found:", toColumn);
+ }
+ } else {
+
+ console.warn("Move Error - No matching column found:", from);
+ }
+ };
+
//scroll to column in DOM
Tabulator.prototype.scrollToColumn = function (field, position, ifVisible) {
@@ -8994,7 +9238,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
e.preventDefault();
- return cell.nav().dpwn();
+ return cell.nav().down();
}
}
@@ -9237,7 +9481,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
}
}
}
- } else if (query instanceof HTMLElement || query instanceof Tabulator) {
+ } else if (typeof HTMLElement !== "undefined" && query instanceof HTMLElement || query instanceof Tabulator) {
match = Tabulator.prototype.comms.matchElement(query);
@@ -10620,6 +10864,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
data = this.rowsToData(rows);
if (this.topInitialized) {
+ if (this.topRow) {
+ this.topRow.deleteCells();
+ }
+
row = this.generateRow("top", this.rowsToData(rows));
this.topRow = row;
while (this.topElement.firstChild) {
@@ -10629,6 +10877,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
}
if (this.botInitialized) {
+ if (this.botRow) {
+ this.botRow.deleteCells();
+ }
+
row = this.generateRow("bottom", this.rowsToData(rows));
this.botRow = row;
while (this.botElement.firstChild) {
@@ -10774,7 +11026,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
});
paramKey = type + "Params";
- params = typeof column.modules.columnCalcs[paramKey] === "function" ? column.modules.columnCalcs[paramKey](value, data) : column.modules.columnCalcs[paramKey];
+ params = typeof column.modules.columnCalcs[paramKey] === "function" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];
column.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));
}
@@ -10785,9 +11037,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
ColumnCalcs.prototype.hasTopCalcs = function () {
return !!this.topCalcs.length;
- }, ColumnCalcs.prototype.hasBottomCalcs = function () {
+ };
+
+ ColumnCalcs.prototype.hasBottomCalcs = function () {
return !!this.botCalcs.length;
- },
+ };
//handle table redraw
ColumnCalcs.prototype.redraw = function () {
@@ -10932,6 +11186,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
};
Tabulator.prototype.registerModule("columnCalcs", ColumnCalcs);
+
var Clipboard = function Clipboard(table) {
this.table = table;
this.mode = true;
@@ -11003,7 +11258,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
if (typeof this.table.options.clipboardCopyHeader !== "undefined") {
config.columnHeaders = this.table.options.clipboardCopyHeader;
- console.warn("DEPRECATION WANRING - clipboardCopyHeader option has been depricated, please use the columnHeaders property on the clipboardCopyConfig option");
+ console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option");
}
if (this.table.options.clipboardCopyConfig) {
@@ -11133,7 +11388,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
};
Clipboard.prototype.copy = function (selector, selectorParams, formatter, formatterParams, internal) {
- var range, sel;
+ var range, sel, textRange;
this.blocked = false;
if (this.mode === true || this.mode === "copy") {
@@ -11270,7 +11525,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
return false;
}
} else {
- if (column.field && column.visible) {
+ if (column.field && (column.definition.clipboard || column.visible && column.definition.clipboard !== false)) {
groupData.width = 1;
} else {
return false;
@@ -11328,9 +11583,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
return headers;
};
- Clipboard.prototype.rowsToData = function (rows, config, params) {
- var columns = this.table.columnManager.columnsByIndex,
- data = [];
+ Clipboard.prototype.rowsToData = function (rows, columns, config, params) {
+ var data = [];
rows.forEach(function (row) {
var rowArray = [],
@@ -11398,7 +11652,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
return groupData;
};
- Clipboard.prototype.getCalcRow = function (calcs, selector, pos) {
+ Clipboard.prototype.getCalcRow = function (calcs, columns, selector, pos) {
var calcData = calcs[selector];
if (calcData) {
@@ -11407,7 +11661,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
}
if (Object.keys(calcData).length) {
- return this.rowsToData([calcData]);
+ return this.rowsToData([calcData], columns);
}
}
@@ -11419,7 +11673,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
var output = [],
calcs,
- columns = this.table.columnManager.columnsByIndex;
+ columns = [];
if (config.columnHeaders) {
@@ -11428,6 +11682,12 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
output = output.concat(this.groupHeadersToRows(columns));
} else {
+ this.table.columnManager.columnsByIndex.forEach(function (column) {
+ if (column.definition.clipboard || column.visible && column.definition.clipboard !== false) {
+ columns.push(column);
+ }
+ });
+
output.push(this.generateSimpleHeaders(columns));
}
}
@@ -11444,24 +11704,24 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
//generate unstyled content
if (config.rowGroups) {
rows.forEach(function (row) {
- output = output.concat(_this26.parseRowGroupData(row, config, params, calcs || {}));
+ output = output.concat(_this26.parseRowGroupData(row, columns, config, params, calcs || {}));
});
} else {
if (config.columnCalcs) {
- output = output.concat(this.getCalcRow(calcs, "top"));
+ output = output.concat(this.getCalcRow(calcs, columns, "top"));
}
- output = output.concat(this.rowsToData(rows, config, params));
+ output = output.concat(this.rowsToData(rows, columns, config, params));
if (config.columnCalcs) {
- output = output.concat(this.getCalcRow(calcs, "bottom"));
+ output = output.concat(this.getCalcRow(calcs, columns, "bottom"));
}
}
return output;
};
- Clipboard.prototype.parseRowGroupData = function (group, config, params, calcObj) {
+ Clipboard.prototype.parseRowGroupData = function (group, columns, config, params, calcObj) {
var _this27 = this;
var groupData = [];
@@ -11474,13 +11734,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
});
} else {
if (config.columnCalcs) {
- groupData = groupData.concat(this.getCalcRow(calcObj, group.key, "top"));
+ groupData = groupData.concat(this.getCalcRow(calcObj, columns, group.key, "top"));
}
- groupData = groupData.concat(this.rowsToData(group.rows, config, params));
+ groupData = groupData.concat(this.rowsToData(group.rows, columns, config, params));
if (config.columnCalcs) {
- groupData = groupData.concat(this.getCalcRow(calcObj, group.key, "bottom"));
+ groupData = groupData.concat(this.getCalcRow(calcObj, columns, group.key, "bottom"));
}
}
@@ -11615,7 +11875,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
}
}
- columns = this.table.columnManager.columnsByIndex;
+ // columns = this.table.columnManager.columnsByIndex;
//create table body
body = document.createElement("tbody");
@@ -12382,10 +12642,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
var subGroups = column.columns,
maxDepth = 0;
-
+ var processedColumn = this.processDefinition(column);
var groupData = {
type: "group",
- title: column.definition.title,
+ title: processedColumn.title,
depth: 1
};
@@ -12414,7 +12674,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
} else {
if (column.field && column.definition.download !== false && (column.visible || !column.visible && column.definition.download)) {
groupData.width = 1;
- groupData.definition = this.processDefinition(column);
+ groupData.definition = processedColumn;
} else {
return false;
}
@@ -12892,6 +13152,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
doc.autoTable(autoTableParams);
+ if (options && options.documentProcessing) {
+ options.documentProcessing(doc);
+ }
+
setFileContents(doc.output("arraybuffer"), "application/pdf");
},
@@ -13186,7 +13450,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
if (column.definition.editor === "tick") {
column.definition.editor = "tickCross";
- console.warn("DEPRECATION WANRING - the tick editor has been depricated, please use the tickCross editor");
+ console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor");
}
if (self.editors[column.definition.editor]) {
@@ -13208,7 +13472,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
if (column.definition.formatter === "tick") {
column.definition.formatter = "tickCross";
- console.warn("DEPRECATION WANRING - the tick editor has been depricated, please use the tickCross editor");
+ console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor");
}
if (self.editors[column.definition.formatter]) {
@@ -13462,12 +13726,23 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
var cellValue = cell.getValue(),
input = document.createElement("input");
- input.setAttribute("type", "text");
+ input.setAttribute("type", editorParams.search ? "search" : "text");
input.style.padding = "4px";
input.style.width = "100%";
input.style.boxSizing = "border-box";
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ input.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
input.value = typeof cellValue !== "undefined" ? cellValue : "";
onRendered(function () {
@@ -13507,7 +13782,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
textarea: function textarea(cell, onRendered, success, cancel, editorParams) {
var self = this,
cellValue = cell.getValue(),
- value = String(cellValue !== null && cellValue !== "undefined" ? cellValue : ""),
+ value = String(cellValue !== null && typeof cellValue !== "undefined" ? cellValue : ""),
count = (value.match(/(?:\r\n|\r|\n)/g) || []).length + 1,
input = document.createElement("textarea"),
scrollHeight = 0;
@@ -13521,6 +13796,17 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
input.style.whiteSpace = "pre-wrap";
input.style.resize = "none";
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ input.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
input.value = value;
onRendered(function () {
@@ -13592,11 +13878,32 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
input.style.width = "100%";
input.style.boxSizing = "border-box";
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ input.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
input.value = cellValue;
+ var blurFunc = function blurFunc(e) {
+ onChange();
+ };
+
onRendered(function () {
+ //submit new value on blur
+ input.removeEventListener("blur", blurFunc);
+
input.focus();
input.style.height = "100%";
+
+ //submit new value on blur
+ input.addEventListener("blur", blurFunc);
});
function onChange() {
@@ -13613,16 +13920,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
}
}
- //submit new value on blur
- input.addEventListener("blur", function (e) {
- onChange();
- });
-
//submit new value on enter
input.addEventListener("keydown", function (e) {
switch (e.keyCode) {
case 13:
- case 9:
+ // case 9:
onChange();
break;
@@ -13660,6 +13962,17 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
input.style.width = "100%";
input.style.boxSizing = "border-box";
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ input.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
input.value = cellValue;
onRendered(function () {
@@ -13708,6 +14021,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
var self = this,
cellEl = cell.getElement(),
initialValue = cell.getValue(),
+ initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "",
input = document.createElement("input"),
listEl = document.createElement("div"),
dataItems = [],
@@ -13715,32 +14029,44 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
currentItem = {},
blurable = true;
+ this.table.rowManager.element.addEventListener("scroll", cancelItem);
+
if (Array.isArray(editorParams) || !Array.isArray(editorParams) && (typeof editorParams === 'undefined' ? 'undefined' : _typeof(editorParams)) === "object" && !editorParams.values) {
console.warn("DEPRECATION WANRING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object");
editorParams = { values: editorParams };
}
- function getUniqueColumnValues() {
+ function getUniqueColumnValues(field) {
var output = {},
- column = cell.getColumn()._getSelf(),
- data = self.table.getData();
+ data = self.table.getData(),
+ column;
- data.forEach(function (row) {
- var val = column.getFieldValue(row);
+ if (field) {
+ column = self.table.columnManager.getColumnByField(field);
+ } else {
+ column = cell.getColumn()._getSelf();
+ }
- if (val !== null && typeof val !== "undefined" && val !== "") {
- output[val] = true;
- }
- });
+ if (column) {
+ data.forEach(function (row) {
+ var val = column.getFieldValue(row);
+
+ if (val !== null && typeof val !== "undefined" && val !== "") {
+ output[val] = true;
+ }
+ });
- if (editorParams.sortValuesList) {
- if (editorParams.sortValuesList == "asc") {
- output = Object.keys(output).sort();
+ if (editorParams.sortValuesList) {
+ if (editorParams.sortValuesList == "asc") {
+ output = Object.keys(output).sort();
+ } else {
+ output = Object.keys(output).sort().reverse();
+ }
} else {
- output = Object.keys(output).sort().reverse();
+ output = Object.keys(output);
}
} else {
- output = Object.keys(output);
+ console.warn("unable to find matching column to create select lookup list:", field);
}
return output;
@@ -13909,9 +14235,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
if (!listEl.parentNode) {
if (editorParams.values === true) {
- parseItems(getUniqueColumnValues(), initialValue);
+ parseItems(getUniqueColumnValues(), initialDisplayValue);
+ } else if (typeof editorParams.values === "string") {
+ parseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);
} else {
- parseItems(editorParams.values || [], initialValue);
+ parseItems(editorParams.values || [], initialDisplayValue);
}
var offset = Tabulator.prototype.helpers.elOffset(cellEl);
@@ -13928,6 +14256,12 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
if (listEl.parentNode) {
listEl.parentNode.removeChild(listEl);
}
+
+ removeScrollListener();
+ }
+
+ function removeScrollListener() {
+ self.table.rowManager.element.removeEventListener("scroll", cancelItem);
}
//style input
@@ -13936,12 +14270,26 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
input.style.padding = "4px";
input.style.width = "100%";
input.style.boxSizing = "border-box";
- input.readOnly = true;
+ input.style.cursor = "default";
+ input.readOnly = this.currentCell != false;
+
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ input.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
- input.value = typeof initialValue !== "undefined" ? initialValue : "";
+ input.value = typeof initialValue !== "undefined" || initialValue === null ? initialValue : "";
if (editorParams.values === true) {
parseItems(getUniqueColumnValues(), initialValue);
+ } else if (typeof editorParams.values === "string") {
+ parseItems(getUniqueColumnValues(editorParams.values), initialValue);
} else {
parseItems(editorParams.values || [], initialValue);
}
@@ -14028,6 +14376,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
var self = this,
cellEl = cell.getElement(),
initialValue = cell.getValue(),
+ initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "",
input = document.createElement("input"),
listEl = document.createElement("div"),
allItems = [],
@@ -14036,27 +14385,39 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
currentItem = {},
blurable = true;
- function getUniqueColumnValues() {
+ this.table.rowManager.element.addEventListener("scroll", cancelItem);
+
+ function getUniqueColumnValues(field) {
var output = {},
- column = cell.getColumn()._getSelf(),
- data = self.table.getData();
+ data = self.table.getData(),
+ column;
- data.forEach(function (row) {
- var val = column.getFieldValue(row);
+ if (field) {
+ column = self.table.columnManager.getColumnByField(field);
+ } else {
+ column = cell.getColumn()._getSelf();
+ }
- if (val !== null && typeof val !== "undefined" && val !== "") {
- output[val] = true;
- }
- });
+ if (column) {
+ data.forEach(function (row) {
+ var val = column.getFieldValue(row);
+
+ if (val !== null && typeof val !== "undefined" && val !== "") {
+ output[val] = true;
+ }
+ });
- if (editorParams.sortValuesList) {
- if (editorParams.sortValuesList == "asc") {
- output = Object.keys(output).sort();
+ if (editorParams.sortValuesList) {
+ if (editorParams.sortValuesList == "asc") {
+ output = Object.keys(output).sort();
+ } else {
+ output = Object.keys(output).sort().reverse();
+ }
} else {
- output = Object.keys(output).sort().reverse();
+ output = Object.keys(output);
}
} else {
- output = Object.keys(output);
+ console.warn("unable to find matching column to create autocomplete lookup list:", field);
}
return output;
@@ -14252,6 +14613,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
listEl.removeChild(listEl.firstChild);
}if (editorParams.values === true) {
values = getUniqueColumnValues();
+ } else if (typeof editorParams.values === "string") {
+ values = getUniqueColumnValues(editorParams.values);
} else {
values = editorParams.values || [];
}
@@ -14272,6 +14635,12 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
if (listEl.parentNode) {
listEl.parentNode.removeChild(listEl);
}
+
+ removeScrollListener();
+ }
+
+ function removeScrollListener() {
+ self.table.rowManager.element.removeEventListener("scroll", cancelItem);
}
//style input
@@ -14281,6 +14650,17 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
input.style.width = "100%";
input.style.boxSizing = "border-box";
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ input.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
//allow key based navigation
input.addEventListener("keydown", function (e) {
var index;
@@ -14373,9 +14753,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
});
input.addEventListener("focus", function (e) {
+ var value = initialDisplayValue;
showList();
- input.value = initialValue;
- filterList(initialValue, true);
+ input.value = value;
+ filterList(value, true);
});
//style list element
@@ -14394,13 +14775,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
star: function star(cell, onRendered, success, cancel, editorParams) {
var self = this,
element = cell.getElement(),
- value = cell.getValue(),
+ value = cell.getValue() || 0,
maxStars = element.getElementsByTagName("svg").length || 5,
size = element.getElementsByTagName("svg")[0] ? element.getElementsByTagName("svg")[0].getAttribute("width") : 14,
stars = [],
starsHolder = document.createElement("div"),
star = document.createElementNS('http://www.w3.org/2000/svg', "svg");
-
+
//change star type
function starChange(val) {
stars.forEach(function (star, i) {
@@ -14476,12 +14857,24 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
star.setAttribute("xml:space", "preserve");
star.style.padding = "0 1px";
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ starsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ starsHolder.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
//create correct number of stars
for (var i = 1; i <= maxStars; i++) {
buildStar(i);
}
//ensure value does not exceed number of stars
+ if (isNaN(value)) { value = 0; }
value = Math.min(parseInt(value), maxStars);
// set initial styling of stars
@@ -14567,6 +14960,17 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
bar.style.maxWidth = "100%";
bar.style.minWidth = "0%";
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ bar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ bar.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
//style cell
element.style.padding = "4px 4px";
@@ -14656,6 +15060,17 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
input.style.marginTop = "5px";
input.style.boxSizing = "border-box";
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ input.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
input.value = value;
if (tristate && (typeof value === "undefined" || value === indetermValue || value === "")) {
@@ -14720,6 +15135,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
};
Tabulator.prototype.registerModule("edit", Edit);
+
var Filter = function Filter(table) {
this.table = table; //hold Tabulator object
@@ -14736,7 +15152,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
Filter.prototype.initializeColumn = function (column, value) {
var self = this,
field = column.getField(),
- prevSuccess,
params;
//handle successfull value change
@@ -14745,9 +15160,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
type = "",
filterFunc;
- if (typeof prevSuccess === "undefined" || prevSuccess !== value) {
+ if (typeof column.modules.filter.prevSuccess === "undefined" || column.modules.filter.prevSuccess !== value) {
- prevSuccess = value;
+ column.modules.filter.prevSuccess = value;
if (!column.modules.filter.emptyFunc(value)) {
column.modules.filter.value = value;
@@ -14828,6 +15243,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
};
Filter.prototype.generateHeaderFilterElement = function (column, initialValue) {
+ var _this35 = this;
+
var self = this,
success = column.modules.filter.success,
field = column.getField(),
@@ -14961,6 +15378,15 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
editorElement.focus();
});
+ editorElement.addEventListener("focus", function (e) {
+ var left = _this35.table.columnManager.element.scrollLeft;
+
+ if (left !== _this35.table.rowManager.element.scrollLeft) {
+ _this35.table.rowManager.scrollHorizontal(left);
+ _this35.table.columnManager.scrollHorizontal(left);
+ }
+ });
+
//live update filters as user types
typingTimer = false;
@@ -14980,7 +15406,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
if (column.definition.headerFilterLiveFilter !== false) {
- if (!((column.definition.headerFilter === 'autocomplete' || column.definition.editor === 'autocomplete' || column.definition.headerFilter === 'tickCross' || column.definition.editor === 'tickCross') && column.definition.headerFilter === true)) {
+ if (!(column.definition.headerFilter === 'autocomplete' || column.definition.headerFilter === 'tickCross' || (column.definition.editor === 'autocomplete' || column.definition.editor === 'tickCross') && column.definition.headerFilter === true)) {
editorElement.addEventListener("keyup", searchTrigger);
editorElement.addEventListener("search", searchTrigger);
@@ -15163,17 +15589,12 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
//get all filters
Filter.prototype.getFilters = function (all, ajax) {
- var self = this,
- output = [];
+ var output = [];
if (all) {
- output = self.getHeaderFilters();
+ output = this.getHeaderFilters();
}
- self.filterList.forEach(function (filter) {
- output.push({ field: filter.field, type: filter.type, value: filter.value });
- });
-
if (ajax) {
output.forEach(function (item) {
if (typeof item.type == "function") {
@@ -15182,6 +15603,35 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
});
}
+ output = output.concat(this.filtersToArray(this.filterList, ajax));
+
+ return output;
+ };
+
+ //filter to Object
+ Filter.prototype.filtersToArray = function (filterList, ajax) {
+ var _this36 = this;
+
+ var output = [];
+
+ filterList.forEach(function (filter) {
+ var item;
+
+ if (Array.isArray(filter)) {
+ output.push(_this36.filtersToArray(filter, ajax));
+ } else {
+ item = { field: filter.field, type: filter.type, value: filter.value };
+
+ if (ajax) {
+ if (typeof item.type == "function") {
+ item.type = "function";
+ }
+ }
+
+ output.push(item);
+ }
+ });
+
return output;
};
@@ -15254,6 +15704,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
this.headerFilterColumns.forEach(function (column) {
column.modules.filter.value = null;
+ column.modules.filter.prevSuccess = undefined;
self.reloadHeaderFilter(column);
});
@@ -15453,7 +15904,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
config.params.crossElement = false;
}
- console.warn("DEPRECATION WANRING - the tick formatter has been depricated, please use the tickCross formatter with the crossElement param set to false");
+ console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false");
}
if (self.formatters[column.definition.formatter]) {
@@ -15516,7 +15967,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
};
Format.prototype.emptyToSpace = function (value) {
- return value === null || typeof value === "undefined" ? " " : value;
+ return value === null || typeof value === "undefined" ? " " : value;
};
//get formatter for cell
@@ -15604,6 +16055,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
el = document.createElement("a"),
data;
+ if (label === " ") { return; }
if (formatterParams.labelField) {
data = cell.getData();
label = data[formatterParams.labelField];
@@ -15944,7 +16396,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
element.setAttribute("aria-label", percentValue);
- return "' + header + ' \n\n\t\t\t\n\n\t\t\t' + body + '\n\n\t\t\t ";
});
@@ -20588,6 +21678,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
this.lastClickedRow = false; //last clicked row
this.selectPrev = []; //hold previously selected element for drag drop selection
this.selectedRows = []; //hold selected rows
+ this.headerCheckboxElement = null; // hold header select element
};
SelectRow.prototype.clearSelectionData = function (silent) {
@@ -20623,8 +21714,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
element.classList.remove("tabulator-unselectable");
if (self.table.options.selectable && self.table.options.selectable != "highlight") {
- if (self.table.options.selectableRangeMode && self.table.options.selectableRangeMode === "click") {
+ if (self.table.options.selectableRangeMode === "click") {
element.addEventListener("click", function (e) {
+
+ self.table._clearSelection();
+
if (e.shiftKey) {
self.lastClickedRow = self.lastClickedRow || row;
@@ -20637,18 +21731,32 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
var rows = self.table.rowManager.getDisplayRows().slice(0);
var toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);
- if (e.ctrlKey) {
+ if (e.ctrlKey || e.metaKey) {
toggledRows.forEach(function (toggledRow) {
if (toggledRow !== self.lastClickedRow) {
- self.toggleRow(toggledRow);
+
+ if (self.table.options.selectable !== true && !self.isRowSelected(row)) {
+ if (self.selectedRows.length < self.table.options.selectable) {
+ self.toggleRow(toggledRow);
+ }
+ } else {
+ self.toggleRow(toggledRow);
+ }
}
});
self.lastClickedRow = row;
} else {
self.deselectRows();
+
+ if (self.table.options.selectable !== true) {
+ if (toggledRows.length > self.table.options.selectable) {
+ toggledRows = toggledRows.slice(0, self.table.options.selectable);
+ }
+ }
+
self.selectRows(toggledRows);
}
- } else if (e.ctrlKey) {
+ } else if (e.ctrlKey || e.metaKey) {
self.toggleRow(row);
self.lastClickedRow = row;
} else {
@@ -20656,9 +21764,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
self.selectRows(row);
self.lastClickedRow = row;
}
+
+ self.table._clearSelection();
});
} else {
element.addEventListener("click", function (e) {
+ self.table._clearSelection();
+
if (!self.selecting) {
self.toggleRow(row);
}
@@ -20666,6 +21778,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
element.addEventListener("mousedown", function (e) {
if (e.shiftKey) {
+ self.table._clearSelection();
+
self.selecting = true;
self.selectPrev = [];
@@ -20681,6 +21795,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
element.addEventListener("mouseenter", function (e) {
if (self.selecting) {
+ self.table._clearSelection();
self.toggleRow(row);
if (self.selectPrev[1] == row) {
@@ -20691,6 +21806,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
element.addEventListener("mouseout", function (e) {
if (self.selecting) {
+ self.table._clearSelection();
self.selectPrev.unshift(row);
}
});
@@ -20774,6 +21890,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
}
row.modules.select.selected = true;
+ if (row.modules.select.checkboxEl) {
+ row.modules.select.checkboxEl.checked = true;
+ }
row.getElement().classList.add("tabulator-selected");
this.selectedRows.push(row);
@@ -20839,6 +21958,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
}
row.modules.select.selected = false;
+ if (row.modules.select.checkboxEl) {
+ row.modules.select.checkboxEl.checked = false;
+ }
row.getElement().classList.remove("tabulator-selected");
self.selectedRows.splice(index, 1);
@@ -20876,9 +21998,34 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
};
SelectRow.prototype._rowSelectionChanged = function () {
+ if (this.headerCheckboxElement) {
+ if (this.selectedRows.length === 0) {
+ this.headerCheckboxElement.checked = false;
+ this.headerCheckboxElement.indeterminate = false;
+ } else if (this.table.rowManager.rows.length === this.selectedRows.length) {
+ this.headerCheckboxElement.checked = true;
+ this.headerCheckboxElement.indeterminate = false;
+ } else {
+ this.headerCheckboxElement.indeterminate = true;
+ this.headerCheckboxElement.checked = false;
+ }
+ }
+
this.table.options.rowSelectionChanged.call(this.table, this.getSelectedData(), this.getSelectedRows());
};
+ SelectRow.prototype.registerRowSelectCheckbox = function (row, element) {
+ if (!row._row.modules.select) {
+ row._row.modules.select = {};
+ }
+
+ row._row.modules.select.checkboxEl = element;
+ };
+
+ SelectRow.prototype.registerHeaderSelectCheckbox = function (element) {
+ this.headerCheckboxElement = element;
+ };
+
Tabulator.prototype.registerModule("selectRow", SelectRow);
var Sort = function Sort(table) {
@@ -20912,10 +22059,10 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
sorter: sorter, dir: "none",
params: column.definition.sorterParams || {},
startingDir: column.definition.headerSortStartingDir || "asc",
- tristate: column.definition.headerSortTristate
+ tristate: typeof column.definition.headerSortTristate !== "undefined" ? column.definition.headerSortTristate : this.table.options.headerSortTristate
};
- if (column.definition.headerSort !== false) {
+ if (typeof column.definition.headerSort === "undefined" ? this.table.options.headerSort !== false : column.definition.headerSort !== false) {
colEl = column.getElement();
@@ -21641,11 +22788,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol
//must have a value
required: function required(cell, value, parameters) {
- return value !== "" & value !== null && typeof value !== "undefined";
+ return value !== "" && value !== null && typeof value !== "undefined";
}
};
Tabulator.prototype.registerModule("validate", Validate);
return Tabulator;
-});
\ No newline at end of file
+});
diff --git a/node-red-ui-node-table/locales/en-US/node.html b/node-red-ui-node-table/locales/en-US/node.html
index 5a3b870..b745b9c 100644
--- a/node-red-ui-node-table/locales/en-US/node.html
+++ b/node-red-ui-node-table/locales/en-US/node.html
@@ -22,7 +22,6 @@ " + item.title + " " + item.value + " Inputs
hVN`ZM>9kGIM 8MlA4R#R99*m}ZB}&Uw~{Yytt77? zw$qmhmozr_TeN0*CaOlE `#fMZYRx9SMev0PzM%=|;5SI&EpWw{;0XGZhSK3YOYNeB|ok}dL zmiZ47_|y-D9#u&R2Xll($W%x(%dmea47_@ fECPBnXU9?v1?@v!yK(S26r3gyt{d^-y}1tJ6dwwuI%GJlHAd3iwBDw4^vWNamC z^ {j-rkizpxO^Wz P}RBtk3i0 zD(81_-XQbk; uF=;x@Kduzz>I(e9^h%~5)9n3PDUt #q`V!fx^XQAee?N_xNTcsDJ>>`2Q>x{?D_Bl@q83f-7g*(qpd|&mo6)E#B%pK0_ zDZ0>nT)19 YNrDvjkFho z&MZ4GHylQHYYC<4 F$c<<{@&GvqR*wptSi3W)(!yeev9rZoOgBRP>d9bJkZZEHSl`s+e zd+oS*b)OnYJ>W~p%kaEo$V^qJU#Q?|_?6Lt@eF;h%1Ekq>QqCEr<-u?0rR%?08g2H z@9gbH5i$j8^2j%t)7Xq}#VM5KQRi%l(#YpgK0mDW;f1Lys661zy{5;ypidc|B3woh zt;a;6`QTBQY+`KkLV8rS<&hAIjd}JCEP >&KE zLJ$8K!4G`Cxy=3${KpU{YoUiPl~lnJ_Kv1tE;dfKCl7`1fWcrvM-wxCbxG;}xgGdR z=%Iy^(;I$vb|@6e27Sh6?`Y2cl#h>({Rsy<2L~%Kf)(Os=Vau{Y6p4rpGp2ZkEAKY z*wONhlcl{K_-0 o0pQ7wx)IvU=87?Pxzh){&B-U{`J?Af4f!tuUok|IRAd<-~RJIcM7uK zQ1Ca3{==?6t^)iLz9Y!~C+~&t-1%nR3W$TkQc~qP@Ei3;Hh|=A@)L&t{J#0Dh`_tW z!is_-iXtZ|_T2T>CIYjL;>GFp?n;c4IQYFPDh;+j3M$Q8*(#JlF-u}Jd~~%%OxaI) z_r<=8FuV{ayboHFl*E_JV0i3D>x4y1^UjYpe8#TxT9B}RdSW8k18Qat&GuYAd nGVSE8dKFH;o1ITg=MM zW%y;IH}iu0-r)RBz*|u}G%Rt)q2cHE|FKgn@oJ1;NdguC^Pr;9)L2?Eef*UZzyfGA zdbj^UR5 ZG!>fv$DGJei!uh}NSN^7cHN>)tpuH2hDf&E`qw4k6yqExR zMqXVK#cz7|E&@>A$J&xu;;64)hWw^vq94(L>ttbIS``10-xk2icnPTA=iUF+jRb^# z8RJjX2jU;m5|Crk{HD^XpMbqfc@E$y%Yz2 *lY%M`)o(LtaQW0}elS!K@t391y|#D+*9GZ}w7QyQ2XdzEcE z ^e*Z(olFuc#gF%meoqB_Jx1=^4%2RXj`I9orPZ3u)1^Dz?Dyicva~VP@5qJAh z_SVxLG?Myh=NbBISK~sx>jTWvCt%Ut?fgT&*YLwd0RbCuFWo)H3YM3nOtF^>UT)s& z7wU=H0l$hTTn)e%el8m!U(gn%!;zMMxAdh#0IoN|*7w~h`s}XPL+R 0zp11;qbNu{+bmxTlqSShczs5U zF7!An@h5$xh#reQtWNUG$v)!K#=)lnGudvP`UL&t-2Ir&U1+_gV@@y+)~ShH5Z~Ct ziOXk~QmG MDh zO+vR1;o-NMMCnqqJv+4I-T#IdK11#|?##cqs1;Uk$QflyKXksZV)j7ExOx4JL^G(u z^)kKHabPy9BT0&Ri!rIa|Lf2cj=a-*mucS3ENo!Li|#6sss@V7Q=Fuc+Sz1wZw8p_ z&*ropv+(#LNspFQJ=$6eL>PRZYoIs){Z~r{PoV~4i&KeMo=eJ&ogLLUXc`2#TYURz z=rUzu%Lkhsfw-+!lK1?G@&LX+OErHqq!d)Id|EHzH1OrA%&c%OgWnD&4Vjteaaa)s zt`VP6RmfuafG?tI1Y0MJ>%9Nzeo&MS?z9yp-`ZUXgiH*L9URxP^ zM*h=$HfZA6tObP+F# >|y-Bzab^2--#Yh5E1kVt^?YxgbuM0h?I?*K|G{KPkWR+vwzP3dYJuJ9eQ^(jqA zV{`8_>9(WNw>Kn+>{QY;$n0@d30#1%T9`9;=YoD)_&F{&VdHulB+#NbtzL;=w}I2~ zZBqU58)z&NvCC91u7{KIYhW;O|7K5PU(sp!kJ}|g9xRMj<`*|11_TG-jW!}qhl}Zv zW^54}NRJ`7_JvqS*!4wi-BWA1@4_=A?#u{*u!%{1=T<_ErJ|x<2g6wRG}AHuRmbyv z>V#`E;!T%kp2|0N*ZIuI#3xhJMp*}f4`+PKwK|&VgB_3wkb!iK#ayWH?sgO8Hy{ee z2Kk|JS`_$#lF<&>BL(noqkd!(f^!icOfqnBw#}9;_=(ihAwBCjSEJB3oM&*7VG< PWCjKF(PeQ9v+L75}?)rIS}*lCHk#zMGo( zl^Afi_stv?Mg_j%&Fx>A+qX);Xy_(`ol`dq2xciEw;#KVSEpXgfBUq3gq#-E1{}_I zLm?DYdg^Z7@gl%>Ic5a`_$@bu6~fF~0gsebhcQ8}-ZKB}-?Uzv5R8?p5j4t=HDP(8 z ?kIgQZg>M&qR9ssmJF{GPY z%=AtVrv9kGabqVM19<^rXyW)ZcVCL0=a5YfOT3WpHH4I_I!uFwPUx@__xEY*{s*u; z>}%Gq>PD;j>;Dr1-L=QoWfMnkEA8#zwN=AoYrP8X>Hue2dilfqKmLEJO3BeKV1w%A zd}m5JMn}Ad^R(@9m5OqtL*!i#U0NC}KC^b5Mct{QhSs9KcYE~$2CQ-I8ImI=Ayi6^ z6Iwjcc1j_A%j8N=4w}l*GhIw6e@z%frGdl%m5d`u>;rBX>3J_}Mva4WQMh@wCsXXj zrO<$C#&D^3BbDRnm~`h{10uN>*{jbaQoZ49dE8r?;0Km${ya-vk$Heb^fGRAFXKL0 zNl0O4o{}F^g7SCvcsPEJzm_E70w7=Oj@{i&n>oDSj9u{$V>c)E1r@Ag!|iATY@Ur5 z9Nvdy-^Y>2@+$4o&u%tyavT{tda!(uP)x2|j|A#pWv&LFXwhhN+PtbB&}MtP8SCoB z^V`SkosD~>IUlh3j;^vz`kEB=V$|kW#0DL?7>WIwA#_v%5t-<@85h=?vAeRK+bRR8 za4}S@cZJ>dQ =I2GViD@bq^1QTL0Xaq7yvn70K?@KzgcIf8S>URwb5ezA@C5gOeS9 z%9MFx!7VFS)$e_EzokR6^?!ug#VKMR3ije~#-bio>Z{yDn%0LpUK`qotjmYOoK>A( zkRyVDK&_QHDxzdoxjW)Ed@_YYGNF@3UfFj1_uJs*6-5!)X1JfGQc@Z1dvxXzE&l*% zAX+r3d)HlHa4n25@gpTDb23e=vtJ(l(f*ai%Y!@di)ejDK#f384|=!hXj62W5!P>s zwdfU~d3$5a!w-IS?m%vP2gq$JfwtDKs)~Yo3ZO}+VWNiduS#?a%@MHLh^egX`QP9N zYf%LV++nuLA-|b9sG|U2lwD%V$KOyM94-O?<3$A@m-MeXBMPp%Nr`RUnL>X> ?>46g;P7HzO)kqnY>pVPIq12D$M5@cd<@uJ{&H67KWt7H zu({bSm92l+-2Y`lIA*R8wa(qHIJs26>{^xlT}({OWF0Gc&8RHis!BGI?846pr6+sc>S%KNF&}epf9f^M#1CUBS z1`Ok#d|FJ5M)Qu-=2t`(2l(nYFTdG`MiXe8;Ce?IL=g7K{8xX3C0^=)1HkFO+qmJ~ zzufq{ZT`!R{}nerjes+3qh&QDURC^-+_bQXf(QgG^_68o>Lf>#^_HVP;aVcvkB?O> zBjXh`JJ~k4x_%~d%7taEdo&z4z{|^_b^S*hobnLkcI%YK3UkTm`6k;OkujI{6B&lS z_tuG295s6(Q+s=VC1T-<0J4}=DvYb+`}q+mOk7pm6F)Ft*&E$^OV(>YSbR$w?&hnJ zY8&m=E#N&zRi+*3Y3aL8Pe6YKmm>bUnKM-ZcaG$OL+kpw%QOiw+-`s2T}PNC6nXS0 zxo$0TpCUIy7uTzM6HUer7u+JPQUq{S`riGC=Bh%#>gyAudp&406~l$i9wQuB1F&}@ zt!P9`Y+g#?#Rf=>mBxNti|~HD?Tdi*a;f~q>6N?vjlJKb`J9~&;eH^$uXZCMjZ<_B zSuSYzmMWdi&uz`!$1Y|ycPov!nm<~lz@O1q{#D8xHUx@9SGFJ-Y%KA4RmB~?2nxTG z3F*QSu#D{_t;Bf@RnzB7(LUG07iO$mtN4!7#LI?fy`Xq2b~Kv&_t@e<(KYYVa^d2? z&O+1?@I(<)+(z;MB1$vAKhI*sQk%hue3w*h8tK`0K)_I;s9i1JRzJ%&L{b!i=v584 z^dB`V#PtauDG&pRgVfg{o&5iWVlX@4@FpxQeZp HB1V@uLC{k>eJ1}4&6*c zWfF^9r(2~tnZ+m8PJ}fF`v{W)s`nckrys#46<5p E+ zmau|rs1f>?_sGcvR$#5jKQ=(487Wh0iI1f6dr5m8rl1dNCaIM}n!#nfsDTOh>9H95 z1MB~)PYwdfaYUcXery7`g*~EV%o1B%SieMG*}Zlr^vR0t7z_WqJZQY2eKd>S#8d6{ zn5-39t*R2+XYhVb$Vbne#%nV+eEL_~W78#Oh?$4!qjupH9`_r k_*o^q^t@ }q=hH9z%?9c7 z7jd4o$n?(+ISG>4P0CHlCnqxVR_UV5M)FRMK;;eo3ZaI@0ENa~ec`I$6VCLRZY>I6 z({K+pH-%81+|dK|ll+6USe@Rwhm<0F{S%cF*c?7Rv(F;)ueL|HPdgylq}L6IUOb~@ zC+Eg5N@l`@*P|mvm!@!+su2nAZTD=YE2HI>AH|u&X@s>_KR&;c(CS7dM48^v$+s9M zEVn>;(?X|IIwl=LaKGdN>H>$D6MEnlOpS>Q(S|8nL;Yzg?koSKiA4_EpnmyWHcY@zkY_q@~0LC$Xu|CPzNzqE(2%Folw05MroRUYUX@r$28C;CVGM(UY z7FEzUKTfsBy{CN;9%x1|NN!+Hv{j t2Y;COG6{#*Jn`(!X2K8jD07@4F zGyJikJcsN_1{u#C5YF&~a5)e6C>{CtM2Mb3vXAKRHID?zxG9ard4*uPnZq@{M 7UPorK@L&z3 zkiocwz!yQv)3qg}2Bkg0O#=oG`L*+*11Tu{wCy4XP1JrAcJ8LGzUY)X=_@IwecE|E z&F_}C`2s>1F4Ofr-s*9GDF&Zi@h3?ISg~;b{KolAQQAY%HCCzTM`Eh2;q*ugwV#bZ zj+y~iv#6%4P5nwP6vWYgZ;222ejX&d5->o+Y?Xgr2Y(g)^?++FtfwGGM5LOxcqf1e z(`K4MrN;s~rE71JQK@hbj{BXl!lFNXOMbd-0%nISCP%u>+i4+d-2TcwRjC0da8})Z zS%^mC5Jb1>325-lQxQjY&ypwicxNv xc!sSp{={KF;%-)U;thiCV$#$W4BS_Oy+T_150A^~J6~aMJx;5as;ejG z96vei>m8isAqhOv<7 pBeqlW$H zsWZ8;&!@v)3OYpZ2D({8v^N5tLeiX)p5M+OVNAu*Y_!b<#Vu7(A$*%8JXv1vuydz} z2a+&t;ohsbcaL&Vm&LH&dN+gds< b}KKf|IMPsQcJ2C~g=RJM+6jH8mAky_Cl zND-XjSarFsQ9!2|vCy)gaQ)x$2}_*QkN5ht>4~UsP`3-Gh`3jycsI6qp=+iRUC-8u zT7JD?-*lGt+5Kw+7o82aXW4CBkpkWyHcT?c;`l^4SBn*L!HbIpiIN_=Q94dkgsk~c z#*t>x<`7*ai`OJu1$+DbTtP=K87fY?`8)g`ubaSzH=bttfN)UCvx6|eBYJ6QG>x7U z<@Kaw#<9pm8WG*Z&uPP@Eq=rzZk4TTokmsGx~BnHr_FZ|(9fi2PNS8rw<3l5ho~#M z$H(|5#m8drBwVbp5&1n&*SFegX@PUREKAPMOcqp- zmEAV8CRwwHuW}95Vh$ZYUVu18?$Pk|`!UTdWg91$23=*sUQS)IaerymO;&7L#}hy3 zdz>B0w#oIn-;^3=>OI$JwXOV`Bze&ZHsssFRx8z?50x8`Qg9u>?M1KGOu}gpVS5U( ztovER91NUX{{Bob<2lGNf^@mWE6|9lK|||;LmotMq;y$m9v7~#qPWX;RV-c=O=h(u zB%OM0%M~}s4P1hp`-WRp RT>+oXiSMq~V$QN$idpk94Cu9(H3__Re}#KJo2f^dxf)F))$_NnNF2 zaN%oFWb!CBSJ#Gt(wbfDPQ*o_4?H5`sI2k*reC?+3L3lHk1w6KIq}T4WC5fFkgn-5 zWEM(!P vcX>*1Xz=(c+|PxDs}wo?18?nL98btst!!Cd{0 zCV$M3yX;=Cj#BSW5@zK~dBk5#KC8*Y;2`T62gU~Lz{L)@n=4-Ck@~Gl=JIzI^fm59 ztk?+wO^Hc(4ux)gde75q8~o&rRyM7z$xX#^D?=!tYWezG=llPgy#nat^jf|?zbj5G zIp8j^Q7t8=y38%LMDETMa+euMdXm{bCXH4?pbF+0-Lu0~84p$qBs$RO0>M;YAKyJ+ zZS)8h!5X0ACSx0Uoy&<8|C+8hx%5r6rv+VDvgI;PyuCXPD_4Dh(}QT}p0523t{t$6 z@R!)~b<3$#b!9X2M}$Lqr NJa1(w $wNoixv39WOL zSSk3omg_K3k<9Qua%gxaCYzLiEvQxR8@>TW(z&-2T&Gnjj7()sO0C%a(2ZUfBu!=o z*m%{+b}8~&Kmck!m51+lg5w@Pz+5k{6g;T?y{D3^Ht3@1*%$LkpKxp-ij6KRmzOzE zeQES~K;Y`Y((Vn_N zRrPODi?h-7O(3<1C>%Pc<-!{Hg6mE`+`8 y*7)VVy40L_LBG#s$_~h6(TW~FD!r^Pp zLMTu0Ze!zh;nNYTvCkZ3f0fQYy8u~7MOopp0KVUI4W3&o%8sBk=q |Y( z?34&_LVC2+pkB8s0+KiG7_}dl1zx0s ;%D zgHVz)w&ON1LDZ~>U>5w8(xZu3sT9HgSlQxej0$Cv@EaT1TMN*Bkm+VWAB|M*YFw@|2pmagmdJS$$VYthUjtQu;SbXPRl{HBOr|O z{KlTTzZwiVH(i^p-u&HAAk|Y<`oRaJdJNIm0r0{hSj`yh`!PEp;WPGg5iY_veMf%G zXK)?*M+isJ^wph2BD!~{uXdSE;n<=xJBZSX=S6;2=rlTw%t}QcVuk7-9$=o_BIo&d zB>l4AkHa=g7@3G-@-bdx@sp)(=?^qimx=KMjG7Ke`vZOC@wAI-dQzRUQ4xlR=XBT> z-8lbQU=ttrMP!KkETk^?*k19nJ_uLgtZogTbFw@dS1I0@?)eCf3SQjQhP%hvxG{jq zPO`xmjI}xK+`eQcaV0~dYeGZai-uX|5j?>|moC~xYN0&05@0uQWDEqfFh1A64q~Z# z0MIj;sI@?eEuQx!;WH!)ND;)SR^oMI*2D4Ot9WyU$l=}^{XG5bFn}Sov-w%st@b^7 zG|YEk#v576u|kS39i0LNs-8c?8u%u?VG7IfxI5l!A~tC)eH-I?uu;Z0slqlAVorpt z Z0(O?i5Jq|Lz{ntnS9*`38&q|l@Une{sk|+ zsqvIX{m6Tq^^q3}HDa>UTkGtYf9p+Ku>;LxkA15;peVrgoY1L{6OE>etMdXhO5HMJ zI{PJL59e9bcX$-J-|EvdiG#DT$)uF~Gmt3vLXp}-+-I{-Bb~X4u8*RvFlcnBlBXo; zaSxB~F}_fSE88=Bv~eq?HGjBJ0F;pR{Na$sf;b`CsfWqQ23Om`;z>z-(Si}7h2V}s zHCPfUnGVTam8{JaCqa6w6=y_NTHz+Wte6J3 OrQi7RNT=~(W4zgT=*)}u#?@jfoDY>e`^iyvY@Dvk0mhrz zl58zK?en7ux+^o R$p3jj@JmW{guQ=y>UU`>sv_AeoTZJ^#A1Y%9AiMOOz9HriwHh(l-@V(a !XMeRd2oXHcBB%^34J5{<9Y%ZQC9f#zU;cTz`KvAfxgSxq^5|92ms ziEq4uYT=a!$nW`Vbs-Yqua@`BFNYC1Xn_( -hHWw*DO-Q0&7I6)bUegr`2q3 m1J2SbBRK7i&5eX9C}KIo>>} zYqPYQZ6fzMj G;Wu<@SLI;< r z07twnlyYM@kcuYWa#ET3bz?QQIKSzg=?{irC2jH@=Agi2N2YHp>81YdMI0ibg^F)C ziZ~j}DQ%~8eL?!60^7VRpTI3fvX|6oG`aRoeZbk7!5S6Ks!4V`pKuG-U_(wGkNe)5 zJ~C(@(N8?@C;Dmo8a`k>3ekPL!EQHTlG w{*r?uR0 z8jWV))o#$TSy)rQ{LTl_5|q@i*O5=GckZUQHaOgUbJ@z8u(>~RM298kA|S;|DJJ{8 zCW=A^6cOS7u_o?@IkaRf-UHK{YA4#*RQL=xEVm&r!|^sMALp^VRoGZ973n2BHG@Xe zX_uXo`3NhJDK=sOkpH0SQ<5QX2SPtd-&Xd7M4>w(%- gdl*q+# zoxC4-JzI@leKk+4baZOtLFh*dPfm*o1=Hr~$%j6|l9Q8Y)l)ogRRR&<5I0)b9Wh*d zMGM2ae|P7Ufg8IFqw$H(CV3UgnBjC ly`0rld5~gmYGa8*Ekq+`&Af7u5(&e03Dce#4MQpl!)ZzCD&v9hr z19tHkhY0d?iv*Ag=gW( )LiHwOMUYjV(7QzX`GEoP2tvreZ z;WNKCl;p(?k^&5YxNSJ8<;D=K5?G##VT+49WZJJ3i*<~b7-v>gj1;U2pKm^D_Q!!3 zPSNLU7DSNS*9{<`t3SS!&U&9u^rDCL3!i^gOyV8TADd{{Ru;^a{pRf;gCl-$A{R+V z6lHXKEI{ 757L!n_e6=u-#+4)4jH{Je9e^o%29DOqFBkABb0EriuNLXy+)nU>0x@{FgGn9Xw z0eIrbiv1OU3mHd86|OQsm5E_&SEvbt24Fy(;9kcgyFi%`vd8pEZ+y-tg&7ZTF9$#C z3&-Ie|F%6ZXx0BI_39wI)brF4dYPM@!ZgWD%ii5i4cmPF!q-oS^(aU{9>ifg$yqc1 zky)Pj@L)(KmPW!qYFe`(+HyZXMq+rMZp8k(54z)SD@k`(G;?yEZT;bBUt`qee(H4; z5wj-m2CmS7>V)%{eo&sUQ4`uJKmqdW7&0mKVv&Auc=&laH8W^c9-NyRR@jvswRQ41 z^YNZ`XoevSIIv_8duRh7j_VW$qd5Ro@(Ry$DU5tU*I}==th_rP$KF3Y_(8*2RDYx+ zmRr$1OVW7K>f>By)*GR~UO%iqmaoOW;wg6BwXq%diT*58$h?mto7)!yCqm~vO*9(K z@hq%S@Nih;vF@CL;aLQQ(+{!7RWFQ9$u9GLf)119j`saYtqUq*^xk|&SLUL2U!@s% zA{kpyIVm41bo6qi=28Mqx&a-Gc&w1LBOw8Tp;#X;;lJxci?}#l{W>i-;cuv}^DuQu zw)qf%tJw-|B;Y#&i&!I_=zPLyE2N3K2)MBeVc#}{&6Axq z#n|x>Zu`AFu?t}$GeXL#7srj)(eUlsZhfuwfDrgoW0g9?$x5q=I}&LaG?Tt77yJFO z@9&cEOO5X4^53&s8_evpzWja$NTH75LD^x@{?ia|htbAC$YVtR)VZREujes*);aH@ zi@B(yplW7aaI9q5JjKoI)_c1lFDGoWTCF!I>>vi3@PmGtz=!l!MBaf`q0>ZktYg$- zvVyT@1e1U#N~u(w)CP`1j6QrCOK$^8vxfmYCQ*z!EwJ}e5I(NyuX((GOjbhfey~c@ zc(KHOx9tG1c*Nc`q<=!6HYXnrmyk}0IvcEfkuUXtfD6lQB^kPyU|m=u6>SeYpW0ha zwC@UHZ&)qdunNwH8>6cXu4{=!8w+vbc%RjOp2e$O^#o6rNsu6m1#srQ57MdmHV*OZ zWt+ku#J;DeK_A>X#nR49*bX&Rs&RXkDw S4LhxFfDq>b2 E@@wfUT$Otbuv;k7BK0WIkso9`Y!Q3 zNqj>SS+En2*lKc)gN!nETisr(02(#m(S|pf5VlpcYO+uZUNaJasN!baGInE_VwvIQ z1AOH;;>KK!?5=1ngSBDRfG$h>((k^Q0%Mby)Sh!+Z#cAMZFruruNTm?8vcNiEdAX2 zjrzu^)k99q09r*bYigKZNlokb{>(W!O0+?jOQ3@5@`*MVz&R%C?hGox#}3B?=IW{W zfG+0;sK2=kz}!XxRks`goD`@>JE)i$-3Z~CdDDzrzqF*)ut#LBm5inauh>u})34h{ z;brDHk>LZBYjWhC1kmhr-x!4S3yo1?l&xhYcHzNJB+NM!DA`5^2j}m5g>a3A2eH-W zd|nAF(8vt4JjyTMcA!Y*7C}M-M-6Y|o_l?%>Koax+o~9Iv2b#Ho~$KFav3^+BqK&^ z!phj%$Ir5>7$<4eVc4e q KUhrE(2=#3i6Z4voI{y?3^X-_v9ZH#Slqj|=883=--v<$sQ>>RggGobfBLge6v zNyKV>(b6KxLCZIOsp+|WG8gCN*;pf6qHSe-nfrW8U|Lo8h|~%W-&XlhwL) j;i|HaipD;!vT~sENnQlGS`Pd%F2{yj|1sb!UL$i z$Atp=cuEk!Ya5En4rse#D+^#;P2mh;9n@Dlm~LyCu}QDFI5~NtyQ^bGsr!>6YXyCz z>5%r83X|{bY(Wewa`4%MwV|c-Fkwf##C*bMc;wuQPJJ}`Kn--p&1xV`>Rw==qr;ov zjLUsBBwb6<3~M;@SY`hP%dRGstbjn$&%T?JLJSn)ubKBb7*P64v9BV*TQ{jnS8U^j z>2B7Du1(2%3h1 YPVC`TBOvV>f!>HU61o-s z^&H`SzQy5v;o5Eu_=1SbqpALip;Pe#VnlZ=J9OJ7GxZV9?n_WHs`j<#xVz>Cexp^V z HpjCH>JX-(oW zH3cl7IpYl+H>)_teZqrqid0MyoX{@X_g_7Cy~Zq_ao^yRu-ZH=-Fwg;TUqhp**$Wv z7q%!U_mXek1%OTN=Zb9mvNUis uQh1dt+HA;{*bXGSU@xdPeA!1s#wPV2J%kaxu7O%%*9hb+m>?%Ts zQRh@LRBjm;yJ0XV1H1=MK7&`|c LzFD??#cx!vte3j dg-a( yTVN#k^^wgN zr~Ane CQg@5Jix`X0Z#AQupU*Bzs<{LRT7|p5 z1Papy8>TU X8G7zY@q|+fx)u+eON?DFP+!0C?_Pz}rw?G$ zCw*4Y2FWIgW~PR 9o=gruv z2-9};Lg==2%CNz=o77@!%lf7x1k{ojJf0Kytv }|2Hx!oY*!NR}F287t zq^kbX*8H&U>TDxf7d+*4U`V|QLIXl|;nT%P4j{xlSLdGfgz#OREFi{? ;z21@JFPM*7YL2 z2;<3hsu0~4tiAM5wmJPKVdgB?JmDbl^W#w%!3V-l9ku!wg) @?$9+TJTGIxu?c^`xXG_u;D~9tSaprO{gL` z5YIWVouQ9+Xc)f5chFv^%n?1->g@oWcv#ivse}3s7zo7bIm*3yuw-vciIFMv?(AS~ zLEZd|Q1>B(xi=E^o&1H ~Mn~ zveHL%d7XeOHTD)bX|<>UI0%6%XlK)GN!_8`8RVuCB4?j#u>@2?mSYmqnSlH;;QiIN z9k!cX$E@L~aA?Jy9 c@QQ$s2%SvCsMihY (sv zJrP}Vs=MfEXKn!tmdGdd3c-y5aeXowKNGidvy1}0%>@sBNR+<%j+zbTPyNtG*yJNh zfS%?p9Pu*NJqo+gJ!d~f6TEqNJgC4Pi2Dh<%n3Q8uPm^|Iq);}>hWDz``#F1XOZnq z$)zSbEj9#9TdU6$`jrznItZR*Zh<=;JzA*UD2%L{aqmXxN7^Tkt9sy~vGR9*altMR zx fsS`a@{_cEbuLbUM1`(2%Zn1gMwb8HDj5sef^6A7r4s+ z=?`Z*C%DOte9N4dOH{!hXG=}HlWP1pdww8;fXG$*0QY$&@s`zB{ZIwg%kyJs6aP6v z%ZhrGMpfk g4 z&p=N9k786V>vQcIEODUlcQJ6({tYN0B$raX`F86|*YxP 08-dVi2HfSChGFK5Gy(W9%9#s*aZCDIB4GL>qOx zk+xjiyBl Gd!WQxv_bE`d^erMz!6KHZ2~9Q&gfH7!5T z4IBbTuo1~ x}&mRYUG?a@e)tcAhCK6ay1 6Gdz|OoW4!Np#`BExmw&n0dtGbIHRt#Hne&=-h;sM=A{@o# z(@5C5;M{ETj}V4WJ^nKek@KhFKJAR}DL>6{dx&QU2moi{K06(-5#Tol?I|Xv2_h7f z!UH*2q~!0H3_)kU_I7yoS71XlTF5PwdjT`!9DJ#o*P7xO8%Ovvef{G!K;6GV9t94$ zXr!f3IFy-`mp`etzw`$4%dW1X D)zf;Z6iTZt;}~`CuV&z#lXanYQur| zgi(=E#uRptqqDDEXtmz?RXBR%?sFoBcMo_z$dX)(PDxC8`>7l2QasQ+rG83aiqDYG zSd7?F)g^FnhK)$ Jg<+rR`yNfZt9stQ zI^Vl$2;rN+3-M}19As?rb{tos8HzU;cuHQK>64{Mp{hyF<6nA)-0Y3~(f8h{W3w1- z#d~XQ^=Q0xM!)i z@9(4I^bZnd^U9!xa) ezfzBPXtvuW!22U)(5s= z@GGo|w0b9_h$VLg8%Pr1vk|te2~>FU9#S47dxHCe;PWQcP%iptX_fOIoD;%K!rD{D zaAEV0xEJiv1FkRg>JYsB8bN6zCiFnU2POu64M&;$?~lPRn*WSwOiu%!w-gEeo)rs4 z&Urf@n1<-D?
)7ElTJ!8AI!Pqi;)CI6S>(#n ^H~;jwf^_Az5lSh`%YciB!bGN$8Gd{?fH zlqL97NG~aWlRfk09n6ixMlfP>>JDb>3<~3mlb+%V6h`L+UViXw(j%3Ayu_XC^y*jn z@p9%GCG_bAX#c)ou~cbPe&26+@bI**+})M3@;G(XGwJ){aDOT4O42vFxGyqYajc?z zO(84V5d2?KH7c{`Y)`AM+SsGkU$8M;g2m{zb1uTfDJ_goKS7Zua5C_Fp){-VE8N-d z_E|wSv`3aH{(XI8KOWy8kdl2yd;KO%c5OC>Ip2rT`2Zb m7F{u3rdC%r$nQXF}-40e;|SxwPG2U0qwl+ohXbnd&{uRDJ3Cg;Z>^l zPxC?j`K0G}wo2*`FF$oFa@C4Uy@yv?^7Be%^Lz2(s+qL-%MaddU<3uo!1CWb>v(1t znHZ%YG(Jqsz{IxIQT-4s<{Prx%Jfgb){R9FVc{sKHew<07?>CyJWQ3JRT&9)t_|gY zp1A9X1Iz?9#FC8ugI^Ixp8oITJngApZb4RWO;C8PhFJAVO)#f`g*;R*G(H-yUihTo zV3b!lFS<3+wACDe$9E7r=&wgCR)H>KA_dD|&3iqgp}l~ 22W2TCNzZ$Dl|L43_xjqT%4mr#qE7uByAO7ggnzm&bF}uH3Yms;$r#>*Qkc z6`|rD@ARrPEoXtgY5t}Fj&22 `Xh%x;r(Z(Imt{OzQVmVhqJ9z@7^!EXyowgtjxo6E{|92PhDG z2T5Q`%2(gCJRCEH*#oI_;9CR@I-Tq3YHq$ts<3aLQQCG%B+$0$IE@<&1cs|$Kc^OP zzN3}*xM@9ytk@XMrOc?j4W#xi>}dj4Lm>s)MeK>RwB21@tP&Dw)sa9r6J}r6et|r# zYTQ!tx|Tf3XTQA0bw7=)J!jU`)C{eq6Nz72tQ_VWd6o|%U+wRPGmFjf3eC?il*db- zV;g#391K-*j=QjCYaeQ^mzX&|VGQN&eA6c^DUo R~@F&RBz|2v8httoHp^ev}wXto3IGd%U?%aqZd<;2}_}|B6-O zN(bg0@6D1y{M X~jSR&u`XsZM@#~bL{iRi^I$yLK@PuSD+fz%vMaWH#-I5pG9*3F2DQX%Y!9e z4vuglV6LrA)d?PKPE<|q+P;86CtUM@G~lDbF(GHlh3{~#VxHyTW;y(|SeMPfd*Q=s z^}Z*;*$pSZXxxCIm;W$=+OdN%_y c0d|+v>FY?+UL3ZamiJ%=>Wmm@H6Oq(L$<)RboscE90#w|jp`L-m0{B0hn1 z5HY<9!IRh+Sty)Wd_iMmZmYBGN_0_Eo4aQ iQtuC;Ht$Ry$!XLx6X`#QMk27Nf<6 zsHj^FXSTvi@fv7pO96Wb*I(~jxtC+NYL@AQ!INKlE-eSXJKbTg@u8BU;?PQvUWFC& z{-aLzJH8X$l$)6N6hC}W(Jep*F_bQYeF_Y*BIh4@+C|hwdKF>Q@CCwCU@#B$QiHh) zw}M{u`%wGyH?*$;=`tIiyZ-TT%fX%|(`CzQibHQYC;=a&x?dzB@9=UR2Gg;6Rm;xF z9V`BhXTc?9r-Md%UkWOz$A6{(^PBH5#XA>v5&RFX}&!Mh1f9k*KE(A3oC#| z8nfZCBnYze_%7A97?L6Dv8RR7V7-dGfp)+0-W-7|+JTCF<3o_&o|5+~H=r7#<74eQ zUGko<6_(T<7JdQu-}YXTBNuXUr2Mh^zrW`j9>*czgR?8a-S+$CEWf|wSp)4{5+z %D+y*We&raU0lDI$1LCIjMs)l-TeuBf! zIVR)ks?S<-qHShiX^EL6ZsXl27r4#;mE_jLynfZGIv1A9meA3UvzQ5Aj5shhbG5yf zUM60~9?zS3aP?`@UZ2OtY3?)Ak?@J$bwk}+X9aiX>QDslr3Uh+OUzV1BasZDVLz=V zqJ^nHd6MVlY24`LIoo;p`|2{P7r5 aZ` zY4zF4YZWp#RP!D=MY<4NG+drq3s5im;d9}jdVBm%H1<+^9F3}AYg?Rzr(I=hD2D2< zn0_&|M!$$Rs>0j=Cr{g?Uc(4F#`N3%3~irQTUAMM7QCOE-YRRdMpx`mgx)EMA}u9g zU?MpnU@b(KJ}y0`gkSn`gc@(0jKaro19H1N;xT&%Kbx!0liZvOtxEfHb$K?ty))}{ z>pneqPN%U|rgGif*^+NGFzfTUztwjXW+mI!vY9;Vk$pL >8EB zoizGlVK-Hq&~SC>o{f4YPBCPXw%1(aQNLDDIMkfq)VxzH+WnSOqp=t}N*b@XW!YuQ zi86vlP-T;Pf6P2h*VvCE*!=auXK1If6l%cK_0;7t^|gN#)2@^6|EzdEW!z3kf`t)< z6_ec7MsE4*&21~q5QBy12?YY=*YdR;=&$D^rb5;PEL0QNgCmVhj=OgPC@;<6?Q%lI z#Zi6!a{e7+LF5Dn@X@T<*1E1&8;cV4_@wQkbV8KkZg^mSUOi1?UND#s*V!5C +Uu*KFGI#x(@#*_FZ4su^ 31+J4 R#M8Xg~ z;vN}d?N@mQSNqg;`x8)?<%|M>Ok76%GA=c>sIohOjfau^2|awM1CTl)O?RS<=5MJc z =Fu2!tAM_wS}28&H1-df L~VUTt~jAU7OCX}kEQ?N1cgO*|2aT@~I*Y#{s-Ta6Z{jvL;BmuezzGY=Mle@BG1 z@p`*&$(eXkMQBa0I-Nv;1C?)owkv|kSdahxBR%3n>ck%B>|@!UWIMHO|0Znikb>l} zusaN8b+H0nnYWjg%?qvc$|WN79C1>++MXWlw9{AZE*7$JPEuley_y_QCXhWQMmG!c zOMz2UwO7st9BLGLf8vgP&9%ck%z&ZseDdHh{EL@!mGsarCCu~P-=m51S?Ov}2Ep%G zd?1g)xVk#}Rf8E#x|);@b9Ycx0&{J_P|WLi4!eR3$9OS)M${}vCAD#ReosCInC>BO z@92`Uwi_GJ!)H+smi*+Bw=)WwCbD-E38#a~Y$hswc}pcj?jYExPL!06ZzkK0fkk3( zm)Omt-w{+Leo_xF9T#}flO$jj0lUN$t&VzSGnk{SA=0xg#C@-`F}_{#eBJH$^p{~9 z#O+(_k*!^6E67!oRaF4@l>RfE-LrVg;Zo;R>9t8A iCq4t$_@&sf;*wd*9n{ zD<|bmeO@%W*$%Q%E-s9i+I}yq14;>|1=bzr1cp{z3=-w@GL;a+i@P^vMT0Ywp~z-i z8Ct8J3vCr9C-LnvGanfD@PX7+s2}XozWcFEPE&vcsp^9{HnyhF(MTM+(;f{YxMA>i z;6qo8j@D2z^am%21G7#F8NSg#9WGqGrykPO2@sO&YE}C8Py#{*cA_R#;hL)OFl !As|Mnm!wkW~)dtesn0+ME93z8Z2X^6^FVXadz!9nVVFy>o2*u|S^ECiPp%{|Y7(c os2@!-GJPQ0M)uM9hGIoc{@1a znRGE+ICCR@xt)uP8(BoyMWehXo%3$xR>KYAX4ro6x0(hu^(tTHSGv4)SBVsj-GZ{F z2OE;Ge45QGG3DFjr{VPVqKY00m^f_2e%sA?fhUFYTpyCGuA6|Q0mkkA`qzjJ$hC{5 zR}U7Ex%O_MD4}EsYfO%upkzmma`MW?=f21%qyCMp2#?)PlCD5i!?}J&N@I`Lvf@St zcaJG`=!AGJ2eKp^UcrEJGulb(GD)H?e%t`<2aH0itCZX_VB)_=cpmDmcdxL6;)@#O z9S&CQ1o?r#jR6|Hws7{l(XI%;-@x|44Oe9<#M`#jxB9kf`hs$%_B(#abzrf&368`f zr-Ql2(I;xE*yOsnahF$EGH*GHtU1@}?P?KZI5$ 5)pu ?=gLvDG3au%PVv_? a7V~N;CV%QqJYb_b~ zi|)`-%x6Armg^%$`%&KKGO2s}g}`K0OO-pbKHM1Ne>E%VwB92)qgnR@w2Y1jKsSi2 zs+yoAPE|dRccdO)mSTdsa7H_x{ C%7SQ=7 zX81L|)_!+?Y=W}z>H11E0g?CzkoW!msufuVHUI^V0)_>X`bZ2b5$^<)_xa{^Sm~qI zUGzBzcC1( TY G)^E`QlaPexwl<-t zUx3uzs3iO-t IxaN9g={I1RBi7 sSdbr#O5R zpx4ghbj;?eS#DE<7OG!kloQ75{f(yl#hB^1_m$01!NCjtZ}Hc3K8@sdW_D>=J&ua| zouQaeIL1!NNoKd&^R-eVR|U%d jCC%*wbxa)DW5CUFA$8j-@10c2D(^SZ@8sMcsK0w7%$QK!p%Qegf?Cy`czqK zSZ)!sE9M_P+lrsR8^Sn^y8^B)f(=o!l;G};dv*1*Yw5vs)E*OY4u8&-5!g@Pf77KG zB~xfjRMO 6934a|*bHj!MpRHn+Ga;dMUg#fI+V?$=R=Hb4#o znhB7aza>xxeuc5XWa;>C1ZAQ5ed0taw0-}jLhHgVi6e2(j>h$5DG|G}mYfaliDM)g zN7;<8QeQ|=!c3ZC;tT6-F_wn+dRbape!%gj<299^{Y(R0LW=}K&wjM(sV3i3R@Rx@ zYw$c%*Vfi%m;q$*kbLy&U~Zu`Fh=Z#rUd=uuy!cr=q{Qh!zX491Fo09^0u6) +c&hmTILY?*&Xu zMFdJOxAktOyto+unPi`kJ%Te=A?-+Z)b8hphIvYT?`2+rZmlERPLhBqW)NBX6FQ!O z(&z18rTauvgIwCyW*QsyIAqO+j`5+opD=NZ{U(r183H2kf}q5P?$J~E0tTFkXV68y zLmg?$4vPPpvD<5ksgO<-J#_N5`z@+;z2+#kQ!ZY>cBVH7QdVo|QFtMVaD1a_QZ483 znED+_oaH$Z1_;hI&BY^U&)d}VAN?Rdgyj?MQ%}NDUx{5ZQD(oS=oFP(wYapT21L){ zL|MAcrn~-R+>Tu$C$dWQ(>N`#Aoi4M`Wx_BU#n}lRZaO$>mydn87V0@4#w6S7m*cH z_7n Vmzx#B#~&rVSXe|eo`W8Vf(~*W11TCoTPCCWcsW6Z`4|QQXQAN&EhSVEqxKL= zC9@~p6I%!;igC&>DK|8V8p-rie o9Dw)XR`W-JUZHj7|8nTy0>vF!kRK@>`!7(Czf+ z^%Du;$$qr_Sx!?Sx {Y ze#?P?!wEZy2~{lvgGT^RF5zzR3~(XEL)bpA%fR468er13sL~@vDG$9Ld5-Drm%j-+ z(tI4WcyHAdHCkLVQ#%f)MVs^VEyWd2B%CQUYi*2hHH7TS$Vaz$LTDF XnA`qRGFl9|I zZcd--vLG*@1-?2nrUnM_39UQ)X^($2Phxd(;j>Qj@>nk=~$&t 4CM{KqrUND__Z$A*IPed z^rk3) #mbiXKo5ijZno1Na1k8V&=8MQ jt?sV**j$;#iYOkXhA~Q=p0_KNQUrz zdD9Kfb4s@X&l99Ez4%X!=}IWaK{T+E8-py6+l#Z>It;0`|7+H;4HSvRJk{76fYoSx zuJ>y68Zwv6fq#FWio)2t&&vhA*=sI`wx_t0@cxlF4WvO1{Q$xEE&@#GDX*VQK$-c! zzQE8A_?uH+1?`mm{RjESP=3E--DIe74fd~l)lh(3Sq)d;fhy <7u2{<4l0YHQ |&2)8HB5j&*&*z_+B~RFPbGE`ThB@*ytig^|G+wv`3zE7!r-1=mgilE)f*2&j&x zMq)9Y|G&T2|7_9!gV+|kpC!2~0zT>uk7wt&(oUKqU)=&1&9?pV%N%4(=DW~A45KhE zv6&uw`oLOf^DG;XxDGBWGFCyd_}_4yzhd%*IvyB!i|BYM!ZeK%kYz4`@( zDKYd%X)iHWL=8A@BYSTX+)4w|o(=E 2`X8i0}2kw=CM=ni#AhwpEpm`6<9yYce5 zaJ33?fll@_by{;|omks;@C}%|iPy-jK#asn?VS>`ovk N)v12!M}F>fdxjnocB`Ual4yt5BX=0>*l zZOM>g`xl9EUu|~7o!P}0pw)D3a)*^A{!;Y}b0+_oj$UW{VAz`WgE<)WR-UGKaioW` z0h(Gfh6{BDqZwsZe9&Vzy*DE>@f1CH1jO+%NXW1Io!9mFQ(VhuOcWJ^AedGSLAa5S zWXLjUCMpe{d_5{oDdSsTT|o9YCXvMf4lFN0+?DxN@@Yn@m1+odk07?G171Ekz%M#? zNZ~E^THuNwo%0Zr5m17Xqbq>a{{T#M!VyqY6qnP|46dx5lO=gVxpUf 6PR84 z=V?Eq_uXV6kg>hL&33Y~`Ul0RZQAQXl@?9BPWThBVL bGE;dk56+bbR#RnpGI)pZW@+9XHD$yV{D#T-l zD?UE{$EdNl^1`=>TejwaT3{C$?P*DIKitUoS|U4J7$#qz2HL(nJ|$NcU>OFW#^@(w z1G}{twk5{p#%`<3dY_*9auRYkp4$VyLiu|=8H);2rTf-oO}WFe%DR%Rmeovy7_H}i zzvGCmdE1@kHbP{YY{)IuaY`;RP!O1=p1{sLRKDu0S6@vx+_@>qDRM9fARDm1^e(*5 zcjS^lhCH07=1(NF2m`!N+R6uiq71K#*ah$4DP}9@P;R64<-7=MgMBiLXM4z_I`@*E z92I9LhL88>wNOEDO2=^jqMAsfw?P|kp|$7PA>ky)??vDMWy{ffme;==s&{p$-T6i{ zoH%07r%wgMHN_~2%lk$8;APH-05%!~9-O3Mtz&31_lPnbSC8*HFqt1WUjNpW7&*%P z%Kaik48HwT4@fYaxR6^U3>q6Ue|Z9SDkNR;qazp_GBB)ToLb&54e}%TJ5jBTTjV%w zoNQS&jiL|R9$*gDw^85+yv)wmNV;vKi8HQRbO}_$eZW@qA8t;p0*HhKL9utbUP2?t zE;}DSx+8SisP67^fhG0R3Od+7_ezZ&KzthJdvBJAj8FR_f7L0WKGC3CD*%if;49E7 zq%Z_sTE4<3qo+&ViG!ed!2(pyYi@yf bLaht`VOFUkx5diUJKOu2g< ziP=#6bOZu%UjCh(){WspN&sK6-s}d3hXU9#Wwq0pa>T+w#v4+Bg;R2CUqqcT ^4=zU zCgU=+Ruy-$wjghZ+zHe_7@Q(Tz;^w5wo>9ij2xW;u-bJ#^v=fFHC|{dr;SzGB-eTX z!-&lLeZ*V%S_?R0B_lqw+^wJ?6T8B8N?1?(z{DMJK z%613YWk$;;^MZ~s2rEpJG>77KxYBT8JnlEOP8T=y%!`Pdt^IF|+Yo9M8&KbUu@p8= zQC=iB=A{34Dk%8z@Y(@up&OA_v7Sh@+!1oEE*mW_P7n5hA2moUasFWhYi>1CS63G` zu{T914$eYlbhiSuU1 $W;NPXyBUhWS>bk=xcrl@q!0!zfxVML$3>v7N%@D zA!D*sE<;v%R){m@$DC$En&GqzLz+ur+pxO~aQ=|VJ6y%`eCGUWnbM2Y^c-5n=^x~W ztq#}<9~NWE*|XId(G)z%w|aF?`YeCAF)uF!m{7_DI 1*KtzOOcGtA2xy-fBM zY&o87)v&l8b{Dp6m |7 puS8XFsvAm-i!yf($X=1Z$Lmc~Ky@ zq5Jg5J_tSLFf2-dqXSBW?k{dukuqRgiJALT*R09L&(fvK@xDQ(Uh%V+0>g9VgDSVM zNMet(-^#^rSLUI+7C7iyPP`xGz?^22)MjWC7uS>DMxWnVA`0(ss8%lyppm^h fZ42 zNARxVWI3B!BdR}y2N-bm 3@$vA6V&vii zbAg2%U-woEPE{qL sqK~2pAomb-D)+H$beJuoyZGYgut I^ J5qtU=7=W^r+gRK*kG#ct83>u$64l_F`hAt z?N4k3(-I^n*OfGNVYaq W10P2N2ma=ZX@8x`8 zd>3zRwUwaACfK*-PWP9b=_rL0l`)$*0L;l4+uGF}NzWY>c)F4i3`F%>D^H@%ZV}Jz zbK6UDV`uCbccU9DkKTQ#e6rYohu(8P=9IiY-1*!f7r9o(u1n-@3lV}t8G)kg0dl`( zl>kSZdv(4nK@y%18f;5^`=vxrLz)ymwi>^Hx02+7yYYR!2bZl3xci<7q_99B$Wxp$ z$KLDXHni5GY~>?v9WK+a;z|FYAnJc2Jhmx>B3{u(vdj%~w5h5@ff*O6CBPft29)Xj z+j?Tc-try7jP|Jj9nR{z)EVHzw+nmEl7OFyHNn1&v|rl3i=qX*Tdi{ZtOtduT36?p zJy0kiV?Ds$=ta0yI# v@EP2k1Toz_k+GXcQWE#_%>64W zHq2YMuayZIzx#Ffmw+ArmcTy>2*PAhL@_qdzy)uC;R37S#?co~X 0SP)@t7q_+N zy&QKtSqg0uT}w4}vjns+WlNCSrQ#Z3L-H+-Ug+&kSpPFNBtKjH0Szvxkr0$N-4KK) z(aON-gjh9}n=ed{_Q0PjVGvzDYLSPP>d%KK?&yxsKX=U(^Vx*LZurQqZu6d2aNLyMvCb9ni!|z-H;0_73{ZblH~@&F zpcadm?h&}@5yD5i++&A{!4jX9-@ik~W6y5Rs=U>^AMF~wF3|8Nu-1FR^LERrRO$!O z&mIl{hMW4GblYGqoYn`v3Rq(;ee=WLGik?Bi3-T kkX+DzVn7UK z0P0~0ZGx*=OI}gMH>i0kCOBsRyUEY+@?&@z-Ac*5;86WS_-< Cz)TZKEDuXCsvRoU=Z}s%k zaK-;nW^6XfU=)%#O1r}geJeM1P_a}$m@ac}+BYXB= %zxFN8drd-98j0duv>2vF@Vw|c$_4_Zksg@G*lIc8eNdrZ*ouc z_C<#(fOZ1o@=VK~O4($z&!(NRU$+RMSx|aU1oT`RzWGE*(d2?`CXqOrh7*xQ{P`e^{bAiv$`eZaaVUDx} cM9L?%n^Htu9TcyB{ujEnVb#f$qp{8UCt0UF!o`MV6dcONephv`?@7Oics zaU&ClXGlN;h!c7*i>TDI71?O}p9gY2hbzO3XtKN(isMHaOY`AS*zQY{NHg+0&;kgM z-qYaxU13!2?>!(vb6ZJQcps*V5bNJk@=(z7h{TpTCz5)i3f=v(>z=<1&~bR$byi>I z|EX*Mwt#E~KtqG;5UHRsqfs@hKp97(kz0PPl?yw*opQ(E a41$M9l8@fpk(Ojzu*G6u1S(WSei5syzNs&BoRzi8?Cv zE$FK5p$YK*AqdHysPBH1`7i=aH{0%0YCX-PkF6T!(;j=u^F{nKU}Q!0W?Ml^CzMaM zhFW )W1Y8GTNsa&aX=rcG5d@L4Vy_Y1@-A)+mreU6HI-XY0SPc;|`&3S9*J zP?0ttSaP<%s?pH$@y5CLb(xd;deM2O{PTAp#{|5xs006X6EuuD^UsiDk&2j|5k+CV zJW#%^dm9 {WpJmPda#jcv6r zybG^HpgB_jPBR4$WyJYSpsuH<2 z!W;J=n|TB2qllJaB#(Q*Lrj#MoIJn(j>qDr zw=0HX4%j6CR_5C`2`L4|e#I-x`ZguA9;zTcQN`dYfw!%hBG+GPmKddq1Ni&hEjSjz z^{1R3HDQrLzphgY*=Jol+CU0+3L6wSy5hfO#>-#Sk_T6+6^ K;Ar#w>k^ o?nPzktrA$c}|WOyqgf1>lAsRbPK(QFjrE z(SHOtMtXVc@*YO~Averz#tfUNNp|h5P31kdsnzdpphMfNPweOhr+($5h}#6lze95; zc|w*BWSXm{e;xNpri>QN+rTg0A`6;LalV#l%jAZP=QJs1Rq|bX$QFyGV#N*=pXh)^ znP-XDqCqx3ANxVP5R0MJoapt$4Un&l+Rsux@>;zi>}U}nbOYzOn}b*vAz=Ns);RMa zVFk z WxW|IFRc~0NT;xw(o^; 4`U-lSJjS zm(9zz_&XI3aZ1QDl7Ap?sTh}ypXrrP&1btpU2Z %50OzgcJ!`t2iPZAYwIzzeY6S z;>>X;ixRu{A$}O^EPxXxd4dmI6+?IgjE<*yf?Cn!XA^gosGbjHZ+z>z #R0Bh#+vV=Z6l7`(>Zv5*QXA$Y<(oUhT2W^#7kr@>1VvTgF6V2x^p z9%wB*3z0)HVVSLzB?}Jh2u>;+WV0pJ^mZ|!5A1jOgPucjXq%cC^TpYN6nBx6P(RfN zX0*RwP*@x`f#*$PGg-|eU^ktjB5~n(5GY{l`zbli`?BU#%eY|{YvxzY 7I`z@Xn|T7B6>V#UP0FV1d2kQCO(dRpPDv`_9w zwo8IoGz5~SNsm79xmMl9x> FdE8?22J$( WfBNFw0@CJLmf?tmV!$bAvCo9K~Akf+s1C}8P&Q>%pBo06lq z-uC3kDxhQfi&??T(S@T;zijdQNPg?euHhsIYEW9@L9oYsvp@Q`Spe-Q0nc1rL*@ML z!shbhQ_ic6;z5`9@@_rVMFZsFXRModX+cfu3DeGhG&qUBG&oEcY4puZ6(oPsxB16- zxAlo`PF=U`J{5{LtRf%&I5=6#NWfbF=%6+J`#%Ba;R9?ViKsgZ0#fi8Q$*M*Kaczz ziDi9A0ThKmb9vuSAX)*SqA?x~XD6J6cY^4ThEDvq&fpj|(D(&<^p~BH7m@^k8jQMG zF)`0e{xql?Ll?!r_!$74_ jJg*AvxI7`=96UraC}@9i_xzfwOGMpQQ5HCg0C znM8Jv{bQT{|7PD08dmTZf^ne4<^yYl-~7A@g`rr)1 HITt5n9!YgGb&YHGYkwTI8N@GewkM6W5h16pZzCKyrpf5SkH|9WZu8_d@K zoDyiZ%I2EONtM_>wIo|6IlOeV4>4|6b>(V>!LFKwB$Bff5JN#I(y{C=yEN!H3Jt%! zEYy%8yq*ym?*BQuq0Eg5GpWVCFlz+mKg|22jnf)MdQyEL_W&i}c!-BCnHf3SMEVct z2wfZhVN?q8CK^-%9?X`M_ZT<0M_P@&UUyUbz^dZ+EyYk6#hu=?zfeHZYd`*xUTfPw zJ|FIK$y3@YjgK3?pC1X8-SX;F^T`0;0F-6 Q(d2Gonb}WKt->2Zr;KYMtsW z--&%no4USrXK~~uIcDk;9dY6ia`;wFC9c=);q51Qo9305p^o&S+_&48`}ekTI;|zL z*AmJs;fc9 &K0LK(n~&ZK+qfx`1Gp#ctqZsUem!Rrq}XA)O_BRdApPNGDt zSp g!{=GgpgZS{qjAkc^niGdm@z68 z>F v)&@PGCA3B0VYlhu4esk}(^! zHl~Jm6lpFA8y|9iO+NCrO{IcU2tB*bTXt5s+dr5I{ZLUSe>)CroSh=;H~f#lx`xDT zag18{MB6j-iult@c7S=ht8J9VSu#XI0YGuxNczBM-kSxiQNOaXvK64FyA(}3=E Dc0|`DGGu)$f0yIwAhCJpiIP^~+sA5Z%xi8Nj|<`^ zw4uQj(AWL_sZO>BI8s^1-(idC#=$?jXz??|2V){svVAw@WWOvQK7jI*>Y{q8gA?3< zdfqjW@h_Pnk-`U(YmTM}Dzw^{OOZB#`=>H-taY{mYc30=YSvY8ELKfS2Jui1fKjUP z14B|CPgeCsoG`;8@G5e_^o7UZD_bsh#Aue9wAm|P0<}TjuMKq4lgD0x4odBVoi zrGmyWdVAxe7T{5;0x3$}_+5=>RwFsgIBWg^s0qa!fn=j0CFRST2h98e`U@Mw{m-D; zc>pxzNP*GqH?bHee~*`2%77^j8YmIII%R)q-s(gK)1_uRi@6QrJjDc3t8qsfP9uXf z`ywalf1By?x20hw-w`U1T0&A68qkhWk9|rS-sB-vMjazp=AL&v zGVg@|Q9m!SlnuJ*lIgsTpCv@d`C#M%748QZ mFIc0=6JnV@Ij^|-`aGY(|3=~hMk{;3#$`RUb*Y^VySMap09>} zZ7zoD-NmJ321P!T)W$V_R9Gxpf83ZUX!!F^Ku)Td_0PoSc6|$H$jZtJ@VY!P7a(O~ zVUY`C^1#3e <*dn@x$oK&{`$qO~ zp;f*bqZ3VeCRe*buKA}Pbqk5l2UTOrT|Kv 1@tYcMEF#Ku$YvxlX}<;ik_nDavy@G6x#>GKE9 z!2hz6mHQYRhAj>HCijKG2rNuyXqr
j`QAKDeKKjha0}0*@9iRnlu(5wglc1N%W_D-gw!>c%m??O} z!C53Zn7jG=Bo9`eHU>tzD1{h-{Q<_=-2HyPV8_yN%(v=+Ap3^ZtC~;xYtMN{F>vi> z{
bAWb2)&Tx=1(;ltTG@~%L;_PU zF%lcEb>c`!Na(LwMkqnEd@1+dqez=5#>LWr3VSDmleptnFc|nkRbW_GdD<2^dd5l| z0AAqn4vcU`(`o}~iYoMi3QbD;MUq>P+6`>lphtDMos09>$mgypD21acH>UL|a-<|l zisR#f6x=3Srmm>;Ayxv`8~vJ$dz^-PQER^{(}R@jG%BcTG{x!|wTiS^kmLlo$Z9Wc z8wo))mN^|JuiLa3BYw&_(yjPd2!;0fgXaA&K-!{*?H-az^uKHO`Vd|$lEg*r<~XEc z&Z0Wxr%=lZ)p!biEHzXhDBvSDevzUwin$+ZHvZa6)K#f}*rFy!OMXBy?+Y`c4DcTA z>*>h`FKpnjaz&hOgO1$1KwdD|PE~-@FIT(Vb}EVM%f7l5(7R=8b{_`3O0Bo;1gcCP zn0ey}u&e^ir?=P@Tk!u-N~>?Vja4WO9Z7bi^EVbi$W1`N=R@tKa9X0k+eIWdiS_`Q zqg&^rnZPa+Np|}Y&YkKmpQW$p!~`|J5C1HnE)t*kK`mV8=e+r(1{xB>WykblBY z6lxabe~_<8I{PYru<=l{M9RHDQ^;}75ZXxCNAFEjfTJ%gZoJomTR!ohQ3!E9@iVG` zM`_jI7ORslIw@sq^hv7hOt<}_*I(lw^&u>QJ>dQdqI)K{d8)1a#VW=4yT;Ul(T|En zA_91eHJgDBmfb*h1U39-MP)F?n8PvBa%n8MyUl0m1MRggdYETKhf}ESV?d& z|DtvvCbv9OD_pSuXyMm@U0mW|n1tZt&(1Yg``^ZNZah4oVQ#oRvF%`#DdBA>L+m}2 zHcmId^i*y;G*uLU9iCj!Lmlg4$rba7UR+5j( N zSkQe)p=V3$r3Yr~MMe+xR>f`j?moqIZ#5W?zTbFtp{ihw9k359Re05PI^1SYPHkvj z7cKDjtcs$+n4-X5&`A13*RbZ#44TzzK-#$q{G~jDZP23sy^Fo_k}xr^$iDDJ!jnOh zLuCMQR3Rab^q_ )+u( ak{zTS_w@$w(i&Rl! zZFMW8rcgWXX_)7W+ABvks_IJhy*Z9u8!Ay56?3E(xc{MY5>LpsY6NrDZZk>avkJu* z@lCz)l4dW)qZ9vBQIfz|4=E_6jSW;)cR*oOAQjf?VFIXzY#Y=qIZk|T?OkH@Wd-z- zhQV(b!kX&>wiCyJ*~>oLWc_Gc`aNKQbHTi$n1+i({b6yz>zA1KDRAcUMG2&!&L%Bl znP@J<6i!mg9iJe>=&zdx;rF_CLH;ucMgnB|kolM0Rz6ho7GYS-ic`q|XiYzOm)k8# zo$AHdBk=Yhor%?;8J9ieber4)U~$!b{eC)!yB>IFW}GT7BuQ{aTGzYjKL8{mzmnq9 z8h?)#QP8SnQf#W?=aWKtH)ARzEmWU3HO+BwKSXXj$iHXA|9Pobl^huBTDNk^E|WomBD?6#8P&ZSJC|4U>u d`gLCB zSEzGKm+MPSt}yYH^}x@X{f-~6yAU*VBDc;fPhTRVX+1KUhGwvovVmy&|Fm~rQBgJ9 zz6S+tg3^kDC<;hYqU21IBq< HoQFHk_;_f1&~~k=Sygk^{LkMEObkpP#i2Fl=RiRauWZ?JK;_F)PVTPx zW-rkKG?$8yTn~ cIqP^lV+DeT7N<$Klk%ncWv(_hmd0dQpS1i0RJVf6+-NCjuZ zCz-jYb fDA+sR)C*b9X*)zE*D56Q4IqN!)bT z_uu=;-K8!TifYa?I}5cwgH&}{J$&}y9!K_zHKDhC6}GkdGtbk=*;@jLCFq5r#gs-( z4}d0smd4s;vruwsI(Yqv%564+mZIdg0x3p_{v}()q)3+Tb>82X1kY;K@1nG1K_i;| zZ>6M33Rr m^JvQAh)qfPi|t z9WgP83s5@%%%=QgMIpg{K+E*%g~4k{*L{L-@G9udbNqzzVhd9=$hya2RDzKpH(VU- zN5dL=CcdT&+`4feAZQr$t5PK261DN8HJxc*0-xS)*yO|`t_~1k7C{1lBs# kx zxplCcr;`v(1)S`Ko)fRbat!O?trTmE{IGhyvrNke* Y1`*K;CaEMEdA-K?%Cbxxvi*fdU3fc(n>~TfKB1y2ht5W z25XehHt!Pqv1~VKUO=KjG3hQuBX4b>Q#x!fiMmQ6$*7bd2NFf^j#WE*O`YuILFs*> zdh8QWX8@%QU;H2`<%1pIj_>b(^py szhFfTKSCCf`EO_&7*g|iwYPW&)Jr7! eK(s{Nk87rBo+i;OnzKHJ`SG@~_q9(H1>jh* z&*49Mk;Xf4HU4`|l3Lk@QyPc8XueTyu1dj9X5@3@nrw2pkp55*QL!j*KY;EB Z;Yv0fGLsezvm=|4wuokfA)yo2WOd-aKXldpSgslar;cu@dH8R}*Ps)ISDj zF8Q7L4my37S#Wh263aW~dbYl!1AulbqAWLYYplWarJUuulIg^EN)oNFCG2@m3pX@* z0R|w69NLh3NFg>0NZvOWjS!M-vHT->FPEDXK0b(nNfL|?$9GnW*e#biJ#YRhS$PS m#N9HBu{OQ%Z#-BSRhPl4c81AW&|HIlJ?*&0Dk((iid zY3Qq|tn!XQD}tucKwc3~ArI8Iwf-PJtE`_NeI4P)K%yT*+F;L0ihOelC`UPa4 _u`6Ty29mg%x4 zLYif`nci4@yR6(ZZ!f% h@7rgf)*7s(MlUSz_WJxHU8D&W}@{E%0}VS`w5fw`asF5 zI1f;mUuzrZ2?ji;b|&vV2GtlEDGESk9Ly8=grWdjpCaqD@EK@RBtm4sp7qa@0??r? zonM>+%8OhKbDEuWn0roNtnuXnLLl+x=@j-Eb_^2TEvt6v7TYcBm9^Uj?iUbD6*Ao> z*%Agz?vGw(Jlw+>#7(}$TC97sK~>!v2T50Zj|Pgo>^x51nJB9e>Nz~*5IPBLcrkym zuFztKy|Pc6n!ZYj*TrI(S7i`h7{ydQuI`S4E^(MiokrNj{mYKis~tE1ouUuoLz1VX z@%Mll{xb- %TH5{yhh3>%YjaTQwqaI+)4}H# zVIkOue$l<6XGQWvmH3iRSPuiqJC0gzIF|sqk-k~``#hcE*ZWo>Sq>PK-RrLB5Gw}> z?dnf4cYdvastErs2aBLTuBjX3nih`S>|p`B(-F;Vc#2N9UV#C;cT0zFHT5CsNpdCD zvnxqTG?&eDEnR* 6`dsT3dBLWI(s-`K9D8 ;ei*mKn(_P!gg5;?~d#hJv>D^PcjP`{1? t%B^jI}FroJCJ-<(rQyi z)s1;f^CSb+ z#&j{6j?Z)ddq8T~1x5EtE>g#{ikk4A&+g}4(7oQAx9rEVQcRYr_xcu!EbWfgu>K#E zWssXsYPytfJlgYh@FirwKUGS(JK9pvm&R0Ap75cxgRu720XpK-%xmD;@vLr%*_kI_ zQrQ`9B`bYK#D10n_CAz b%A;1+|TXX8UETuJ$j1VwY(IDG{uX9SW*|goC zfe< 7%Nr z&xWh@SrnDELJo^N8lx+*?=>_N>X$L?E2n9EUwSkINXij5HjXMGH(Vvx6;JPlDJU>M zF4J$wdQwA9dywEJ4vlS8?KFKsW32iQ U&$J(vyMD-p(>94wg*HOrU1kY$Z)gKLDtCTut-m8BMz4#5_- z?d^0Ix7U$?ouSdYIro8T;b&Zm$5pe5+8SLVsw3A{&|Ot;NK_RHnZ(CSgn$Fc;wU2) z91A=w9RL8-u8thE44=gVLclVmyfqbdb!p(UWJJ)(s+L)fslSN_C?9QUjr2-n!O3M} zq`%&I0+Pqx;ef9Bi$KXSEn #nzO49Bp8ILxeFhiS)-LMbEB;l`F7CBch?>pr@m zzgr^)nIRr>OZZ6$kqW;k`mAh
a;!$e_!3_|uzl2A6E+XA9 z>*g-g^U5*Lj7b({j8Aifc?F(L+#Pv#4eL7N^x<%7W1!OY 0?1qOlMa zak-9RtpUl|w|0G57kbk84^m}1mY-IY#`Gi?4|J39yDJ {ld!FgQ%ePMD^g(xvwt z_r}v_e!UhP2@l_4QWPgolk4(7O)XT*tX1-SdM6fKD-)Y2qB{kZqVb7M?rh%s^<7wF zn=~7A+GI3V3&?1j05t7oi0I3B${sEk3GLhdfv0T5@M(jIa>KYm;Qy1H-f2$;ilEM} zUOLcY>k@CIFJh c p*#h`CF$(6&jMN>K))H-9A1gR{ePj~ zKvUw_qnQA)Y}yW2`(7dD&Z3> &sOr|!d9*wiep~fKJgy+m}aV+^?R}CV-`xJODa|v^=^lhN+A4IS5jV}zS~xl zw@IJd6o7iAg8q70t|CpR`Bm$x3+O=**h^JEMP%F-b?F8z_N?;A>?LM6AUE~KH05JF znnoNZ217$G@fLkE=OxhlRzRPQ{;=YZ!gGAfXdqV$m!|%}`38xy?NpOsj(XM=T_k|( zB?vlg^+Bxy`>(0WfA9$Zme@vN!9;@`+k~iM5yB#+_XM^&rK@Fto;5o6kG5!?0Cw+p zQ9`=bU({9&>0_C562_0gjV8D&3oDroQ|@cIT-ya`I=uf*)A0xArl)LT)ALt=Eg9T( zNpWAp0m=g%wpqw?GmeSFh|AtMh}9f_a~!DD$mv&NceD7J`w7G!hr{6RjJdqfrInGH zWz5VwyxabPk3`Ei9oODwjz=0Pa!*))KeN!P)BGNlo@cvQgk5={7iQL~A(PsgjFDG9 zoiH{H?DUWAOsW1_;Vr_Sbd+7R_sjZxrhT)F_sVxBhwV3~0c1?fncwM KA zgzJ8L?>iy^Fm9M%68#*l7&xYH@XOL80A22sgqAZG#Tg%K2{J*sy|&A3-6J@(enOr3 zLqdRoJf=U_-qod 7 @(r$}M^ zBD~0Qj_3Hra{IvN3?udG3?DA~GI=IquiZkw6TX1^=KY_oOtz?J{AF$AvXjQbLj|l; z-R$h7q3u4UbNYU9BSr6YaYOSiYt>mE(AK+vWuFYTC7HQ4&;r+AEzu6?roP}iVhAg8 z4=VLQ@$&lZC=gwswQ<*!h$y{(L~c4 W z;lezE8lnDSzJm>&$hWJrgfG7;ISq@3T`73{d_q`!Q&c}Aynveo&~{IC<>loYNi(O8 zR^1>k&rp_aXB!9ket}z-JRT-VB}&63t8pd zaIGw`no5aF#t8Q{mxKfRH-yF6J{B zr>MIkN6b1vO=AIsH=ysHQ5|N{(Ph %9{{} z_O}0W1~aZCdNyQs=#QA_!~cc(^IKazKWC;$7Y7Qwv=e{40=)|SyZG>l+h0L+g8Nfk zvoEqG{CU5`beapc@tcO}R9fYU@ZG%uTk5Sxd>ycO9HpOVQ)*T6LJEo@4%^uBDS_Yj zA^J2IM$?$=u{F$mhC@)(K2sERU4(xg CyA`3XQamPztfaSzi9;{|U^nl%@*0W9Clydsy}MIIk>5Kdj77)Eg}- zElCYVbr>ke |gS$4VxWDqPnL@2Ut!qmDodWSMYB1iKtK$Ak zw|8SP(Aq=KQIzH4!mJ<4Cl7$9QfqcHNBx0Wu>F6ki1_asj=wwkK%IR4=L?V4-@tpy ztPEz7a0!GpCvysFRo^NJOyMoORq^>~V3>$=%#cp4kWqH-@F3#7=O+Wh<4<;mpg$Bt zda_9x)RiXPxibmWx$oO?@llBT7v?`~c|! Mj|>8|1kNqR9!_R7RzI zaRieoZNUiCU@9-OZiNg0uMS6)D+hooh}l?95CWad6~$dC$Ccbgz6H&w ^$}aw79Z(fYD2apzaeM zJ*Aguq%{Sl+HjHAr|-sgM1KRDDibSchoz_>flxUodl#OCbLuW_Iz3CYYx|jeyD|^- zml_E?t`dW2TXmRJvs)0~#V;DvQZ=fu$KUe?KsM#4pchqqw2#MUywJxqs<`MA|Gvi7 zYl{ogY_s+{0M}J^ZO_piYC7V1B0nhP1=pJ+xpx6>=%1p?r*;l}Z_*bC?R5_yBTY#4 zNjw$I;^nM>D3 0F~pfV-H*z*$Dyrkqg1^_(+HQXFi*z=S3084 zA^o5#(Q&{P0ZDH;{LKwIRWc^ckI7`E;e!?ssOm}I#9jbs6oy`7(p$liw2R?Rr4sk2 z4Ye71bY=+ke>H^E hE`11U`M`|1L-PG?usRNg zqj;1ZOfKlY^zUkFFtru8{xUN(*RW#OeORya`Cm8Wq4v1Yk0?}5ea@H9>iU}A;&_`3 zUvgLsEuxVdXOR+JrKS2Qxk}k<_z^UNFE<3s^dJ+^6(&;vZp367o;l$Ah>Q3Jotc2` zoxjYWcoEhePYPZrbHNXW7a`>IQl9ylT+v?CLepiUFJLs|`bnX&Tv~Gccl|CH$uej& zNmb|C9r (8|J;z>;S^PjF7C1FosMPV8BKX1CJbjNh73E!tD$BXzN zRLhx^&0~ItS`@*khUlUuxOhDSn5#AW! o8CJI52U zSs-9ZiiV_RroDSMZTTZyoGBJ48OYu3u)M+_ABz<; ``gzm{qhl&_( zfjhHhWf3|`2NA&CRtIHPp#7CO%?c=K%mj6w>Y$=;XlQ5`6iek)o~L~CIn4`NdTd8u zu75}}_g2;4uiInsNYx-ll!}`NT=PAxt8opBNNHOa@YwuaF8bsC?UCO bcRE2_M7HVc#|SeQ7OXeC9y$ z4$pxy>>?j`gO~UB;5BEbA4|*|ONnvYb_W&iRSV WPlNt@#{0^Fu>%`g@KCz8GS%8nC2!VMdd93#!VD-vrP21{&}+^IWjmj zv~4cdAZgslW;rXPEhS9M<@Zsw30XHWzl48>qU=n@70Y&)qY$d=;iTA; i6SECf3YbI F>R5~3Ko~u>h zUZM}9ew3EnJoZc@g6IwU!LUGcQRxI8ZK#*GG98StTA~!Sa05y2Xlf1`9Ds>Kp~6Qo z)}Xk&4Rp()Z>ILFwzIdFmz9-0wvX-X?Cg1e;kJ`FfXBbT=UPNVPx*Udf&*0L#*~^3 zrW+)-KAOK+?4@5$DEZTF2@gFwYWJiD?c#ubw`-0)*tHBth|O@v@vVKdb9Z>Ol^^a9 z*IO&8B!salK~}O3dDxzu2xTtYd#LLeq}@*)bx9Y(lQ)ewt+NqxLwVwc)}araR&Sfu z5la5Zo?YOTkn?bH{w->KQ8KcikbdgHc9h%R+<=Z%%)r3FPd>kQ@8$qICt^_Fl?}5B zS_z;)fh7}nzAikH^5;!n;>EY|G>suw5d8d!8l-jSr7+ud@mLiZS-+P g|Ca;I3rBHi@!M1(0x4VIY!N!Fi9XBz#ZS!!1_6QsItKh}?mxG-z zUN(nL>(SaOM^_Mg(s1jHq;(4!y!t7U&hujrA9~8cne ?WiWw%}4OlVfN_1Fv%HdRTWZdKlto}jvI8DW6gF5k_EyK`tM zC36a2eDJFC1Jm0f;=rjEpJ~n4PZZjBx4O6tPde5R`|nK}%~p<7x;_YP)My>^VRKg* zLoq>hs5DR4heMnp===0_GVA;!L{eTe9Km8d*+kIdOliDXb;~FGhYP=(*#IbSTww!} zE0yEe=bZ?wTg4n|8Qa_ia!YI+K)6*I2Jn%l$C}UV-nHY?w(^a8V%;l%kYEn<<GJ zY6d@Bp*QcGP15p#MpwaXFR8)6(hTZt{g pr}%ALFLo}+l#iSB** z6GiwHZDVww6nwgw^LOb}-|+Qy%ZlkhmL5#S+Sieu3#m`4Y(d67e-yN>UD|BE?fM83 z5%#G2gkO0erT@pqZ$dV1wD<6o=;v1hY|!e&$pcRDTaU1J9(}s*@{`q%y7jz@o+rTt zQv5pxySEucMQwZfS;edqS@mlzN135j876%F#%9nSI#W~LjW=DtD3`zM+^2*(XTD1& z6D43Pp|x)^V8f$5W%bpK;)M+r83m038(ONR@50E{&a19 y)Jh4yllc^Nd|m)zha<~ z8l3rf`C;r%gQFe_E?su3%~n!!Q;iJO!SrowP*-%&gA6%ayn#o1v}$HjkShVT5TUP# zr#k|2|DN%2eQnJ&idKVg`Py-t&B^b(`B!R+>EmSKs`6bM3ocWPFl*bUt`0@xisOsx zSnaP?m_Z&A6RQa(&qIv9URtk>PP53;x|mR+Yq_ulV}A4+e;KxM=97M1RT6dWvNfTE z-3Tp`R&6bVoHbs}Yo?&$I3L3ZYc-xAl-wQ~?9tcq4W~!TCGAC^AGvkPnxsWlU%z!L zhM2va24ltz@dKcaWN8t2v*X==czOvb)1# z!4G `#8P5IoSF{n z<`3Jm=9S=iI I8kHoYh)ezv!~HK(19^~G-FG8 zbpJP7pKI8dT=Yl3YM&{p!`c=iX t6a{E(8lf@