From d33aed298878e5309e6d8d24e8005c9420387962 Mon Sep 17 00:00:00 2001 From: Joker21a <1095435669@qq.com> Date: Thu, 18 Jan 2024 08:33:00 +0800 Subject: [PATCH] 1.7 --- .../java/net/micode/notes/data/Notes.java | 279 -------------- .../notes/data/NotesDatabaseHelper.java | 362 ------------------ .../notes/gtask/remote/GTaskASyncTask.java | 123 ------ .../net/micode/notes/ui/NoteEditActivity.java | 72 ++++ .../net/micode/notes/ui/NoteItemData.java | 17 +- .../micode/notes/ui/NotesListActivity.java | 71 +++- .../net/micode/notes/ui/NotesListItem.java | 11 +- src/main/res/layout/note_edit.xml | 6 + src/main/res/menu/note_edit.xml | 5 + src/main/res/values/styles.xml | 2 +- ...源软件的质量分析报告文档.docx | Bin 0 -> 963482 bytes 11 files changed, 179 insertions(+), 769 deletions(-) delete mode 100644 src/main/java/net/micode/notes/data/Notes.java delete mode 100644 src/main/java/net/micode/notes/data/NotesDatabaseHelper.java delete mode 100644 src/main/java/net/micode/notes/gtask/remote/GTaskASyncTask.java create mode 100644 实践模板-开源软件的质量分析报告文档.docx diff --git a/src/main/java/net/micode/notes/data/Notes.java b/src/main/java/net/micode/notes/data/Notes.java deleted file mode 100644 index f240604..0000000 --- a/src/main/java/net/micode/notes/data/Notes.java +++ /dev/null @@ -1,279 +0,0 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package net.micode.notes.data; - -import android.net.Uri; -public class Notes { - public static final String AUTHORITY = "micode_notes"; - public static final String TAG = "Notes"; - public static final int TYPE_NOTE = 0; - public static final int TYPE_FOLDER = 1; - public static final int TYPE_SYSTEM = 2; - - /** - * Following IDs are system folders' identifiers - * {@link Notes#ID_ROOT_FOLDER } is default folder - * {@link Notes#ID_TEMPARAY_FOLDER } is for notes belonging no folder - * {@link Notes#ID_CALL_RECORD_FOLDER} is to store call records - */ - public static final int ID_ROOT_FOLDER = 0; - public static final int ID_TEMPARAY_FOLDER = -1; - public static final int ID_CALL_RECORD_FOLDER = -2; - public static final int ID_TRASH_FOLER = -3; - - public static final String INTENT_EXTRA_ALERT_DATE = "net.micode.notes.alert_date"; - public static final String INTENT_EXTRA_BACKGROUND_ID = "net.micode.notes.background_color_id"; - public static final String INTENT_EXTRA_WIDGET_ID = "net.micode.notes.widget_id"; - public static final String INTENT_EXTRA_WIDGET_TYPE = "net.micode.notes.widget_type"; - public static final String INTENT_EXTRA_FOLDER_ID = "net.micode.notes.folder_id"; - public static final String INTENT_EXTRA_CALL_DATE = "net.micode.notes.call_date"; - - public static final int TYPE_WIDGET_INVALIDE = -1; - public static final int TYPE_WIDGET_2X = 0; - public static final int TYPE_WIDGET_4X = 1; - - public static class DataConstants { - public static final String NOTE = TextNote.CONTENT_ITEM_TYPE; - public static final String CALL_NOTE = CallNote.CONTENT_ITEM_TYPE; - } - - /** - * Uri to query all notes and folders - */ - public static final Uri CONTENT_NOTE_URI = Uri.parse("content://" + AUTHORITY + "/note"); - - /** - * Uri to query data - */ - public static final Uri CONTENT_DATA_URI = Uri.parse("content://" + AUTHORITY + "/data"); - - public interface NoteColumns { - /** - * The unique ID for a row - *
Type: INTEGER (long)
- */ - public static final String ID = "_id"; - - /** - * The parent's id for note or folder - *Type: INTEGER (long)
- */ - public static final String PARENT_ID = "parent_id"; - - /** - * Created data for note or folder - *Type: INTEGER (long)
- */ - public static final String CREATED_DATE = "created_date"; - - /** - * Latest modified date - *Type: INTEGER (long)
- */ - public static final String MODIFIED_DATE = "modified_date"; - - - /** - * Alert date - *Type: INTEGER (long)
- */ - public static final String ALERTED_DATE = "alert_date"; - - /** - * Folder's name or text content of note - *Type: TEXT
- */ - public static final String SNIPPET = "snippet"; - - /** - * Note's widget id - *Type: INTEGER (long)
- */ - public static final String WIDGET_ID = "widget_id"; - - /** - * Note's widget type - *Type: INTEGER (long)
- */ - public static final String WIDGET_TYPE = "widget_type"; - - /** - * Note's background color's id - *Type: INTEGER (long)
- */ - public static final String BG_COLOR_ID = "bg_color_id"; - - /** - * For text note, it doesn't has attachment, for multi-media - * note, it has at least one attachment - *Type: INTEGER
- */ - public static final String HAS_ATTACHMENT = "has_attachment"; - - /** - * Folder's count of notes - *Type: INTEGER (long)
- */ - public static final String NOTES_COUNT = "notes_count"; - - /** - * The file type: folder or note - *Type: INTEGER
- */ - public static final String TYPE = "type"; - - /** - * The last sync id - *Type: INTEGER (long)
- */ - public static final String SYNC_ID = "sync_id"; - - /** - * Sign to indicate local modified or not - *Type: INTEGER
- */ - public static final String LOCAL_MODIFIED = "local_modified"; - - /** - * Original parent id before moving into temporary folder - *Type : INTEGER
- */ - public static final String ORIGIN_PARENT_ID = "origin_parent_id"; - - /** - * The gtask id - *Type : TEXT
- */ - public static final String GTASK_ID = "gtask_id"; - - /** - * The version code - *Type : INTEGER (long)
- */ - public static final String VERSION = "version"; - } - - public interface DataColumns { - /** - * The unique ID for a row - *Type: INTEGER (long)
- */ - public static final String ID = "_id"; - - /** - * The MIME type of the item represented by this row. - *Type: Text
- */ - public static final String MIME_TYPE = "mime_type"; - - /** - * The reference id to note that this data belongs to - *Type: INTEGER (long)
- */ - public static final String NOTE_ID = "note_id"; - - /** - * Created data for note or folder - *Type: INTEGER (long)
- */ - public static final String CREATED_DATE = "created_date"; - - /** - * Latest modified date - *Type: INTEGER (long)
- */ - public static final String MODIFIED_DATE = "modified_date"; - - /** - * Data's content - *Type: TEXT
- */ - public static final String CONTENT = "content"; - - - /** - * Generic data column, the meaning is {@link #MIMETYPE} specific, used for - * integer data type - *Type: INTEGER
- */ - public static final String DATA1 = "data1"; - - /** - * Generic data column, the meaning is {@link #MIMETYPE} specific, used for - * integer data type - *Type: INTEGER
- */ - public static final String DATA2 = "data2"; - - /** - * Generic data column, the meaning is {@link #MIMETYPE} specific, used for - * TEXT data type - *Type: TEXT
- */ - public static final String DATA3 = "data3"; - - /** - * Generic data column, the meaning is {@link #MIMETYPE} specific, used for - * TEXT data type - *Type: TEXT
- */ - public static final String DATA4 = "data4"; - - /** - * Generic data column, the meaning is {@link #MIMETYPE} specific, used for - * TEXT data type - *Type: TEXT
- */ - public static final String DATA5 = "data5"; - } - - public static final class TextNote implements DataColumns { - /** - * Mode to indicate the text in check list mode or not - *Type: Integer 1:check list mode 0: normal mode
- */ - public static final String MODE = DATA1; - - public static final int MODE_CHECK_LIST = 1; - - public static final String CONTENT_TYPE = "vnd.android.cursor.dir/text_note"; - - public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/text_note"; - - public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/text_note"); - } - - public static final class CallNote implements DataColumns { - /** - * Call date for this record - *Type: INTEGER (long)
- */ - public static final String CALL_DATE = DATA1; - - /** - * Phone number for this record - *Type: TEXT
- */ - public static final String PHONE_NUMBER = DATA3; - - public static final String CONTENT_TYPE = "vnd.android.cursor.dir/call_note"; - - public static final String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/call_note"; - - public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/call_note"); - } -} diff --git a/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java b/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java deleted file mode 100644 index ffe5d57..0000000 --- a/src/main/java/net/micode/notes/data/NotesDatabaseHelper.java +++ /dev/null @@ -1,362 +0,0 @@ -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package net.micode.notes.data; - -import android.content.ContentValues; -import android.content.Context; -import android.database.sqlite.SQLiteDatabase; -import android.database.sqlite.SQLiteOpenHelper; -import android.util.Log; - -import net.micode.notes.data.Notes.DataColumns; -import net.micode.notes.data.Notes.DataConstants; -import net.micode.notes.data.Notes.NoteColumns; - - -public class NotesDatabaseHelper extends SQLiteOpenHelper { - private static final String DB_NAME = "note.db"; - - private static final int DB_VERSION = 4; - - public interface TABLE { - public static final String NOTE = "note"; - - public static final String DATA = "data"; - } - - private static final String TAG = "NotesDatabaseHelper"; - - private static NotesDatabaseHelper mInstance; - - private static final String CREATE_NOTE_TABLE_SQL = - "CREATE TABLE " + TABLE.NOTE + "(" + - NoteColumns.ID + " INTEGER PRIMARY KEY," + - NoteColumns.PARENT_ID + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.ALERTED_DATE + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.BG_COLOR_ID + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + - NoteColumns.HAS_ATTACHMENT + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + - NoteColumns.NOTES_COUNT + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.SNIPPET + " TEXT NOT NULL DEFAULT ''," + - NoteColumns.TYPE + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.WIDGET_ID + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.WIDGET_TYPE + " INTEGER NOT NULL DEFAULT -1," + - NoteColumns.SYNC_ID + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.LOCAL_MODIFIED + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.ORIGIN_PARENT_ID + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.GTASK_ID + " TEXT NOT NULL DEFAULT ''," + - NoteColumns.VERSION + " INTEGER NOT NULL DEFAULT 0" + - ")"; - - private static final String CREATE_DATA_TABLE_SQL = - "CREATE TABLE " + TABLE.DATA + "(" + - DataColumns.ID + " INTEGER PRIMARY KEY," + - DataColumns.MIME_TYPE + " TEXT NOT NULL," + - DataColumns.NOTE_ID + " INTEGER NOT NULL DEFAULT 0," + - NoteColumns.CREATED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + - NoteColumns.MODIFIED_DATE + " INTEGER NOT NULL DEFAULT (strftime('%s','now') * 1000)," + - DataColumns.CONTENT + " TEXT NOT NULL DEFAULT ''," + - DataColumns.DATA1 + " INTEGER," + - DataColumns.DATA2 + " INTEGER," + - DataColumns.DATA3 + " TEXT NOT NULL DEFAULT ''," + - DataColumns.DATA4 + " TEXT NOT NULL DEFAULT ''," + - DataColumns.DATA5 + " TEXT NOT NULL DEFAULT ''" + - ")"; - - private static final String CREATE_DATA_NOTE_ID_INDEX_SQL = - "CREATE INDEX IF NOT EXISTS note_id_index ON " + - TABLE.DATA + "(" + DataColumns.NOTE_ID + ");"; - - /** - * Increase folder's note count when move note to the folder - */ - private static final String NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER = - "CREATE TRIGGER increase_folder_count_on_update "+ - " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE + - " BEGIN " + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" + - " WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" + - " END"; - - /** - * Decrease folder's note count when move note from folder - */ - private static final String NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER = - "CREATE TRIGGER decrease_folder_count_on_update " + - " AFTER UPDATE OF " + NoteColumns.PARENT_ID + " ON " + TABLE.NOTE + - " BEGIN " + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" + - " WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID + - " AND " + NoteColumns.NOTES_COUNT + ">0" + ";" + - " END"; - - /** - * Increase folder's note count when insert new note to the folder - */ - private static final String NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER = - "CREATE TRIGGER increase_folder_count_on_insert " + - " AFTER INSERT ON " + TABLE.NOTE + - " BEGIN " + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + " + 1" + - " WHERE " + NoteColumns.ID + "=new." + NoteColumns.PARENT_ID + ";" + - " END"; - - /** - * Decrease folder's note count when delete note from the folder - */ - private static final String NOTE_DECREASE_FOLDER_COUNT_ON_DELETE_TRIGGER = - "CREATE TRIGGER decrease_folder_count_on_delete " + - " AFTER DELETE ON " + TABLE.NOTE + - " BEGIN " + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.NOTES_COUNT + "=" + NoteColumns.NOTES_COUNT + "-1" + - " WHERE " + NoteColumns.ID + "=old." + NoteColumns.PARENT_ID + - " AND " + NoteColumns.NOTES_COUNT + ">0;" + - " END"; - - /** - * Update note's content when insert data with type {@link DataConstants#NOTE} - */ - private static final String DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER = - "CREATE TRIGGER update_note_content_on_insert " + - " AFTER INSERT ON " + TABLE.DATA + - " WHEN new." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + - " BEGIN" + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + - " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + - " END"; - - /** - * Update note's content when data with {@link DataConstants#NOTE} type has changed - */ - private static final String DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER = - "CREATE TRIGGER update_note_content_on_update " + - " AFTER UPDATE ON " + TABLE.DATA + - " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + - " BEGIN" + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.SNIPPET + "=new." + DataColumns.CONTENT + - " WHERE " + NoteColumns.ID + "=new." + DataColumns.NOTE_ID + ";" + - " END"; - - /** - * Update note's content when data with {@link DataConstants#NOTE} type has deleted - */ - private static final String DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER = - "CREATE TRIGGER update_note_content_on_delete " + - " AFTER delete ON " + TABLE.DATA + - " WHEN old." + DataColumns.MIME_TYPE + "='" + DataConstants.NOTE + "'" + - " BEGIN" + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.SNIPPET + "=''" + - " WHERE " + NoteColumns.ID + "=old." + DataColumns.NOTE_ID + ";" + - " END"; - - /** - * Delete datas belong to note which has been deleted - */ - private static final String NOTE_DELETE_DATA_ON_DELETE_TRIGGER = - "CREATE TRIGGER delete_data_on_delete " + - " AFTER DELETE ON " + TABLE.NOTE + - " BEGIN" + - " DELETE FROM " + TABLE.DATA + - " WHERE " + DataColumns.NOTE_ID + "=old." + NoteColumns.ID + ";" + - " END"; - - /** - * Delete notes belong to folder which has been deleted - */ - private static final String FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER = - "CREATE TRIGGER folder_delete_notes_on_delete " + - " AFTER DELETE ON " + TABLE.NOTE + - " BEGIN" + - " DELETE FROM " + TABLE.NOTE + - " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + - " END"; - - /** - * Move notes belong to folder which has been moved to trash folder - */ - private static final String FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER = - "CREATE TRIGGER folder_move_notes_on_trash " + - " AFTER UPDATE ON " + TABLE.NOTE + - " WHEN new." + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER + - " BEGIN" + - " UPDATE " + TABLE.NOTE + - " SET " + NoteColumns.PARENT_ID + "=" + Notes.ID_TRASH_FOLER + - " WHERE " + NoteColumns.PARENT_ID + "=old." + NoteColumns.ID + ";" + - " END"; - - public NotesDatabaseHelper(Context context) { - super(context, DB_NAME, null, DB_VERSION); - } - - public void createNoteTable(SQLiteDatabase db) { - db.execSQL(CREATE_NOTE_TABLE_SQL); - reCreateNoteTableTriggers(db); - createSystemFolder(db); - Log.d(TAG, "note table has been created"); - } - - private void reCreateNoteTableTriggers(SQLiteDatabase db) { - db.execSQL("DROP TRIGGER IF EXISTS increase_folder_count_on_update"); - db.execSQL("DROP TRIGGER IF EXISTS decrease_folder_count_on_update"); - db.execSQL("DROP TRIGGER IF EXISTS decrease_folder_count_on_delete"); - db.execSQL("DROP TRIGGER IF EXISTS delete_data_on_delete"); - db.execSQL("DROP TRIGGER IF EXISTS increase_folder_count_on_insert"); - db.execSQL("DROP TRIGGER IF EXISTS folder_delete_notes_on_delete"); - db.execSQL("DROP TRIGGER IF EXISTS folder_move_notes_on_trash"); - - db.execSQL(NOTE_INCREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER); - db.execSQL(NOTE_DECREASE_FOLDER_COUNT_ON_UPDATE_TRIGGER); - db.execSQL(NOTE_DECREASE_FOLDER_COUNT_ON_DELETE_TRIGGER); - db.execSQL(NOTE_DELETE_DATA_ON_DELETE_TRIGGER); - db.execSQL(NOTE_INCREASE_FOLDER_COUNT_ON_INSERT_TRIGGER); - db.execSQL(FOLDER_DELETE_NOTES_ON_DELETE_TRIGGER); - db.execSQL(FOLDER_MOVE_NOTES_ON_TRASH_TRIGGER); - } - - private void createSystemFolder(SQLiteDatabase db) { - ContentValues values = new ContentValues(); - - /** - * call record foler for call notes - */ - values.put(NoteColumns.ID, Notes.ID_CALL_RECORD_FOLDER); - values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); - db.insert(TABLE.NOTE, null, values); - - /** - * root folder which is default folder - */ - values.clear(); - values.put(NoteColumns.ID, Notes.ID_ROOT_FOLDER); - values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); - db.insert(TABLE.NOTE, null, values); - - /** - * temporary folder which is used for moving note - */ - values.clear(); - values.put(NoteColumns.ID, Notes.ID_TEMPARAY_FOLDER); - values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); - db.insert(TABLE.NOTE, null, values); - - /** - * create trash folder - */ - values.clear(); - values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER); - values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); - db.insert(TABLE.NOTE, null, values); - } - - public void createDataTable(SQLiteDatabase db) { - db.execSQL(CREATE_DATA_TABLE_SQL); - reCreateDataTableTriggers(db); - db.execSQL(CREATE_DATA_NOTE_ID_INDEX_SQL); - Log.d(TAG, "data table has been created"); - } - - private void reCreateDataTableTriggers(SQLiteDatabase db) { - db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_insert"); - db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_update"); - db.execSQL("DROP TRIGGER IF EXISTS update_note_content_on_delete"); - - db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_INSERT_TRIGGER); - db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_UPDATE_TRIGGER); - db.execSQL(DATA_UPDATE_NOTE_CONTENT_ON_DELETE_TRIGGER); - } - - static synchronized NotesDatabaseHelper getInstance(Context context) { - if (mInstance == null) { - mInstance = new NotesDatabaseHelper(context); - } - return mInstance; - } - - @Override - public void onCreate(SQLiteDatabase db) { - createNoteTable(db); - createDataTable(db); - } - - @Override - public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - boolean reCreateTriggers = false; - boolean skipV2 = false; - - if (oldVersion == 1) { - upgradeToV2(db); - skipV2 = true; // this upgrade including the upgrade from v2 to v3 - oldVersion++; - } - - if (oldVersion == 2 && !skipV2) { - upgradeToV3(db); - reCreateTriggers = true; - oldVersion++; - } - - if (oldVersion == 3) { - upgradeToV4(db); - oldVersion++; - } - - if (reCreateTriggers) { - reCreateNoteTableTriggers(db); - reCreateDataTableTriggers(db); - } - - if (oldVersion != newVersion) { - throw new IllegalStateException("Upgrade notes database to version " + newVersion - + "fails"); - } - } - - private void upgradeToV2(SQLiteDatabase db) { - db.execSQL("DROP TABLE IF EXISTS " + TABLE.NOTE); - db.execSQL("DROP TABLE IF EXISTS " + TABLE.DATA); - createNoteTable(db); - createDataTable(db); - } - - private void upgradeToV3(SQLiteDatabase db) { - // drop unused triggers - db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_insert"); - db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_delete"); - db.execSQL("DROP TRIGGER IF EXISTS update_note_modified_date_on_update"); - // add a column for gtask id - db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.GTASK_ID - + " TEXT NOT NULL DEFAULT ''"); - // add a trash system folder - ContentValues values = new ContentValues(); - values.put(NoteColumns.ID, Notes.ID_TRASH_FOLER); - values.put(NoteColumns.TYPE, Notes.TYPE_SYSTEM); - db.insert(TABLE.NOTE, null, values); - } - - private void upgradeToV4(SQLiteDatabase db) { - db.execSQL("ALTER TABLE " + TABLE.NOTE + " ADD COLUMN " + NoteColumns.VERSION - + " INTEGER NOT NULL DEFAULT 0"); - } -} diff --git a/src/main/java/net/micode/notes/gtask/remote/GTaskASyncTask.java b/src/main/java/net/micode/notes/gtask/remote/GTaskASyncTask.java deleted file mode 100644 index b3b61e7..0000000 --- a/src/main/java/net/micode/notes/gtask/remote/GTaskASyncTask.java +++ /dev/null @@ -1,123 +0,0 @@ - -/* - * Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net) - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package net.micode.notes.gtask.remote; - -import android.app.Notification; -import android.app.NotificationManager; -import android.app.PendingIntent; -import android.content.Context; -import android.content.Intent; -import android.os.AsyncTask; - -import net.micode.notes.R; -import net.micode.notes.ui.NotesListActivity; -import net.micode.notes.ui.NotesPreferenceActivity; - - -public class GTaskASyncTask extends AsyncTaskF^QhIu55X|@f7l>ZP z_#N%fliTUpcf~wTC!BMAEpvo);(G29&Q{7?yLie)?cnHJa2nHgI!kBuaf2!c=X|Z@ z7Cv3&%3|fz!YrU2m59#IQDW$Xo}>OcJ8nE62Cr*fNl8C21zLy6cPZXIfYh@7a1Wp9 zO3hyxezblbM#f&^?`a^>jn3$>C4zSg?&m-FF98B39;tCqwW}*E+shNjgx643@B2Vp zE0EVJ)dd;0zF61#MdTm_ipwTv=38ka2E3~m!)K3a)!E){xk0o{=~zoi4Hd_o?WqQI z$>GuF4>JW<^j@Qo2-?m1d9TkwvC9i)Orfa}kfb=H(38$Vq0N=J=*5K`Ga`*n$`Qq~ zeW&&njJ)KRs+OUC^)Zej=y4#Q3A3cjQZ*q^6FJxZS=s-iU7E({Ow`SW8Lw8~0g(kn~JT|}VD+xf9P&@F_v z=1=5 Pd;m-FV&p;C`#^G6v+VQS)FS)+tg~NK+r#(TpzU-a8G{qk%;;u+ zMflQB<_2X*=$d0PFP@0a{B%n_|563-ZBu1;B{$tMa>@Nq6r&-nZe2lRnuh-+SoF^0 zl;`z^fOpC^s;8i@fA$^21LjcC6;{sh5MmM7lrTAQde`DWZ|YFv`aq$Gg(n^a1yhMP zugEtG5Tg8}J9eBAfi)t%8kp1F>aV-8xpZV&e**7)pTzr`4yyl})b(0_9mDf6$tGZU zixbsWDBB$-0<}w&(FKhFQ4?fn_mCoF1lS`MmwtV>vO)aaQAl5taonzkiVxQieZi># z yC`51J{p^@I3GX`_z0!%TLNzh7Nc9d)mKQ@0&kIc=w7V<*G{n`ZG3Qh$kgC zx6$U(lDwdp2h1_b!7v&gu<64V>#+ts)p-fn*`fZ$+RB@^m|XZlDQBrhlt#4*mg-I9 z>iq`bou(*x_=mlB18+5brv0NlOMCvvr-!bP!1xJc$Jm>`tUGf~)pphgcY5gIhOvUD zap--Vu-5weev)TG*)P!p4mQu*sfEcdJ|+RZn`AZ#3yDnJWY%pry0X0T$KlyV(vE5! z6JT_%_1?;aHKQ#-TJ}_ydFYn9gJ|8%>OEF-g>;=Ye_Fa1RG@~@ey$U(lZ{|=P+-Ef z88#-T*O{#W0J@xSPJOAnmC1J5Da^L!1^Oc-pXUL~-Q?BB7{F~^h@NN@44mh8-N&AL z?sJ%Pi?R~O)s ~$^m?joio#$8U`!@h=%-2sc8M_mXew_sQK}d}s zD(VJTZTntGUmx|fs9*SH%grrTbF&~&FU8 SIiFA~VS@?k6)%bB*`hBCsv z=XiPOMA?)!8YcD? ^cx7wZKp#?SW-BRWY6#P;6%IVL~zfS3d7y{}ud zec$~N8rLT7+a5GkU-^nwGw<3&az65yu|R2(5-qKstS 7;FXC-BWvKIlBgcq zV-3BjHCq=9)ZdYTU7!T6AR!T&$(nGc{V3H_TI1V8K;X~Q4Gw+ntFzlm$=&fZ*x7E` zr=AcA QZr-O|l#3n63F;ODLH5*WBGs2;?f}GOuZh{?d z>=LDwyI7@|1eSrQ+QDle6^lldsrqeIC0?o2yBg|`r_x#M3~0k#^V;;HWr5NR7yJTJ zl<=)zYzqg0NzkCYK3e|1H{C3(kqunS7wlcmsnPjuBJrrQI&+*%o@e8V6ndaEI{h~q z9!vh#K0gN(-cnr-Lgq#le(N_0HLSav$aA9u6R%Ci=xux5` 5mX*tyB9N$r4WoaD-8-o`2 zukT_14e5d(_UNn=BSwKmxc5PR*JN1~L?q&;kC>2j8q=NRM_;*5v?t7BcYup{xnZ{} zIbzPy4NRe!-T1oBGymhA?mv3+VnxY|hp 5jZ5q$|f~x8H xudC@G8f(}cB&f|TiAs~ff(ueZm6Y~8xjE7l|IOA|+BO)?UL2<=ky=Cx zwzy||nZejm0cDbGvHG*Z2fUSPnL+8WhO)2DY3X6W%7NbqLwZSD!zJHk)_Jv~M+EL4 zS7x};!S@}vq5{^-U@0VMR^Y`l0bRRp^A3VNJjmq(Wu<^jqxl^_D{~xcgtRq7oU A>c>Cl-QIoEvFl*ck3{zgt z$PH+Eb@cqobdeqNh&}^aY*S2x`n*W1kfrudHa^UOhhQjzDO(!MFMqvcx&@-zQS@_0 zY1+Yv1I~9?qn*LMn@Es2dnYQ0sb4!H?-qKav4dW-3?Za%U( O z{nCpj_nsRTxg&`n_1_Y6@ny>y(8hT_0q7i*!Zie(&Zj;PPh^OIx|{RLrKCo(wJuMQ z0MfFsPbjVtXiNGT((=D| xQutv4DHY3 `L5Ms)5UbW{$wprSQP5IAGLEz&; =lqPtaEZkx%EoE!%nvQ*wK5OyZ?+x7{d%ZGB^4OV5oXv%2ggJPj4yq`L*v N=>du zN5Yv~zPCmiWm@-_zueBvakiDLW{X>^^TW(5PUJ1Vz}nmB?E3hPw0wKQN!QeP^3le& z$dcHi5Wn z84NcTn4m7GE4r6rn!w>&1id9l1W)Ei!5iM5e_y0=0AwWXwXzL1UX|0bQ1R<4TG- zQHA)3NSeF%w(LA2NSb3wsJ5^h0y70&4ubGFT!yfFB6tstAzRPLx4og;3g0)vE%UEG zp8~I3>x+Ev%zU2(ylvT aSn*)Us)zUq-U+JderQexR1{0%wm%w^26+z= zGN6?(Ukr}bT4aWVCu`yS{Q*S`2FBs%wt)&nBIrO1Ne0msQxm!t;6{d{5cqI&$JY6P zEk+-&=OH>s4)4>oCmsyM>;mH94)_+N&_8*JK5u&_ya$fRIk%Oy+`lkXqU3}W1oF6n zL GQNIPHF5%5}zz zEdez+LWYd~=>&}Dv}y)O^FOu7-N-->$flZMHKR9Kz)heVo)C2_Fi*-KK*0~ysG`}q z=OXF@hyflClTZC}3q{vS&~^Cu+5$$<$5*(8d8g7Zt6!#bcxRm `v9*o6gseVgQ&_^o1>@Ze zC8#(E3r@_97Vmsw0uD*qret0h;Ep@zYxK?cL-&K4bNA!4!It;VBB#Jp!s8L{0?{`B z$bMckA4rCbXvlPg?M(pIY`(H^H1In;-piUth&^qRBABp*@qyc`rTwpd<9-Jdim#;1 z)CK{wtdDw6!M_QUf5e8FG&Q2P%*GwtDotY37;mREUmU^u#P1##jW<@i`C3<#h7ITw za(6tvf_$S+SxC>e_yb2BcogRQNJC7236b72Wr=^z7$fN-xdr1P2jvPGC?`7xUQ>0b z3ZEUI^qDHBDT539wObf;272$UxWOzLKiv!jp6|fcies+2Vm0!Wz1SekkCz0USk}sF z3VLt?uC=%E d5gF!;G zib^7Bm@=AtnOYjqt=#)YX|R$tCS(NR$Xt^{l60Ni?3g7j=dN7A?`c=0ChJ8wMDblG z+6{g|-$&heAtW_NIqg?^Dh;$;o}W#K_U9GWXH9C;;Y$upQOVR726{^q+rTdZ`E9iY zPpfB<87%SrkAr9&)4CLWgXU^Br^i(}<>_72`H+eG4Pj>IrgmKFnSY}fqN@tDl4k1W z|I{N=-Xn>DV`sa|;T#se`R_10>~|RE!7Eft-qg364>n>t-2>&}8B+4(RLbV|FQ{_{ zxEtP?I7nwV43)Ay{ikCrL?R}n(m$aT7a{+E_TOsBmvI(Dl17wIP(|jufXE#Ia>K MDc)e9;bPkl3?!4Me|aHE {1R zw=;7-|4jJb_ww87mq_4pseTW{ )h$`jt$a zgNbn<$wB|FigF_rmkT^FnEY6-=CUpU&NthHXMn31Wy|2IC1DkHKCM8A zJT!#&^Tfn~RvxB|Jq+zhG#gsBmr$YU|G6zC)~!Px8tqVhh>u>t2qzvccSx`x8m >d(4oK#1leQ2wBSd-d_am_nA?eHp+OAPUa $|HqS!i?E6EXpc_X;{V zXEtwB)lJvPU5jN7myD36rD KI;g`KXR< zO!V&4Ya;_vap>p9@Ioc{C9z+HyB+Egjc0OKm_xTgyq`aK=54Od?wB6~Yrc{?;xyf& zpnfLc3BN9z?Hqcr@kk;rOkGN$6Ld6n^$Es_$9G$KkY~so4sXq6898L$k$Ca(6vWV| zOrL3H{pDOKaYu*$SUB&;M* U$Z?f-sGeA;R9nF%OUM zmZlh73j|pGL+oGGz#G)KNY)D=Lny$xxHu$>M%_071-F(zamL?VrFB)ewu)~(ei<)W zP@La5 |rd?LGu^(h-GXv{qUwD0Mk n$$7#_Th&vj_%D2<`CV6ftpTp1>-{XN 6=f#b3=T4t)@2Nhq?vFdV3>h^164WguLIfY@Knwj0PQDf2Ql8Iw=*B zXz6t>;SmS=J8SXob*^H51bM#Y|I@K@%4WN7W1UF!;m}Z9sq%B0f1SW>HRoQ>j}k(+ zG)^xLA5_vvx=NtYvD4*q1888EyH`Y%9u}!Yz2Oe+C7oY-a>GCMdh)zbdOmY>vl@_R zlNErFp@|?o%wluTSi5NYvRBpc (8^TdbfBzJ}YN5 zW%U}zU3gcuJ!o016t63VVE#L`;m=t#I;@8R2bZzp6f#%B`$ChE-8dq}_g)t3mG1iz z$on|Ngxwm)8h$!k+U1gXIXm;7-V&X;rMSo=)6Yhq8`G#!XE+>IJ|tQ0XQ(hNjx^ce zkZ{7p@dr&kWU!#z@*E#bg(3T5 ehKVwY2IVvHYC} zs8p^1t%CCAa58;$6XF#|^z}u#aP^r5Vw0GKo|I-T#)o6DpAxEOB2z~@yx5*nh_ZM7 zo*rB@CWj1J2J~b>xS> a>SD-ri6_Jt!5LiZYPw z8Y$?rYb{LDu9a&z6%-?t1NCMmMD;4WA{&wAXqRM;v=i!rKcsGEPQHUJ#dy3cDB!+6u~BEZp_A}eC1%aXQh%@#wlKYzN>mR{|+XATV{ z@`i+xZtFuQOjmNAGHzBL>3;elaDOw0P9j_5$7N4ud<5P(ni6Me5bc3_SsTvZq}hB? zxBtM$)7CeC$a9^*=&L~@8SNrwGS7#D*m55QHMIDH`}75sGp4u0dVMW~!Y!k>-3mTG zS hegpW?$#ZfTG3a zIBl;j3d~8C*tAT&M1X(kev-mXfU2XTMeTXG!peiG#g(tyc`a2aqZDoq36xj(#sir? z8;z-Y9PL_kE0v-%YqDswAA(Z0O_l!s1x@(LNo2N97P8OHFCo16ZESQHic8ksa_6wC z>ow5_QFr&_gAwoZz?s` #XaA#Z?2J@D`tZOGKD#Ef=% *Rc?`oy;n@E|$ay zP@V8VR&-6tySX%YYcJy$VvhAUXATh5JL_l9^+Z4roPwn(=rg`s&K$=Ee?h~yR^-XE zfI-o ^C@5tFI5d0G|^JbL#$ ekTrn12kKBZDDYcrNHU&5()!E<1Dih|qJ#5-Bf zgnDfjUFbn`6#Os~c# zM$aI@s|AUTSgGW`$RGUj*qo!j8}EB^bhjK@Tjn> zdrZs`XMNVJ%*KJ3YYP9~IG|0BXg11up_@NYa#~MRbvA@Q4D#Px;PB9d3B(^co}6-n zg$TrZW>5D &3o*IIR2n9UHhb4t6ycE4U;?9-x8@COE;QmYto9|+sqzn z-d^PLkvF59l!l_a$}NN5Vaa-uzooQI)(v@4H82YkP)b7L11!^4msp5bI0=$%zDAKJ zH+@-&U9N(%CGrf$QeZIeG?CNTWp8GfD_R5EAN$#Z-rrn;g_(U-9CPK+E%A|vNz(Kf z@|`hmnr?~66eMW={vC<;8mohRlJdV2{JNIOv4CH#zb_W%M%))2m}saD0*HDEg{!5Q zwkBI%<0yA%Gk3|8Y?x$As+`t1iaL3~l+{(r{HN$lKYYZI7$Ww=MpvrmF50Uf<=X#2 z4mCpH&a*Y{XgnN}#-(tW-skMAf|e5{dm3dzn{mKoZnHH9lIrJL#6s+r;*zcOXB9I< zZP(1XsJ%pIdr$0~t)H{;vy0}6UD~mCf0bLwT6;?60QJ|`rix9eMha5tGujL%xJy_K zxfPI!4igGmt;O~7!;p^%`U=iJnT{C>{ax0@T&;IZ*_buG#474Qv(08u%$(a&m>b7! z1Qon^ Xi#v*X1j6e=`Q$}_*g282 nqXSg%_t0%#|h=e|D zSZ^ITPh~V*;_}bhSHY<2rN9DLHA?^PR6r@d4s}Ev= 7@cVseTe*7rRC7GGyFLA(LKWy^Cz8&{*hX z7bky9P<}`Ab0R-G&ryJ0!*V|N$7QPCKfl9z3gO87P*B2QS`A~8?$d})0GBZ!Ro`!i z@!*1?P@d3$vztr9gOelPdzAT82-%T4%@K)IzqF?aW 0`P&8fIAn=h@h)!LL12hA&ur#Q za@hF3(|QANyv=3yJ>_LBZ^KenNq#RscBM4L56!|^Be2e!94%ntoj5u7Q}mJ9L3@DC zKrQ(N`)LM{Rh~Seq(m7OJC2t#4E$kp{5H*~@$=!Qt8M%B^NX$Laq)_+=lukzhT&4l z{e+flN~7WIiuoLWLh6;2j8WZ CE5Bdxs4%0W!fmT1o};#EhF){| z%Z3a>gL2=G07k8=vRj{=>1hXq7SS+c_w2ZFd~j|8&g}}Ed$r*D$&@Oaf8tm=2q@u$ ziq@k;M6@FMG9)UU<(6@HQ3W5ywl}uDmc4g^I|DD>UJq^bc;N! }N^5{k$Hm=cZ$*-FSEfd!2-ZtqreaV<;F*;GfeccyS)KBa) z%!V$~Id8qG8Pfzb`a6i(M>d_I#ov+=#-IeHKU;NP;!y`M_v~3(vqvR2WiJ 3N;TAcF=RX!SM{VAF14pB4<_wCU&)#PV)x4PE_6R_QZW} zWPT_5mTq?G-Aw{928bvm1g3qNFc9uLGg{la? l(h^aH8#3-2*AR cpWI_ZZ6Sv1nmnIF<+K>%)b`U4MNY`dIBnVwRI+ve3F`K@Ol1dY!(v&=Fkf=G zA-H^;F>(yVu}7Ux;R&54$FTINuBpSX>?qY$E*GT)@A|E?kwH@GfO0oH7`lu^FYS+t z{s;Ol|3B9Lj-cwVCn#5&F|0jeyh+ZLdmX#VLfr~o!TY%;;c6CyoAVAzNo(GTlZC%P z5H1*hJ5*nsRivsEuhw#%!43%`t6?{)k#hJ&oiBy#K5pf?-9YWM%Q+E+JBnb*UhjMz z2fB3|FCxMR1v1{!cKyKfWJMm#q2%V{#3b_l f=Qz%Q|h~04yY0nMe&$x?Mv 1(IB)fL6_^PvwMQ-oo8!NM=QBk;xlFW(ROIf7O_O>sF0X;l1Tl%Y_zO@6APTgK&N zeWREXZo#T7Ys+ZI1RMo?1+b I0_GZ#l|4 zP*cQY^GCQeT|kJ;6>d$Ayd$JX1=w3;^gjE1Dj))DnUT%sU39^pFkp(iq$K%% 93?X1dq?sSd+Ajinm0k7^GIT{oRSSmke_Qb8?Wn ^Vuj~+JCEu zo*5}yH&7HO^sd6|p<{S2!KPI{lciA%^Q?)hD+$y40X+)6(CRA$wyI;bk>~j7X~^Ih znTU2T)}XbaB|w%n)x>Z#N$!m&syO3VHcM{BC;BCxsAl#&ZJ3@+*jwHbK}l)s=wS$n z7s;V`X5U(kA3viY6728%NJ;)w`Cpo$WeBx+nYrozeEAVXOS@(D?^IIg@@_u$XCi3B zeq&ct=#gkb^GU}1>vCz=O>79 zghoY44fc(a_~@ncXt|Lu({Bg)a12o{gow!$<4j*P55lh7hpn9*=ZV*1CQ_Cb!fLW$ zilgUkI9;SgS)tI`P;5rRMD(_~m}{{-&(W0pFd?Vf`_$|sWv^92gva1Kopx!v9S4^5 zo}6C~y`2uMe|!|6!|;b^*&vJ<2O&VmWet(>C_GR&==|&z(6zj<{fqEXwUBK4Hg_3f z$0cXGu1+Md;kEIDUOJz@zD;TWUzdwnZ$NeVcMUrt0DuR82Kg`9{{ObR{Ga0e|F*q= zeEZhETmR2a9m&$N{R}@suEgF$f4QcUzlof={1F58#kQJMttqpJ|1;|O m_}Z-D+c)?xo2u>J%TIBD4k*nk55lQF*U{ukD*jg8Fp>CLV6O^q2@ z= aOnw(2jtZgzfa)o{lkew@i3|Nv za??5gfH%`pO(%~|`O3o1j6F$o-KYc~jX$+F(X#QhH{T;;!uL7GK`dn=kPD*`!Z8(3 zL>OtYYF0G9aH>2xksdb}p)2Ywi_aaFATl4F$&-j}lmIfe>)6Hi{U%AP6Fo5Z)LM!9 zV_~3@L@ iYJT9pib$`2^%OI@{y iu`~qM0uPrkB0-=am(Q9^Q4DLy@83=}CIp zsu8l}aFVuNii0E|2(^dbipnol(+Cp5J=J%s)=q ^qGYj*TrMbBzxbO^JMV%a7 zoKqi0_A7&M$zF+@4S}}Rx>j{=cbYWrWW0|`0>?V5D(KdzrH!N_NsY_ljSs?Bp2NJE zjg>rAU2y`*BVOle#R_dT1Y~}2BoHA0GIT&s^4rx<9d(Ugx;Yu$+%;Jl3v?67{bi#H zB4sq+o9XepyMv5_v^fEH7oW?9Ih1=ns27&c*e3d EEs zgm9r~*)1%k36z|p> #OF8faLISWognDQingM&HM6jPxbi0`^i(Ma1}3}D?yIm zf15&%4gp>mFQ5BSExXkr+BhE7-g
VekIwgN5L5vw=iH#$@j^!z%eg5 zyJZM+wckcqq6Fa_^!n$+;T1ekO3-shQV{BQcvZ<4F6#}>Xj za`wR@Dj{b4`OO-RjmB6Vh_eL2v=|aY=3Q+Ubs*gQaM6|Ds-;&f*-FZEIpBc^7;L>1 z)H63XH!v`8l;eA;{W?mKbAEhmW>L>G$jTZXjO6be%HKp_@SKf47boD159!lpJl;P! z3C#AceiQpT9 * Pd zEVjZb-5Gn2eUD4M*ca`<87Z5@Fpm@4&Fu*h%)1p8?)xs>MEhRJy@-nmlm~ON0~39C z67+nfxCJFozgQfGvP%(C_1ZGpbFN_LD-U8C^D7XWSQgmjw8|%Pq?-qRJLV`KWy70@ z*J=ShAwAF;S{=+Afe-v&6jlS!?%u}J)rZTDAB1Wzm+xYxt~rn|zo<1^LVn%lOnQFN zY&>3MaT`XBR{Y?!;#t>D_igER)V)jQ+ikev|KYRpc-_*~`8AjjTybelYc5FN%)-}E z#p#j@tN;Sf_~8;QY)*KKXqC@S5g@IT+Qtg_c+@-E8=acmZc7T_H?do*igYC`b1W&o zh#%KuOdl8*zcomT_)b$kENqv@9W`igTSn8j=c9aJjVIHHE2t;&&7q)GvgHHN4O@iZ zu%Z*}BmRoXB}mC LB8Wd;tSZ$tLWzAK)ihJm{m3xN0@@iS zjL>GI&_Iye4O9+Ndo`+#wjuQU fwTOD55Xz|K76>+UF^2+&IcCuXzR&6eow6Z zgqZY)uyQJ26yu9twO`=&Nhbum_!6?f26m<6NeOccB_M)tuG`{4S_sea?Q=!eDex{y zj?#-E!Ly6oapfGucEsRc%kGCSzApSUV5e0S_P!JI;w9MS@TF>xUZj1CqS(1pm4FLx zkybN}?;rLRbv*in3z?%$`&&c;*b&A{iKJs2qRGzFwJWgQa4m8QuwY?S?be3UUSu2{ z)yFaD%dprf`o)bG(US6t|8f7g;di!I!(9`t1KKYj&9yhyJ5qi8d0mw@*HrIPEw*GT zeZvlG=(}N|Hj!Q?RkTNsFxfXZMa7Cgh6Y!bY8}zf`BeU)e6}_?B6|OPAJED}+@h8d z>UPkOHzjEP+hJ$ kk)B!u%d@FbZ15taTUsQnBpme_c^Pi;COZ Iy?o1ow(Hc zQDrh3XjE!|d({2W@^#1 &)-?;__lNIwmSgmX5}AyD`?>5OU6i zQ%+fybdDtZasqxR!=?O%{>t8}lNu}l%LxtafH{OlxufM74qfYtAO7faUGq~I5ezT2 zePuT*n3;aCZ=&yFEDTPi5aZ#(^MDphj>>(8E8l-slyDjAVe5%fs!jjo$}6NQxX%;F zw3^=(s=JlOIq8DfS6ARZ%F#*G#Erq1&IxA7!#(rQgpMx1(;<%knU#A!D>!DDoSuV6 zTR@RKl^?WRVri(|B}Ble3!8bxu}}W}2yzq>G`GA%_^|KR(+SMTb7?uH@uKDka#^sB zgjM>pb7YVqD!W42+3CXA#1G6@!?Rc%<76we@4D9uwX2>ea2d{<*j;vT9J_vt;=taG zarTN|_3wId=h @C%ee&zg z_X`pBtLE#WTdkUvH)@7kNbdouRD{VMX)`XrgEg*b3vN|u_Fy~X2zU0TpKp0_eZLkT z=LA0k$T95GXvo;*ys^l~IsIkkW$_XWC#4Nfb@W+1%Qa%6dE-xyf!VE=X`?F^Z+-un z_cS~_-TpBVnlqhEMMvYq$Y0nSuOxV6m-qKJzHqB{gmXJbtK8nz_~3GJ`DXOiiw)#$ zJVv4-82T>2HU`= LH(Y|tW&h*?XVv-bcH3$}y9u6;1oy7HN!kaqm>;3Zloxzh8 zzV?qM$>0{E+?kgncQU%jZ+xym?>v)CY_nGx+ntI}5ul-)<_q-Q&YU&kd>R6vk(!$> zEuXLNpD0bkX=`^<3^mS8AU;brun=RE;qK#5FXQkmqkmP;&np`S3ovr@wiQ^O_pPss z8g)U)B+VHU$H4Gx&M8fi#dOY1HllK=m~4tg`zYXew*d(UF1Hzc$`t_W3l%(^?OC{+ z_!|J?tsYA2*vKM9PKR93)CxNput#d}L0@7|Stkck#S-{Ub#!Q$f8K}#dHK|W;`tdR z3o46~f$mROPxvQjq_9PKhC&-M?p1@-h}w2M{c;=vh_?5KxI_w9BTUWO?K(?9Of($d zmlWSNYuuOgcfPNqFQs566A^GWB2Z_0>qlecb^X2bXHs7Ic|j@h!uz|TZRSshN=e_n zkequbM8cc}pvi+2*4bzF-fs%9qoU2@w3KDaGlE@%aHQeRI6K8eX0hk2u9S`U`2||* zVtxdT)xwCH4ZAj~G|N9BmYiF-@V@M<=8jHteIC}mqO@WeG}G_=)Z4d4Qnc%g{1{$X z<1bhCSG7zW6#rfyCSdHUucVCVH-FmZUPzD4)&)oS)CevH`{p$WbAd<;p1MPQa(eFq z?+FKNjqEWwoqP{#%xCd=wxvTGz4Uu#qJt32e>p3Vhk#5P(_J5rIGEALf6k%(FVfyI zzLKwr8jU8HIGNbCZQIVowkEbYv2EM-#Gcr;ZQV0}JkR^w_kO#d^2 zs@)3EW2zZlS+ah!2}Sg^Mg*(9rdB%*M^V{h4Y%Eo9Ya*DN|;>J)1%3>xkc(jVYPA3 z-%_whhscuYjM}omZ5`F$5mvILuOkzx&i1jM^S_pE>wy>T?)}&ZWahY}j;Q61X%b7o zla}o+_2@Ec&Pe9bJ($njUV{E^_sK=-^}+RYXwyMb`pltz=M$z=SI&>*n%Vnq<&7%i zh3zS-8XG^Mev4tGtNIOM8`1eF=*}0qB@E@K8+NC=B1zO#(QzWNbFCzHmu3sF)k-*) z``vbOYTh}t7&(cjnp!Qy(a+|39^O787(Yu{2zZ9eqR{#fv?TqbX)(Ao26BN41Kmdd zkR^?<-`N`6{qFm~A%hbFFgp4sp+)ARS(I5A<3Ay-sQ>VS@Jp%(u3@SXEUFp$kO?v} z_!=dao#-FG4lds0lR2xxS*Wr-vRZEVY*5nPa`;)wVwG(vA6%7?- NCX+5z08qot^TI)BKsyHUFCHJUj=t@H_vK5rsctH;Xpa(>_t}wD zXg4QY^COn4R$6mg_z0anF5rj6Xo55XXI@DNIM22@vrxI;cdoZhe2{B^-BoH4^JJs& zxCA=V)q**>UV3k_t@&cT$Y$M4sl_rACieE6TFUdeU_Mh)vUA1uN70xSk!GTV{c&)R zXN4pWZy6p!M$gu)$jcgR40UdQaZGS8JBv`sPN%-PDRT%@mP!*p@~wKs;c$?cn|tpV zJ=RabYVR~+Z9F~~GBgtLd|)_sA`y~SR$Li|N-+hjXWCj8fZN&kK{P-28Q= V9Tz#ttesm$V_OHkg+E&Tv*82`9~F6(lxBR3mRIY@1h~>m=1v_ z7Ij*Dc(T?KJ*@p`W3%Uur<*W_(}>lX_Zj;tOVcUF%`Ot9F99Myk~n-;cQ8WIG#oNA z+$vWZcYCaT^Mlr&TPmtGR_ZD9vCdymW1B$uE}H-Qg{O@)Z=W9IZ_A-)$y8THk3=vL zA-SyLHGXVq!ncy=t!dd5FJy_CiKYll@)c {tf-6Sd>@87j@#1pcWQkl>68)Up#j zm!J=7>*pwv`w7EJDycA+t*L~5CFQU5(ix*q_=)@tun}JDIb8{y4w8ilO^vA&WyORv zdp^cZ!>QdxAzv)5bA6hN7I )PgIkcJY}u6mY3Gv@nZ?Bry5@KR 0ma-)oM?Z*FGQpa1;=}ZWc{jH$iyD>EFs*b7W^o2386D-Jip*N zgqQ~*d_f`X4lUC>Bl5UZP?giMX9&-$o~$<61aXempiyvF|M?&i$N&Una8#gvic{18 zMH{Pv*@&r_VMKZwVCHozL+Q?m+2VRGT(VW+LPjXXUZ@77Q0rOM>eKO!F=CLQ1a2bs zUXZYg9RE1)jc1=%+fQr8RL_s+!(0M(@yG1XTc2QfetvFVUbxwkX*sxs5XcHXFbmTD zw}uLhl5I1lj)zdS>gQ Db1?BjP5bzY`8|d?-aAo2JW1ku1_1NgeQD!?O%Pm^SFMgQ2SUBq{M8C2=^q zL?Padwc0>8U))AG?ejG!A5_Wza;CR{D&yaw??@vGfS}KsAax$%;u -s zg g}S&4D*?un(Ds|>(p6rLwgqb z`}pok^^zVj+J>a?{Fq=_>BETIJJgtRJcA6@?~% bilDA018<~`CuYI0^$fc9 z>cOsoDE v?Syr8+C*{MJ@0Si33#bU{?F8q)MlUB;z{L8vxiWw#?ZikNI z)1WNm-DlwR?A6VzN(Lvb^a9HoyNdSLt%cuC<`(z2?6MB6eFyfmJR};>R=(H7yJ$DZ zXI8aOHneQI!79BtX*eJ}bnAiHk}L(9{)I0-C2sLU#B~vuI{TA?I_WJU3$cyCy-B;N zzSN0|(o3j0Pr4YR!1b|Cg<<-m9d1;G1nN-ok%29GvM>;aKgav21_=EYkq|@iK%gSc zQ0u6?%N-2aaVl{6H2fvB8@n83ub}D6GCfu)fCw!ixcBEp9}4zE4_6tg3?dH}Rj3!m z`pl6pU3nx7#>c lkr1KdUHARG`H%4LOx4U&w_0?%iiS;`rfFfaJ`W} zb}+~BR8LlpR{N)fcZ#l+DY9@0W1DQuL91aWR)q$=t7Je#EPt9#Mv6!=ZD&p&oNv?D zB!#VIymK#}E5^>rK_$i7(BAlXYxov<`81TX8n|ftylO=CDs<=Ij^&g-|1f_TaKDW& z9I+BxTGLq^X{Z&kfxX7!H`-z8yPO 24wY-k~Q<0_vY7cOFE&-9N_T=%U9e zv@21qh2vGIGQE5iw&ObgV-z)c$yJ!J&5CWS53s?;8>oBHm3yi1u-R!95B)GRjY i20l8X8W#%XUkBo7hR`4-M)`#cn&1bbZeswrZwa=C&qTrSyccA(DfL z<2Tv|KntUbdp1rb@6M&*G;lAj)#|orhprhdIAK+X_mjbdnf9R eLi8mxlyTsl8Vc6M{sgb%{E-ft~Rn;3l`>Uf8;G;)l($e#~hchzZ)3>^) zxVOr}iaahQ{aj;f@w9U?=FyrRk6{6U7Z!K5v@$3o+z2=s1+*s<`yO|NjCRYEUVcfm zwW {?q{|u=%?WB zH$|9O^cvFfU`Q)zuriW !youQP5Gtj_F<(ph!7xS5!!K7Fai zY!=a^7OZV-S7~@fhCN%y10i!$(iVlRk9wKGIo+&RD`-dC2i7dfLP#YM=qDjX^#?&f zM?yTeAxDs*X<2`q^l>!Z<89!@C(s9F*P(Y#_g|qSIO^P(vq%sjFp*s^&`B~mzT!@T zL`A|kY*3>PDBv5D)A+(TdzwX(6zMFj&S}Z@>!$D4GV+n>BsB>a^z_JTsE4);BfHD# zM`X}${bnIP$g-M+&OGx}-(Q1i)%XI2b(dWkCabY{^VJVn(e2GC#r} f!<>#lXXz z8kGnrHGaSzlu7n|gM?u2r2Q#lv>Nzcio!_7W)No5g1$Tmnh|K(X+UOs@B68h%6Jll zG%q5(A5Y*~z-C+7D)Zh7?BMvZQ;w6r))$VT)Tz(+%}<`!+g67|$-?;zE#U25tI(b_ zfgDP~ahrE1NIB#NF4d4!1)JJmNu|+T-9zaH)98Wt><~i_&$tbz#~RPnO-3o+((0TR z@A9WTa&Er<%XsBv+d6E6RxM@Jd0lL%-5EtMi)N-`rWIjSA)1^s$BTQ}$(eg&Q`u0C zUzL(^MY9{~W_G?f_v(bYPWywvq6MIc6^qV>Y4fP eY5|ECW)P#>;V)WoQL>oR1I9v&C3;dlx>>dFi L_bRqqhF%mz%7<;&yqtfx=m F|J&1ZENuk86T{OhnSd$ zlOkNQm)!$=FDmDV#i+R5_pMrQ@0lMSd9O9SM)&e4xpmI^;;*4_7rDazctU}TH0Qtt zCM_M6V>h!eMmfCCrWSAx0lcZH&uhavv{`64J6Df-4{P%#DWp&BG_S_TQQ0KnD2#UX zWQm|;P#=SIxs%%i1L1~-)z|H#? Q KQw zQY@vYW&Qhl*+(9~Yp(Z7I*~gz>LF6qgIcuVj^q}lJ#&_G$nShb-A>6@ju4|@?UN*q zS|UP*Ff((pNOR}0huXv{@UjdqimEFsi)0qG0GEZ446ChW;1)lGW;R)Jgao_M6(lXT zixwC=c_xhxrs!HYN_pfxSR6QhjA`BULwozmrlfL!8L|YU{CuCurOQOM&)&EK74K8~ zwOhyNFho#}6nw+sYCAG=s)oG3w+}u5Lsr3KL`FL`0EVFj=cON}S)TtLdOgGlR*N$; z?$S_`G+8nR%(U`A9gsfpP{&2c8($T@*}))f7`C9DHr5{cnEchULb)~><7)bS^fh<1 z?HjKJ*iTkoGQ@=ME`2!5SZ(#X7#Y*HuEDO&smCHbWf#!j!S5qy#|_b^iRNw)ZM~55 za9#%qx_Se#3q%;Z9QMeuSO{hq=x_HsIa)|!or) Fdpc&B8^?vy^1RVEz!MD|vxYI&_7v}Tucf#h3ZLNMZmzuZa_lOKmJ?5> zM7A;6zXZ}Y!TG4+q=&>;I2eirX_np(k%jUM-ePTcDVq22>>zCJBDb*g+9Cv&n?A8H zpX8{0v)BlyGi3}R&~Q*{0Cei8y;>VhTq1_34@)AV3eHGQYCoJCZHCol5+iqk;_Ujz z^J&m>2mIXcX&Y=NuNHu_wF-Ns(hVGWHT+C-ib6fZB4>lV^TbTqR9*-_g8Xo%s0nQ{ zWP+n3g%Iy-*Yn_XmHJ>?`rhr@X q=D0(xlrN8m+0@WhdSH$oUJixb`ko6~> zChwy~*i_mOzZMbEo!O;a6O`EfxCyi)sjf2HQ^P$%!!C(9!cZdsC=Q@jBzG_ETCc}- znL=>db^J);agZR&dQzqJ=rXpvdB+}as6RbUvA&rHG>oh*wuoTlMf^yrP~&+d&9|6e zhk#yWD*@qc06(UIn?K!4)OI2$s78Zjm9_<1;A2$9uizA4H8vQfy~p=ayN#&y&NP*D zkW|&8y+B3WeG1f!mb34Ih9)*AusfXWZs8>v8%SsYq8~5lW**o~`QC&wPsYvEZYe!V z5Y?`n+S`dK5IVut5X9O8T+P)zF*LM^>+q1q7LxAuK-h0Z(t(4ELFAkwd-(=+4WdcQ zT5Ii>c~XF5wkY86l*1}W4d2YXegBo|?3X*iNOWTO=$Q9@wN{u!S%wXGt&(OkMDO;D zVR_%L pa&ug;SOV1F*BeM)&L{6L 9!#qV4E%pl+p>)N+ed zHjC3d=e1ghPFA*8ZIzkx`^(^d#g9u3B~7(tZwkzAZ#i2*f=Okf-bAar0MiO7v}iKD zZJNBq-%7~Xfd<`T*?8=RkoqBV{jG*G>Tka((TXA9jx!n5xtziWA5R)>)aLMxCN+AD zY}G`GHrLsLk*US@UQ?;>Egl;jj{K1fPLhp{(^lN;@HT%pL#w-7QYV{C!nA9>4b@T0 zDybDN`|RlPF2xt3auRz<1*TcwCirx+0}}l4(PJz;ndna`vJ%%_45#IsEg>m$LK&N) zRI5Z`Y$hfV>Er!rUS|v)(LHCjzCP=9AdcM1VmH{?->NR_5O;JTr$QZJ2|7~{7RVM$ zpr4 lFPzJ>oeY@14f`+9aUdCB1>KYMk8_^R3> f|L$D4Hh>wM_t5sx$SX*axwj?D-EX``l2cDGJMRX zuoS!4eGpM&{NmiSy@Z;AeaP(3@RH2_9;e;K-F!8$^DAhiwwJa%?H+>#di-*i ;no1&iyo^po7GRkO&2U;;2?0QiU%udZ zc}e+Q4zFHfk-6Yw?X7ksYZf~Q*tDT8aE#4U%3%9;)myFUUtDBY8Tew?pRhvEFAd=C z9uu)?tWx;*ZQb(SN7Y^D2|}wP5Gv63Xa+5poHkOo!=4eWEIS?ix`W!GOiEV2- wy9ihVH`_h|oW8p%A)} z$|a*cU{%WRAQ~M9>tHx7auLd&Rt&SECPaOAamoc9Bz -z;8a_RCAT*wzWo(KyJT>b+zd^!-6A_i30KWe>XTJ2E~VL>gawY~f#tz0#H73$ zzxqLXF~N>OaIgu1KkA+yXg`{(+#vnR13s#OXvu3K#>&8lq_6q)lF@DhJ#R;~3Xtma zfZBgxZT#f;ixu-TE|jtHGo&DAL>=_fR{qh)LQ|lD&b3As50@0&ZHVEuvpe4Md12w# zkya-UrIf%QvrIkJtNEi@W=ipnz3A1Ra&ixP&wH9HH^{X~ne7I4n(Mm_4Oyx-G>O%d z6Fv&xyLjsxc~%Xf)d@f}Ka4ydpl{)2rk_4K6|IR67U4}FKIJ1NngZ|qWu{GCVpD3j zi;Bc>M6LF3muJ=&(79L-GcP9LI$4oDc#OZ&7tPS{%?bK^oATt&nL}Ps^Ic)qw?wzm zsMRcpgyDJXAResD@G5-uY&c9wTRM;N**|$w=h&E)9jv#nqDPkM_e(k^qUxzr)JID{ z=CAD85;E!x+1iAgfAI^-<|43jDSSJYHZJ}pho=gvXl&qFR7oWpj0m!t*a*-p5N4oP z&=2&se&^;;4{UL*MXQXSpE2Dv>`sAhd?>+D46~3{uk5h%Lk!diDQq80JS(54T?qeM zCngUH@|cRSs7HYM*E7<4C-4n)eUHS@hyZ+^j_yafgJ5frP;>gPr0j2j85SyFH%;56 z+<_>9|A@{0d;%r_#M3Vz|BL(oI-Iy4%h{~f@PEez5cmbL!AQmf{twL>5MhlzBEMjV zeh4a8@c)b>fB|zWqk$Ewj07m8`uF`*|1xCJc}R^Kjz*{Rc5dr)x)3Xd>t?js<#p{^ zgN44xg>A<7w;Zm=OF&P^E!2 tAnXH zE*CJ)$;nYk!J!YF1apmQJZu|5Qz?YeZSG?%Zu8Oe8>QZSMd_GsuO7+(`q@{G!y=t0 zb%E35ib)zAXz9u{+sparcdptxvgcPf{6mwBgeB8|QA0q_5W!#)eoLohMc%+@U{Kbg z+zLhVhs8{)W>DLrNaFPFtX<)bSI2d@T{}Q&gH>spOwY45t9^V+Xx}Q!l?&r*MO$k; z7JH&<=UAno5t7sc)Lcd`w;rFA4NKEG Hs9whpRKw1 zv*9CHwjjXe1L=+X|9eNl1ohUD4dU_c$}Dndxr`_iEsbUxS }EUY6z*ytz9V zz*=r~Bg#~Dm%;9{!Xd$g5xLERmm-jWVpdN-kD)=L-v&1;ElClXjJYJq-bWI6@6Sna zJ*yq^9D=)XHKX(lHw6Ftjsft(zo(6?zk!cZAEFN{iH N 0}@<__sBo;>;_Z6JIKzA+}OC!kA{VjG Fl`MV(>2Sd%Qd%Qy}OeS3S{)dvPUv04-a7w~mm=dKuXatFe)F zDUw15>5vfEyW4uvC$FlG dt-$ zB5)_c<}+0sZ;$~Y!64z3dN|8L g8d ZZpp0F 9D1?pQQG@jEo zc<_kV<>hZp(2%|l)>mWpDe*YJESY;9XV_UpX2UQQKtBBRBUQzq_FoWieMk$-FD`r? zc2rr})yY^zQx0QbLTh0U@*MlGL2d!#`vxvyI5w@r7=Vu84EDpbjvAXe@3+`G*0<2) zySE)tzY(?N)3Ope4$5Dz2sy@TId8 I68_p?+GamZ-z}n+SX<1^T!!8sSs+G zlU}2jkw*MP&K{#sAgaIW&Ks2XJ7IwAr3Z-T!Q_c5eRVVJ4Q|mhLSidi+IW{Zb`uSz zznzH^sf4(Q8>RAuaTY9r8y={rAO^OS5&Rne*O~Ey0vy)am!iEXCTxGt^sE7k#9!?z zdGoAx1^y}n%42a@(NI3`$V%?yycKoIU6Kww`?~sD*p`qIa`2sE)!JSgy!grjI~Wv? zGs($CKaC&)xF%C2RDPEE Cg01x z;70MI80tx&dDdZeuqzs}-rkqXMu+ t*A8yzA^?=B-ufz&q(de}Iy+e`S>f$9D _z$BTST_-iSulKF@4H9RnRE!2_$Bfh&npTFp9|h`L zkK$oyS}fgDB<>Vrt3S3?dF^ZrUY6mWXtc0p|KQ2^y$Lo6@~ECDN}Fi@v;SKk5|{J{ zOqu`nOVFTbM<~$J%OfjL+(#laZHRZ^WKT?K?LK|qOvP^|by@~zMu`k4Zhj|CQcEZr zD`;!*wM4fH 2+69VnBQmaMScj&T6$F*vNX`>A6UJaq4&SaG z4qUlE?q=nD?xw}~9OSMj_WUv;u^cL({svpUdZHRA$REB03)%+u3viIcJ$b8`P#2-B zRXsuIMtR(5yrU~R(=ms*;b2y(3XtDwSbgVZzdLS|enza-Yz<=Vd@pq|SPV>Ct&e-Z z2^wU Y&UYU&F~)Q?NQ_42^nV#rm}jgfKz&?j!bReJc##lk|Q4X6C`tMTbU zG`CnV*_lk%AR%kY&))L-7%_mJA|k)^h#ql00RQVq{&W*?fgBMGe)s#A@ch*kQB(Sd zT9$_3aYg^nxNji(;s2|3q6lDM*G0JAXWakOQUQcp*2nRG_E-S;D&VB>|6hk98DxO| zixGdHJslI6xIf+fsrL4N$HhZ`!2P#v qWR9oLqQkGwqyM`UB7-G?}dk zt$1A1F)uYpVqm0knn-~EuiJT3uvFmTW<`a!7P~+0_xAQ0Ef>8%UpL$Dt6N*2d;CB> z9?q6Sf%LKg=BY 5^5%{;y24;5dox3hV1uRN74I!Bg6m^-~Yn{dp}*P7TXv6|;cmz&}qI(y7a zPLXZr*H91?#7=6cHXY8kmwCUCf7>ccj$ddVI~OqVI>wHL_U+AbMU4XVYrqEqSnR!Z z2SOhR{2JfKE}!@Pyc%7{)h{JEp8KJT($3CzxsN?LTJ5$5cVr+-(LeDjzc640l#N5Y zc<0fj>!@faqWY@=+EQS%FdV=I^d|V-E8l$4GzETtO*xcY9{R+n$--Yg67;W9R%u*p z<=@7>QiwT1r;x+j)0&);k$NtSMP;;>mz08kbx($6O5uczi)*z~b-cu7;+MLtrM1y_ z8&q4*aYCH=m9qm3?kR={0=r;AG4@lHCUib#vmQrLMlpB{V`lu>aRv=TVUPc~ >N0w@74(Cfwn6V@O^P=i(yhg6I`5t!c1kIETNS69NKYi39tU(PGUb&AGgV zQ$Us;$i;wjQsTi7;Lm?RF$!qJaF&G`j=YpElho7XQs(0}(M`ow2pC~CvVO@eD7gEW zvxe7*qinkzl+2TulF{r{Mx+(9ZWe)}+`sly?jIE(ql`?*zEK>N7S8yU09hNnRK>YG znykW5hXJ>`9LGDav{iNJsIXio@vTG`HK<&k;7f)CT4;~2g$ArbwXJTM2eY}&mK|$# zabcRUnAgzP{gVW7`tQ?;x!8uyv>}+teRFc2yqUXC3Ben|96()r7G2grii{3r)GDBp z>R^8`#_v7=2x+I0SCyX#%sj`sFX8tWQMda&GHl07J2!E}GJkj955f1m;kfr{qUD5S z4c(a-Iwe)gQ$`^UJqJ_^GaKOgU|(Vijka8gdC{iI#-RZIK)sLapCz%EUQAQ9vnYk?+N0`vkI6_QegTF&*T5TiU(^>giMiU z&A^gtwA~pbka)PLiD(rd_Z@1M`&IV>WBx1sOs8S4c~?5MKhgd4oD$~xbUDj8lu0gJ zI}Am&47%9|T2>?$ehIgXQ3aDfd|rvDQw^RZLxAx 3&*Bp)Eab9}9o)0qqXgYcjrPiI~{eFERr52DpFW z*ohb*-LZrAiTS4e?U|(RY~4Wx?Nny3hYiM4mi-1vCbLL#NaN1)m#DQ^QYlKKyh-m; z=ehhcRPGInY0lR^qs8 H>;x-8`@eo= zZIO|ccBswV-{??B*_2`J`O$!=a~^EnuJm0}2ByOQ`_Z(E8+_U#T`!6IG>lON3uAM3 z#U)ry$CP+#B9K-bJ#+4ijeR!Z6k22o?||@ven8eU;=W&v3r|gHnEuERHjgZPde&ol zk>86w9 M&U;^+ odG8tKSzI>qR$9(fi^JN7kW4TtY`DeNj0Hdqz(L zt=9>iAF>$~M1hy}o=ZZG7dpH)wVD=uHZVD@IIi$^hlERaaD`#|nZTs43^aa0t7}%S zC<|p ;uq~AbZ*Xg?J}(*G>v-UG zlyh0Eo;YJziv95b_~; n}*uo6bkk4z7!DU@{dTGsF>6UCRJ z2|#!n)a~}=5XyW(2dF^l8Bcq-E@&F#Z=nyyVG~JPMJHq@WxKs^XZY~3syyHBlkh{n zKt;eY;Q6b =JUI@36zt|~xd6vXxZ z{05pC@i#9+`VXVgz ;N+=9{%>T%s{Dyw*8xRsQ^zzmuuua%#@Bvnn>f+4A;UBm5P(1? zFmWj}4=sE+Htb#VXAyH7KE`o{k3 +I{LW*!ZXx#`jr3iI24v0=PZZipPq!HGPU zSFiZ~gKP!2X`I?(F&vs!NV8W^ab?Q{SIpzbs?#@ zg_4Ha+yZ(xF2@lEt2cSl$u128SR{LZ zvBR&1B{JvSp5 z^7~bZqjo5l`sVYb3$DjmZN2G~PP_AY_WJDH++4NyeR-$H;{rHWlHeZ;$gu!Bfmilp zaSd^@hif0)5mEP-4nyG(oikW${#h6iYCbb8h1jc3O_p`k)W~9zs-zi(m`Sald*)Wq z lRUrm|YE4@T7o4U0-HuEeT3z5jsEex!QwZCbT$Tf0aFvkRcVI*8Ki(a;Q zJYz~N4_chQBevJ;jPE7xp}6T}G)nU(k7#;1TtC5H#(DV)foE>tVyoesu*-YcwYGlx z2^d#rda#>KtTfE3mcih1K94)>1fb>h=;%oIeO~vzwK)6ZuK4o`{`0pl@E|4NMgUrq zgMr*b%XI`RDnW4ec-5Zm)%7A3hrPPqy>!olX SF1}B zQxM!REX(eT=<@s<5sG?#0IlUhn&=NBD$ck-$AXBKgtrn5V?qOu#S0Au$?2<;)SV(N zNOrTRkwax^BcdwO)84DWZxnyV#t^7QRve2tcE$`?P+|lf=ik@~-~wY{y3-k8fo-U= zc(u|wv`vbVlfZt<`ehbM*>S#>FrzxO$~^2QbGl|&E^t{7hVy;lr)PjPEY3nc5BM$H zXS>hirH=Qraj589^Tl!Z$Kq$3=~Nb`bT8pw!O2{359$+PWhL>SmEiXp26W~t)DJ3! zfB0$+)D-k@_++IF_FJe!K@9b^u@`}S&rEsOA|KI~{#y;#zY$K41t4qW$|66&iRjmc zfUn?D7-RZY)PP^>cWQwS{h!2GIudY#wAHBokZiRzn3jPgGx67@l?x7ykbkel4G9*5 zzy~>3D
d^b#@lq9XWr@J|7h3-*}@05S#6C$#4q5cK@o^{rv|Bcn)Eg z`7dt#pV6f`07>4M>x<6(&)5HY(ENfC4*xmmudnDS5do&41kdM;`v>0sduI6gZEQ1a z5abb>Fs-AmAtCke8f9zu7Xu4dyW5pcj&l*ucAFk*A@l0Y%G9WIIvr1|n;#3X;s2H? zT0Fa12>+R2%?JV@iX_Fd>um42YO<0*Wfi=XYOOjrAnWjX3AgMjb`-uNULW1o<7{p1 zOM`>aj&;xhNabEsQ2dP}GT<^O-SUmC*WE*glW0a`3cq%S+7Q=IWJQ!=GcA?fHzEID z#fh|Rd^7xi$|ID7fa#(1YR9W22Y(Y3DnM_xocTRr^bO;ixv(gw*Y{FbJep2Zsl>u9 zkPe#uQaZ9q+r=arR(F|O`h^V+LNxT_1|~fQh=e?mxwp>axeHG42T%9paQ&!6f7_?2 z&$lT}4ULZ_p5EdZ2>S(nR8*0_@1go5-~s473ZZv^CQSSlq`9lGxYjmiIcPS>s6^iY zn!OQiE}5Wqqfe$&J{DP)F!cHy f#B0Hq&e%VPCg>B)io$Z4IPtZ!z)FS< z;d+d_3=>3$6#Z&u|2u#JLR PPca{i=vC$)x0u)lJ^@XG6F!RI1W`^{ zKI2&zVLYx}+SDn-h^%W#-w~b-#GGGT8z|%RhsrhgzC}4AP0{OTpjKNGLKn0wit>=f zwIwe~YW@jw%_&SB1fKc1fA_Rn12mKuvE$PTq9ZTQb
G=4l|%|5I24B9tcq7+g6ROg(a( zWM;Vg%uC$DuGWhfzcY>dtd>D|Pgt0<>L~q;xu+x;Zd?b;;;{$sxRax#p;z@?w{Avv znbMZ#{_^82#7bO{rhBTx`)l?&F9(Ar>qnjP3@X*6%0?#Nvj*TLo^NlaxBF&{w~7-# zBNS6xLUym$34ZA7>9RgeaPh~%{B&nV_#>+JE2a!6Q|Z%Vjh7FNXIE~M?W|S%DY7oh zClxW}6#o^l*MlFln`wujS0Av1PrypQ#XrW(3i<~(`pDU;qCFuptQ&6|=#Tajl%Z8K zEibIKK`qL@oUJSiMnTGnxKYhEEu`W89Po+B%+l3*Gx$-<%=24-;%r{)Lc8f*2gB!c zkGt^KD0~qbK0vPRfM+@%>QK?N%r@tp_W~Q_T$XR^6lBRl*^j<4DX*Y|-cv`=bIor5 zQ&uiVkklZ>cdlNUH0$yRuG&uuo7mNIj$bxsb=Plg>RaRvB4LCoI9i9a|E#N`J?}_y ze)(&9K 4fH*E+(cVr;84yDKBZm5A)6Ev-_aZ5ZhK !fqF5-0fE5*e9yi*s@z7UW z^-`m%&ow&laMqk~M1JSIm!d(*3CXaC_6qzZU9I?3o$4R_asQKPamQ|iFm@>QL`hSf zr=0Q#5)3|2pV0{9R7PU+jm0g;Cd`dn`VzRuLacMMP)Q|~9RYt&qAP)Iw%lCadcVgl zbj`_?ixPQZTo*F>G&XJfxlAR5T!=C>#(Ob&@AFAq*r#xB`aHK091)a;23Ob%5)iC3 zY|h%*xR!#A;}2dmOwy5A0b9$;Phuw;vjoa(CAZ(qG8))CmvYCJ1I_Il_BXZtgZ=b? zBw|E80XvBDm4?iWQ!OJrtEF!XFt<)hCTcv9Z!!}zw&;4p)5Y6wUE#FsbJ^_CNLjPn z>_kC1(O>prJJqIhooBX*H?7l-28(@i*hkrA>g`;yV_uS EO%!-`@ozeC+B^Onpy zGVjt)T|gIBVmpV}k7|6j8qNB p zv<$d_2m<;$PVj}Szyhp@>hxR {w78{%}he z=G^xhu6IQ2V(4aEoOI0&&`28Zf+lsK^{inXEiG~*_mzB^vwV{Cy>I}bn|$>2`4kup zpvyetP_6M)zend0NiCJSS$N|7c2glUj%OV$)Se{}4xLuwrpFS!w cq$XZ{Y^MK+)`M#@4UmWO+Mi>nifg6dGwQI+QEKt)Zw8H-a68`VDcLpD%$Od z?8|lKHAcA-cbt2 SaE;%eB(onx^R_lXKRYuF>eb$l4q2#FrN3B!;~6S1kUx`VPDnAJnDRT& z%qFN{Pt^!+jB~c)VR}ZAyuse7;q^Xa+-NMHkNbOzvY(v9SGJJ8vu5>{<%OdQ S6RP*gbNjOcmld$J6p2PXd!jkI)SVILH*_7eD!fm_ru=C<|6xV@q#IeyrJsf z49YJu#Mku;)kl{(g5J!R?JB(m2WLb2R+b4C1-VL+ N1)ER?qC*V{m!h0b=c4Ztmv$TM$GAr+Nnz; zVA@4v2Hb|xADl=#9=cP;x}nEltk@m|Tx?TOrx t$1f7x~n!Y=mz@MJ^)*WMby{;TrALLiT+=v+8O_18uu zEGk=?W`wOIu|#NS@MNC18`UsWiRt?@Z=TQ2 -5VERNkQt#WwQN-Q!@rrUuI_%PG(j#VKV3rR^>7>h0d+7y(Q z!fTs=*wRH(>dPqpT6I7+Z^srui<+qcCOq8b^}2J-o)-#;Gz1Wrgcp?!)fTxypaUey z3l0|BGNDshUAue{s?&16By#ughb{`fybSJPY1fjjs*O53+0&$;{SID6X2^$Foqt;d z4u3XjkL4&?^q_a>WAnhlH~>cxY;LAXbt^GeT%TNp#k1~Vr$(D2FQqH P* zTYT1eO&@#6(VpyC4E&t!#U&)52!P(uu5Y5{@pV(w)*Ms}(h+8hTQ-psRf)o|ns;C2 z04)B^&sU$%*Y3~P(+eoxAnus@?fftlLJ%wzKqv*K&7s#dFAU^arHOxjGOJpjsBuD@ z$q5upLS{kHZZo<@YfePgzT2J_{jGvk7thC7cg%qgJ6pHz{y;U9OG~Xin@XzQG$bzU zee#fO2{HldRx=`%;sOXe>JjB~n%$3gEnK#mi3UMP*!vbUjL@FE$I)Z)mv zUhFq5smt1!+<@xEDm@mQNX~|Dra}-B703nt0xuL)sHN*u3vQLMYBTImS@>whVOLfb zOGmt&8^nXkVeZx5WQ901`If?SkV$0k7duJwb1@-6u>rDT`*f9>Gkas-Acd%E3+v++ zpm9n{O5$_=yTIvZ`o%;TjFs!pvV4Vc-Fh#sCX~nb9TRJ8bHr`=!H+O%8I{k5oj4 ys2>ep-nnz9#P7 yq5w` zIo-KBo$mcY91VurZE&>)=(Qe8ehCz1Axo@}LF)=2)korHcNG_AtY4}H!y&*k+u2}Y zRbe)nN#+~9d$v-txz3;e#S^XoJdr^*1|kB;?Q}_-S_R{a*l+yUbMG#Z^3V7MkZRf+ z+qAPdpy8gMw?^*K{n~R{{@zxbd?-{dYuYGG> 9sl!u@V+Y<<90qP|2?+&8{N~HbGxQ^{9V$9=O(5P-*RVlp|?lOapnm} z OiD6R8|Yq;tDO$dJOoPcy9TxG z?WFEw4bTfPXbSsEO^WC8%va{{eCa)#3XXI5y!fWi+hi+#hRmsWEnfk$D!OlVRj+jp zdT8veWz;2{Onr 8^-{H(%^|M7Tf3zzS^DUz+|{ZQ~>ocL<9e JI*7T9fflw^NU zR%2^M+SBAiJ$CpcdYo4n56unkMO?wxfzyGK5(wsA9|pYWz7 FYO$&ECZo2AgF+1L~kx&PQn$40&7azm6p?Q(?xP4}0< zxD-utsveuf2gF_n2n@rir3z`Eou3EIyL5dA`L8(=4glD~GVs5<>X9 __Gc%^M z#q&7OR$@0O|IPO#iMULTs1`}5NRbR|PHSu74A{B;ZuwVLhGI@BYt6}tC7y+P8F54M zKBY5C>w`7GKK1Gk47;G(ny0|-?Qv^>kkbH+a>IuxhD&FEnKG4Dv+niO<5N-O04k0g zoc#8)ljn^vd2LWbhPT?c^}XE^C)G=?k~jQpsS*jbhY}R{&?D(K_-XMc-1Yk{mV=L* z8y&gX;_tP^RD|vSq)v2$2Ow)N-n1Svq+r67s^7ZPZF Zm7*<8ijg1(b9{fxUY4dWDW$gSipd^ A$eY-s!=P^P z5w`KOc!wv#Un6*V*|`bBb|-SN@F(-F;h5=laBJt-xn{@kqD9u_VAngpRs}%Ke!OI5 z=FOvK(i6eP+eqXTrR@o{^^a#{a!USoj2=UkRuQAjX&44=%`Sx=Bt7T>{bR|Hu*3R0 zF;n68RB!HMQbO+lJD@El4KQQn*nv5i0v2!BU}b;Eq}ZJq@(;9+elt=Or(f9`|0XCG zS=-Auei-4`yCR9lSHkFy%fOZT _;%?18BqDIMyL9jw1cWAZOGcg?qT zIQK>u?eQbx-?$zjKNx82)A2FILvd~P9w)-FH*GVo57krOKnb1t@s2Y%x!`4jciHhr zg&mJ${s8X n7uR_h>8I0V_ z!88$t6^ldbu1@8>%RGb8(%Yses|Opg{mX%xIoGp^PH|rCu^cO|!mG E%t~*`vY&*MXfKZFdrH+&+<1H&zv7rboTi_${lchc-k6H$eLWKmvSH7Pkg3W znNd7T2GT>aZ}lM3V;G_0EN7YzYOjt3!*Ro1x~Hvv>n-pVOhM>pW`J+A6!5KI$=-|& zGo1Ujmt`xoDN{1C-NlGzLc$>oukTNcts2ids9M)=IO1|;<~dGU$t|;8s;INaaoP;= zBc$c4WVRA%5LjC-LNei4*0TF>sOJ8N;Kg2uU9B5NvKg6Y7R>I8t-A~ygRy=9CQGxs zmBY2CIRB_aNj4cE_+x~d!7DGPv;1pI`TN|qKmDJ#MFks3 M2~Ay*eZoK%g&)f7Z69?%vBnkV7{rh`F^ZAyDT{})1gP
9SPcP`Rr8! fJ&8zwcxJw zuUXgWdRv_y;F9XJokE^ERg0>^&=1h+TJxE=TIx(voNqq~=Ds76CMbZ(;cJ~~Ou2f6 zP(GH*%{g+32Etmw9f<%IQbPdSLyM!PvD`T_aLOHP`EgBY5*SZVJBd=c(@ULm)5=o` ziTbBhBZqgCrgeE=_- Gh&5Y(6`N=X8V{<-g)(WCvJrbr4to}{R< zbXMuL&7qPdbOOWs4fc0~dG3;%FE@c|Rh{n)NjR@3swQIOT}g+g$uxLn;cLnKPmgIF zLua>`@KC}VSSnH4zhRn|$h^ErP@mwmb!SE}esy*BTVWLZ6`~ED2N%r%Znj+L57&|b z?7rd!bB6s)g#>*6S_uN+D)=0uIQW1byE9U516n{s6 0$>AVx3H{KKqN|v} z7C>?b7lqG#T9KadU)8+8_&(>H(@-ykl$0Q8jra2dt_%FqiVd@DG17KWjruX{)!Amj za6b2)E?2l3ESMY0LE9V7^UbS7t5{jQoWcP{baPM&H%m%Ee6M7LB()?sJo_7fSLEfa zyxJ$jpZC}Nzqu*EsBD}Goq-V$EZxLk`IbcXUUT_Pqf;lv`X{k}t;eNv0D)3yDvGYo zMs7_>NnSbh)nuJMu{C~P&8-cI>|f1K%eK2j^|n@3ZjObQIjKnJSgwgE8<{BiD%B&3 z5Pjre)S@e668GDL!a|w5LTSo-MeA2rHI2&TA%iXSaQ E&AGT<>&Cn$W1HHkGe>C+$5%hr*Uh!0 zo{sBP%JP(4&}a#QI{uHo*~-Pr^pFgPOno+26;z@JWKbpVz4q~FxMxZ6{iwz58#X(4 z+}4$yl(f-#^&uk9>ZMoi%k(&UcSkS()5*vNUOltn# R+XdtaZACi-ap3gXRH%B+qp3h~X-cu+v? zk8F~%6U~PD=}L*=X9l}11IIFKefw6|u|kJXyMHpnAMyl9CvByRY2o^CjDz(k@So9l z3>)-7lQ)XL=5h;8b&U%>4f}YI-S5J{K{6Fiuc8mYnW% %Q1Ifku89 *B!ha-3L^ObOhlu89gNIy#9FUZR4z){zQT0!XaPIIO zcU>g7YqZ#OS#7pv6tN<~sSTHMNid0(5xq5pw;dTTQQGDrWbv}L!o(Dodn9Wea0To? zDk0mKUeCtMX@Nts6Cp_aQW %rF7SfpI3RJrB$;jm2bsM}ZM_=qFN~ z`lcO^nlv-Dz-nP*1+#JVb1*3v)YkG+T@!nuC{_a<{Chu96h6R*_@!(9OM-lHjRe9= zyLO3~#E^rFJ@k&7saOwqV0>TlxxownJBubm$#aewB1uQ*t35MDlPi%ASk= c=hP-y^Eg#?)NesvMcvDuM8vAof*5`OIUA2sdAY;3a@Weo(gLK**|U );n9PzKOt9n~C+%>J8L8W8;@yF|0+tq}hA z$4IhwGCGA$73{N6tM3Bg)_U9Ly5p-G@pb|q8=|;of=Fr#!p@RPuac6@4qix%m zf%$upI}x|2c9fmRX<*j^tczJ1EU *EhX zvavH{T`5m!Vb-yEEJ0XH*XKiTL7F@Ba!+r$$L9|Ke9eUXTNo>;MtqtC*o34PVg7>B zNpzcUbPLF+h|wjUyF5NgsH_PW(Iv`w!1-F9T CSJSx>Gr~ZUxLJp6{2^TZ7u3JdtC@B zAIe?nBPyLE4oHYHFLq7;OZH20F_WfWI46>V*8NH;S(WHx2|7lOy6myY+7%2s&qv zoeBjSd7chlqjto)Z+kn?0k&1mW<&!%pC2G6;C%523>PvdAEi}L`W*mgtOg~CA8Iw( z#5>uHV`jG0jb{@}_v1j1(ELVc@KqPQVGQ$TaiZq}5y9^l)o}NA&YPV Fa zD*`6En>PIGLN&IuWw;oUFd -E>Lh{~=G9!mw=*ZyfEvXJ)@0?5VBWy2{9K7IUtdc0f> zR@5O& 2U@ldYGp@Lc;7c>{=YwWfK%P4vq7pfjRQUezP)Ioe(#lCeb?sfiNeb+7 zN!ub2_{h1+F^Ln0dvQ_aABd7`KXWSd;*kh3Y;`EoDq}g JGO8c9w4eOPb%i-KA{5l;b%>IvW`SF z8Tv)ih;R+r=^^lb3&DPnJ$}}*83HXkZ2U>~kWuy%0za`7l1yn+Cb3Qy!2(rZhQx4J z zu1Kw8(Mr ztj%Bm#!+Vq%wH2Mj3LZ5c?iU>(sdRdPHt(C>aM$dbgQnLxPbxOwn&zn_-meD7RS*t zqaZl7FLQtk6WnJPPf~c_5t2k_vLa8DDyYo0TBI73H!ccQ<1(($M^BRjMnxE#8tB$% z29^2(Jo+G55ZlETX!__hk@Px}U|Ly#NhCzWnq~Tv(_=!4rJny=@Tj0`XCB$679$;> z#TCc~5$cK&(0LfC&`Z^4R6QTl49Pi(tJho%{{;m9LTPuhe2h9vF4Oe~U}<*qA&9*$ z2<8Ho>P=NZ;Oa-E?Vm>>-?4SxLr=*8lT Whz_fgxVwj^51afF-Lu4P_J`xOd` z4<063Xk`R96LnXY8rX0PQ~f4FS~c`^V-Y%O>f@MEJrD0b>^>#Nn>e``rth)xKK$B{ z_cpk5V7WYmhT%W@81)(yozgfZmxNlK-8SJpKb(7`^wY$$cLd@SH)ebxSOTQvae(?t zf-}{D5sjL6=9+?`R^-%!02%NL_AWhkkOon4a?Z`ZaQ%23QgG9XINT7LrDYlo!HUMI z_$#-WT!BUnfOIof{H>aal_Ug5y-#89+61X23jjZiuC&T5v;+}fzrl?%>%p_A5?37h z*ACx!2m~I~=a|geIHEMSqSWWi-!zeqYh(f~TcVFM;ZeloH)<+pw;pKf%oSK-wPq!S zh{y)8st?Hr3it57yy7tvn}6|ZbN72T!9;BgvL=JEc>^l4haePVsU0Zd;%b?b0Ps*u z>N8%W(Xez$L`rFJ5WdQOs2+0z^fJlR+iYO^YOlv#n5?TvQFbiyt92$hnzqU6K)rfL z4p4 W55ooGb1*k_c66X^ncJ`|IqyuK1u?y^{*p8eP zr)~}7{1v~Q)$PWYU?X?bUd?mNRWb`7!+XCei<|o%7kK(Bd?Gk{Ra|Tn0A~;9psv7c zZb}}T&ufWPEFa2-X_-^)9C+q-g9(63jy*m+=ym&TKApqf3d(QWq#AV+0lZ$W9jQX| z%M>6c2Gi47p50z<{8{8NJv)9XnEe3N_;OAK)8paO>`bmf5@*E{mx)O(EFCi|3?JYv zkTz}h# J<+K}-jp27 z#EO%(>xjrqVfkRkOl%*nT64^V<^t00mKenu{x(a1$O_gZYjPdvcZ}6NL+c_j;+{~} zL|(f9AqIE?A@DUXmT-gx-Q*SLe#x|K_W?+H$SskJfGoS|KbcFEs9$230by2^2%#1j z#2b6_1a&I8C?+fpw^rL74a*3(QDRJaC>9scXepXYGBla&=WqrqSx3y s5nfqfa8L7r)6@} zxFMpIJ1iK^0N)Ty7v>uO+&L@yjb%bsYMuC{b@kJjAd|o-gpa%&C(l<_=-8DI_!qnb z>^@%ouc7!Q0BXYkOz?H+AFzn+OcFIbE~s=PPQ((@n=gZZoQUsyWR7l7*PPFtPtto8 z0gxStCEOWao>F4RX1EiHQ#mt@4!+Z?*3^>%%xr%|aR9*V80e8ssLv4-`TV;R0(9;3 z5=U^d19W3lNF?;6jK`45ry$>lHA3RaO2oG8`G)$lxx#DCYqoF}V`MFZ2q8V$SJQy! zi>EM%y+jdS3zj?6P#b=fzw@@G3k4oSjY=`^(lCWy%LbAyV`_av4S2*3> rsHio^3n1#yVf7tY8Rb=gsI zoOzEwFK+rLt;cT?$= J;Ht&GfWlj z42#y2kA_< G<&$j!#`qed=D{U;{!?v7~6c!BuvA7^6Q=hvNa4 zUz)E9zMg_cVgyb%sr#UhAa;b026}}OS8?}1BwSA4nS8N#!-Q8wW^$b7f=Kctw1k &V7$h#^O!2nd-26}pY1${kQBM>^4nWw($;4Aa@elJbAWH#+U>XI>~e zgZ@cbdPtVaZ*9hE(Xw2G7n(M0$^D>K4nB(o7zDEA2nsb3#)L!`;=+f!SVgJA{$^G{ zsOoGPPLnQ6wTlD6nSl5XS^uVx$1$Fs!2q`L`nQREI|@Jtznb;Kor43`tLLT#GgHxl zK;1}FIGKxu-tPw(YO`7 `VCh>(|)c ju2jf5i%o zL9duT!5+=#Bb@>h(`@!Ea1@M#!V1+ru^Qg)4bIDrwW?pjwZ(3^K-9~c$`tF{et0?3 z=MX{LrkQ%ocUp3(Tl&XFn>+)XR^e#IK{ u2Dp)cAVLAB)L1|67|1`K z8r9fr1MM-fHG2oa8~HB}_QmW5)5c*3FVP9r(XN4dyHxr&tzNkuEsH`zJDcs9iH9@O zszcl*9)xeYjELX13sVanaFd9mKK` XG#5}mQ?+DR6JW-nv4fqGm(WZu`KV)f|+vWo?-9|3dvOb zwA6j0(DMevO>H^-W3qGMl@Q8D6q46*9~9mL;!*VZBkls|q?C7cR` 79ZP&W+wZ>Y} oU$mDECSUO6B*8A;s?Pv_~zPa>+?usjs zgr@+42Xdn^XSXLpwrWQl3U3*j`^J@hy>6~Xl0po`2u!e%k)1epCHUv6CUg~K!gq4d zUw*5SMuK|KOj&j=_{Q|I6@k%)!Kv^Gu6fG18{rkB0T;oksur+9mp4RMcLT>prDx}Z zwxehrD7bMCc@I7#8%O@bnJ#{AoZ}6H>h4jAHadN+3#aS>zD&@(*cWWj3As1HE6WZO zH8)@WyPF|2?_ek!GB8~XGThQg+*Sqz0{*dDAF8g+@Uo-9H%_=2ysBL!^;n^gM75ZJ zuBw_Fn=#CCT`=|4$B;34d5E|4ZC`u*WY3s4PzV-wrLtY)7 z!0Px!=>w=)kW|?k4cIGQ7RFn6KX0TM(R7_IpgHO?4iLtl*lLsTSJ*INJPj#0j9;0^ z-D^G(?zFcZB>1EZoXhK+vq6WXSvZUeoBPsF#gUHA_JWypt+pyQ)PW QMOPos= zZSk!Q_`rI+A%&>D?p_or2E=*~C(nqZ*#M>#!AZcEWED0y?bj9HCH%cmC$)tvwVi`2 zLe@h7jMcx?7)`*1|K}Ji#6@r+Xh16Fzlp^E+v(7bNQsPy|43H<@rs_1uURDoU;6^< zza1Au0we?I{c}1I$-hv#YBL}(K3R0w&DWf{u{q^KdRyL&h5M7BIubPI{@T_3 zb@dWUoo0@o&C=pk8`{*9)`dC+pmCZq2ae79g5L^TVG9ctOQ^~kE*h3ZXxMOJYylc& zica9PJ*Xx|MKB4*A3SRh2cY?_BpE;h<9hB)ew-#Pj^{?;VGwK8tnK+eiXF^$5z9Mq z>UI;btxLJ4!3PvtBp`R3;q$S%+qL`*u-~%UY;V9zP~A;eVZ=g$^lXeZ5e8L30CM4_ z&sX^nsc?E(q3=Gu1drAk{U~GrG~Ol^&)lNuo^n Ws1*BibgKv={Gja5m|oZvYZ+!y)4|v1VG+n@9d`z;B<`8^)&_cU2?w zmk*)7muKDha 2ni4L5y5_E# zAka6|3`g{ardQdj4K$JIKC$X7hbJo|TTSSc!nh1Wilq>?a+AT!cy^~cp04tj5geh; zDnE7d__u7inBS10)!)>FCw3?2DvjIdymIV)w$dFfKR@mRR-8prbSGNU&wu1=mW~fK zDm}kG)4XZ_e#^xN2BH{vzk*kw(P-F+ZO@KmuU=zmth*n5o~fPshyxXIXs`aJ$DMXH zZ+MZ|Wn*PexxqB^gA)%X$;tO48dqsWh$IE7UIxQj77(V;#JPH{hClFUOPF3TE&(D% zyIpm#Yh$MjjjDIKnpxG!zQh6Sad@Zea6;I386Ksd7q>1I=>JF@(;~glv~m9OPC3W^ z#X0fa#q$Y@^g}yh7(JBt^r6@mXqP$U-m-d{o@mpijwVCIJ0;8}Ne_6)K5`D?;&*i; zhZr))=+Xq3ER2r&FTzEb>fPOsL)+Ry`GKv#sPK3S%(k#`ai lxawTPTx zLsh+aHvb~i;8Hg7SC>ir%+@4RtW}$IDgVX0z~>eIl=r`Jeyd&5wkb}-2xLDv^*h?U zoGUs1*tox5_FWu5(kD9Gn~dCbkS4wIyTXU|>G^&P+ ^7Sitq$C@dSt(fP3dd{I?A$is;`qq?HN4KcKCN{BHJFKcuGK`ao57Kp|VwnyRB5 z<6a{$iZ(J@z Jd@qENic!MC>QlHLtH z-B44fAaeL0=s@-yxV!qBT4?5zo9|Zd#Q4*je0&2^c F``+er&cDCww1b{Hcxkx(jVCkj-2sgpK=NL zWd7*Kqxbn?Z{e+AA1htG6zW$k9~5Q|6#=P~sqpO?0ea;BKg?e{Jy3VSp}wyj=D4I& zS3JuB*s}BHn|531@ja$~w}|64u`X3~H^Tb-I;Y?E>*J^B-)FUTzc=YphcomQ%4Nr` z$IGRJOq=-F_$=x1=I%iOn;8BSUY#<>@hw_)dObQF+hbM>zxPfMQh~UwfDNNj1KiK6 zp78yR7d5YD#hN<(Z#TRj_h*W?53g>Bl+S2?TyB;wW+LhQr<%TtZ5}1ft$t1|*`JSq z7-xMj(+={hcNBUT=)RCWjb+zPFb;f(?X6c${60Gp0o}hfw%a-xKmMLiiiZd29Ad%- zHtt!f+@q>5yld4ERLVyrfSdUu3qhCx$fB8)i~$qCP ;C{t?ZSd)u z-c4f;H#fF;^Eu$>i^JMHf+}@&q1eoN=b6Q-@Z E@w3^YaHCRCcZGUxJyn(gS jb%_R*UxBnCNGou{mKXcnA~|cMro2CfIKhSp8ULiD9@pN7%5M=i z5K!i}u54xZFA;AqEg&wUpHyY1f~eXpR3k?8$Ke!4t6zBfhh)Q}=xk#zZfEy3o%)d5 z3Ftu-hr!&V#o-ew6VnjvC}ueyDhBBboFAlkx-#VAInB8;H+>gm)zQSx+(%M#FR`=R z!OqVjKRj9K>s~4P%l3VTq%<~*AZ8V{4VJ^rIN6jjL~2xbq?|_!weq$2$i|UZ)qGnn zx%c`kPhQ%2ru+9eo)Z>(ppE_S7`#R)0R(g&tk_YK&_BHa6G}8$c`nffVnJNC8g~ZX zKlo^mV}~w+B*ae)&Ey%Z`DsH@pd&Yoy-9T3Jacj|^r(T3*J<^LEN1fUlc$>8$SUyH z)6$EQIr*nvomriY8N^on^e@kS5JCU`Ne!svpakYOMJ4}}%RNiYzk67B6?%sCyk)+C z#mtLXJ{A+ysbQ91!GpmE!O#Qe@cV!@@_Pu8StQ28!$Yqnx52@G#(4375QBjuYkr6F z@V(>CuwtYR61wfCgps_l`N7KOMw{_$yaPU|f$SYOvi(2~h$7EtH^71rLmEG0u*vu9 zr0#`C(D6Xpb6U#5pM6Bt`sIgE-u9~IVeiZ599Z9PVeIfalrkQP$sCS @h_`@mHceKt;A(gady8=w&V2LW5^>k3=wZJMw73%}pOQe4!>l{r@{6kkwd}I? z8L>{Zg!`*^6J@Wc={Fqa8~s#td1X` DQ>Y>E7cg7A#(8#r&SgD jO9<<5aXYRT?6G&eDKr~P%6EZKc z=`=0?Uw+ul(-sKlwJRTXyftI+Y6}{Ya =wTz()C6w>4!G}GAxz_y~EhUV!c?~3#AA? z1pcmFTQ%?8L7afp&h_VFc7sgV=X%TO)7u9 ~{ tQ8CM&72Kc)5Ow zbw*H%$B3V>8++^iNfje)lSokY0MLm2JGpoR9;m2%)_F tgnqDu=e%YW(K# zJX<$z#+s+xe9}(Q12u{eYLQU@C|if8g_UJmVSwWIbvX8L5W>)Y+gr4j0Ed81Zg)fQ zHQIDc?0ojzE&FRTOmlB@K0UUXnP*O!q(n-M48bYy$WOAn>?wa >w4Y#NOpJ!!S5Le@UkhGw>#rL%oC9t>4XAB_Z`!J80Yr( %13f{L_a+XnQf1; z%iCqxhjXbev>D}xdU3A;d%Jj}ruKdOWI6>JYIuL2kf3uBx;gzwRzzdN87ec5C3Hw6 zQ#L7}t;r_2PvM2$8>Rv=e|7cO`-~@t8^^#9|7}5kKe}Hcv8q@P!n3qg9V9zia< zs`~U26ZjfHb>tRrVF&-CW+&Db w1T2sWwU>OI^msEH@QeEknpkjLPUe`}`+Gtu5 z$`%#)Mjm&uBrTN^z3k?kP{L|!=O=8{?UcbHeR-+T*539qO|`$0TwSY=t$yWnh4i9c zpITii^_QYBDFhxFQys!6NQb1I=t}46@@CKc?yk96EOW75O}m{fozu_kRol|8MFO)} zeJIrVE*O>V9O3b$&TmMj?4zFRBNec#H&(cL89tH0mnd$T)|DG?J^&4?QB(Ppo @vh+cq!6u^P+U(ak4w?kt_iMIyl)Oc`|tXvuUM zU;7!9njJ5AM;V*&6E3@j=4{)S?Yxb!?_nEwpWMV6DCcdKEhXVwV@pX;nhp)LTa~Yv zF^j3W7beVLmqb$gtwNbzo=z{oM(=uDH84fpoZ?v&Dr{U3c=%%%OuKCF$YQ#@)zcyD zO4fv5UlT&EKZS!?y}7O3G6}u2R^7boLs6yTN%k|et@>W&%w=o6ExUbgJm37Xwu$=Z z(-5?M$bD4ag_|wkyN{VaK}dNf?#Yj8b^9jBD}(Bh5uB`_lt^rdm{cokWe(XlUudSM z0iU&Q96+U0OXj-T{e{|HvDyLvHS5vHZQVtJ7Lxegu}c5JEOni$@nIo!4N(Kv2`C(? z-<+ pXWFlf9Jt@ksUiYhI 69Q!s0p6d^(}W(u^)Xgp7qO8`-r}d8QwkI-Pr+b@Jd$D9~JCY;phyQ9!)ta z6tyFOL7O!xm>(TPl0~^&0f vnh_o37^E*X zd-EEF)p>&2Q!GXcDIF#@EZooJluMGhu`$~vQP#b#&(g^-ZJ8T}2*JVCW_U>)-4g0p z {oc?K-EB{cUqkRcZ8x)BM)g^JCG=wt$P=GHPbJ{hyZ=RiO}9(QmLZ5 zQq=UB(d)Y+-XJpVlwIT&H9FLy=c4<|y6GuRv#Cp+g?r|6S}-^{s4MYHv+3K=n>zI! zsz^0dAGC@)QykCB=-gc4i?WziosS)*CoR=`ChZm+TO*Aw_q)=Mr`p-oav2$pV_1PJ z>>X}BG2b{=0svjv@A_YKC94vam#bu=-NcW)Nf4^m_JR*aF2RP)tJAX?XK4 FC(sUf;Hg-=?_p-Ylz5o>;stA|oEXU=M!$ zboqlG_O^bz$GKjHNO*C*tT5H8UEfLbgdxznQUiH<)6$1Xj`4=*Ja9xI|Jc!+wK`VL z7qGxZ0KvDA?x(ld*id+r;x3jq?RrN{{zNU%5o#sVQ@qmaloYCe&dbGw_+8`Gg!SbE zF2nK*`Bb{tMGR<79{;;Jx|$(#mmSwygm+;^aK4ATNe0HIbGPv?Oto2i+1uHJq5iwu zh53GAM&atT1w0RFML2*Goyp5QI@0{H1_JT